[發(fā)明專利]一種浮點(diǎn)乘加融合單元的五級(jí)流水線結(jié)構(gòu)有效
| 申請(qǐng)?zhí)枺?/td> | 200710099408.9 | 申請(qǐng)日: | 2007-05-18 |
| 公開(公告)號(hào): | CN101174200A | 公開(公告)日: | 2008-05-07 |
| 發(fā)明(設(shè)計(jì))人: | 李兆麟;李恭瓊;張軒 | 申請(qǐng)(專利權(quán))人: | 清華大學(xué) |
| 主分類號(hào): | G06F7/57 | 分類號(hào): | G06F7/57 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100084北京*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 浮點(diǎn) 融合 單元 流水線 結(jié)構(gòu) | ||
1.一種浮點(diǎn)乘加融合單元的五級(jí)流水線結(jié)構(gòu),其特征在于,含有一種五級(jí)流水實(shí)現(xiàn)的單精度浮點(diǎn)乘加運(yùn)算單元,實(shí)現(xiàn)了形式為A+(B×C)的乘加操作,其吞吐量為每周期一條指令,如圖2所示,具體結(jié)構(gòu)如下:
第一級(jí)流水線:由指數(shù)處理單元1、以4為基的波茨編碼器3、3∶2的進(jìn)位保存加法器(CSA)組成的部分積壓縮樹4的一部分和符號(hào)處理單元2組成;其中,
指數(shù)處理單元1根據(jù)操作數(shù)A的指數(shù),B的指數(shù)和C的指數(shù)計(jì)算其指數(shù)差d
d=exp(A)-(exp(B)+exp(C)-127),
其中,exp(A),exp(B)和exp(C)分別是操作數(shù)A,B和C的指數(shù),根據(jù)IEEE?754標(biāo)準(zhǔn),單精度浮點(diǎn)數(shù)的指數(shù)為其第2位到第8位,并計(jì)算A與B×C對(duì)齊時(shí)所需的移位量mv,
mv=74-d,
確定數(shù)據(jù)通路的臨時(shí)指數(shù)Exp_temp,其計(jì)算方法為:
若mv<0,則Exp_temp=exp(A);否則Exp_temp=exp(B)+exp(C)-127+27;這里加27是因?yàn)锽×C的結(jié)果在數(shù)據(jù)通道中靠右側(cè)擺放,如圖3(a)所示;
符號(hào)處理單元2根據(jù)操作數(shù)A的符號(hào),B的符號(hào)和C的符號(hào)計(jì)算臨時(shí)符號(hào)、是否為有效減(sub),根據(jù)IEEE?754標(biāo)準(zhǔn),單精度浮點(diǎn)數(shù)的符號(hào)位為其最高位,臨時(shí)符號(hào)由B×C的符號(hào)位表示,A的符號(hào)位與B×C的符號(hào)位不同時(shí),sub=1,否則sub=0;
基4的波茨編碼器3對(duì)C的尾數(shù)進(jìn)行編碼,然后將編碼的結(jié)果與B的尾數(shù)相乘得到13個(gè)部分積,根據(jù)IEEE?754標(biāo)準(zhǔn),單精度浮點(diǎn)數(shù)的尾數(shù)為其第9位到第32位,編碼后的13個(gè)部分積的被送入3∶2的進(jìn)位保存(CSA)壓縮樹4中,單個(gè)單字節(jié)CSA單元和CSA壓縮樹的構(gòu)造分別在圖4和圖5中做了詳細(xì)的介紹,其中圖5的輸入x、y、z為3個(gè)要被壓縮的字節(jié),輸出S、C分別為壓縮后的和字節(jié)和進(jìn)位字節(jié),圖6的輸入in1~in13為波茨編碼后得到的13個(gè)部分積,輸出為壓縮后得到的和、進(jìn)位,整個(gè)壓縮樹由11個(gè)49比特的CSA構(gòu)成,其中每個(gè)CSA由49個(gè)圖5中的單元結(jié)構(gòu)構(gòu)成,將13個(gè)部分積壓縮為兩個(gè),需要5級(jí)的CSA樹,為平衡各級(jí)流水線的延時(shí),這里將前兩級(jí)CSA樹放在第一級(jí)流水線中,而后面的三級(jí)CSA樹留到第二級(jí)流水線中執(zhí)行,最終壓縮的結(jié)果需要被處理后才能做為乘法結(jié)果,具體處理方法為:部分積壓縮樹每一壓縮的結(jié)果都保留49位,最后一級(jí)壓縮后的兩個(gè)輸出的最高位都為1時(shí),將這兩個(gè)1改為0,否則若兩個(gè)最高位1個(gè)是1,另一個(gè)是0,而兩個(gè)次高位均為1時(shí),將這最高位的1個(gè)1和次高位的2個(gè)1都改為0,其與情況不需做修改;
第二級(jí)流水線:由指數(shù)狀態(tài)劃分器5、74比特移位對(duì)齊器6、按位取反器7、粘滯位計(jì)算器8、3∶2的進(jìn)位保存加法器(CSA)組成的部分積壓縮樹4的一部分和一個(gè)3∶2?CSA組成;其中,
指數(shù)狀態(tài)劃分器5根據(jù)1中計(jì)算出的d和從2中得到的sub,將指數(shù)的狀態(tài)劃分為以下6種情況:
1)d≥27
2)27>d≥3或d=2,sub=0
3)2≥d≥-48且sub=1
4)d=1或d=0,sub=0
5)-1≥d≥-48且sub=0
6)d<-48
前導(dǎo)零預(yù)測(cè)模塊10將根據(jù)這里劃分的狀態(tài)進(jìn)行特殊的操作,介紹10時(shí)將會(huì)具體的介紹;
74比特的移位對(duì)齊器6根據(jù)指數(shù)處理單元1得到的mv值,對(duì)A的尾數(shù)進(jìn)行移,A最初被放置在B×C最高位的左邊,如圖3(a)所示,為保證d>27時(shí)能準(zhǔn)確地進(jìn)行舍入,將兩個(gè)額外位放在A和B×C最高位之間,d>27時(shí),A不移位,通過置入兩個(gè)額外位,舍入邏輯不再需要考慮B×C的結(jié)果,A右移的位數(shù)由d決定,有三種情況:
1.mv≤0,B×C在A最低位的右邊,這種情況下,B×C僅影響粘滯位的計(jì)算,不需要移動(dòng)A;
2.0<mv<74,A右移mv位,mv>50時(shí),A的一部分將被移到B×C最低位的右邊,這些移出位將被收集用來計(jì)算粘滯位st1;
3.mv≥74,A將被全部移到B×C最低位的右邊,僅影響粘滯位st1的計(jì)算;
計(jì)算粘滯位的部件8收集A向右移位對(duì)齊時(shí)移出數(shù)據(jù)通道的位,用以計(jì)算粘滯位,這里產(chǎn)生的粘滯位僅僅是整個(gè)乘加單元實(shí)現(xiàn)過程中產(chǎn)生的粘滯位的一部分,記為st1,在第四級(jí)流水線中還會(huì)產(chǎn)生粘滯位,后面介紹第四級(jí)流水線的時(shí)候?qū)?huì)詳細(xì)介紹;若sub=0,A被移出數(shù)據(jù)通道的位全為0時(shí),st1=0,否則st1=1;若sub=1,A被移出數(shù)據(jù)通道的位全為1時(shí),st1=0,否則st1=1;
按位取反器7,如果A的符號(hào)位和B×C的符號(hào)位不同,對(duì)A的尾數(shù)的每比特都做取反操作(也就是按位取反),如果A的符號(hào)位和B×C的符號(hào)位相同,則不作取反操作,并將操作結(jié)果和4的輸出結(jié)果一起送入3:2CSA?9中作一次壓縮,其輸出結(jié)果記為sum、carry,它們?cè)跀?shù)據(jù)通道中的存在形式如圖3(c)所示;A的符號(hào)位和B×C的符號(hào)位不同時(shí),還要在A的最低位加1以完成對(duì)A的求補(bǔ),但是移位后,A的最低位可能在24位到74位之間的任一位置,我們希望將1加到一個(gè)固定的位置,檢查A的最低位在161位左邊和右邊兩種情況,可發(fā)現(xiàn)sub=1且st1=0時(shí)要在進(jìn)位字節(jié)的最低位加1,如圖3(c)所示,這一加1能正確的傳遞到A的最低位,3:2CSA壓縮后進(jìn)位字節(jié)(carry)的最低位(74位)為空,1可加在這位上;
第三級(jí)流水線:由前導(dǎo)零檢測(cè)模塊10、74比特的半加器11、12和13、符號(hào)預(yù)測(cè)邏輯14、25比特的一次性移位器15和選擇器16組成;其中,
前導(dǎo)零檢測(cè)模塊10,根據(jù)5和9的輸出,以及d和sub的值確定后兩次規(guī)格化移位(分別由17、25完成)的移位量,下面闡述根據(jù)d和sub劃分的六種情況,詳細(xì)討論各種情況下如何確定前導(dǎo)零個(gè)數(shù)(結(jié)果為負(fù)時(shí)為前導(dǎo)一):
情況1:d≥27
前導(dǎo)零個(gè)數(shù)(LZN)可能為0或1,不需要進(jìn)行移位,1位的左移不確定留到加法和舍入部分處理,17和25的移位量均為0;
情況2:27>d≥3或d=2,且sub=0
25的移位量為0,sub=1時(shí),17中的移位量為mv,其中mv為1中計(jì)算出的A相對(duì)B×C移位對(duì)齊時(shí)的移位量;sub=1時(shí),17中的移位量為mv-1,因?yàn)榇藭r(shí)為有效加法,加法器20中最高位可能產(chǎn)生進(jìn)位(Cout=1,Cout表示加法器20中最高位的進(jìn)位),17中的移位量最少為0,最多為25;
情況3:2≥d≥-48且sub=1
此時(shí)A和B×C非常接近,減法運(yùn)算可能損失很多有效位,這種情況下需要特殊的前導(dǎo)零預(yù)測(cè)邏輯,我們的實(shí)現(xiàn)方法如下:
通過檢查某一位及其左右相鄰的位確定哪一位可能是最高位,設(shè)一預(yù)測(cè)位fi,
其中sum、carry為9的兩個(gè)輸出,若fi=1,而fj=0(j=0,1…i-1),則最高位為i或i+1,
i≤26時(shí),17中的移位量為i,25中的移位量為0;否則17中的移位量為26,25中的移位量為i-26;
情況4:sub=0,且d=1或0
17和25中的移位量均為0;
情況5:-1≥d≥-48且sub=0
25中的移位量為0;
17中的移位量由BC_sum[0],BC_sum[1],BC_carry[0],BC_carry[1]確定,它們分別是4的兩個(gè)輸出的最高兩位,若
BC_sum[0]|BC_carry[0]|(BC_sum[1]&?BC_carry[1])=1
則A與B×C相加,Cout=1,Cout為前面提到過的加法器20中最高位的進(jìn)位,這種情況下17中的移位量為0,否則Cout=0,17中的移位量為1;
情況6:d<-48
B×C遠(yuǎn)大于A,A僅影響舍入邏輯,在17中只需左移一位,25中的移位量為0;
總結(jié)幾上各種情況可發(fā)現(xiàn)17、25中的最大的移位量僅為26位;
74比特的半加器11、12和13的引入是為了保證在第五級(jí)流水線中部件27、28僅產(chǎn)生一位進(jìn)位,為減少電路的延時(shí),這里同時(shí)對(duì)9輸出結(jié)果及其補(bǔ)數(shù)表示進(jìn)行處理,待部件14判斷出結(jié)果的正負(fù)后再用選擇器16選擇需要的結(jié)果,11的輸入為sum、carry,輸出結(jié)果為sum&carry,即對(duì)sum和carry作按位與操作,12的輸入為sum、carry,輸出結(jié)果為sum^carry,即對(duì)sum和carry作按位或操作,13的輸入為sum、carry按位取反,輸出結(jié)果為sum和carry分別按位取反后作按位與操作;
25比特的一次性移位器15,根據(jù)1的輸出d和2的輸出sub判斷是否對(duì)11、12、13的輸出進(jìn)行一次25比特的移位:d>2,或者d=2且sub=0時(shí)進(jìn)行移位,否則不進(jìn)行移位,為得到sum、carry的補(bǔ)數(shù)表示,除了按位取反,還需要分別在最低位加1,這里的兩個(gè)加1采用的技巧為:1個(gè)加在13的輸出的最低位,同時(shí)將數(shù)據(jù)通道向右拓展一位,然后在12和13的輸出的最低位分別置1,這樣就完成了另一個(gè)加1;
結(jié)果可能為負(fù)時(shí)將需要非常復(fù)雜的選擇,注意這里提到的負(fù)指的是A+B×C的符號(hào)與B×C的符號(hào)不同,避免這一麻煩同時(shí)減小電路時(shí)延的方法是提前判斷結(jié)果的正負(fù),結(jié)果為負(fù)時(shí)選擇9輸出的補(bǔ)數(shù)表示,這一判斷由符號(hào)預(yù)測(cè)模塊14完成,它在進(jìn)行前導(dǎo)零預(yù)測(cè)(10)、半加(11、12、13)以及一次性移位(15)的同時(shí)進(jìn)行,符號(hào)預(yù)測(cè)模塊14根據(jù)9的輸出結(jié)果sum和carry預(yù)測(cè)最終結(jié)果的正負(fù),結(jié)果僅在有效減(sub=1)時(shí)可能為負(fù),有效減時(shí),A的補(bǔ)數(shù)始終被使用,因此結(jié)果僅在d>0時(shí)可能為負(fù),可能有兩種情況:
1.d≥2時(shí)結(jié)果始終為負(fù);
2.d=0或d=1時(shí),要對(duì)A和B×C進(jìn)行全面的比較,具體方法是檢測(cè)sum加carry時(shí),
最高位是否有進(jìn)位產(chǎn)生,若有,則符號(hào)判斷的結(jié)果為正;
選擇器16根據(jù)14判斷的結(jié)果從15的結(jié)果中選擇,若14判斷出結(jié)果為正,則選擇sum和carry一次性移位后的輸出,否則選擇sum和carry取補(bǔ)再移位后的輸出;
第四級(jí)流水線:由26比特的規(guī)格化移位器17、最終結(jié)果的符號(hào)計(jì)算部件18、指數(shù)計(jì)算部件19、22位條件加法器20、進(jìn)位和粘滯位計(jì)算部件21和兩個(gè)與門22、23組成,其中,
26比特的規(guī)格化移位器17根據(jù)10中得到的移位量對(duì)16的輸出結(jié)果進(jìn)行移位,最大移位量為26;
最終結(jié)果的符號(hào)計(jì)算部件18將2中得到的B*C的符號(hào)和14得到的符號(hào)預(yù)測(cè)結(jié)果進(jìn)行異或操作,得到A+B*C的符號(hào);
指數(shù)計(jì)算部件19計(jì)算A+B*C的指數(shù),計(jì)算方法為1中得到的Exp_temp與三次規(guī)格化移位(由15、17、25完成)的移位量之和相加;
22位條件加法器20,將17輸出結(jié)果的高22比特相加得到sum0,sum0+1得到sum1;
部件21~23是完成舍入的部件的一部分;
IEEE?754標(biāo)準(zhǔn)中規(guī)定了4種舍入模式:就近舍入(RN),向正無窮舍入(RP),向負(fù)無窮舍入(RM),向零舍入(RZ),從應(yīng)用的角度來看,這四種舍入模式能減少到三個(gè):RN、RI、RZ,如表1所示;
從數(shù)學(xué)意義上講,
這里和分別表示向上取整和向下取整;
21中利用17輸出的低49位計(jì)算其最高位進(jìn)位,利用17輸出結(jié)果的低50位和st1計(jì)算粘滯位;有左移的粘滯位的計(jì)算方法為:17輸出的兩個(gè)數(shù)的低49位相加的結(jié)果為零,且st1=0時(shí),粘滯位的計(jì)算結(jié)果為0;無左移的粘滯位的計(jì)算方法為:17輸出的兩個(gè)數(shù)的低50位相加的結(jié)果為零,且st1=0時(shí),粘滯位的計(jì)算結(jié)果為0;采用下面的方法可快速確定兩個(gè)數(shù)是否為0:設(shè)兩個(gè)操作數(shù)為A=a0...an-1,B=b0...bn-1,記矢量E=e0...en-1,其中
22和23為兩個(gè)與門,22的輸入為RI和21中得到的無左移時(shí)的粘滯位,輸出進(jìn)入加法器28,23的輸入為RI和21中得到的有左移時(shí)的粘滯位,輸出進(jìn)入加法器27;
第五級(jí)流水線:由指數(shù)修正部件24、24比特的規(guī)格化移位器25、兩個(gè)4位的加法器27和28、選擇器29和最低位修正部件30;其中,
盡管前面已進(jìn)行規(guī)格化移位,但由于10中采用的前導(dǎo)零邏輯有一位的不確定性,以及兩個(gè)數(shù)相加是否有進(jìn)位的不確定性,將17的輸出結(jié)果相加最高位可能為0,也就是說還可能需要一位左移;是否需要左移由sum0的最高位,sum1的最高位,以及21中得到的低49位向高位段的進(jìn)位決定,
其中c_no_left_shift為假設(shè)不需左移時(shí)4位全加結(jié)果(在28中得到)的最高位進(jìn)位;
若Left_shift=1,則指數(shù)修正部件24將19中得到的結(jié)果減1得到最終結(jié)果的指數(shù),否則不需減1;
第三步規(guī)格化移位在25中完成,其移位量在10中已計(jì)算出了;
22和23為兩個(gè)4位的加法器,它們有三個(gè)共同的輸入:17中兩個(gè)輸出結(jié)果的23~26比特,以及RN+RI,一個(gè)不同的輸入:分別為22和23的輸出;
選擇器29根據(jù)Left_shift的值從27和28的輸出中作選擇,若Left_shift=1,則選擇28的輸出作為輸出,否則選擇27的輸出;
29輸出結(jié)果的最高位為1時(shí),選擇器26選擇sum1經(jīng)部件25處理后的輸出作為輸出,否則選擇sum0經(jīng)25處理后的輸出;
最后,RN模式時(shí)最低位需要被修正,這由舍入位和粘滯位確定:
LSBcorrected=0?if(~R)&sticky&RN=1
其中R為舍入位,本設(shè)計(jì)中為29的輸出的第3位,sticky為粘滯位,Left_shift=1,其值等于21中計(jì)算得的有左移時(shí)的粘滯位的值,否則為無左移時(shí)的粘滯位的值;
最終,對(duì)26和30的輸出結(jié)果進(jìn)行拼接——26的輸出,聯(lián)合30輸出的最高兩比特,就得到了A+B*C的尾數(shù)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于清華大學(xué),未經(jīng)清華大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710099408.9/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F7-00 通過待處理的數(shù)據(jù)的指令或內(nèi)容進(jìn)行運(yùn)算的數(shù)據(jù)處理的方法或裝置
G06F7-02 .比較數(shù)字值的
G06F7-06 .將單個(gè)記錄載體上的數(shù)據(jù)進(jìn)行排序、選擇、合并或比較的裝置
G06F7-22 .用于排序或合并在連續(xù)記錄載體
G06F7-38 .只利用數(shù)制表示,例如利用二進(jìn)制、三進(jìn)制、十進(jìn)制表示來完成計(jì)算的方法或裝置
G06F7-58 .隨機(jī)數(shù)或偽隨機(jī)數(shù)發(fā)生器
- 浮點(diǎn)異常處理裝置
- 一種微處理器浮點(diǎn)部件驗(yàn)證裝置
- 一種計(jì)算機(jī)圖像處理系統(tǒng)
- 實(shí)現(xiàn)浮點(diǎn)數(shù)指數(shù)分析替換的裝置及方法
- 實(shí)現(xiàn)浮點(diǎn)數(shù)符號(hào)分析替換的裝置及方法
- 一種可變浮點(diǎn)數(shù)據(jù)微處理器
- 浮點(diǎn)數(shù)據(jù)類型轉(zhuǎn)換方法、裝置、存儲(chǔ)介質(zhì)及計(jì)算機(jī)設(shè)備
- 浮點(diǎn)計(jì)算方法及系統(tǒng)
- 浮點(diǎn)數(shù)處理器
- 一種浮點(diǎn)數(shù)據(jù)處理方法及裝置





