計算機組成原理筆記(十六)——4.1基本算術運算的實現

計算機中最基本的算術運算是加法運算,加、減、乘、除運算最終都可以歸結為加法運算。

4.1.1加法器

一、加法器的基本單元

加法器的核心單元是 全加器(Full Adder, FA),而所有加法器都由 半加器(Half Adder, HA) 組合實現。

1. 半加器(HA)

功能:實現兩個1位二進制數相加(不考慮低位進位)。
輸入:A(加數)、B(被加數)
輸出:Sum(和)、Carry(進位)
真值表

ABSumCarry
0000
0110
1010
1101

邏輯表達式
Sum = A ⊕ B Carry = A ? B \text{Sum} = A \oplus B \\ \text{Carry} = A \cdot B Sum=ABCarry=A?B

電路圖

在這里插入圖片描述

2. 全加器(FA)

功能:實現兩個1位二進制數與一個低位進位相加。
輸入:A(加數)、B(被加數)、C_in(低位進位)
輸出:Sum(和)、C_out(進位)
真值表

ABC_inSumC_out
00000
00110
01010
01101
10010
10101
11001
11111

邏輯表達式
Sum = A ⊕ B ⊕ C i n C o u t = A ? B + ( A ⊕ B ) ? C i n \text{Sum} = A \oplus B \oplus C_{in} \\ C_{out} = A \cdot B + (A \oplus B) \cdot C_{in} Sum=ABCin?Cout?=A?B+(AB)?Cin?

電路結構示意圖(由兩個半加器組合):

在這里插入圖片描述

二、加法器的類型與工作原理

1. 串行加法器

結構:通過移位寄存器依次處理每一位,每次計算1位。
電路圖

在這里插入圖片描述

特性

  • 優點:電路簡單,成本低。
  • 缺點:速度極慢,需n個時鐘周期完成n位加法。
  • 關鍵問題:進位信號需逐級傳遞(行波進位)。

2. 并行加法器

所有位同時計算,但進位傳遞是關鍵瓶頸。分為兩類:

(1) 串行進位加法器

結構:多個全加器串聯,前級的C_out作為后級的C_in。
電路示意圖

在這里插入圖片描述

延遲分析

  • 若每級進位延遲為2t,則n位加法總延遲為2n t。
  • 例:32位加法需要64t耗時。
(2) 超前進位加法器(CLA)

核心思想:提前計算各級進位,消除級聯依賴。
進位生成公式
C i = G i + P i ? C i ? 1 其中: G i = A i ? B i ( 生成進位 ) P i = A i ⊕ B i ( 傳播進位 ) C_i = G_i + P_i \cdot C_{i-1} \\ \text{其中:} \quad G_i = A_i \cdot B_i \quad (\text{生成進位}) \\ P_i = A_i \oplus B_i \quad (\text{傳播進位}) Ci?=Gi?+Pi??Ci?1?其中:Gi?=Ai??Bi?(生成進位)Pi?=Ai?Bi?(傳播進位)

4位CLA示例

在這里插入圖片描述

優點:極快完成所有位的計算,但電路復雜度高。

三、關鍵對比

特性串行加法器并行串行進位超前進位
速度極慢(O(n))較快(O(n))極快(O(1))
硬件復雜度極簡中等復雜
適用場景嵌入式低功耗設備通用CPU高性能計算
典型延遲32位需64t32位需64t4位僅需4t

四、應用實例

現代CPU中,ALU的加法器采用 分組超前進位 結構:

  • 16位加法器:4個4位CLA模塊 + 一級CLA控制。
  • 延遲:僅需計算組內和組間的并行進位。

在這里插入圖片描述

通過這種分層設計在速度和復雜度之間取得平衡。

4.1.2進位的產生和傳遞

進位邏輯是加法器設計中影響運算速度的核心部分。

一、進位信號的基本邏輯

全加器的進位輸出由兩部分構成:

  1. 本地進位(本地生成) G i = A i ? B i G_i = A_i \cdot B_i Gi?=Ai??Bi?
    A i A_i Ai? B i B_i Bi? 均為1時,必然產生進位(與低位無關)。
  2. 傳遞進位(傳遞依賴) P i = A i ⊕ B i P_i = A_i \oplus B_i Pi?=Ai?Bi?
    A i A_i Ai? B i B_i Bi? 為1時,低位進位可傳遞至高位。

進位表達式可簡化為:
C i = G i + P i ? C i ? 1 C_i = G_i + P_i \cdot C_{i-1} Ci?=Gi?+Pi??Ci?1?

邏輯電路圖
在這里插入圖片描述

二、并行進位技術

1. 完全并行進位(CLA)

所有進位直接由原始輸入和最低位進位 C 0 C_0 C0? 同時生成,不依賴相鄰進位。
4位CLA的進位表達式
C 1 = G 1 + P 1 C 0 C 2 = G 2 + P 2 G 1 + P 2 P 1 C 0 C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C 4 = G 4 + P 4 (嵌套前3位進位生成邏輯) \begin{aligned} C_1 &= G_1 + P_1 C_0 \\ C_2 &= G_2 + P_2 G_1 + P_2 P_1 C_0 \\ C_3 &= G_3 + P_3 G_2 + P_3 P_2 G_1 + P_3 P_2 P_1 C_0 \\ C_4 &= G_4 + P_4 \text{(嵌套前3位進位生成邏輯)} \end{aligned} C1?C2?C3?C4??=G1?+P1?C0?=G2?+P2?G1?+P2?P1?C0?=G3?+P3?G2?+P3?P2?G1?+P3?P2?P1?C0?=G4?+P4?(嵌套前3位進位生成邏輯)?
優點:延遲固定為 2 t y 2t_y 2ty?(1級 G i / P i G_i/P_i Gi?/Pi?計算 +1級邏輯門)。
缺點:硬件復雜度隨位寬指數增長,實際應用中需分組實現。

2. 分組并行進位

兩層設計思想:組內并行(Group Carry Lookahead)+ 組間并行。

  • 組內并行(如4位一組):組內所有進位同時生成。
  • 組間并行:通過“組生成函數” G ? G^* G? 和“組傳遞函數” P ? P^* P? 加速跨組進位。

關鍵公式
組生成函數 G ? = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 組傳遞函數 P ? = P 4 P 3 P 2 P 1 組進位輸出 C 4 = G ? + P ? C 0 \begin{aligned} \text{組生成函數} \quad G^* &= G_4 + P_4 G_3 + P_4 P_3 G_2 + P_4 P_3 P_2 G_1 \\ \text{組傳遞函數} \quad P^* &= P_4 P_3 P_2 P_1 \\ \text{組進位輸出} \quad C_4 &= G^* + P^* C_0 \end{aligned} 組生成函數G?組傳遞函數P?組進位輸出C4??=G4?+P4?G3?+P4?P3?G2?+P4?P3?P2?G1?=P4?P3?P2?P1?=G?+P?C0??

流程圖(16位兩級分組CLA)**:

在這里插入圖片描述

三、分組方式對比

進位方式硬件復雜度最大延遲適用場景
串行進位低(簡單級聯) O ( n ) O(n) O(n)低速低成本芯片
單級分組CLA中等(組內并行) O ( n ) O(\sqrt{n}) O(n ?)通用CPU(如32位處理器)
多級分組CLA高(多級邏輯) O ( log ? n ) O(\log n) O(logn)高性能計算(如GPU)

四、典型應用與優化

1. 示例:16位兩級CLA

  • 組內延遲:每組4位的CLA生成 C 4 C_4 C4? 2 t y 2t_y 2ty?
  • 組間延遲:通過高層CLA生成跨組進位,再傳遞回組內,總延遲 4 t y 4t_y 4ty?

關鍵優化點

  • 增量進位計算:組內生成 G i G_i Gi? P i P_i Pi? 后,直接用于高層邏輯,避免重復計算。
  • 專用邏輯電路:使用74181(4位ALU)和74182(CLA擴展器)實現快速級聯。

五、總結

  • 并行進位核心:通過預先計算進位生成與傳遞關系,消除等待相鄰進位時間。
  • 工程權衡:硬件資源與速度的平衡,分組策略需根據芯片制程和應用場景調整。
  • 實際應用:現代CPU多采用多級分組(如64位加法器分為4×16位組),配合動態調度優化效率。

4.1.3并行加法器的快速進位

一、快速進位的必要性

傳統串行進位的并行加法器(行波進位)進位延遲與位數成正比(如16位加法器延遲32ty)。快速進位技術通過并行化處理減少進位傳播時間,核心思路是通過邏輯預判提前生成所有進位。

二、并行進位邏輯表達式

對于每位進位 C i C_i Ci? ,通過進位生成函數 G i G_i Gi?進位傳遞函數 P i P_i Pi? 遞歸展開:

  1. 單級先行進位(完全并行)
    C 1 = G 1 + P 1 C 0 C 2 = G 2 + P 2 G 1 + P 2 P 1 C 0 C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C 4 = G 4 + P 4 C 3 ( 依此類推 ) \begin{aligned} C_1 &= G_1 + P_1 C_0 \\ C_2 &= G_2 + P_2 G_1 + P_2 P_1 C_0 \\ C_3 &= G_3 + P_3 G_2 + P_3 P_2 G_1 + P_3 P_2 P_1 C_0 \\ C_4 &= G_4 + P_4 C_3 \quad (\text{依此類推}) \end{aligned} C1?C2?C3?C4??=G1?+P1?C0?=G2?+P2?G1?+P2?P1?C0?=G3?+P3?G2?+P3?P2?G1?+P3?P2?P1?C0?=G4?+P4?C3?(依此類推)?

  2. 硬件實現矛盾

    • 優點:所有進位僅依賴 G i / P i G_i/P_i Gi?/Pi? C 0 C_0 C0?,可同時生成。
    • 缺點:公式復雜度隨位數指數增長(n位數需 n n n級邏輯門),實際需分組分層處理。
      在這里插入圖片描述

三、分組進位技術

1. 單級分組并行進位(組內并行、組間串行)

  • 分組示例:將16位分為4組,每組4位。

  • 每組生成4位進位
    在這里插入圖片描述

    優點:硬件簡單,延遲降低為 8 t y 8ty 8ty(4組 × 2ty/組)。

2. 多級分組并行進位(組間并行)

  • 核心邏輯
    • 每組(如4位)生成組進位生成函數 G ? G^* G?組進位傳遞函數 P ? P^* P?
      G ? = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 P ? = P 4 P 3 P 2 P 1 G^* = G_4 + P_4 G_3 + P_4 P_3 G_2 + P_4 P_3 P_2 G_1 \\ P^* = P_4 P_3 P_2 P_1 G?=G4?+P4?G3?+P4?P3?G2?+P4?P3?P2?G1?P?=P4?P3?P2?P1?
    • 高層CLA電路計算跨組進位:
      C 4 ( k + 1 ) = G k ? + P k ? C 4 k ( k = 0 , 1 , 2 , 3 ) C_{4(k+1)} = G^*_k + P^*_k C_{4k} \quad (k=0,1,2,3) C4(k+1)?=Gk??+Pk??C4k?(k=0,1,2,3)
  • 示例(以16位雙重分組為例):

在這里插入圖片描述

- **延遲**:僅 $6ty$(組內2ty + 組間2ty + 二次組內2ty)

四、硬件電路實現

使用 CLA電路生成器(如74182芯片)與 基本加法單元(如74181):

在這里插入圖片描述

五、典型對比

類型硬件復雜度最大延遲適用場景
行波進位 32 t y 32ty 32ty低速設備
單級分組(4位一組)中等 8 t y 8ty 8ty通用CPU
多級分組雙 6 t y 6ty 6ty高性能計算(GPU)

六、關鍵流程圖

單級分組硬件結構

在這里插入圖片描述

多級分組信號流

在這里插入圖片描述

通過上述機制,快速進位技術顯著降低了加法運算的延遲,在現代CPU與高性能計算中廣泛應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79976.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用Qt創建一個模擬問答系統

界面: 添加了聊天顯示區域(QTextEdit) 添加了發送按鈕和清空對話按鈕 優化了布局和窗口大小添加了時間戳顯示 2、功能: 支持實時對話可以清空對話歷史 支持按回車發送消息 添加了簡單的關鍵詞匹配響應系統 交互體驗&#x…

神經光子渲染:物理級真實感圖像生成——從麥克斯韋方程到深度學習

一、技術背景與核心突破 2025年,神經光子渲染(Photonic Neural Rendering, PNR)技術通過物理光學方程與神經輻射場的深度融合,在AIGC檢測工具(如GPTDetector 5.0)的識別準確率從98%降至12%。該技術突破性地…

Linux中手動安裝7-Zip軟件文檔

7zip位于EPEL源中,如果服務器可以聯網或者配置了本地EPEL源則可以直接安裝 yum install p7zip p7zip-plugins -y對于無法聯網且沒有配置本地EPEL源的服務器,可以通過官網下載安裝包后,上傳至服務器,手動安裝 ## 下載地址&#x…

[密碼學基礎]GM/T 0018-2023 密碼設備應用接口規范深度解析:技術革新與開發者實踐

GM/T 0018-2023 密碼設備應用接口規范深度解析:技術革新與開發者實踐 GM/T 0018-2023《密碼設備應用接口規范》是中國密碼行業的重要標準,于2023年12月4日發布,2024年6月1日正式實施,替代了2012年版標準。該標準旨在規范密碼設備…

8.QT-按鈕類控件|Push Button|Radio Button|Check Box|Tool Button(C++)

Push Button 使? QPushButton 表??個按鈕.這也是當前我們最熟悉的?個控件了. QPushButton 繼承? QAbstractButton .這個類是?個抽象類.是其他按鈕的?類 在Qt Designer中也能夠看到這?的繼承關系 屬性說明text按鈕中的?本icon按鈕中的圖標iconSize按鈕中圖標的尺?sh…

CFIS-YOLO:面向邊緣設備的木材缺陷檢測輕量級網絡解析

論文地址:https://arxiv.org/pdf/2504.11305 目錄 一、論文核心貢獻 二、創新點詳解 2.1 CARAFE動態上采樣 工作原理 優勢對比 2.2 C2f_FNB輕量模塊 計算效率 2.3 Inner-SIoU損失函數 三、實驗驗證 3.1 消融實驗 3.2 對比實驗 四、應用部署 4.1 邊緣設備部署流程…

BUUCTF PWN刷題筆記(1-9)

才知道,由于棧對齊,直接動調看棧估計會錯,用cyclic看 1.test_your_nc NC連接一下,這個網站似乎直接訪問是不中的,懷疑是沒開啟web的端口。NC鏈接輸入cat flag就OK了,應該只是讓我這樣的小菜鳥培養自信用的…

C#處理網絡傳輸中不完整的數據流

1、背景 在讀取byte數組的場景(例如:讀取文件、網絡傳輸數據)中,特別是網絡傳輸的場景中,非常有可能接收了不完整的byte數組,在將byte數組轉換時,因字符的缺失/增多,轉為亂碼。如下…

PostgreSQL 用戶資源管理

PostgreSQL 用戶資源管理 PostgreSQL 提供了多種機制來管理和限制用戶對數據庫資源的使用,以下是全面的資源管理方法: 1 連接限制 1.1 限制最大連接數 -- 在 postgresql.conf 中設置 max_connections 100 -- 全局最大連接數-- 為特定用戶設置連接限…

新書速覽|OpenCV計算機視覺開發實踐:基于Qt C++

《OpenCV計算機視覺開發實踐:基于Qt C》 本書內容 OpenCV是計算機視覺領域的開發者必須掌握的技術。《OpenCV計算機視覺開發實踐:基于Qt C》基于 OpenCV 4.10與Qt C進行編寫,全面系統地介紹OpenCV的使用及實戰案例,并配套提供全書示例源碼、PPT課件與作…

【上位機——MFC】消息映射機制

消息映射機制 Window消息分類消息映射機制的使用代碼示例 MFC框架利用消息映射機制把消息、命令與它們的處理函數映射起來。具體實現方法是在每個能接收和處理消息的類中,定義一個消息和消息函數指針對照表,即消息映射表。 在不重寫WindowProc虛函數的大…

docker學習筆記2-最佳實踐

一、在容器中啟動mysql的最佳實踐 (一)查找目錄 1、mysql的配置文件路徑 /etc/mysql/conf.d 2、mysql的數據目錄 /var/lib/mysql 3、環境變量 4、端口 mysql的默認端口3306。 (二)啟動命令 docker run -d -p 3306:3306 …

Vue3核心源碼解析

/packages/complier-core 定位??:??編譯時核心??,處理 Vue 模板的編譯邏輯。??核心功能??: ??模板解析??:將 .vue 文件的模板語法(HTML-like)解析為 ??抽象語法樹 (AST)??。??轉換優化…

n8n 中文系列教程_05.如何在本機部署/安裝 n8n(詳細圖文教程)

n8n 是一款強大的開源工作流自動化工具,可幫助你連接各類應用與服務,實現自動化任務。如果你想快速體驗 n8n 的功能,本機部署是最簡單的方式。本教程將手把手指導你在 Windows 或 MacOS 上通過 Docker 輕松安裝和運行 n8n,無需服務…

【python】pyCharm常用快捷鍵使用-(2)

pyCharm常用快捷鍵使用 快速導入任意類 【CTRLALTSPACE】代碼補全【CTRLSHIFTENTER】代碼快速修正【ALTENTER】代碼調試快捷鍵

Docker 鏡像、容器和 Docker Compose的區別

前言:Docker 的鏡像、容器和 Docker Compose 是容器化技術的核心組件,以下是對它們的詳細解析及使用場景說明。 ??1、Docker 鏡像(Image)?? ??定義??: 鏡像是只讀模板,包含運行應用程序所需的代碼、…

算法——背包問題(分類)

背包問題(Knapsack Problem)是一類經典的組合優化問題,廣泛應用于資源分配、投資決策、貨物裝載等領域。根據約束條件和問題設定的不同,背包問題主要分為以下幾種類型: 1. 0-1 背包問題(0-1 Knapsack Probl…

多路由器通過RIP動態路由實現通訊(單臂路由)

多路由器通過RIP動態路由實現通訊(單臂路由) R1(開啟端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…

從底層設計原理分析并理解SQL 的執行順序

?一、執行順序的底層設計原理?? ??1. 數據源的確定與連接(FROM → ON → JOIN)?? ??FROM??:數據庫首先需要確定數據的物理來源,從磁盤加載表或子查詢的原始數據。此時尚未應用任何篩選,僅讀取元數據&#…

游戲引擎學習第237天:使用 OpenGL 顯示圖像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我們正在處理一個新的開發階段,目標是在使用 OpenGL 渲染的同時能正常通過 OBS 進行直播。昨天我們已經嘗試了一整天來解決這個問題,希望能找到一種方式讓 OBS 能正確地捕捉到 OpenGL 的窗口畫面。雖然我們不確定…