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

一種具有數據前送結構的浮點乘加單元的制作方法

文(wen)檔序號:6614043閱讀:268來源(yuan):國(guo)知局(ju)
專利名稱:一種具有數據前送結構的浮點乘加單元的制作方法
技術領域
本發明涉及浮點運算單元設計,是一種用于實現高性能浮點運算的高速浮點乘加單元。
背景技術
文獻數據表明,幾乎50%的浮點乘法指令后面緊跟的指令為浮點加法或減法。因此,浮 點乘加融合操作A + BXC己經成為科學運算和多媒體應用中的一種基本操作。由于浮點乘加 融合操作在應用程序中如此頻繁地出現,用浮點乘加融合單元(簡化為MAF單元)來實現該 操作己經成為現代高性能商業處理器的一個很好的選擇。這種實現方式主要有以下兩個優點 (l)僅需要一次舍入,不是兩次;(2)通過共享一些組成模塊,可降低電路延遲和硬件開銷。
乘加(MAF)指令需要3個操作數。例如,執行A+(BXC)操作,當把乘加指令中操作數 A置為0時執行的是乘法指令,把操作數B或C置為1時,執行的是加法指令。在已實現的 多數處理器中,浮點乘加運算一般通過以下步驟來實現(見圖1):
首先對被乘數C做波茨編碼,然后用進位保存壓縮加法器(CSA)組成的壓縮樹實現BXC, 得到兩個部分積。在進行乘法的同時,操作數A進行取反和對齊移位操作。操作數A和BXC 的符號可能相同,也可能相反。如果A和BXC的符號相反,將A和BXC做有效減法,需要 得到A的補碼進行相加,A需要取反。否則如果A和BXC的符號相同做有效加法,A不需要 取反。下面不管是否需要進行取反操作,將通過取反器之后的A記為A,。
在IEEE-754標準中,單精度操作數的尾數是24比特,再加上2個額外的舍入位,A, v 比BXC的結果的最高位最多左移55位,或者比BXC結果的最高位最多右移106比特,即 移位范圍在[-55, 106]之間。在浮點乘加的設計中為了使移位簡單化,規一化A的移位方向 為向右移位。所以A^最初置于BXC左端55比特的位置,A,在對齊中右移位的位數是 56- (exp (A) — (exp (B)十exp (C) -1024),其中,exp (A) , exp (B)和exp (C)分別是操作數A , B和 C的指數。
把對齊移位后的Ainv、和BXC壓縮后的部分積用壓縮比為3 : 2的進位保存加法器(CSA)壓縮,得到兩個部分積,同時處理A求補時所需要的加1。利用2中壓縮后得到的兩個部分積進行前導零預測(LZA, leading zero anticipator), 得到加法結果的規格化左移的位數。同時判斷最終結果的正負。在前導零預測和符合預測的同時做半加操作,并完成部分的加法運算。進行半加操作是 為了保證后面能正確地進行舍入。由于符號預測所需要的時間比半加操作多,可在此時間空 隙里完成最終加法的一部分。加法結果利用LZA預測的左移的位數進行規格化左移。若3中符號預測部件判斷最終結 果為負,則選擇2中壓縮后得到的部分積的補數形式經第4步處理后的結果進行規格化移位。最終加法和舍入操作。圖1所示的現有技術的不足連續兩條指令存在數據相關時,流水線將被迫等待兩個周期(三級流水實現時,n級流 水實現時將等待n-l個周期),而在實際應用中,數據相關又是一個非常普遍的現象。相對圖l所示的現有技術,本發明設計實現了一種具有數據前送結構的浮點乘加單元。 與現有技術的不同在于,將流水線中間兩級的結果提前饋送至第一級的輸入處,加速了指令 流的執行效率,同時增加的硬件開銷和延時都很小。發明內容本發明的目的在于設計一種高性能的全流水線的雙精度高速的浮點乘加單元,對于發生 數據相關的指令進行加速,提高浮點指令流的執行效率。為實現上述目的,本發明提供了一種具有數據前送結構的浮點乘加單元。數據前送是指 在流水線實現的處理器中,如果前后兩條指令發生數據相關,即后一條指令的原操作數采用 前一條指令的結果,則前一條指令的中間結果可以反饋到運算單元的輸入,作為后一條指令 的操作數進行運算。本發明提供了一種雙精度的浮點乘加運算單元,實現形式為A+BXC的乘加操作,其特征 在于,該設計的雙精度浮點乘加運算單元由三級流水實現,且操作數A和B可以是上一指令 的中間結果,可由三部分構成A由55比特的Al、 A2和常數項C0N構成,B由55比特的Bl、 B2和一個常數項構成,A和B的常數項都可以是0或1,該浮點乘加單元含有第一級流水線由指數和符號處理單元(1)、第一個165比特移位對齊器(2)、按位取 反器(3)、第一個選通器(4)、以4為基的波茨編碼器(5)、第一個3 : 2的進位保存加法器CSA組成的部分積壓縮樹(6)、第二個選通器(7)、 57比特的一次性移位器(8)和第二個3 : 2的CSA樹(9)組成;其中,指數和符號處理單元(1)根據操作數A 、 B、 C的指數和符號計算是否為有效減sub, <formula>formula see original document page 12</formula>其中,sign—A、 sign —B、 sign —C分別是操作數A 、 B、 C的符號,根據IEEE 754標 準,雙精度浮點數的符號為其最高位;④為異或操作; 計算A+BXC的臨時符號sign—pl,<formula>formula see original document page 12</formula>,計算A+BXC的指數差exp_ABC,<formula>formula see original document page 12</formula>其中,exp—A、 exp—B和exp—C分別是操作數A 、 B和C的指數,根據IEEE 754標準, 雙精度浮點數的符號指數為第2位到第12位;計算A+BXC的指數exp—pl,并確定A相對BXC移位對齊時的移位量mv, exp—pl和mv的計算方法如下<formula>formula see original document page 12</formula>第一個165比特移位對齊器(2)根據指數和符號處理單元(1)中得到的mv值,對Al、 A2、 C0N進行移位,55比特的CON為00…01,即由54比特的0和最低位上的1構成,Al和 A2的值分兩種情況考慮當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,但是上一條指令 的結果不被用來作為該條指令的加數時,55比特的Al的前53比特為輸入的被加數的尾數, 后兩比特為O,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化 數時在最高位補l,否則在最高位補零,非規格化數將作為O看待,A2為0;要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令 的加數時,又分為兩種情況-上一條指令為乘法指令,則A1、 A2分別為第一級流水線的輸出sum—pl、 carry—pl的高 55比特,其中sum—pl、 carry—pl的為第二個3 : 2的CSA樹(9)輸出;上一條指令為加法指令或乘加指令,則A1、 A2分別為第二級流水線的輸出sum一p2、 carry—p2的高55比特,其中sum—p2、 carry—p2為第二個165比特的移位器(16)的輸出;Al、 A2、 CON移位后的輸出分別記為align—Al、 align—A2、 align_C0N,第一個165比特 移位對齊器(2)完成的功能可用下面的公式表達 一爿l =□ wv ,a/Zg"—爿2 =爿2口 ,,a/Zg" —CCW = CCWD mv,其中口表示右移;按位取反器(3),如果A的符號位和BXC的符號位不同,即指數和符號處理單元(1) 的輸出sub-l,對第一個165比特移位對齊器(2)的輸出結果align—Al、align_A2和align—CON 的每比特都做取反操作(也就是按位取反),否則不做任何操作直接將aligr^Al、 align—A2 和alignJ]ON輸出,以4為基的波茨編碼器(5)的輸出記為inv—Al、 inv一A2、 inv—CON;第一個選通器(4)根據控制信號ctrll決定是否將inv—C0N輸出到第二個3 : 2的CSA 樹(9)中,ctrll由是否發生數據相關,以及符號預測邏輯(14)的輸出carry—llOLSBs決 定,當發生數據相關,且前一條指令的結果被作為后一條指令的加數,同時carry一110LSBs =1時,ctrll二l,此時第一個選通器(4)的輸出為irw—CON,否則第一個選通器(4)的輸 出為O;以4為基的波茨編碼器(5)對C的尾數進行編碼,然后將編碼的結果分別與Bl、 B2 相乘得到54個部分積,這里C為輸入的被乘數,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化數時在最高位補1,否則在最高位補零,非規格化數將作 為0看待;Bl和B2的值分兩種情況考慮當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,但是上一條指令 的結果不被用來作為該條指令的乘數時,55比特的Bl的前53比特為輸入的被乘數的尾數, 后兩比特為0,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化 數時在最高位補l,否則在最高位補零,非規格化數將作為0看待,B2為0;要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令 的乘數時,又分為兩種情況上一條指令為乘法指令,則B1、 B2分別為第一級流水線的輸出SUm_pl、 carry—pl的高 55比特,其中sum—pl、 carry_pl的為第二個3 : 2的CSA樹(9)輸出;上一條指令為加法指令或乘加指令,則B1、 B2分別為第二級流水線的輸出sum—p2、 carry—p2的高55比特,其中sum—p2、 carry—p2為第二個165比特的移位器(16)的輸出;這54個部分積的被送入第二個3 : 2的進位保存CSA壓縮樹(6)中,3 : 2 CSA樹 即由3 : 2 CSA組成的樹,3個輸入經過一個3: 2CSA將被壓縮成2個輸出,若設輸入為x、 y、 z,輸出為S、 C,則壓縮過程可表示如下C-((x&力l(x&z)IO&z))《1,這里\ &和|分別表示按位異或、按位與和按位或操作, <〈表示向左移位;將9級3 : 2 CSA級聯,形成3 : 2 CSA樹,就能將54個部分積壓縮為2個,分別記為 s咖一BC、 carry一BC;第二個選通器(7)根據控制性號ctrl2決定是否將C輸出到57比特的一次性移位器(8) 中,ctrl2由是否發生數據相關,數據相關的類型,以及14的輸出carry—110LSBs決定,當 發生數據相關,且前一條指令的結果被作為后一條指令的乘數,同時carry一110LSBs二l時, ctrl2 = l,此時第二個選通器(7)的輸出為C后面補上55比特的0后的結果,否則第二個 選通器(7)的輸出為0;sum_ BC、 carry— BC和第二個選通器(7)的輸出被送到57比特的一次性移位器(8) 中,由指數和符號處理單元(1)的輸出exp—ABC決定是否對它們分別進行一次57位的移位exp—ABC〈52時,SUm_ BC、 carry— BC和第二個選通器(7)的輸出將分別被左移57位,否則均不被移位,直接輸出;第二個3 : 2的CSA樹(9)對inv—Al、 inv—A2、 4的輸出、57比特的一次性移位器(8) 的3個輸出做3: 2壓縮,壓縮過程與第一個3 : 2的進位保存加法器CSA組成的部分積壓 縮樹(6)中相似,不同的在于,當指數和符號處理單元(1)中判斷出sub二l時,在兩個進 位保存加法器進位字節的最低位置入l,第一個選通器(4)的控制信號ctrll等于l時,還 要在第三個進位保存加法器進位字節的最低位置入1,最終6個輸入被壓縮為2個輸出,記 為sum—pl、 carry—pl;第二級流水線165比特的前導零預測單元(10)、第一個165比特的半加器(11)、第 二個165比特的半加器(12)和第三個165比特的半加器(13)、符號預測邏輯(14)、選擇 器(15)、第二個165比特的移位器(16)和與門(17)組成;其中,165比特的前導零預測單元(10),判斷第二個3 : 2的CSA樹(9)的輸出結果sum—pl 和carry—pl相加時,前導零的數目,前導零數目即從最高位開始,到第一個非0位之間的位 數,若sum—pl和carry—pl相加結果為負,則這里判斷的將是前導一的數目,即從最高位到 第一個非l位之間的位數,具體的判斷方法為通過檢查某一位及其左右相鄰的位確定哪一位可能是最高位,設一預測位fi, 71 = swm _ / 1十can17 _ pl, G = — pl & ca 77 _ _pl, Z 二 swm — pl & c" 77 _ / 1/; = 7;., (g,+ z,)+5-, (z,+ ) , / > o其中sum—pl、 carry—pl為第二個3 : 2的CSA樹(9)的兩個輸出,—表示按位取反, 下標i表示第i位,若f^l,而f尸0(j^, 1…i-l),則前導零個數LZN為i; 設類擁與輸入為x、 y,輸出為S、 C,則其原理可表示為c二o&力《i,第一個165比特的半加器(11)將第二個3:2的CSA樹(9)輸出的sum—pl和carry—pl sumHAp',s,[l carryHApos;將s咖—pl和carry—pl按位取反后作為半加器第二個165比特的半加器(12)的輸入, 其輸出為sum他,.nv禾口 carryIIAi ,并將carry貼而的最低位置為1;將s咖,n,和carryH—作為第三個165比特的半加器(13)的輸入,其輸出為sum,^和 carryHA。。m,并將carryi。m的最低位置為1,這樣^""W哪+ ,"^")"'就相當于.連續兩條指令發生數據相關時,若前一條指令為加法或乘加指令,流水線將需要停滯等 待一個時鐘周期,在這個停滯等待的時鐘周期里,符號預測模塊(14)的輸入為第二個165 比特的移位器(16)的輸出sum—p2、 carry—p2,否則符號預測模塊(14)的輸入為sum—pl、 carry—pl,符號預測模塊(14)預測若將兩個輸入相加,其結果的正負,預測方法為判斷兩 輸入相加,最高位是否有進位產生,若有進位產生,則相加結果為負,將輸出信號complement 賦為1,否則^^7^/^"纟=();同時符號預測模塊(14)還判斷將兩個輸入的低110比特相加,有無進位產生,并根據判斷結果產生另一輸出carry一110LSBs:兩個輸入的低110比特相加,有進位產生時carry—110LSBs二l,否則carry—110LSBs = 0;選擇器(15)根據符號預測的結果,從 和 中選擇一對作為輸出,其輸出記為sumHA、 carry,com/ /eweW = 0時,sumHA =sumHAp。s , carryHA =carryHApos'c0w;7/emW = 1時,sum^ =sumHAcom , carry^ =carryHAcom ;第二個165比特的移位器(16)根據前導零預測的結果,對選擇器(15)的輸出向左進 行移位,移位量為LZN,移位后的輸出記為sum—p2和carry—p2;與門(17)對符號預測模塊(14)的輸出complement和指數和符號處理單元(1)的輸 出sign—pl進行異或操作,得到A+BXC的符號;第三級流水線由指數計算單元(18)、最終加/舍入單元(19)組成;其中,指數計算單元(18),根據指數和符號處理單元(1)中得到的exp一pl、 165比特的前導 零預測單元(10)中得到的LZN和最終加/舍入單元(19)中是否發生l位左移計算A+BXC 的指數,若最終加/舍入單元(19)中不發生l位左移,則A+BXC的指數為exp — p1-£ZW, 否則需要進行l比特的修正,最終A+BXC的指數將表示為e;c;7 —pl-丄ZiV-l;在最終加/舍入單元(19)中,首先將第二個165比特的移位器(16)的輸出sum—p2和 carry—p2相加,結果記為ABC—added,JSC —— a必efif = — />2 + ccwr少—,然后根據ABC—added、和舍入模式進行舍入,有4種舍入模式就近舍入(RN),向正無 窮舍入(RP),向負無窮舍入(脂),向零舍入(RZ),這四種舍入模式能減少到三個RN、 RI、 RZ;<formula>formula see original document page 17</formula>這里「一和b」分別表示向上取整和向下取整;對于負數,舍入模式RP可等效為RI,脂可等效為RN;對于正數,舍入模式RP可等效 為RN, RM可等效為RI;首先計算粘滯位st,若ABC—added的最高位為1 ,則w =| JSC —a必W[54:165],否則 W =| —a艦牟5:165];然后根據st、 ABC—added和舍入模式是RI、 RN還是RZ,計算舍入結果的兩個臨時值, 分另U記為rounding—result—tmpl禾口 rounding—result—tmp2, rounding—result—tmpl的i十算 方法如下若,,若st^,或ABC—added [53]=1rounding—result—tmpl=ABC—added
+1; 否則rounding_result_tmpl=ABC—added
; 若RI二0,且RN:l,若ABC—added[53]=0,rounding—result_tmpl=ABC—added
; 若ABC—added [53] =1, _@_st=l,rounding—result—tmpl=ABC—added
+1; 若ABC—added[53]=1,且ABC—added[52]=1,rounding—result—tmpl二ABC一added
+1; 否則rounding—result—tmpl=ABC—added
; 若RI二0,且RN:O,rounding_result—tmpl=ABC—added
; rounding—result—tmp2的計算方法如下若RI:1,若st:l,或ABC—added [54] =1rounding—result—tmp2=ABC_added[l:53]+1; 否則rounding—result—tmp2=ABC_added[l:53]; 若RPO, iRN=l,若ABC—added[54]=0,rounding—result—tmp2=ABC—added[1:53]; 若ABC—added[54]=1,且st=l,rounding—result_tmp2=ABC—added[1:53]+l; 若ABC—added[54]=1,且ABC—added[53]=1,rounding—result—tmp2=ABC—added[1:53]+1; 否則rounding—result—tmp2=ABC—added[l:53]; 若RI二0,且RN二l,rounding—result—tmp2=ABC—added[l:53]; 最后根據ABC—added的最高位和rounding—result—tmpl的最高位從 rounding—result一tmpl禾口 rounding_result—trap2中選取一個作為最終A+BXC的尾數,并決 定指數計算單元(18)中的指數是否需要l比特的修正若rounding_result_tmpl的最高位為1且ABC—added的最高位為0,或者ABC—added的 最高位為1時,選取rounding—resultjmpl作為最終結果,指數計算單元(18)中不需要1 比特的修正,否則選取rounding—result—t即2作為最終結果,指數計算單元(18)中需要1 比特的修正。本發明采用三級流水線實現,用VerilogHDL實現,通過驗證后用0. 18微米標準單元庫 進行電路綜合。對綜合結果進行時序分析,結果顯示最大延時為3.47納秒。用SPEC 2000評 估顯示,采用本發明后,相比普通的乘加單元,能夠獲得約25%的性能提升。


圖1是參考文獻1 : Floating-Point Multiply-Add-Fused with Reduced Latency中介紹的一種已有的乘加單元的結構框圖;圖2是本發明的三級流水線實現的解決了數據相關的雙精度浮點乘加單元的結構框圖; 圖3a是ex;^S + e;^ —C-exp —J < 52時,A相對BXC移位對齊后在數據通道中擺放的示意圖;圖3a是ex戶—S + ex;7 —C-exp —^ 2 52時,A相對B X C移位對齊后在數據通道中擺放的 示意圖;圖4是乘法壓縮樹具體實現的框圖,這一壓縮樹由4個165比特的CSA組成。
具體實施方式
下面結合附圖和具體實施方式
對本發明作進一步的詳細描述。本發明采用三級流水線實現,用VerilogHDL實現,通過驗證后用0. 18微米標準單元庫 進行電路綜合。本發明的單精度并行浮點單元按時序劃分為了三個流水節拍,下面參照圖2,對整個工 作過程進行說明。在本實施例中,仍以A+B X C表示一個乘加操作。第一級流水線A的移位對齊和BXC的波斯編碼、部分積壓縮,并經3: 2CSA樹壓縮 后輸出。這里的A和B都可能來自上一條指令中間結果的回送,也就是說,它們都可能為55比特 的進位保存表示的中間結果,組成A的兩部分用A1、 A2表示,組成B的兩部分用B1、 B2表示。Al和A2的值分兩種情況考慮當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,但是上一條指令 的結果不被用來作為該條指令的加數時,55比特的Al的前53比特為輸入的被加數的尾數, 后兩比特為0,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化 數時在最高位補l,否則在最高位補零,本發明針對的是規格化數,非規格化數將作為o看 待,A2為0;要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令 的加數時,又分為兩種情況上一條指令為乘法指令,則A1、 A2分別為第一級流水線的輸出sum—pl、 carry—pi (9的 輸出)的高55比特;上一條指令為加法指令或乘加指令,貝ijAl、 A2分別為第二級流水線的輸出sum—p2、 carry—p2 (16的輸出)的高55比特; Bl和B2的值也分兩種情況考慮當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,數據相關的類型, 但是上一條指令的結果不被用來作為該條指令的乘數時,55比特的Bl的前53比特為輸入的 被乘數的尾數,后兩比特為0,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64 位,其為規格化數時在最高位補l,否則在最高位補零,本發明針對的是規格化數,非規格 化數將作為0看待,B2為0。要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令 的乘數時,又分為兩種情況-上一條指令為乘法指令,則B1、 B2分別為第一級流水線的輸出sum_pl、 carry—pl (9的 輸出)的高55比特。上一條指令為加法指令或乘加指令,則B1、 B2分別為第二級流水線的輸出sum—p2、 carry—p2 (16的輸出)的高55比特。基4的波茨編碼器5對C的尾數進行編碼,然后將編碼的結果與Bl、 B2相乘得到54 個部分積,編碼后的54個部分積的被送入3 : 2的進位保存(CSA)壓縮樹6中,CSA壓 縮樹的構造分別在圖4中做了詳細的介紹,圖4中每一個單元模塊的輸入x、 y、 z為3個要 被壓縮的165比特的數,輸出S、 C分別為壓縮后的165比特的和字節和進位字節,其邏輯關 系為C = ((x &少)I (x & z) I (j; & z))《1,這里~、 &和|分別表示按位異或、按位與和按位或操作,《表示向右移位。 圖4是一個將6個輸入壓縮為2個的3: 2CSA樹的結構圖,其輸入in廣in6為6個165比特的數,輸出為壓縮后得到的和、進位字節。整個壓縮樹由4個165比特的CSA構成,將6個輸入壓縮為兩個,需要3級的CSA樹。這里C為輸入的被乘數,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化數時在最高位補l,否則在最高位補零,本發明針對的是規格化數,非規格化數 將作為0看待。當乘數B來自前一條指令的中間結果第一級的輸出(S,_pl、 carry—pl)或第二級的 輸出(sum_p2、 carry—p2)時,Bl、 B2僅取了中間結果的高55比特,中間結果的低110比 特相加可能有進位產生,這一進位是要考慮的,本發明中考慮這一進位的方法是當兩條指 令發生數據相關且前一指令的結果用做后一指令的一個乘數,當后一指令利用前一指令的中 間結果進行計算時,若前一指令中間結果的低110比特有進位產生,則將7的控制信號ctrl2 置高,將C并入CSA樹6的輸出端,實現(Bl+B2+1) XC。A的移位對齊、取反與BXC的波斯編碼、部分積壓縮并行執行。若A的符號與BXC的 符號不同,則需要對其求補。求一個數的補數的方法為取反后加一。求補所需的加l可利用 3: 2 CSA進位字節最低位上的空位來實現。在普通的乘加單元(這里以A+BXC表示一個普通的乘加操作)中,對A移位對齊的方法 通常為將其從BXC的最高位左側26比特的位置開始存放,然后根據指數差向右進行移位。 在A的最初存放位置和BXC的最高位之間有兩個空位,目的是在A遠大于BXC時確保能夠 正確的舍入。在本發明中,加數由兩部分構成,若兩部分同時被移出數據通道,移出數據通 道的部分可能產生進位,這一進位的計算會增大延時,且這種情況下粘滯位的計算也很復雜, 因此必須采用新的移位對齊策略,本發明中根據A、 B、 C的指數差,分兩種情況,分別采用 不同的移位對齊策略,這五種情況的劃分方法如下ex/ — 5 + ex/> — C _ — ^ < 52exp — 5 + ex/ — C — ex; — ^4 2 52其中,exp_A、 exp_B和exp一C分別是操作數A 、 B和C的指數,根據IEEE 754標準, 雙精度浮點數的指數為其第2位到第12位。各種情況下的數據通道,以及A移位對齊后相對于BXC在數據通道中的擺放情況如圖3 所示。A由Al、 A2兩部分構成,還可能需要在最低位上加1 (這一加1由常數CON表示),但 是它們指數相同,在數據通道中移位的情況是一樣的,所以在圖3中都用A示意。exp —S + exp — C-ex; —^ < 52時,數據通道的構成如圖3 (a)所示,與普通的MAF — 樣,將A從165比特的數據通道的最高位開始擺放,BXC的置于165比特數據通道的低108 位上。若A的指數比BXC大57甚至更多時,Al、 A2和C0N都不需移位,否則根據指數差與BXC對A1、 A2和C0N進行移位對齊;exp —+ —C-exp —X 2 52時,數據通道的構成如圖3 (b)所示,將BXC的置于165 比特數據通道的高108位上,然后根據指數差與BXC對Al、 A2和CON進行移位對齊,當Al、 A2和C0N的移位量大于110時,它們將會有部分別移出數據通道,此時Al、 A2和C0N在B XC的最低位的右側,可將A1、 A2和C0N放置在數據通道的最低55比特上,而不繼續移位。總結上述2中情況可發現Al、 A2和C0N永遠不會被移出數據通道,所以沒有粘滯位產生,且被加數的求補將被大 大簡化《g"_^^wg" —C (此時sub =1)時在3: 2CSA樹的兩個進位保存壓縮器的 進位字節的最低位上加1即可,這里e表示異或,sign—A、 sign 一B和sign 一C分別是操作 數A 、 B和C的符號位,根據IEEE 754標準,雙精度浮點數的指數為其最高位。當ctrl-l時,還要增加一個求補所需的加1,在9的另一個進位保存壓縮器的進位字節的最低位上加 1即可。當加數A來自前一條指令的中間結果第一級的輸出(sum—pl、 carry—pl)或第二級的 輸出(sum_p2、 carry—p2)時,Al、 A2僅取了中間結果的高55比特,中間結果的低110比 特相加可能有進位產生,這一進位是要考慮的,本發明中考慮這一進位的方法是當兩條指 令發生數據相關且前一指令的結果用做后一指令的加數,當后一指令利用前一指令的中間結 果進行計算時,若前一指令中間結果的低110比特有進位產生,則將4的控制信號ctrll置 高,將與Al、 A2最低位對齊的1同Al、 A2 —樣移位mv并由sub決定是否取反后并入到3的 輸出端。第二級流水線A、.B移位對齊后的結果和CXD的部分積壓縮后的結果經3: 2CSA樹壓 縮后的結果進行進行前導零預測、符號預測、半加運算以及規格化移位。將9的輸出分別記為sum一pl和carry—pl,在第二級流水線中將sum—pl和carry_pl輸 入到前導零預測單元10中,計算前導零個數(記為LZN)。如果下面直接對sum—pl和carry—pl進行規格化移位,再相加,若相加結果為負,還需 要對其求補,增加了延時。避免這一延時的辦法是在前導零預測的同時判斷sum—pl和 carry_pl的符號,若sum—pl和carry—pK0,則選擇sum—pl和carry_pl的補數表示進行后 續的處理,如規格化移位、最終加和舍入等。這里求sum一pl和carry—pl的補數時所需的加 1是利用半加器15和16的進位字節的最低位空位實現的。當sum—pl和carry一pl的高55位作為中間結果回送時,還需計算低110位的進位,可利 用符號預測單元14來完成,計算結果記為carry—110LSBs。連續兩條指令發生數據相關時,若前一條指令為加法或乘加指令,回送sum一p2、carry一p2 的高55位的同時,還需回送sum—p2、 carry—p2的低110位的進位,考慮到這種情況下流水 線將需要停滯等待一個時鐘周期,在這個停滯等待的時鐘周期里,可利用符號預測模塊14來 計算sum_p2、 carry—p2低110位的進位。165比特的移位器16根據10中計算出的LZN對選擇器15的輸出進行向右移位,其輸出 結果記為sum—p2、 carry—p2。第三級流水線利用第二級流水線輸出的sum—p2、 carry—p2完成最終加法和舍入。在19中,首先將sum一p2和carry—p2相加,結果記為ABC—added,然后根據舍入模式分 別將第54位和第55位作為舍入位時的結果,分別記為rounding—result—tmpl和 rounding一result—tmp2,若rounding—result一tmpl的最高位為1且ABC—added的最高位為0, 或者ABC一added的最高位為1時,選取rounding—result—tmpl作為最終結果,否則選取 rounding—result—tmp2作為最終結果。18中根據1中計算出的數據通道的臨時指數和13中計算出的規格化移位量計算A+BXC 的指數,然后根據19的運算結果進行修正若rounding—result—t卿2被選為最終結果,將 指數減l。本發明中僅回送中間結果的高55比特,但是精度并不低于普通的MAF中,先舍入成53 比特的尾數,再用于下一條指令的計算,分析如下對于雙精度浮點數,尾數為53位,浮點運算中第54位被稱為監督位(guard bit), 54 位之后的位被用來產生粘滯位,其屬性只有兩個全為0和不全為0,若采用普通的四舍五 入,粘滯位對結果是不產生影響的,在IEEE 754所規定的幾種舍入方式里,除截斷舍入,粘 滯位都將影響最終結果,但是對結果精確度的影響很小。例如guard bit = 0,粘滯位為l,向無窮舍入時,結果將為前53bits加1,但真實結 果更接近前53bits不加1的結果。所以可以僅回送guard bit及其更高的位。又因為中間結果可能有一個前導零,所以應 回送中間結果的前55bits,后面的位上可能有進位產生,該進位需要被考慮,本發明中很好 的處理了該進位。
權利要求
1、一種具有數據前送結果的浮點乘加單元,實現形式為A+B×C的乘加操作,其特征在于,該設計的雙精度浮點乘加運算單元由三級流水實現,且操作數A和B可以是上一指令的中間結果,可由三部分構成A由55比特的A1、A2和常數項CON構成,B由55比特的B1、B2和一個常數項構成,A和B的常數項都可以是0或1,該浮點乘加單元含有第一級流水線由指數和符號處理單元(1)、第一個165比特移位對齊器(2)、按位取反器(3)、第一個選通器(4)、以4為基的波茨編碼器(5)、第一個3:2的進位保存加法器CSA組成的部分積壓縮樹(6)、第二個選通器(7)、57比特的一次性移位器(8)和第二個3:2的CSA樹(9)組成;其中,指數和符號處理單元(1)根據操作數A、B、C的指數和符號計算是否為有效減sub,sub=sign_Asign_Bsign_C,其中,sign_A、sign_B、sign_C分別是操作數A、B、C的符號,根據IEEE 754標準,雙精度浮點數的符號為其最高位;為異或操作;計算A+B×C的臨時符號sign_p1,sign_p1=sign_Bsign_C,計算A+B×C的指數差exp_ABC,exp_ABC=exp_B+exp_C-exp_A其中,exp_A、exp_B和exp_C分別是操作數A、B和C的指數,根據IEEE 754標準,雙精度浮點數的符號指數為第2位到第12位;計算A+B×C的指數exp_p1,并確定A相對B×C移位對齊時的移位量mv,exp_p1和mv的計算方法如下exp_ABC≤-58時,exp_p1=exp_A,mv=0,52>exp_ABC>-58時,exp_p1=exp_B+exp_C+57,mv=exp_ABC+57,109>exp_ABC≥52時,exp_p1=exp_B+exp_C+1,mv=exp_ABC+1,exp_ABC≥109時,exp_p1=exp_B+exp_C+1,mv=110,第一個165比特移位對齊器(2)根據指數和符號處理單元(1)中得到的mv值,對A1、A2、CON進行移位,55比特的CON為00…01,即由54比特的0和最低位上的1構成,A1和A2的值分兩種情況考慮(1)當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,但是上一條指令的結果不被用來作為該條指令的加數時,55比特的A1的前53比特為輸入的被加數的尾數,后兩比特為0,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化數時在最高位補1,否則在最高位補零,非規格化數將作為0看待,A2為0;(2)要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令的加數時,又分為兩種情況1)上一條指令為乘法指令,則A1、A2分別為第一級流水線的輸出sum_p1、carry_p1的高55比特,其中sum_p1、carry_p1的為第二個3:2的CSA樹(9)輸出;2)上一條指令為加法指令或乘加指令,則A1、A2分別為第二級流水線的輸出sum_p2、carry_p2的高55比特,其中sum_p2、carry_p2為第二個165比特的移位器(16)的輸出;A1、A2、CON移位后的輸出分別記為align_A1、align_A2、align_CON,第一個165比特移位對齊器(2)完成的功能可用下面的公式表達align_A1=A1□mv,align_A2=A2□mv,align_CON=CON□mv,其中□表示右移;按位取反器(3),如果A的符號位和B×C的符號位不同,即指數和符號處理單元(1)的輸出sub=1,對第一個165比特移位對齊器(2)的輸出結果align_A1、align_A2和align_CON的每比特都做取反操作(也就是按位取反),否則不做任何操作直接將align_A1、align_A2和align_CON輸出,以4為基的波茨編碼器(5)的輸出記為inv_A1、inv_A2、inv_CON;第一個選通器(4)根據控制信號ctrl1決定是否將inv_CON輸出到第二個3:2的CSA樹(9)中,ctrl1由是否發生數據相關,以及符號預測邏輯(14)的輸出carry_110LSBs決定,當發生數據相關,且前一條指令的結果被作為后一條指令的加數,同時carry_110LSBs=1時,ctrl1=1,此時第一個選通器(4)的輸出為inv_CON,否則第一個選通器(4)的輸出為0;以4為基的波茨編碼器(5)對C的尾數進行編碼,然后將編碼的結果分別與B1、B2相乘得到54個部分積,這里C為輸入的被乘數,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化數時在最高位補1,否則在最高位補零,非規格化數將作為0看待;B1和B2的值分兩種情況考慮(1)當要執行的指令與上一條指令無數據相關時,或者雖發生了數據相關,但是上一條指令的結果不被用來作為該條指令的乘數時,55比特的B1的前53比特為輸入的被乘數的尾數,后兩比特為0,根據IEEE 754標準,雙精度浮點數的尾數為其第13位到64位,其為規格化數時在最高位補1,否則在最高位補零,非規格化數將作為0看待,B2為0;(2)要執行的指令與上一條指令發生了數據相關,且上一條指令的結果被用來作為該條指令的乘數時,又分為兩種情況1)上一條指令為乘法指令,則B1、B2分別為第一級流水線的輸出sum_p1、carry_p1的高55比特,其中sum_p1、carry_p1的為第二個3:2的CSA樹(9)輸出;2)上一條指令為加法指令或乘加指令,則B1、B2分別為第二級流水線的輸出sum_p2、carry_p2的高55比特,其中sum_p2、carry_p2為第二個165比特的移位器(16)的輸出;這54個部分積的被送入第二個3:2的進位保存CSA壓縮樹(6)中,3:2CSA樹即由3:2CSA組成的樹,3個輸入經過一個3:2CSA將被壓縮成2個輸出,若設輸入為x、y、z,輸出為S、C,則壓縮過程可表示如下S=x^y^z,C=((x&y)|(x&z)|(y&z))<<1,這里^、&和|分別表示按位異或、按位與和按位或操作,<<表示向左移位;將9級3:2 CSA級聯,形成3:2 CSA樹,就能將54個部分積壓縮為2個,分別記為sum_BC、carry_BC;第二個選通器(7)根據控制性號ctrl2決定是否將C輸出到57比特的一次性移位器(8)中,ctrl2由是否發生數據相關,數據相關的類型,以及14的輸出carry_110LSBs決定,當發生數據相關,且前一條指令的結果被作為后一條指令的乘數,同時carry_110LSBs=1時,ctrl2=1,此時第二個選通器(7)的輸出為C后面補上55比特的0后的結果,否則第二個選通器(7)的輸出為0;sum_BC、carry_BC和第二個選通器(7)的輸出被送到57比特的一次性移位器(8)中,由指數和符號處理單元(1)的輸出exp_ABC決定是否對它們分別進行一次57位的移位exp_ABC<52時,sum_BC、carry_BC和第二個選通器(7)的輸出將分別被左移57位,否則均不被移位,直接輸出;第二個3:2的CSA樹(9)對inv_A1、inv_A2、4的輸出、57比特的一次性移位器(8)的3個輸出做3:2壓縮,壓縮過程與第一個3:2的進位保存加法器CSA組成的部分積壓縮樹(6)中相似,不同的在于,當指數和符號處理單元(1)中判斷出sub=1時,在兩個進位保存加法器進位字節的最低位置入1,第一個選通器(4)的控制信號ctrl1等于1時,還要在第三個進位保存加法器進位字節的最低位置入1,最終6個輸入被壓縮為2個輸出,記為sum_p1、carry_p1;第二級流水線165比特的前導零預測單元(10)、第一個165比特的半加器(11)、第二個165比特的半加器(12)和第三個165比特的半加器(13)、符號預測邏輯(14)、選擇器(15)、第二個165比特的移位器(16)和與門(17)組成;其中,165比特的前導零預測單元(10),判斷第二個3:2的CSA樹(9)的輸出結果sum_p1和carry_p1相加時,前導零的數目,前導零數目即從最高位開始,到第一個非0位之間的位數,若sum_p1和carry_p1相加結果為負,則這里判斷的將是前導一的數目,即從最高位到第一個非1位之間的位數,具體的判斷方法為通過檢查某一位及其左右相鄰的位確定哪一位可能是最高位,設一預測位fi,T=sum_p1carry_p1,G=sum_p1&amp;carry_p1,
全文摘要
具有數據前送結構的浮點乘加單元用于浮點運算,實現形式為A+B×C的乘加操作,分三級流水線實現在第一級流水線中,對A進行移位對齊,同時完成B×C的波斯編碼、部分積壓縮,并將A移位對齊后的結果和B×C的部分積壓縮后的結果經3∶2進位保存加法樹壓縮;在第二級流水線中,對前一級流水線的輸出進行前導零預測、符號預測、半加運算以及規格化移位;在第三級流水線中,完成最終加法和舍入,計算其指數。這里A和B都可能是前一條指令的中間結果。本發明的優點在于,相鄰指令發生數據相關時,能夠不等待或僅等待一個周期,提高了指令流的執行效率。
文檔編號G06F7/48GK101221490SQ20071017997
公開日2008年7月16日 申請日期2007年12月20日 優先權日2007年12月20日
發明者李兆麟, 李恭瓊, 鄔健元 申請人:清華大學
網(wang)友詢(xun)問留言(yan) 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1