超前進製加法器的理解

2021-06-18 00:56:31 字數 1795 閱讀 8841

目前在所有的cpu中,為了提高加法的計算速度。都採用了超前進製加法器。

普通的加法器我們很好理解,我這裡從網上找了一張圖。

可以想象最簡單的加法計算就是每一位都進行一次全加器計算,然後產生乙個進行c,下乙個全加器在取得進製以後再進行他的位的計算,迴圈下去直到最後一位。這樣的問題是進行一次32位的加法計算就需要至少序列的經過32個全加器,如果cpu的頻率是3ghz,那麼乙個時鐘週期,大約333皮秒內,是無法完成一次簡單的加法運算的。

那麼超前進製加法器是如何做到高速計算的,可以想象肯定是把計算平行化了,而且是用數量來換了速度。但是具體是怎麼做的呢。我們來一起分析下。

首先考慮所有的加法情況

rowxycin

cout

s00

000010

010120

100130

111041

000151

011061

101071

1111

我們用這公式來描述所有2進製加法的進製的計算公式

ci+1 = xiyi + xici + yici

這裡c表示的是進製,舉個列子來說就是第一位的進製c1他是由第零位的x0*y0+x0*c0+y0*c0, 這裡很明顯c0是始終為0的。那麼c1=x0*y0

然後這個提取公因子公式就變成了

ci+1 = xiyi + ci(xi + yi)

然後是不是發現,這樣一來只有ci是不確定的。其他的xi和yi都是直接輸入。
但是ci其實呢通過迴圈inline的乙個替換,其實會變成類似

ci+1 = xiyi + (xi + yi)(x

i-1y

i-1+ c

i-1(x

i-1+ y

i-1)

然後可以一直這樣替換下去,直到c0這一層。或者是最右端的輸入。
一般的通常會把這幾個變數成為g,p變數
gi = xiyi 

pi = xi + yi

這樣理論上可以實現任何位數都在有限次內完成,但是這樣的代價是位數越多需要的電路也就越多。
這裡附上一張wiki中的圖來說明
這裡第一步的時候,所有的4個全加器對每一位計算出自身的和si, gi和pi
然後第二部,超前進製器計算出c1,c2,c3,c4,當然這裡的c1,c2,c3,c4計算需要的邏輯門數量是逐步遞增的。
然後c1,c2,c3對s1,s2,s3進行進製,c4會傳遞給更上面的位。
基本就是這樣了。但是由於成本的問題一般都會把32位或者64位的切割成多個16位的超前進製來進行計算,能保證在乙個時鐘週期內完成基本就可以了。
取得乙個成本和效能上得平衡。

超前進製加法器

在實時訊號處理中,常常要用到多位數字量的加法運算,但序列加法器速度較慢,超前進製加法器則能滿足要求,且結構並不複雜。現在普遍使用的並行加法器是超前進製加法器,只是在幾個全加器的基礎上增加了乙個超前進製形成邏輯,以減少由於逐步進製訊號的傳遞所造成的時延。具體的演算法為 s i x i y i c i ...

超前進製加法器實驗報告 超前進製加法器

首先畫出2位全加器的真值表與卡諾圖 根據真值表可知二進位制加法與十進位制加法一樣,進製值是逢二進一.而和值則是上級進製值跟被加數跟加數總和模二的餘數.根據卡諾圖化簡得到s與ci 1的全加器電路為 多位加法器可以用行波進製加法器實現,也就是第一位的ci為0,第二位開始,ci就連線著上一級的ci 1,這...

序列加法器 並行加法器 超前進製加法器

1.序列加法器 序列加法器即加法器執行位序列行操作,利用多個時鐘週期完成一次加法運算,即輸入運算元和輸出結果方式為隨時鐘序列輸入 輸出。位並行加法器速度高,但是占用資源多。在許多實際應用中並不需要這樣高的速度,而是希望減少硬體資源佔用率,這時就可以使用位序列加法器。在序列加法器中,只有乙個全加器,資...