在計算機科學中,算術邏輯單元(ALU)是一種組合數位電路,用於對整數二進制數字執行算術和位元運算。與浮點運算單元(FPU)不同的是,ALU專注於對二進制數進行操作。ALU是眾多計算電路的基本組件,包括計算機的中央處理單元(CPU)、FPU和圖形處理單元(GPU)等。
ALU的輸入資料稱為操作數,而指示要執行操作的代碼稱為操作碼(opcode)。ALU的輸出則是執行運算後的結果。
一個基本的ALU擁有三個平行數據總線,分別承載兩個操作數(A和B)和一個結果輸出(Y)。這些數據總線的寬度通常相同且與外部電路的原生字位大小相匹配。操作碼是傳遞給ALU的一個平行總線,該操作碼指定希望ALU執行的算術或邏輯操作。操作碼的大小決定了ALU最長可支持的不同操作數量。
ALU的運作是一種組合邏輯電路,意味著其輸出將隨著輸入的變化而異步改變。在正常運作中,相對穩定的信號會被應用到所有ALU的輸入上,經過適當時間(即傳播延遲)後,ALU的運算結果便會顯示在輸出端。
外部電路負責確保ALU的輸入信號在運作過程中保持穩定,並提供充足的時間讓信號穿過ALU電路。
進入具體操作,ALU常見的基本算術與邏輯運算包括:加法、減法、位元邏輯與位元移位等。每種操作都有其特定的流程,比如對於加法,A和B的和會進入輸出Y,同時返回進位信號。
ALU的功能不僅限於基本算術運算,它也能執行多種位元邏輯運算,如與(AND)、或(OR)和異或(XOR)。
ALU在處理任務時也會生成狀態輸出信號,這些信號提供有關當前運算結果的附加信息,例如進位信號、零信號、溢出與奇偶信號等。這些狀態信號將被外部寄存器儲存,並在未來的ALU運作中被利用。
在多精度運算中,ALU可以處理超出其字長的整數,通過將整數視為有序的ALU大小片段集合來實現。這一過程中,ALU逐個運算各個片段,生成完整的多精度運算結果。
當前的ALU設計多為集成電路,這些現代的ALU具備寬廣的字長,並添加了如桶移位器和二進制乘法器的架構增強,使其在單一時鐘週期內執行以往多運算才能完成的操作。
隨著計算機技術的發展,ALU的歷史源遠流長。早在1945年,數學家約翰·馮·紐曼便提出了ALU的概念。而1951年的Whirlwind I計算機則是第一個具有多個並行單一位ALU的計算機。隨著技術演進,ALU的複雜性和功能版本也不斷增加。
如今的ALU無論在微處理器還是在圖形處理單元中,均發揮著不可或缺的作用。在圖形處理單元中,成百上千的ALU可同時操作,為數位影像運算提供支持。這樣的設計不僅提高了計算效率,也為複雜的應用提供了強大的計算能力。
在了解ALU的運作和架構後,讀者或許會思考,這些基本的邏輯運算究竟如何影響我們所使用的現代技術?