中文字幕无码日韩视频无码三区

一種64比特浮點乘加器及其流水節拍劃分方法

文檔序(xu)號(hao):6639425閱讀:290來源:國知(zhi)局
專利名稱:一種64比特浮點乘加器及其流水節拍劃分方法
技術領域
本發明涉及浮點乘加器,特別涉及到一種64比特浮點乘加器及其流水節拍劃分方法。
背景技術
為了達到浮點計算的高效率,在許多處理器中浮點乘法和加法都使用一個浮點運算單元浮點乘加部件來實現。乘加(FMAF)指令需要3個操作數。例如,執行(A×B)+C操作,當把乘加指令中操作數C置為0時執行的是乘法指令,把操作數B置為1時,執行的是加法指令。在已實現的多數處理器中,浮點乘加運算一般通過以下步驟來實現(相關內容請見參考文獻1Floating-Point Multiply-Add-Fused with ReducedLatency和參考文獻2Architectural design of a fast floating-point multiplication-addfused unit using signed-digit addition)1、操作數A×B利用乘法壓縮樹進行壓縮,得到carry(進位)和sum(和)兩個部分積。在進行乘法樹壓縮的同時,操作數C進行取反和對齊移位操作。
在運算時,操作數A×B和C的符號可能相同,也可能相反。如果A×B和C的符號相反,將A×B和C做有效減法,需要得到C的補碼進行相加,C需要取反。否則如果A×B和C的符號相同做有效加法,C不需要取反。
在IEEE754標準中,雙精度C操作數的尾數是53比特,再加上2個額外的舍入(rounding)比特,取反后得到的Cinv比A×B的結果的最高位最多左移55位,或者比A×B結果的最高位最多右移106比特,即移位范圍在(-55,106)之間。在浮點乘加的設計中為了使移位簡單化,規一化Cinv的移位方向位為向右移位。所以Cinv初始是在A×B左移55比特的初始位置,Cinv在對齊中右移位的位數是56-d=56-(exp(C)-(exp(A)+exp(B)-1023)),其中,exp(A),exp(B)和exp(C)分別是操作數A,B和C的指數。當56-d小于零時,Cinv不移位,56-d大于161時最多向右移位161比特。
2、把對齊移位后的Cinv和A×B壓縮后的carry和sum用壓縮比為3∶2的CSAtree壓縮,得到兩個部分積。
3、把2中壓縮后得到的部分積做加法運算,同時利用這兩個部分積進行LZA(leading zero anticipator,首位0的個數預測)得到加法結果的規格化左移的位數。
4、加法結果利用LZA預測的左移的位數進行規格化左移和舍入操作。
在處理器中采用與浮點乘加運算相對應的浮點乘加部件,與單純的乘法器和加法器相比,采用浮點乘加部件有以下兩個好處①降低了用乘法器和加法器執行乘加指令的延遲。通常的處理器中實現的浮點乘法是2~4拍,浮點加法2~3拍,而浮點乘加指令的延遲一般在3~4拍左右,可以看出一條浮點乘法指令接著一條浮點加法指令所需要的節拍數之和大于等于一條浮點乘加的執行節拍數,所以采用浮點乘加指令降低了先乘后加(乘加)的指令序列的延遲。
②比乘法器和加法器的硬件開銷之和要小,而且提高了乘加指令結果的精度。從上面步驟可以看出,浮點乘加只在A×B+C結束后做一次舍入(rounding)和規格化(normalization),而用乘法和加法指令來實現浮點乘加需要先進行乘法的舍入和規格化,然后進行加法的舍入和規格化,要做兩次舍入和規格化。只做一次舍入和規格化使得浮點乘加器硬件規模比浮點乘法器和浮點加法器之和的硬件規模要小一些。并且在浮點乘加器中,進行舍入的數據長度是161比特,提高了浮點運算的精度。
在現有技術中,浮點乘加部件一般用一個27∶2的乘法壓縮樹(carry save addertree,以下簡稱CSA tree)來壓縮A×B的結果,然后再用一個3∶2 CSA tree來壓縮操作數C取反移位對齊的結果和A×B乘法壓縮得到的carry和sum(相關的具體內容請見參考文獻3Floating-Point Multiply-Add-Fused with Reduced Latency)。這樣設計的浮點乘加器對于流水節拍的時延的均衡劃分造成了很大困難,27∶2的CSA tree的延遲比較大,如果放在一個流水節拍內完成,就會成為整個浮點乘加器的最關鍵路徑,限制了浮點乘加器的運行速度。

發明內容
本發明的目的是克服現有技術中,流水節拍時延不均衡,限制浮點乘加器運行速度的缺點,提供一種64比特浮點乘加器的流水節拍劃分方法,實現對流水節拍時延的均衡劃分。
本發明的另一個目的是提供一種與64比特浮點乘加器的流水節拍劃分方法相對應的64比特浮點乘加器。
為了實現上述目的,本發明提供了一種64比特浮點乘加器的流水節拍劃分方法,實現形式為(A×B)+C的乘加運算,具體包括以下步驟1)、在第一個流水節拍中,首先對操作數C做取反、移位操作,然后將B的尾數經過基2的波茨編碼,得到27個編碼結果,編碼結果與A相乘,得到27個部分積,最后采用2個壓縮比為14∶2的乘法壓縮樹,同時壓縮27個部分積和操作數C取反移位后的結果,得到2個“和”及2個“進位”,分別標記為sum1,carry1,sum2,carry2;2)、在第二個流水節拍中,用一個4∶2的乘法壓縮樹壓縮步驟1)得到的2個“和”及2個“進位”,生成壓縮后的“進位”與“和”,分別用carry和sum表示,然后對carry和sum做正半加運算和取反半加運算,得到2組半加運算的結果,分別用sumHApos,carryHApos和sumHAinv,carryHAinv表示,同時對carry和sum之和進行首位0的個數檢測,預測結果用一個序列表示,該序列標記為f,最后還需要對carry和sum之和進行符號檢測,得到檢測結果指示信號,該信號用complement表示,根據complement選擇2組半加運算結果sumHApos,carryHApos,sumHAinv,carryHAinv中的一組,所得到的結果用sumHA,carryHA表示;3)、在第三個流水節拍中,把步驟2)中的首0個數預測得到的序列f進行編碼,得到一個7比特數據S,同時對步驟2)中得到的結果sumHA,carryHA進行53比特預移位,然后再根據S進行108比特的移位,得到2個結果,用sumnorm和carrynorm來表示;4)、在第四個流水節拍中,利用步驟3)得到的sumnorm和carrynorm的高53位做加法,得到2個結果res0和res1,同時對sumnorm和carrynorm的低108比特進行舍入得到一個進位符號cin,然后用cin來選擇res0和res1,得到最后乘加的尾數結果res。
一種64比特浮點乘加器,四個流水節拍部分包括第一個流水節拍部分由指數處理單元1、取反器2、161比特對齊移位器3、基2的波茨編碼器4、14∶2的乘法壓縮樹5、14∶2的乘法壓縮樹6組成;其中,指數處理單元1根據操作數A的指數,B的指數和C的指數計算d=exp(C)-(exp(A)+exp(B)-1023)的符號,56-d的值,以及d≤2或d=0或d=1的控制信號的值;取反器2,如果C的符號位和A×B的符號位不同,C的尾數做每比特的取反操作,如果C的符號位和A×B的符號位相同,則不作取反操作,并將操作結果送入161比特對齊移位器3中;161比特對齊移位器3收到取反器2輸出的結果后,根據指數處理單元1得到的56-d的值,對C的尾數進行161比特移位,移位輸出的低106比特結果送入2個14∶2的乘法壓縮樹5、6中,移位輸出的高55比特送入161比特正半加器9和161比特取反半加器10中;基2的波茨編碼器4對B的尾數進行編碼,然后將編碼的結果與A的尾數相乘得到27個部分積,編碼后的部分積的0~13部分積送入14∶2的乘法壓縮樹5,14~27部分積送入14∶2的乘法壓縮樹6;14∶2的乘法壓縮樹5和6壓縮A×B的部分積,以及操作數C尾數對齊移位后結果,得到標記為carry1,sum1,carry2,sum2的4個80比特數據;第二個流水節拍由壓縮比為4∶2的乘法壓縮樹7、108比特首0檢測LZA8、161比特正半加器9、161比特取反半加器10、106比特符號檢測器11、161比特的選擇器12組成;其中,4∶2的乘法壓縮樹7輸入14∶2的乘法壓縮樹5和6輸出的carry1,sum1,carry2,sum2,對這4個80比特數據做壓縮操作,carry2和sum2要比carry1和sum1左移26比特,進行移位壓縮,最后輸出2個106比特的結果sum和carry;106比特的首0檢測LZA8檢測4∶2的乘法壓縮樹7輸出的sum和carry中的首0比特,得到106比特首零指示序列f;161比特正半加器9將161比特對齊移位器3輸出的C取反移位后的高55比特和4∶2的乘法壓縮樹7輸出的sum做合并,然后將carry的比特高位填0,得到兩個數據,然后對這兩個數據進行半加運算,得到兩個結果sumHApos,carryHApos,送入161比特選擇器12中;161比特取反半加器10是將161比特對齊移位器3輸出的C取反移位后的高55比特和4∶2的乘法壓縮樹7輸出的做sum合并,把sum和carry取反,carry高位填充1得到兩個個數據,然后對這兩個數據進行半加運算,得到兩個結果sumHAinv,carryHAinv,送入161比特選擇器12中;
106比特的符號檢測器11判斷carry和sum相加的符號,如果兩個相加的結果為負,將檢測結果指示信號complent的值設置為1,反之,當相加的結果為正,將檢測結果指示信號complement的值設置為0,所得到的complement的值送入161比特選擇器12中;161比特選擇器12根據106比特的符號監測器11輸出的complement的值,對161比特正半加器9和161比特取反半加器10輸出的結果做選擇,當complement的值為1時,sumHA=sumHAinv,carryHA=carryHAinv;反之,當complement的值為0時,sumHA=sumHApos,carryHA=carryHApos,選擇得到的結果送入移位器14中;第三個流水節拍由108比特首0位置編碼LZD13、移位器14、乘加指數結果計算單元15組成;其中,108比特首0位置編碼LZD13對106比特的首0檢測LZA8輸出的f進行編碼,編碼后得到一個7比特結果S,并輸出到移位器14中;移位器14由53比特移位器和108比特移位器組成,當LZD進行編碼的同時,對161比特選擇器12輸出的結果進行53比特的條件移位,當d≤2時,對161比特選擇器12輸出的sumHA和carryHA做53比特移位,否則不進行移位,當LZD產生S后,根據S的值,再做108比特的移位,移位后的結果用sumnorm和carrynorm表示,并輸出該結果到53比特雙加法器16和低108比特舍入邏輯17;乘加指數結果計算單元15對操作數A,B,C的指數和d的符號位,以及移位器14最后移位的總位數進行計算,得到最后的浮點乘加器運算結果的指數位;第四個流水節拍由53比特雙加法器16、低108比特舍入邏輯17和53比特選擇器18組成;其中53比特雙加法器16根據移位器14輸出的sumnorm和carrynorm計算sumnorm+carrynorm和sumnorm+carrynorm+1的值,所得到的sumnorm+carrynorm記為res0,sumnorm+carrynorm+1記為res1,并將得到的res0和res1輸出到53比特選擇器18中;低108比特的舍入邏輯17根據處理器的舍入模式對移位器14輸出的sumnorm和carrynorm的低108比特的數據做舍入操作,如果有舍入進位,則cin=1,否則沒有舍入進位,則cin=0;53比特選擇器18根據低108比特的舍入邏輯17輸出的cin位選擇最后輸出的尾數結果,當cin=1時,有進位選擇,結果是res1,當cin=0時,沒有舍入進位選擇,結果是res0。
所述的14∶2的乘法壓縮樹5和14∶2的乘法壓縮樹6能夠同時壓縮A×B結果的27個部分積,以及取反對齊移位后的加數C;在壓縮時,部分積的0~13部分積用14∶2乘法壓縮樹5來壓縮,乘法部分積的14~27部分積用14∶2乘法壓縮樹6來壓縮;14∶2乘法壓縮樹5的0~23比特低位空位填充對齊移位后加數C的0~23比特,14∶2乘法壓縮樹6的第14個空位填充對齊移位后加數C的105~24比特。
所述的14∶2的乘法壓縮樹5和6由6級的壓縮比為3∶2的乘法壓縮樹構建,在6級中按照4-3-2-1-1-1的個數做分布,14∶2的乘法壓縮樹有14個比特部分積輸入端,這些輸入端用in0~in13表示,實現10比特的低位進位輸入,10比特的高位進位輸出,乘法壓縮樹有2比特的結果輸出端,輸出壓縮結果sum和carry。
所述的同時壓縮A×B結果的27個部分積,以及取反對齊移位后的加數C時,取反對齊移位后的加數C輸入14∶2的乘法壓縮樹的in0,A×B結果的部分積輸入in1~in13。
本發明的優點在于1、本發明的64比特浮點乘加器的流水節拍劃分方法縮短了第一個節拍的延遲,增加了第二個節拍的延遲,均衡了流水節拍。
2、取反對齊移位后的加數C利用14∶2的乘法壓縮樹的空位進行壓縮,在不增加硬件的情況下,實現取反對齊移位后的加數C和乘法的部分積共同壓縮。
3、在第一個流水節拍中,利用文中所述的14∶2的乘法壓縮樹,把實現取反對齊移位后的加數C送入in0的位置,使得C對齊移位以及一級3∶2的CSA延遲之和,和乘法樹編碼壓縮的延遲相當,均衡了第一拍內部的延遲。


圖1是本發明的64比特浮點乘加器的流水結構框圖;圖2a是本發明的64比特浮點乘加器將B的尾數經過基2的波茨編碼后產生的27個編碼和A的尾數相乘得到的27個部分積的示意圖;圖2b是將圖2a中的27個部分積做分割并利用空位填充移位對齊加數C的0~23比特的示意圖;圖2c是將圖2a中的27個部分積做分割并利用空位填充移位對齊加數C的105~24比特的示意圖;圖3是14∶2乘法壓縮樹構造圖。
圖面說明1 指數處理單元 2 取反器 3 161比特對齊移位器4 booth-2編碼器5 14∶2的乘法壓縮樹樹6 14∶2的乘法壓縮樹7 4∶2的乘法壓縮樹8 108比特首0檢測LZA9 161比特正半加器10 161比特取反半加器11 106比特符號檢測器12 161比特的選擇器 13 108比特首0位置編碼LZD14 移位器 15乘加指數結果計算單元 16 53比特雙加法器17 低108比特舍入邏輯18 53比特選擇器在圖2b中,部分積13右側的26比特空位用來填充移位后加數的0~25空位在圖2c中,部分積26下的80比特空位用來填充移位后加數的26~105比特位具體實施方式
下面結合附圖和具體實施方式
對本發明作進一步詳細描述。
本發明的64比特浮點乘加器的流水節拍劃分方法將浮點乘加器的操作過程按照時序劃分為4個流水節拍,按照順序對4個流水節拍的功能分別描述如下。在本實施例中,仍以(A×B)+C表示一個乘加操作。
在第一個流水節拍中,首先對操作數C做取反、移位操作,然后將B的尾數經過基2的波茨編碼,得到27個編碼結果,編碼結果與A相乘,得到27個部分積,最后采用2個壓縮比為14∶2的乘法壓縮樹,同時壓縮27個部分積和操作數C取反移位后的結果,得到2個“和”及2個“進位”,分別標記為sum1,carry1,sum2,carry2。
在本實施例中,壓縮比為14∶2的CSA tree利用平行四邊形乘法壓縮樹的空位,實現了雙精度浮點乘法部分積,和對齊移位后的操作數C共用乘法壓縮樹。雙精度尾數的53比特經過booth-2(基2的波茨)編碼得到27個部分積,直接壓縮這27個部分積需要27∶2的CSA tree。為了降低這一拍流水節拍延遲,在本實施例中,把27∶2的CSA tree劃分為兩個14∶2的CSA tree進行部分積壓縮。這樣的劃分在面積上沒有增加,兩個14∶2的CSA tree壓縮延遲要比27∶2的CSA tree的延遲要降低一個3∶2的CSA的延遲。
劃分27個部分積壓縮樹的方法如圖2a-圖2c所示。從圖中可以看出兩個乘法樹都有一些空位沒有數據填充壓縮,為了節省面積,采用了把移位好的加數C填充到這些空位上,用乘法樹進行壓縮的方法。例如,在圖2b和圖2c中,對齊移位后的Cinv(C取反后的結果)的低106比特送入2個14∶2的CSA tree中,0~25比特送入第一個CSA tree中低26比特的空擋中,105~26比特送入第二個CSA tree的第14個部分積的80比特空檔中。這樣并沒有增加14∶2 CSA tree的壓縮時延,另一方面節省了在流水節拍中需存儲對齊加數C的106個寄存器,盡量減少了由于劃分流水節拍所增加的寄存器硬件。
在第二個流水節拍中,用一個4∶2的乘法壓縮樹壓縮步驟1)得到的2個“和”及2個“進位”,生成壓縮后的“進位”與“和”,分別用carry和sum表示,然后對carry和sum做正半加運算和取反半加運算,得到2組半加運算的結果,分別用sumHApos,carryHApos和sumHAinv,carryHAinv表示,同時對carry和sum之和進行首位0的個數檢測,預測結果用一個序列表示,該序列標記為f,最后還需要對carry和sum之和進行符號檢測,得到檢測結果指示信號,該信號用complement表示,根據complement選擇2組半加運算結果sumHApos,carryHApos,sumHAinv,carryHAinv中的一組,所得到的結果用sumHA,carryHA表示。與現有技術相比,第二個流水節拍從原來的3∶2的CSA變為4∶2的CSA,增加了一級3∶2的CSA tree,這樣把第一個流水節拍的延遲分一部分到第二個流水節拍,起到均衡流水節拍的目的。
在第三個流水節拍中,把第二流水節拍得到的首0個數預測得到的序列f進行編碼,得到一個7比特數據S,同時對第二流水節拍中得到的結果sumHA,carryHA進行53比特預移位,然后再根據S進行108比特的移位,得到2個結果,用sumnorm和carrynorm來表示。
在第四個流水節拍中,利用第三流水節拍得到的sumnorm和carrynorm的高53位做加法,得到2個結果res0和res1,同時對sumnorm和carrynorm的低108比特進行舍入得到一個進位符號cin,然后用cin來選擇res0和res1,得到最后乘加的尾數結果res。
本發明為了降低對齊操作數C移位后經過14∶2壓縮樹的路徑延遲,使得其和14∶2壓縮樹的延遲相當,設計了一種14∶2的CSA tree結構。如圖3所示,對齊后的操作數C填充到14∶2的CSAtree的最后一級in0比特。從圖中可以看出14∶2的CSA tree壓縮總共需要六級壓縮比為3∶2的CSA,而C操作數的路徑只經過取反、對齊移位和一級3∶2的CSA操作,在實現上和波茨編碼以及六級3∶2的CSA的延遲相當,沒有在乘法樹和移位上增加額外的延遲的基礎上,均衡了第一拍中每條路徑的延遲。
根據本發明的浮點乘加器流水節拍劃分方法所劃分的浮點乘加器的4個流水節拍,第一拍的時延關鍵路徑為操作數C取反,經過161比特移位,然后經過14∶2CSAtree中的一級3∶2CSA。第二拍的時延關鍵路徑是4個部分積經過4∶2 CSA tree,然后經過106比特符號檢測器,最后經過選擇器,得到半加器的結果。第三拍的時延關鍵路徑是經過108比特首0位置編碼LZD,然后再進行108比特移位。第四拍的時延關鍵路徑是低108比特的舍入邏輯產生進位,和1個53比特選擇器。這4個流水節拍的關鍵路徑的時延,在實現上是基本相同的,起到了均衡各個流水節拍的效果。
本發明還提供了一種與流水節拍劃分方法相對應的浮點乘加器。如圖1所示,本發明的浮點乘加器被劃分為四個流水節拍,第一個流水節拍包括指數處理單元1、取反器2、161比特對齊移位器3、booth-2(基2的波茨)編碼器4、14∶2的CSA tree(部分積壓縮樹)5、14∶2的CSA tree(部分積壓縮樹)6。第二個流水節拍包括壓縮比為4∶2的CSA tree 7、108比特首0檢測LZA 8、161比特正半加器9、161比特取反半加器10、106比特符號檢測器11、161比特的選擇器12。第三個流水節拍包括108比特首0位置編碼LZD 13、移位器14、乘加指數結果計算單元15。第四個流水節拍包括53比特雙加法器16、低108比特舍入邏輯17和53比特選擇器18。下面對各個單元的功能分別進行描述。
指數處理單元1的作用是根據操作數A,B,C的指數得到d=exp(C)-(exp(A)+exp(B)-1023)的符號,56-d的值,以及d≤2或d=0或d=1的控制信號的值。
取反器2是對C的尾數做每比特的條件取反操作,如果C的符號位和A×B的符號位不同,C的尾數做每比特的取反操作,如果C的符號位和A×B的符號位相同,則不作取反操作。
161比特對齊移位器3是做161比特的對齊移位,根據56-d的值對C的尾數進行161比特移位,移位輸出的低106比特結果送入2個14∶2的CSA tree中。
booth-2(基2的波茨)編碼器4是對B的尾數進行編碼,得到27個部分積。編碼后的部分積的0~13送入第一個14∶2的CSA tree,14~27部分積送入第二個14∶2的CSA tree。
14∶2的CSA tree 5和6是用來壓縮A×B的部分積,以及對齊移位后操作數C尾數的106比特。
4∶2的CSA tree 7的作用是壓縮5和6單元送出的carry1,sum1,carry2,sum2這4個80比特數據,carry2和sum2要比carry1和sum1左移26比特進行移位壓縮,最后得到2個106比特的結果sum和carry。
106比特的首0檢測LZA 8用來檢測7單元輸出sum和carry的首0比特,得到106比特首零指示數據f。
161比特正半加器9是將單元3輸出的高55比特和sum合并,carry比特高位填0得到2個數據,然后對這2個數據進行半加運算得到兩個結果sumHApos,carryHApos。
161比特取反半加器10是將單元3輸出的高55比特和sum合并,把sum和carry取反,carry高位填充1得到2個數據,然后對這2個數據進行半加運算,得到兩個結果sumHAinv,carryHAinv。
106比特的符號監測器11是用來判斷carry和sum相加的符號,如果兩個相加為負時complent=1,反之為正時complement=0。
161比特選擇器12是根據106比特的符號監測器11的結果做選擇,當complement=1時,輸出信號sumHA=sumHAinv,carryHA=carryHAinv;反之,complement為0時sumHA=sumHApos,carryHA=carryHApos。
108比特首0位置編碼LZD 13是對106比特的首0檢測LZA 8輸出的f進行編碼,得到一個7比特結果S[6:0]。
移位器14是由53比特移位器和108比特移位器組成的,當LZD進行編碼的同時,對12輸出的sumHA和carryHA進行53比特的條件移位,當d≤2時對12輸出的sumHA和carryHA53比特移位,否則不進行移位。當LZD產生S[6:0]后,根據S的值進行移位,最多時108比特的移位。
乘加指數結果計算單元15利用操作數A,B,C的指數和d的符號位,以及移位器14最后移位的總位數進行計算得到最后的浮點乘加器結果的指數位。
53比特雙加法器16用來計算sumnorm+carrynorm,和sumnorm+carrynorm+1兩個結果,其中的sumnorm+carrynorm記為res0,sumnorm+carrynorm+1記為res1低108比特的舍入邏輯17根據處理器的舍入模式對低108比特的數據進行舍入,如果有舍入進位,則cin=1,否則沒有舍入進位,則cin=0。
53比特選擇器18根據低108比特的舍入邏輯17輸出的cin位選擇最后輸出的尾數結果。當cin=1時,有進位選擇的是結果res1,當cin=0時,沒有舍入進位選擇的結果時res0。
綜合本發明的流水節拍劃分方法和浮點乘加器,參照圖1,對整個工作過程進行說明。
第一拍A×B乘法CSA壓縮和C對齊移位。
B的尾數經過booth-2(基2的波茨)編碼器4編碼后得到27個編碼結果,然后和A相乘,產生27個部分積,如圖3所示,分別送入兩個14∶2的CSA tree中的in1~in13位置。
為了減少延遲,C的取反和移位操作與A×B的部分積壓縮是同時進行的。C在取反器2中做取反操作后,送入161比特對齊移位器3,做對齊移位操作,對齊移位的結果送入14∶2CSA tree 5的in0位置。開始時C的位置放在A×B結果最左邊,中間有2個額外的比特在Cinv(C取反的結果)和B×C的結果之間,用來在C不移位時,對結果進行舍入(rouding)。定義d=exp(C)-(exp(A)+exp(B)-1023),當d≥0時,移位的位數為max{0,56-d};當d<0時移位的尾數為min{161,56-d}。如圖2所示,對齊移位后的Cinv的低106比特送入2個14∶2的CSAtree中,0~25比特送入第一個CSA tree中低26比特的空擋中,105~26比特送入第二個CSA tree的第14個部分積的80比特空擋中。Cinv的壓縮比特在14∶2的CSAtree都處于in0位置。
14∶2的兩個CSA tree輸出的結果分別是sum1,carry1,sum2,carry2。
第二拍,2個14∶2 CSA tree的結果經過4∶2 CSA tree壓縮后,進行LZA和符號檢測以及半加運算。
第一拍2個14∶2 CSA tree輸出4個80比特結果sum1、carry1、sum2、carry2,在4∶2CSA tree7移位壓縮后,得到106比特的sum和carry。
“106比特的sum和carry”和“Cinv[107:106]比特”送入108比特的LZA邏輯8中,得到一個與sum和carry之和首0位置相同(或者差1)的108比特序列f。
Sum和carry同時被送到106比特的符號檢測器11中,輸出complement(取補)比特。當作有效減法時,當d≥2時,sum和carry之和總是負的,當d=0,和d=1時要對sum和carry之和作一個最高位符號判斷,如果是1的話結果是負的,complenet=1,如果是0的話結果是正的,complement=0。當作有效加法時,complement=0。
Sum和carry同時還要進行161比特半加器運算,由于sum和carry之和可能是負的,所以要有2組半加器,分別為161比特正半加器9和161比特取反半加器10,161比特正半加器9進行sum和carry正的半加,161比特取反半加器10進行sum和carry負的半加。這兩個半加器分別輸出sumHApos,carryHApos,sumHAinv,carryHAinv。
利用符號監測器11出來的信號complement來選擇sum和carry半加器的結果,complenet為1時,sumHA=sumHAinv,carryHA=carryHAinv;反之,complement為0時,sumHA=sumHApos,carryHA=carryHApos。
第三拍將第二拍輸出的sumHA和carryHA,根據首零的位置進行規格化移位。
將從第二拍得到的首零位置的108比特序列f,先在108比特首0位置編碼LZD13進行LZD編碼,得到一個7比特位置數據S[6:0],同時如果d≤2,sumHA和carryHA先在移位器14中移位53比特,得到sumnorm1和carrynorm1,然后sumnorm1和carrynorm1根據S[7:0]進行移位得到161比特的結果sumnorm和carrynorm。
第四拍將從第三拍輸出的sumnorm和carrynorm的高53比特進行一個雙加,并由舍入的進位來選擇最后的結果。
sumnorm和carrynorm的高53比特進入雙加器16后產生2個結果,res0=sumnorm+carrynorm,res1=sumnorm+carrynorm+1。低108比特進入舍入邏輯17,輸出一個舍入進位cin,53比特選擇器18根據cin選擇結果res,當cin=0時,res=res1,當cin=1時,res=res0。所得到的結果就是最終的選擇結果。
權利要求
1.一種64比特浮點乘加器的流水節拍劃分方法,實現形式為(A×B)+C的乘加運算,具體包括以下步驟1)、在第一個流水節拍中,首先對操作數C做取反、移位操作,然后將B的尾數經過基2的波茨編碼,得到27個編碼結果,編碼結果與A相乘,得到27個部分積,最后采用2個壓縮比為14∶2的乘法壓縮樹,同時壓縮27個部分積和操作數C取反移位后的結果,得到2個“和”及2個“進位”,分別標記為sum1,carry1,sum2,carry2;2)、在第二個流水節拍中,用一個4∶2的乘法壓縮樹壓縮步驟1)得到的2個“和”及2個“進位”,生成壓縮后的“進位”與“和”,分別用carry和sum表示,然后對carry和sum做正半加運算和取反半加運算,得到2組半加運算的結果,分別用sumHApos,carryHApos和sumHAinv,carryHAinv表示,同時對carry和sum之和進行首位0的個數檢測,預測結果用一個序列表示,該序列標記為f,最后還需要對carry和sum之和進行符號檢測,得到檢測結果指示信號,該信號用complement表示,根據complement選擇2組半加運算結果sumHApos,carryHApos,sumHAinv,carryHAinv中的一組,所得到的結果用sumHA,carryHA表示;3)、在第三個流水節拍中,把步驟2)中的首0個數預測得到的序列f進行編碼,得到一個7比特數據S,同時對步驟2)中得到的結果sumHA,carryHA進行53比特預移位,然后再根據S進行108比特的移位,得到2個結果,用sumnorm和carrynorm來表示;4)、在第四個流水節拍中,利用步驟3)得到的sumnorm和carrynorm的高53位做加法,得到2個結果res0和res1,同時對sumnorm和carrynorm的低108比特進行舍入得到一個進位符號cin,然后用cin來選擇res0和res1,得到最后乘加的尾數結果res。
2.一種實施權利要求1所述的64比特浮點乘加器的流水節拍劃分方法的64比特浮點乘加器,四個流水節拍部分包括第一個流水節拍部分由指數處理單元(1)、取反器(2)、161比特對齊移位器(3)、基2的波茨編碼器(4)、14∶2的乘法壓縮樹(5)、14∶2的乘法壓縮樹(6)組成;其中,指數處理單元(1)根據操作數A的指數,B的指數和C的指數計算d=exp(C)-(exp(A)+exp(B)-1023)的符號,56-d的值,以及d≤2或d=0或d=1的控制信號的值;取反器(2),如果C的符號位和A×B的符號位不同,C的尾數做每比特的取反操作,如果C的符號位和A×B的符號位相同,則不作取反操作,并將操作結果送入161比特對齊移位器(3)中;161比特對齊移位器(3)收到取反器(2)輸出的結果后,根據指數處理單元(1)得到的56-d的值,對C的尾數進行161比特移位,移位輸出的低106比特結果送入2個14∶2的乘法壓縮樹(5)、(6)中,移位輸出的高55比特送入161比特正半加器(9)和161比特取反半加器(10)中;基2的波茨編碼器(4)對B的尾數進行編碼,然后將編碼的結果與A的尾數相乘得到27個部分積,編碼后的部分積的0~13部分積送入14∶2的乘法壓縮樹(5),14~27部分積送入14∶2的乘法壓縮樹(6);14∶2的乘法壓縮樹(5)和(6)壓縮A×B的部分積,以及操作數C尾數對齊移位后結果,得到標記為carry1,sum1,carry2,sum2的4個80比特數據;第二個流水節拍由壓縮比為4∶2的乘法壓縮樹(7)、108比特首0檢測LZA(8)、161比特正半加器(9)、161比特取反半加器(10)、106比特符號檢測器(11)、161比特的選擇器(12)組成;其中,4∶2的乘法壓縮樹(7)輸入14∶2的乘法壓縮樹(5)和(6)輸出的carry1,sum1,carry2,sum2,對這4個80比特數據做壓縮操作,carry2和sum2要比carry1和sum1左移26比特,進行移位壓縮,最后輸出2個106比特的結果sum和carry;106比特的首0檢測LZA(8)檢測4∶2的乘法壓縮樹(7)輸出的sum和carry中的首0比特,得到106比特首零指示序列f;161比特正半加器(9)將161比特對齊移位器(3)輸出的C取反移位后的高55比特和4∶2的乘法壓縮樹(7)輸出的sum做合并,然后將carry的比特高位填0,得到兩個數據,然后對這兩個數據進行半加運算,得到兩個結果sumHApos,carryHApos,送入161比特選擇器(12)中;161比特取反半加器(10)是將161比特對齊移位器(3)輸出的C取反移位后的高55比特和4∶2的乘法壓縮樹(7)輸出的做sum合并,把sum和carry取反,carry高位填充1得到兩個個數據,然后對這兩個數據進行半加運算,得到兩個結果sumHAinv,carryHAinv,送入161比特選擇器(12)中;106比特的符號檢測器(11)判斷carry和sum相加的符號,如果兩個相加的結果為負,將檢測結果指示信號complent的值設置為1,反之,當相加的結果為正,將檢測結果指示信號complement的值設置為0,所得到的complement的值送入161比特選擇器(12)中;161比特選擇器(12)根據106比特的符號監測器(11)輸出的complement的值,對161比特正半加器(9)和161比特取反半加器(10)輸出的結果做選擇,當complement的值為1時,sumHA=sumHAinv,carryHA=carryHAinv;反之,當complement的值為0時,sumHA=sumHApos,carryHA=carryHApos,選擇得到的結果送入移位器(14)中;第三個流水節拍由108比特首0位置編碼LZD(13)、移位器(14)、乘加指數結果計算單元(15)組成;其中,108比特首0位置編碼LZD(13)對106比特的首0檢測LZA(8)輸出的f進行編碼,編碼后得到一個7比特結果S,并輸出到移位器(14)中;移位器(14)由53比特移位器和108比特移位器組成,當LZD進行編碼的同時,對161比特選擇器(12)輸出的結果進行53比特的條件移位,當d≤2時,對161比特選擇器(12)輸出的sumHA和carryHA做53比特移位,否則不進行移位,當LZD產生S后,根據S的值,再做108比特的移位,移位后的結果用sumnorm和carrynorm表示,并輸出該結果到53比特雙加法器(16)和低108比特舍入邏輯(17);乘加指數結果計算單元(15)對操作數A,B,C的指數和d的符號位,以及移位器(14)最后移位的總位數進行計算,得到最后的浮點乘加器運算結果的指數位;第四個流水節拍由53比特雙加法器(16)、低108比特舍入邏輯(17)和53比特選擇器(18)組成;其中53比特雙加法器(16)根據移位器(14)輸出的sumnorm和carrynorm計算sumnorm+carrynorm和sumnorm+carrynorm+1的值,所得到的sumnorm+carrynorm記為res0,sumnorm+carrynorm+1記為res1,并將得到的res0和res1輸出到53比特選擇器(18)中;低108比特的舍入邏輯(17)根據處理器的舍入模式對移位器(14)輸出的sumnorm和carrynorm的低108比特的數據做舍入操作,如果有舍入進位,則cin=1,否則沒有舍入進位,則cin=0;53比特選擇器(18)根據低108比特的舍入邏輯(17)輸出的cin位選擇最后輸出的尾數結果,當cin=1時,有進位選擇,結果是res1,當cin=0時,沒有舍入進位選擇,結果是res0。
3.根據權利要求2所述的64比特浮點乘加器,其特征在于,所述的14∶2的乘法壓縮樹(5)和14∶2的乘法壓縮樹(6)能夠同時壓縮A×B結果的27個部分積,以及取反對齊移位后的加數C;在壓縮時,部分積的0~13部分積用14∶2乘法壓縮樹(5)來壓縮,乘法部分積的14~27部分積用14∶2乘法壓縮樹(6)來壓縮;14∶2乘法壓縮樹(5)的0~23比特低位空位填充對齊移位后加數C的0~23比特,14∶2乘法壓縮樹(6)的第14個空位填充對齊移位后加數C的105~24比特。
4.根據權利要求2所述的64比特浮點乘加器,其特征在于,所述的14∶2的乘法壓縮樹(5)和(6)由6級的壓縮比為3∶2的乘法壓縮樹構建,在6級中按照4-3-2-1-1-1的個數做分布,14∶2的乘法壓縮樹有14個比特部分積輸入端,這些輸入端用in0~in13表示,實現10比特的低位進位輸入,10比特的高位進位輸出,乘法壓縮樹有2比特的結果輸出端,輸出壓縮結果sum和carry。
5.根據權利要求3和4所述的64比特浮點乘加器,其特征在于,所述的同時壓縮A×B結果的27個部分積,以及取反對齊移位后的加數C時,取反對齊移位后的加數C輸入14∶2的乘法壓縮樹的in0,A×B結果的部分積輸入in1~in13。
全文摘要
本發明公開了一種64比特浮點乘加器的流水節拍劃分方法,實現形式為(A×B)+C的乘加運算,浮點乘加器分為四個流水節拍,包括第一拍中用2個14∶2的乘法壓縮樹同時壓縮A×B和操作數C取反移位后的結果,得到2個進位及2個和,在第二拍中用一個4∶2的乘法壓縮樹來壓縮第一拍的結果,得到壓縮后的進位與和,并做半加運算,同時預測加法結果符號及加法結果首0位置;第三拍中編碼首0檢測的結果,得到規格化左移的位數,進行移位;在第四拍中,對結果做加法和舍入操作,得到最后的結果。本發明還公開了與流水節拍劃分方法相對應的64比特浮點乘加器。本發明的優點在于縮短第一個節拍的延遲,增加第二個節拍的延遲,均衡了流水節拍。
文檔編號G06F7/50GK1924798SQ20051009581
公開日2007年3月7日 申請日期2005年9月2日 優先權日2005年9月2日
發明者齊子初, 胡偉武 申請人:中國科學院計算技術研究所
網友詢(xun)問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1