二進制加法器

                                                                                 圖1 - 4bit全加器原理

上一節我們學習了ALU的加法實現功能部件——全加器,進行兩個4bit的二進制數相加,就要用到4個全加器(如圖1所示)。那麼在進行加法運算時,首先準備好的是1號全加器的3個input。而2、3、4號全加器的Cin全部來自前一個全加器的Cout,只有等到1號全加器運算完畢,2、3、4號全加器才能依次進行進位運算,最終得到結果。 這樣進位輸出,像波浪一樣,依次從低位到高位傳遞, 最終產生結果的加法器,也因此得名爲行波進位加法器(Ripple-Carry Adder,RCA)。

RCA的優點是電路佈局簡單,設計方便, 我們只要設計好了全加器,連接起來就構成了多位的加法器。 但是缺點也很明顯,也就是高位的運算必須等待低位的運算完成, 這樣造成了整個加法器的延遲時間很長。那麼,RCA的效率到底如何呢?讓我們來算一算:

將4bit的RCA內部結構全部打開,就得到了如圖2所示的4-bit RCA的門電路圖。要對一個電路的性能進行分析,我們就要找出其中的最長路徑。 也就是找出所有的從輸入到輸出的電路連接中,經過的門數最多的那一條,也稱爲關鍵路徑(如圖3所示)。

                                                                                圖2 - 4-bit RCA的門電路實現

                                                                              圖3 - 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只是一個加法運算器,更更別說,我們在計算過程中只考慮了門延遲,還有線延遲等各種延遲沒有加入計算……

所以RCA的效率絕對是個問題。那麼,有沒有辦法優化呢?RCA的主要問題是高位的運算必須等待低位的“進位輸出信號”,那我們的優化思路就是‘能否提前計算出“進位輸出信號’ ?”

參見圖2,我們可以用前一個全加器的參數來表示後面的進位輸出(Cout),即:

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

最終我們需要得到的是C4,經過換算,C4=G3+P3·G2+P3·P2·G1+P3·P2·P1·G0+P3·P2·P1·P0·C0,而這些參數,全部已知!並不需要前一個全加器運算輸出,由此我們得到了提前計算進位輸出的方法, 用這樣的方法實現了加法器就被稱爲超前進位加法器(Carry-Lookahead Adder,CLA)。

根據上面的優化算法,我們重新繪製了CLA的佈線方式(如圖4):

                                                                       圖4 - CLA原理圖

                                                                                            圖5

那麼使用CLA來進行加法運算的效率如何呢?還是按照Apple A7處理器的工藝水平,單個CLA的延遲爲0.08ns,4級CLA的延遲爲0.26ns,時鐘頻率3.84GHz,都遠遠小於主頻的延遲,完全符合標準。然而,由圖可見,計算4bit的二進制數,就要平行排列4個全加器,那麼要是計算8bit,16bit,32bit……的呢?可能就需要更復雜的佈線方式,這就是CLA的缺點。

最後,我們列個表比較一下RCA和CLA的優缺點:

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

32位的加法器如果採用行波進位的方式,我們已經分析過需要65級的門延遲, 那如果採用超前進位的方式,理想情況下也只需要四級的門延遲,但可惜的是, 這也只是一個理想。因爲要實現32位的完全的超前進位,電路就會變得非常的複雜。 因此通常的實現方法, 是採用多個小規模的超前進位加法器拼接而成一個較大的加法器,例如,用4個8-bit的超前進位加法器連接成32-bit加法器。

轉載:https://www.jianshu.com/p/6ce9cad8b467
來源:簡書

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章