五、算術邏輯單元(ALU)

一、ALU

ALU 就是計算機裏負責運算的組件, 用於有意義的處理數字,好比把兩個數字相加。基本其餘全部部件都用到了它。
ALU 有 2 個單元,1 個算術單元和 1 個邏輯單元。測試

二、第一個ALU

英特爾 74181,發佈於1970 年,是第一個封裝在單個芯片內的完整 ALU。
圖片描述spa

三、製做算術單元

"算術單元",它負責計算機裏的全部數字操做,好比加減法,增量運算(給某個數字+1)。圖片

原料:
AND,OR,NOT 和 XOR 邏輯門。it

目的:
最簡單的加法電路, 例如: 2 個 bit 加在一塊兒(bit 是 0 或 1)class

思路:
有 2 個輸入:A 和 B; 1 個輸出:A、B兩個數字的和。 (注意的是:A, B, 輸出,這3個都是單個 Bit ( 0 或 1 ))原理

輸入只有四種可能:
(1)前三種多是: 0 + 0 = 0 , 1 + 0 = 1 , 0 + 1 = 1。
特色:這三種的輸入和輸出,和 XOR 門的邏輯徹底同樣,因此能夠把 XOR 用做 1 位加法器(adder)。
實現:XOR門
圖片描述二進制

(2)第四個可能, 1+1=2,是個特例;
特色:
二進制裏沒有 2。二進制 1+1 的結果是0,1進到下一位,和是 10 (二進制)。
XOR 門的輸出,只對了一部分, 1+1 輸出 0,須要一根額外的線表明 "進位"。
實現:XOR門 + AND門
只有輸入是 1 和 1 時,進位纔是 "true"。使用兩個邏輯門抽象成組件 "半加器" 。
圖片描述im

半加器:
特色:兩個輸入 A 和 B 都是 1 位 ,兩個輸出 "總和" 與 "進位"
圖片描述img

全加器:計算機

背景:若是想處理超過 1+1 的運算,半加器 輸出了進位,意味着,咱們計算以後每一列的時候,咱們得把3 個位加在一塊兒,並非 2 個。這就須要"全加器"。
特色:
有 3 個輸入:A, B, C (都是 1 個 bit);
最大的多是 1 + 1 + 1"總和"1, "進位"1 , 要兩條輸出線: "總和"和"進位"。

實現:
能夠用 半加器 作 全加器
先用半加器將 A 和 B 相加,而後把 C 輸入到第二個半加器,最後用一個 OR 門檢查進位是否是 true。

圖片描述

圖片描述
8位行波進位加法器:
圖片描述

溢出:
若是第 9 位有進位,表明着 2 個數字的和太大了,超過了 8 位,這叫 "溢出" (overflow)。
特色:兩個數字的和太大了,超過了用來表示的位數。
如何避免溢出:能夠加更多全加器,能夠操做 16 或 32 位數字,讓溢出更難發生,但代價是更多邏輯門和更長的時間(由於每次進位都要一點時間)。

超前進位加法器:更快,可是原理是同樣的 ,都是 把二進制數相加。

各類ALU的區別:
簡單的 ALU :該類ALU沒有專門的電路來處理乘法和除法,而是把乘法用屢次加法來實現。例如: 12x5,這和把 "12" 加 5 次是同樣的,因此要 5 次 ALU 操做來實現這個乘法。不少簡單處理器都是這樣作的,好比恆溫器,電視遙控器和微波爐。
更好的處理器:好比筆記本和手機中,有專門作乘法的算術單元,乘法電路比加法複雜,但只是更多邏輯門。

四、邏輯單元

邏輯單元執行邏輯操做,好比以前討論過的 AND,OR 和 NOT 操做,它也能作簡單的數值測試,好比一個數字是否是負數。
圖片描述

五、ALU的抽象

(1)使用 大 「」表示ALU
圖片描述
(2)8 位 ALU 的輸入與輸出

  • 兩個輸入:A和B,都是 8 位 (bits);
  • 操做代碼:用 4 位的操做代碼告訴 ALU執行什麼操做。例如加法或減法,"1000"可能表明加法命令 ,"1100"表明減法命令。
  • 輸出結果: 8 位。
  • 一堆標誌位:輸出一堆標誌(Flag),"標誌"是1位的,表明特定狀態。例如:若是想知道A 是否小於 B,能夠用 ALU 來算 A 減B,看負標誌是否爲 true,若是是 true,咱們就知道 A 小於 B。

圖片描述

相關文章
相關標籤/搜索