加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • ALU介紹
    • ALU的信號
    • ALU 的配置
    • ALU的功能
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

算術(shù)邏輯單元ALU是什么 算術(shù)邏輯單元的功能

09/30 13:14
35.6萬
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

ALU介紹

計算機(jī)系統(tǒng)中,ALU(Arithmetic Logic Unit)是中央處理器的主要組成部分,它代表算術(shù)邏輯單元,執(zhí)行算術(shù)和邏輯運(yùn)算。它也稱為整數(shù)單元 (IU,integer unit),它是 CPU 或 GPU 內(nèi)的邏輯電路,是處理器中執(zhí)行計算的最后一個組件。它能夠執(zhí)行所有與算術(shù)和邏輯運(yùn)算相關(guān)的過程,例如加法、減法和移位運(yùn)算,包括布爾比較(XOR、OR、AND 和 NOT 運(yùn)算)。此外,二進(jìn)制數(shù)可以完成數(shù)學(xué)和按位運(yùn)算。ALU分為AU(算術(shù)單元)和LU(邏輯單元)。ALU 使用的操作數(shù)和代碼告訴它必須根據(jù)輸入數(shù)據(jù)執(zhí)行哪些操作。當(dāng) ALU 完成輸入處理后,信息被發(fā)送到計算機(jī)的內(nèi)存中。

圖2?ALU在四級流水中的示意圖

除了執(zhí)行與加法和減法相關(guān)的計算外,ALU 還可以處理兩個整數(shù)的乘法,因為它們旨在執(zhí)行整數(shù)計算;因此,它的結(jié)果也是一個整數(shù)。但是,除法運(yùn)算通常不能由 ALU 執(zhí)行,因為除法運(yùn)算可能會產(chǎn)生浮點(diǎn)數(shù)的結(jié)果。相反,浮點(diǎn)單元 (FPU,floating-point unit) 通常處理除法運(yùn)算;FPU 也可以執(zhí)行其他非整數(shù)計算。

浮點(diǎn)數(shù)的由來:用科學(xué)計數(shù)法的方式表示小數(shù)時,小數(shù)點(diǎn)的位置就變得「漂浮不定」了,這就是相對于定點(diǎn)數(shù),浮點(diǎn)數(shù)名字的由來。

圖2?浮點(diǎn)數(shù)示例

雖然 ALU 是處理器中的主要組件,但 ALU 的設(shè)計和功能在不同的處理器中可能會有所不同。例如,有些 ALU 設(shè)計為僅執(zhí)行整數(shù)計算,而有些則用于浮點(diǎn)運(yùn)算。一些處理器包含單個算術(shù)邏輯單元來執(zhí)行操作,而其他處理器可能包含許多 ALU 來完成計算。ALU 執(zhí)行的操作是:

邏輯運(yùn)算:邏輯運(yùn)算包括 NOR、NOT、AND、NAND、OR、XOR 等。

移位操作:它負(fù)責(zé)將位的位置向右或向左位移一定數(shù)量的位置,也稱為乘法運(yùn)算。

算術(shù)運(yùn)算:雖然它執(zhí)行乘法和除法,但這是指位加法和位減法。但是乘法和除法運(yùn)算的成本(邏輯復(fù)雜度和面積)更高。在乘法運(yùn)算中,加法可以用作除法和減法的替代。

ALU的信號

ALU 包含各種輸入和輸出連接,這使得外部電子設(shè)備和 ALU 之間可以投射數(shù)字信號。ALU 輸入從外部電路獲取信號,作為響應(yīng),外部電子設(shè)備從 ALU 獲取輸出信號。

數(shù)據(jù):ALU 包含三個并行總線,包括兩個輸入和輸出操作數(shù)。這三個總線處理的信號數(shù)量是相同的。

操作碼:當(dāng) ALU 將要執(zhí)行操作時,操作選擇碼描述了 ALU 將執(zhí)行哪種類型的運(yùn)算或邏輯運(yùn)算。

輸出:ALU 操作的結(jié)果由狀態(tài)輸出以補(bǔ)充數(shù)據(jù)的形式提供,因為它們是多個信號。通常,諸如溢出、零、執(zhí)行、負(fù)數(shù)等狀態(tài)信號都包含在通用 ALU 中。當(dāng) ALU 完成每個操作時,外部寄存器包含狀態(tài)輸出信號。這些信號存儲在外部寄存器中,使它們可用于未來的 ALU 操作。

輸入:當(dāng) ALU 執(zhí)行一次操作時,狀態(tài)輸入允許 ALU 訪問更多信息以成功完成操作。此外,存儲的來自先前 ALU 操作的進(jìn)位被稱為單個“進(jìn)位”位。

圖3?ALU輸入輸出示意圖

ALU 是一種組合邏輯電路,這意味著它的輸出將隨著輸入變化而異步變化。在正常操作中,穩(wěn)定信號被施加到所有 ALU 輸入,當(dāng)信號通過 ALU 電路傳播足夠的時間(稱為“傳播延遲”)時,ALU 操作的結(jié)果出現(xiàn)在 ALU輸出。連接到 ALU 的外部電路負(fù)責(zé)確保 ALU 輸入信號在整個操作過程中的穩(wěn)定性,并在對 ALU 結(jié)果進(jìn)行采樣之前留出足夠的時間讓信號通過 ALU 傳播。

通常,外部電路通過向 ALU 的輸入施加信號來控制 ALU。通常,外部電路采用時序邏輯來控制 ALU 操作,該操作由頻率足夠低的時鐘信號來控制,以確保 ALU 輸出有足夠的時間在最壞情況下穩(wěn)定下來。

圖4?74181型四比特ALU

例如,CPU 通過將操作數(shù)從它們的源(通常是寄存器)路由到 ALU 的操作數(shù)輸入來開始 ALU 加法操作,而控制單元同時將值應(yīng)用于 ALU 的操作碼輸入,將其配置為執(zhí)行加法。同時,CPU 還將 ALU 結(jié)果輸出路由到將接收和的目標(biāo)寄存器。在 CPU 等待下一個時鐘時,允許 ALU 的輸入信號在下一個時鐘之前保持穩(wěn)定,通過 ALU 傳播到目標(biāo)寄存器。當(dāng)下一個時鐘到達(dá)時,目標(biāo)寄存器存儲 ALU 結(jié)果,并且由于 ALU 操作已經(jīng)完成,ALU 輸入可以設(shè)置為下一個 ALU 操作。

ALU 的配置

每個算術(shù)邏輯單元都包括以下配置:Instruction Set Architecture、Accumulator、Stack、Register-Register Architecture、Register - Stack Architecture、Register and ?Memory。

Accumulator:每個操作的中間結(jié)果都包含在累加器中,這意味著指令集架構(gòu)(ISA)并不復(fù)雜,因為只需要保存一位。通常,它們速度更快且不太復(fù)雜,但使 Accumulator 更穩(wěn)定;需要編寫附加代碼以用適當(dāng)?shù)闹堤畛渌?。不幸的是,對于單個處理器,很難找到累加器來執(zhí)行并行性。累加器的一個例子是桌面計算器。

Stack:每當(dāng)執(zhí)行最新操作時,這些操作都會存儲在以自上而下順序保存程序的堆棧中,這是一個小寄存器。當(dāng)新程序被添加執(zhí)行時,它們會推送舊程序。

Register-Register Architecture:它包括 1 個目標(biāo)指令和 2 個源指令的位置,也稱為 3 - Register操作機(jī)。該指令集架構(gòu)必須更長,以存儲三個操作數(shù)、1 個目標(biāo)和 2 個源。運(yùn)算結(jié)束后,將結(jié)果寫回寄存器會很困難,而且字的長度也應(yīng)該更長。但是,如果在這個地方遵循寫會規(guī)則,可能會導(dǎo)致更多的同步問題。

Register - Stack Architecture:通常,寄存器和累加器操作的組合稱為寄存器 - 堆棧架構(gòu)。需要在寄存器堆棧架構(gòu)中執(zhí)行的操作被壓入堆棧頂部。它的結(jié)果保存在堆棧的頂部。借助反向拋光方法,可以分解更復(fù)雜的數(shù)學(xué)運(yùn)算。一些designer為了表示操作數(shù),使用二叉樹的概念。這意味著反向拋光方法對這些程序員來說很容易,而對其他程序員來說可能很困難。要執(zhí)行 Push 和 Pop 操作,需要創(chuàng)建新的硬件。

Register and Memory:在這種架構(gòu)中,一個操作數(shù)來自寄存器,另一個來自外部存儲器,因為它是最復(fù)雜的架構(gòu)之一。其背后的原因是每個程序都可能非常長,因為它們需要保存在完整的內(nèi)存空間中。該技術(shù)一般與Register-Register 技術(shù)相結(jié)合,實(shí)際上不能單獨(dú)使用。

ALU的功能

一算術(shù)運(yùn)算

加法:A 和 B 相加,和出現(xiàn)在 Y 和進(jìn)位。

進(jìn)位加法:A、B 和進(jìn)位相加,總和出現(xiàn)在 Y 和進(jìn)位處。

減法:從 A 中減去 B(反之亦然),差值出現(xiàn)在 Y 和進(jìn)位。對于此功能,結(jié)轉(zhuǎn)實(shí)際上是一個“借”指標(biāo)。這個操作也可以用來比較A和B的大小;在這種情況下,處理器可能會忽略 Y 輸出,處理器只對操作產(chǎn)生的狀態(tài)位(特別是零和負(fù)數(shù))感興趣。

借位減法:借位(進(jìn)位)從 A 中減去 B(反之亦然),差值出現(xiàn)在 Y 和進(jìn)位(借出)處。

二進(jìn)制補(bǔ)碼:從零中減去 A(或 B),差值出現(xiàn)在 Y 處。增量計算:A(或 B)加 1,結(jié)果值出現(xiàn)在 Y。減量計算:A(或 B)減 1,結(jié)果值出現(xiàn)在 Y。

Pass through:A(或B)的所有位在Y處顯示為未修改。此操作通常用于確定操作數(shù)的奇偶校驗或是否為零或負(fù)數(shù),或?qū)⒉僮鲾?shù)加載到處理器寄存器中。

二位邏輯運(yùn)算

AND:A 和 B 的按位與出現(xiàn)在 Y 處。

OR:A 和 B 的按位 OR 出現(xiàn)在 Y 處。

異或:A 和 B 的按位異或出現(xiàn)在 Y 處。

1 的補(bǔ)碼:A(或 B)的所有位都被反轉(zhuǎn)并出現(xiàn)在 Y 處。

三位移操作

ALU 移位操作導(dǎo)致操作數(shù) A(或 B)左移或右移(取決于操作碼),移位后的操作數(shù)出現(xiàn)在 Y。簡單的 ALU 通常只能將操作數(shù)移位一位,而更復(fù)雜的 ALU 使用桶形移位器允許他們在一次操作中將操作數(shù)移動任意位數(shù)。在所有單位移位操作中,移出操作數(shù)的位出現(xiàn)在進(jìn)位輸出;移入操作數(shù)的位的值取決于移位的類型。

算術(shù)移位:操作數(shù)被視為二進(jìn)制補(bǔ)碼整數(shù),這意味著最高有效位是“符號”位并被保留。

邏輯移位:將邏輯零移入操作數(shù)。這用于移動無符號整數(shù)。

循環(huán):操作數(shù)被視為循環(huán)位緩沖區(qū),因此其最低有效位和最高有效位有效相鄰。

進(jìn)位循環(huán):進(jìn)位位和操作數(shù)共同被視為位的循環(huán)緩沖區(qū)。

圖5? 八比特ALU位移計算示意圖

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
ATMEGA128A-AUR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 64TQFP

ECAD模型

下載ECAD模型
$7.69 查看
ATXMEGA32E5-M4U 1 Microchip Technology Inc IC MCU 8BIT 32KB FLASH 32UQFN

ECAD模型

下載ECAD模型
$2.73 查看
MKL17Z256VMP4 1 Freescale Semiconductor Kinetis L 32-bit MCU, ARM Cortex-M0+ core, 256KB Flash, 48MHz, MAPBGA 64

ECAD模型

下載ECAD模型
$5.01 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

前華為海思工程師;與非網(wǎng)2022年度影響力創(chuàng)作者;IC技術(shù)圈成員。

微信公眾號