一、串行(行波)進位加法器
進行兩個4bit的二進制數相加,就要用到4個全加器。那么在進行加法運算時,首先准備好的是1號全加器的3個input。而2、3、4號全加器的Cin全部來自前一個全加器的Cout,只有等到1號全加器運算完畢,2、3、4號全加器才能依次進行進位運算,最終得到結果。 這樣進位輸出,像波浪一樣,依次從低位到高位傳遞, 最終產生結果的加法器,也因此得名為行波進位加法器(Ripple-Carry Adder,RCA)。

RCA的優點是電路布局簡單,設計方便, 我們只要設計好了全加器,連接起來就構成了多位的加法器。 但是缺點也很明顯,也就是高位的運算必須等待低位的運算完成, 這樣造成了整個加法器的延遲時間很長。將4bit的RCA內部結構全部打開,就得到了如圖所示的4-bit RCA的門電路圖。要對一個電路的性能進行分析,我們就要找出其中的最長路徑。 也就是找出所有的從輸入到輸出的電路連接中,經過的門數最多的那一條,也稱為關鍵路徑。

我們來做一個簡單的分析, 對於最低位的全加器,它在A、B和Cin都已經准備好。其實,輸入信號進入到這塊電路之后,在連接線上傳遞需要花時間。 稱為線延遲,而經過這樣的門,也需要花時間,稱為門延遲。 在進行設計原理分析時,我們主要關注門延遲。

從第一個全加器的A-S這條通路來看,產生第一個S輸出,需要通過兩個門的延遲。 所以它顯然不是最長的路徑,當然,從A出發或着從B出發都是一樣的, 所以對於第一個全加器,它的最長路徑,是紅色線標記的那條,后面的全加器關鍵路徑同理可得。
那么,假設經過一個門電路的延遲時間為T,那么經過4個全加器所需要的總延遲時間就是:2T x 4 + T(第一個全加器產生3個T) = 9T。所以推出,經過n個全加器所產生的總延遲時間為2T x n + T = (2n+1)T。
對於一個32bit的RCA,有總延遲時間:(2n+1)T =(2×32+1)×T =65T,這是什么概念呢?舉個例子,iPhone 5s的A7 SoC處理器采用28nm制造工藝,主頻1.3GHz(0.66ns)。按照這個工藝水平,門延遲T設為0.02ns,那么32-bit RCA的延遲時間為1.3ns ,時鍾頻率為769MHz,遠超A7處理器的主頻延遲時間,更別說這個32bit的RCA只是一個加法運算器,更更別說,我們在計算過程中只考慮了門延遲,還有線延遲等各種延遲沒有加入計算……
二、超前進位加法器(Carry-Lookahead Adder,CLA)
用前一個全加器的參數來表示后面的進位輸出(Cout),即:

由此來表示4個全加器的進位輸出為:


| RCA | CLA | |
| 結構特點 | 低位全加器的Cout連接到高一位全加器Cin | 每個全加器的進位輸入並不來自於前一級的全加器,而是來自超前進位的邏輯 |
| 優點 | 電路布局簡單,設計方便 | 計算Ci+1的延遲時間固定為三級門延遲,與加法器的位數無關 |
| 缺點 | 高位的運算必須等待低位的運算完成,延遲時間長 | 如果進一步拓寬加法器的位數,則電路變得非常復雜 |
原文鏈接: 加法器的優化——超前進位加法器
