計算機中最基本的算術運算是加法運算,加、減、乘、除運算最終都可以歸結為加法運算。
4.1.1加法器
一、加法器的基本單元
加法器的核心單元是 全加器(Full Adder, FA),而所有加法器都由 半加器(Half Adder, HA) 組合實現。
1. 半加器(HA)
功能:實現兩個1位二進制數相加(不考慮低位進位)。
輸入:A(加數)、B(被加數)
輸出:Sum(和)、Carry(進位)
真值表:
A | B | Sum | Carry |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
邏輯表達式:
Sum = A ⊕ B Carry = A ? B \text{Sum} = A \oplus B \\ \text{Carry} = A \cdot B Sum=A⊕BCarry=A?B
電路圖:
2. 全加器(FA)
功能:實現兩個1位二進制數與一個低位進位相加。
輸入:A(加數)、B(被加數)、C_in(低位進位)
輸出:Sum(和)、C_out(進位)
真值表:
A | B | C_in | Sum | C_out |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
邏輯表達式:
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=A⊕B⊕Cin?Cout?=A?B+(A⊕B)?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位需64t | 32位需64t | 4位僅需4t |
四、應用實例
現代CPU中,ALU的加法器采用 分組超前進位 結構:
- 16位加法器:4個4位CLA模塊 + 一級CLA控制。
- 延遲:僅需計算組內和組間的并行進位。
通過這種分層設計在速度和復雜度之間取得平衡。
4.1.2進位的產生和傳遞
進位邏輯是加法器設計中影響運算速度的核心部分。
一、進位信號的基本邏輯
全加器的進位輸出由兩部分構成:
- 本地進位(本地生成): 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時,必然產生進位(與低位無關)。 - 傳遞進位(傳遞依賴): 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? 遞歸展開:
-
單級先行進位(完全并行)
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?(依此類推)? -
硬件實現矛盾:
- 優點:所有進位僅依賴 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)
- 每組(如4位)生成組進位生成函數 G ? G^* G? 和組進位傳遞函數 P ? P^* P?:
- 示例(以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與高性能計算中廣泛應用。