ALU 又稱為算術邏輯運算單元,能夠為我們提供基本的邏輯與算術運算
那在硬體層面是如何實現的呢,讓我們從相對簡單的邏輯運算開始
在前面我們已經知道與或非等邏輯運算都可以用電晶體組合而成
但是一個 and 的邏輯閘還是無法滿足像是 and rd, rs, rt 這個指令
因為 rd, rs, rt 這三個是 32位元的暫存器,那該怎麼辦呢
很簡單,我們把 32個 and 電路連在一起就可以了
如下圖 32bit 的兩個 source 可以分別連到 A0-A31、B0-B31 最後經過各自的運算之後輸出
相同的 or 和 not 也是一樣的,而 ALU 中就是有這些不同的運算元件
如下圖所示,rs 和 rt 分別是各元件的輸入輸出,經過各自的運算之後我們就有了不同的運算結果
而怎麼在這之間選出我們所真正需要的結果呢
就是最後會透過一個多選器來控制
這個多選器將會接收我們之前提到的 CPU 在譯碼完成之後會傳送給 ALU 的指令
並且選擇正確的結果輸出,如此一來我們就可以得到所需要的運算結果了~
再來看這個熟悉的模型機,左邊就是右圖的電路實現
暫存器是上一篇所提到的 D flip-flop,通過內部總線成為 ALU 的輸入和輸出
於是在某個 clock 週期時暫存器的值就會被輸出到 ALU 中進行計算
並且將運算結果傳送到 R8 的輸入,當下個 clock 到來後這個運算結果就會被採樣和輸出
繼續進行下一個指令操作
如此一來我們就已經大致了解 ALU 的內部構造了
明天將繼續來看比較複雜的算術運算