複製鏈接
請複製以下鏈接發送給好友

算術邏輯單元

鎖定
算術邏輯單元(arithmetic and logic unit) 是能實現多組算術運算邏輯運算組合邏輯電路,簡稱ALU。
中文名
算術邏輯單元
外文名
ALU
類    別
CPU的執行單元
組    成
And Gate Or Gate
作    用
整數運算
應    用
電腦芯片

算術邏輯單元簡介

算術邏輯單元 算術邏輯單元
算術邏輯單元(Arithmetic&logical Unit)中央處理器(CPU)的執行單元,是所有中央處理器的核心組成部分,由"And Gate"(與門) 和"Or Gate"(或門)構成的算術邏輯單元,主要功能是進行二位元的算術運算,如加減乘(不包括整數除法)。基本上,在所有現代CPU體系結構中,二進制都以補碼的形式來表示。

算術邏輯單元發展

算術邏輯單元 算術邏輯單元
算術邏輯單元(arithmetic logic unit,縮寫ALU)是進行整數運算的結構。現階段是用電路來實現,應用在電腦芯片中。
在計算機中,算術邏輯單元(ALU)是專門執行算術和邏輯運算的數字電路。ALU是計算機中央處理器的最重要組成部分,甚至連最小的微處理器也包含ALU作計數功能。在現代CPU和GPU處理器中已含有功能強大和複雜的ALU;一個單一的元件也可能含有ALU。
1945年數學家馮諾伊曼在一篇介紹被稱為EDVAC的一種新型電腦的基礎構成的報告中提出ALU的概念。

算術邏輯單元早期發展

1946年,馮諾伊曼與同事合作為普林斯頓高等學習學院(IAS)設計計算機。隨後IAS計算機成為後來計算機的原形。在論文中,馮諾伊曼提到他所相信的計算機中所需的部件,而其中包括ALU。 馮諾伊曼寫到,ALU是計算機的必備組成部分,因為已確定計算機一定要完成基本的數學運算,包括加減乘除。於是他相信「(計算機)應該含有專門完成此類運算的部件。」

算術邏輯單元數字系統

ALU必須與數字電路的其他部分使用同樣的格式來進行數字處理。對現代處理器而言,數值一律使用二進制補碼表示。早期的計算機曾使用過很多種數字系統,包括反碼、符號數值碼,甚至是十進制碼,每一位用十個管子。 以上這每一種數字系統所對應的ALU都有不同的設計,而這也影響了當前對二進制補碼的優先選擇,因為二進制補碼能簡化ALU加法和減法的運算。 一個簡單的能進行與或非和加運算的2位ALU。

算術邏輯單元可行性分析

絕大部分計算機指令都是由ALU執行的。ALU從寄存器中取出數據。數據經過處理將運算結果存入ALU輸出寄存器中。其他部件負責在寄存器與內存間傳送數據。 控制單元控制着ALU,通過控制電路來告訴ALU該執行什麼操作。 [1] 

算術邏輯單元簡單運算

大部分ALU都可以完成以下運算∶
整數算術運算(加、減,有時還包括乘和除,不過成本較高)
位邏輯運算(與、或、非、異或
移位運算(將一個字向左或向右移位或浮動特定位,而無符號延伸),移位可被認為是乘以2或除以2。

算術邏輯單元複雜運算

工程師可設計能完成任何運算的ALU,不論運算有多複雜;問題在於運算越複雜,ALU成本越高,在處理器中佔用的空間越大,消耗的電能越多。 於是,工程師們經常計算一個折中的方案,提供給處理器(或其他電路)一個能使其運算高速的ALU,但同時又避免ALU設計的太複雜而價格昂貴。設想你需要計算一個數的平方根數字工程師將評估以下的選項來完成此操作∶
設計一個極度複雜的ALU,它能夠一步完成對任意數字的平方根運算。這被稱為單時鐘脈衝計算。
設計一個非常複雜的ALU,它能夠分幾步完成一個數字的平方根運算。不過,這裏有個訣竅,中間結果經過一連串電路,就像是工廠裏的生產線。這甚至使得ALU能夠在完成前一次運算前就接受新的數字。這使得ALU能夠以與單時鐘脈衝同樣的速度產生數字,雖然從ALU輸出的結果有一個初始延遲。這被稱為計算流水線。
設計一個複雜的ALU,它能夠計算分幾步計算一個數字的平方根。這被稱為互動計算,經常依賴於帶有嵌入式微碼的複雜控制單元。
在處理器中設計一個簡單的ALU,去掉一個昂貴的專門用於此運算的處理器,再選擇以上三個選項之一。這被稱為協處理器
告訴編程人員沒有協處理器和仿真設備,於是他們必須自己寫出算法來用軟件計算平方根。這是由軟件庫完成的。
對協處理器進行仿真,也就是説,只要一個程序想要進行平方根的計算,就讓處理器檢查當前有沒有協處理器。如果有的話就使用其進行計算,如果沒有的話,中斷程序進程並調用操作系統通過軟件算法來完成平方根的計算。這被稱為軟件仿真。
以上給出的選項按最快和最貴到最慢和最經濟排列。於是,雖然甚至是最簡單的計算機也能計算最複雜的公式,但是最簡單的計算機經常需要耗費大量時間,通過若干步才能完成。 強大的處理器,比如英特爾酷睿和AMD64系列對一些簡單的運算採用1號選項,對最常見的複雜運算採用2號選項,對極為複雜的運算採用3號選項。這是具有在處理器中構造非常複雜的ALU的能力為前提的。

算術邏輯單元輸入和輸出

ALU的輸入是要進行操作的數據(稱為操作數)以及來自控制單元的指令代碼,用來指示進行哪種運算。它的輸出即為運算結果。 在許多設計中ALU也接收或發出輸入或輸出條件代碼到(或來自)狀態寄存器。這些代碼用來指示一些情況,比如進位或借位、溢出、除數為零等。

算術邏輯單元ALU與FPU

浮點單元也對兩個數值進行算術運算,但是這種運算已浮點數表示,比在ALU中一般使用的補碼表示方式複雜的多。為了完成此類運算,FPU裏嵌入了多個複雜電路,包括一些內部ALU。 工程師一般認為ALU是處理整數型(比如補碼和BCD碼)算術運算的的電路,而對更為複雜的格式(比如浮點型、複數型)進行計算的電路則擁有一個更加匹配的稱謂。 [2] 

算術邏輯單元特點

ALU用以計算機指令集中的執行算術與邏輯操作;
某些處理器中,將ALU切分為兩部分,即算術單元 (AU)與邏輯單元(LU)。某些處理器包含一個以上的AU,如,一個用來進行定點操作,另一個進行浮點操作。(個人計算機中,浮點操作有時由被稱為數字協處理器的浮點單元完成)。
通常而言,ALU具有對處理器控制器、內存及輸入輸出設備的直接讀入讀出權限。輸入輸出是通過總線進行的。輸入指令包含一個指令字,有時被稱為機器指令字,其中包括操作碼,單個或多個操作數,有時還會有格式碼;操作碼指示ALU機要執行什麼操作,在此操作中要執行多少個操作數。比如,兩個操作數可以進行比較,也可以進行加法操作。 格式碼可與操作碼結合,告知這是一個定點還是浮點指令;輸出包括存放在存儲寄存器中的結果及顯示操作是否成功的設置。如操作失敗,則在機器狀態字中會有相應的狀態顯示 。
通常,輸入操作數、操作數、累加和以及轉換結果的存儲位置都在ALU中。在算術單元中,乘除操作是通過一系列的加減運算得到的。在機器碼中有多種方式用以表示負數。
在邏輯單元中,每次執行16個可能的邏輯運算中的一個。
ALU的設計是處理器設計中的關鍵部分。仍在不斷研究如何提高指令的處理速度 [3] 

算術邏輯單元邏輯單元

邏輯單元(LU)是進入IBM系統網絡體系結構(SNA)的網絡端口,通過它用户可以訪問網絡資源,或一個程序員與另一個程序員通信。 [4] 
參考資料
  • 1.    丁亞軍. 低功耗算術邏輯單元的設計與實現[D]. 國防科學技術大學, 2008.
  • 2.    朱一傑, 張曦, 俞軍. 算術邏輯單元的優化設計[J]. 微電子學與計算機, 2004, 21(9):155-157.
  • 3.    尚麗娜, 徐新民. FPGA動態重構技術在算術邏輯單元中的應用[J]. 電子器件, 2007, 30(3):1091-1094.
  • 4.    李志斌, 居曉波, 朱文,等. 與或結構算術邏輯單元的優化設計[J]. 固體電子學研究與進展, 2003, 23(1):79-82.