第一章 加法器

                                      第一章 加法器

一、數據格式


1. 定點數表示法:x=x0x1x2…xn ,x0: 符號位,0代表正,1代表負。

2. 浮點表示法:

         一個機器浮點數由階碼和尾數及其符號位組成(尾數:用定點小數表示,給出有效數字的位數決定了浮點數的表示精度;階碼:用整數形式表示,指明小數點在數據中的位置,決定了浮點數的表示範圍。):

32位浮點數的IEEE754標準格式爲:

S:浮點數的符號位,1 位,0表示正數,1表示負數。

M:尾數,23位,用小數表示,小數點放在尾數域的最前面。

E:階碼,8 位階符采用隱含方式,採用移碼來表示正負指數。


         移碼方法對兩個指數大小的比較和對階操作都比較方便,因爲階碼域值大者其指數值也大。採用這種方式時,將浮點數的指數真值e變成階碼E時,應將指數 e 加上一個固定的偏移值127(01111111),即 E=e+127.

一個規格化的32位浮點數x的真值可表示爲

x=(-1)S×(1.M)×2E-127        e=E-127   

一個規格化的64位浮點數x的真值爲

x=(-1)s×(1.M)×2E-1023        e=E-1023

    爲提高數據的表示精度,當尾數的值不爲 0時,尾數域的最高有效位應爲1,否則以修改階碼同時左右移小數點的辦法,使其變成這一表示形式,這稱爲浮點數的規格化表示。 當浮點數的尾數爲0,不論其階碼爲何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數爲何值,計算機都把該浮點數看成零值,稱爲機器零。當階碼E 爲全0且尾數M 也爲全0時,表示的真值x 爲零,結合符號位S 爲0或1,有正零和負零之分。當階碼E 爲全1且尾數M爲全0時,表示的真值x 爲無窮大,結合符號位S 爲0或1,也有+∞和-∞之分。這樣在32位浮點數表示中,要除去E用全0和全1(255)10表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對於規格化浮點數,E的範圍變爲1到254,真正的指數值e則爲-126到+127。因此32位浮點數表示的絕對值的範圍是10-38~1038(以10的冪表示)。


二、加法器


        所有的加、減、乘、除四則運算,最終都是將其轉化爲加法運算來實現的,所以,加法運算是運算電路的核心。實現半加運算的電路叫做半加器(HalfAdder)。半加器有兩個二進制的輸入,其將輸入的值相加,並輸出結果到和(Sum)和進位(Carry)。半加器雖能產生進位值,但半加器本身並不能處理進位值。

  S = A + B

  C = A & B

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

一位元全加器:


         全加器三個二進制的輸入,其中一個是進位值的輸入,所以全加器可以處理進位值。全加器可以用兩個半加器組合而成。

Si = ( Ai + Bi ) + Ci

Ci+1 = ( Ai & Bi ) + ( Ci & ( Ai + Bi ))

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

三、並行加法器


           並行加法器中全加器的位數與操作數的位數相同,可同時對各位相加。影響速度的主要是傳遞進位信號的進位鏈。而優化設計的主要目標是高速、低耗、資源(面積)開銷小,其關鍵是構思高速、高效的進位算法與結構。一流的高速加法器有:超前進位加法器、跳躍進位加法器、樹形結構加法器、對數跳躍進位加法器、混合超前進位/選擇進位加法器、頂層進位級聯超前進位加法器等。這些高速、高效的進位方法一般都是在超前進位基礎上的改進或者混合進位。因此,超前進位加法器(簡稱CLA)很自然地成爲優化設計比較的基準。在結構方面,行波進位加法器是最簡單的整數加法器;它的時間複雜度是O(n)。跳躍進位加法器對於位數少的加法是相當有效的,但對於長位數的加法,由於該加法器的時間複雜度是o(n^-0.5)(其效果並不明顯)。超前進位加法器有着O(log2n)的時間複雜度,因此是最快的加法器算法。由於超前進位加法器速度快、結構模塊化,使它得以廣泛的應用。這種算法利用大量的硬件開銷實現產生進位信號的電路,運算時間減少比較明顯。

1、行波進位加法器

 

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

          由上圖看到,n個1位的全加器(FA)可級聯成一個n位的行波進位加減器。圖中左邊還表示出單符號位法的溢出檢測邏輯;當Cn=Cn-1時,運算無溢出;而當

Cn≠Cn-1時,運算有溢出,經異或門產生溢出信號。

         對一位全加器(FA)來說,Si的時間延遲爲4T(每級異或門延遲2T),Ci+1的時間延遲爲4T,其中T被定義爲相應於單級邏輯電路的單位門延遲。T通常採用一個“與非”門或一個“或非”門的時間延遲來作爲度量單位。

  n位行波進位加法器的延遲時間ta爲:

                      ta=n•2T+6T=(2n+6)T

6T爲最低位上的兩極“異或”門再加上溢出“異或”門的總時間,2T爲每級進位鏈的延遲時間。


2、超前進位加法器(CLA)


          超前進位鏈能夠有效減少進位的延遲,它由進位門產生進位,各進位彼此獨立,不依賴於進位傳播。因此延遲非常小,速度非常高。

        設一個n位的加法器的第i位輸入爲ai、bi、Ci,輸出si和Ci+l,其中ci是低位來的進位,ci+l(i =n-1,n-2,⋯,1,O)是向高位的進位,Co是整個加法器的進位輸入,而Cn是整個加法器的進位輸出。則有:

Si = ai + bi +Ci               (1)

Ci+1 = ai&bi + Ci&(ai +bi)     (2)

令:

Gi = ai&bi

Pi = ai + bi

則有:Ci+l = Gi +Pi•Ci            

只要Gi = ai&bi = l,就會產生向Ci+l位的進位,稱Gi爲進位產生函數;同樣,只要Pi = ai + bi =l,就會把Ci傳遞到Ci+1位,所以稱Pi爲進位傳遞函數。

隨着位數的增加式(2)會加長,但總保持三個邏輯級的深度,因此形成進位的延遲是與位數無關的常數。一旦進位(Cl---Cn-1)算出以後,和也就可由式(1)得出。


         對於4位的加法器,異或門需2T,產生Gi和Pi需要2級門延遲,Ci需要4級,si需要4級,總共需要4級門延遲。與串聯加法器(一般要2n級門延遲)相比,(特別是n比較大的時候)超前進位加法器的延遲時間大大縮短了。對於16位來說,需增加第二層超前進位鏈邏輯,總共需要7級門延遲。對於64位來說,需增加第三層超前進位鏈邏輯,總共需要10級門延遲;而串聯加法器需2*64 + 6 = 134級門延遲。


卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

C4 = G3 + P3C3 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C0

所以:P = P3P2P1P0,  !G = !G3 & !P3G2 &!P3P2G1 & !P3P2P1G0

C4 = G + PC0 = !(!G & !PC0)

所以,P、G就成爲下一層的進位傳遞與產生函數。

64位超前進位加法器總共需5*64 + 19*16 + 19*4 + 19 = 719個門邏輯。實際上還要更多的門;需考慮,減法運算,乘法運算等來共享64位超前進位加法器;所以,還需多路器邏輯門等等。


3、進位旁路加法器(CSKA)


          設計加速一個寬位加法器,它使進位繞過整個加法器的一部分進行傳播。對4位一組的加法器情形,第一組的進位輸入位表示成C0,而4位加法器本身產生一個進位輸出位C4。如果Ai、Bi其中都有一個爲1,而C0爲1;那麼,自然會產生進位C4=1。如果使用一個相應的進位邏輯門旁路電路;只需要5級門延遲。而不會像4位行波進位加法器那樣需12級門延遲。跳躍進位旁路加法器就是在行波進位加法器的Cin—Cout路徑中,通過增加旁路邏輯門電路來加速加法器的進位傳遞。速度自然要比行波進位加法器快不少。


4、進位選擇加法器(CSA)


           其主要思想即將前一級的進位先假定爲1或者0,之後分別計算出一個結果,然後再用前一級的進位來選擇得到相應的結果,這樣後級的計算就不用等候前一級的進位,而是和前級的計算並行進行,之後再做一個選擇,從而達到快速運算的目的,當然所付出的代價是它要增加加法器和MUX以及相應的互聯線,犧牲一定的面積和功耗。如果4位一組,64位加法器需16組,組間是串行傳遞,MUX需要2級門延遲;所以,總共需36級門延遲。開頭的2組用超前進位加法器(CLA),後面的組就可用行波進位加法器了。用空間換時間,比行波進位加法器提速了不少。


           應當注意的是:在用變長分組的進位選擇加法器中,用於選擇的信號扇出負載爲x-y+l。由於加法器構造過程中,每向後一級,加法器位寬都會拓寬其兩個子加法器位寬之和,因而這兩個選擇信號的扇出負載也會逐級提高,因而各個多路選擇器(MUX)的數據選取速度也會逐級降低。


5、 4-2壓縮加法器


        在部分積求和網絡模塊中,爲了獲得較高的速度,採用了改進的4-2壓縮加法器結構。4-2壓縮器通過將具有相同權值的4個部分積減少到2個來提高並行度。傳統的4-2壓縮器是由2個串行連接的全加器所組成。

卷二 <wbr> <wbr>第一章 <wbr> <wbr>加法器

            如果是5個1相加,結果應是101。而這裏並不是將2個進位相加,而是產生2個進位Cout,C和一位的結果S。既是:Cout,C,S都是1。Cout將作爲高一個位的進位保留位的進位輸入;而C是本位的進位保留位。“進位保留”是指先保留進位輸出而不是立即用它來計算最終的和。而是將進位保留到下一級的加法器進行,避免了進位鏈的延時。所以一個4-2壓縮加法器總共需6級門延遲。

           4-2壓縮加法器主要應用於乘法器的運算。整個乘法器的速度,主要有三部分組成:Booth 編解碼單元或APO 編解碼單元、4-2壓縮單元與CLA 快速求和單元。APO編碼是完成縮減部分積數量的算法,每次掃描2位數據,將部分積數量縮減了50%。31位乘數(符號位取0)採用APO算法編碼後與被乘數相乘得到16 行部分積;接着基於4-2壓縮器的第一級4個壓縮單元將部分積壓縮成Carry、Sum形式的兩行部分積共4組,之後;第二級2個壓縮單元將前面的4組8行數據再壓縮成Carry、Sum形式的兩行部分積共2組,之後;第三級1個壓縮單元將前面的2組4行數據再次壓縮成Carry、Sum形式的兩行部分積共1組2行數據。最後用64位超前進位加法器(CLA)完成最終兩行部分積的快速求和結果。乘法器總共需APO算法4級門延遲 + 三級4-2壓縮加法器(3*6 )18級門延遲 =22級門延遲。因64位超前進位加法器是使用流水部件,延遲不計算。如果一個門延遲是小於23PS,那麼32位乘法器有望速度能達到0.5ns。佔用2個時鐘週期。

     光走過一米的距離大約需3.3ns,如果走過30納米的距離大約需0.0001ps,而電信號,由於電容、電感、電阻的存在就慢多了。

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