計算機算術

算術邏輯單元(ALU)

/ ALU = AY-ell-you /

想像計算機(小算盤)裡真正在運算的那個部分:你按完數字、按下功能鍵後,實際做加減乘除的就是它。算術邏輯單元(ALU)正是處理器內部的這個區塊:一團組合邏輯,吃進兩個數字、吐出一個結果,再用幾條控制線決定要做哪種運算。它本身不記任何東西,也沒有自己的時間觀念;它純粹是輸入的函數,就像自動販賣機,按同一個鈕永遠掉同一包零食。

具體來說,ALU 有兩個資料輸入(通常各是一個完整的字組,例如 32 或 64 位元寬)、一個小小的運算選擇輸入(幾個位元,用來挑加、減、AND、OR、比較等等)、一個同寬的資料輸出,以及幾條一位元的狀態輸出,稱為旗標。內部則由數位邏輯領域的加法器與邏輯閘搭起來:一個寬加法器負責加與減,一排排的 AND 與 OR 閘負責位元運算,再用一個多工器讓運算選擇位元把正確結果導向輸出。送進加法碼,加法器的和就到輸出;送進 AND 碼,閘排的結果就到輸出。

ALU 是資料路徑的計算核心,但它刻意保持樸實:只對兩個運算元做算術與邏輯,別的都不管。它不提取指令、不決定接下來算什麼,通常連乘法、除法都不自己做(那需要額外硬體或多次反覆)。讓 ALU 簡單又快很重要,因為幾乎每條指令都會用到它,於是它的延遲就落在處理器的關鍵路徑上,並幫忙決定時脈能跑多快。

運算選擇 0b0010 代表加法:送進 5 與 3,內部加法器產生 8,多工器把 8 導向輸出,零旗標保持為 0 因為結果不是零。把運算選擇改成 0b0110(減法),同樣兩個輸入就得到 5 減 3 = 2。

一個區塊,多種運算:運算選擇位元決定哪個內部結果到達輸出。

ALU 是組合邏輯,本身沒有記憶;餵給它與接住它結果的暫存器位於資料路徑的別處。乘法與除法通常是獨立、較慢的單元,不屬於基本 ALU。

又称
ALU算術邏輯單元