亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法

文檔序號:6575587閱讀:353來源:國知局
專利名稱:一種64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器技術(shù)領(lǐng)域,特別是涉及一種微處理器中的浮點乘加部件設(shè)計技術(shù),尤其涉及到一種64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法。
背景技術(shù)
為了達到浮點計算的高效率,在許多微處理器中使用一個浮點運算單元浮點乘加器來實現(xiàn)連續(xù)的浮點乘法和加法兩個操作。浮點乘加器在一條指令中執(zhí)行(AXB)+C的操作,并且只有一次舍入操作,從而提高了計算的精度。當把乘加指令中操作數(shù)C置為0時執(zhí)行的是乘法指令,把操作數(shù)B置為1時,執(zhí)行的是加法指令,所以浮點乘加器也可以用來做單獨的乘法和單獨的加法操作。 在微處理器中采用與浮點乘加運算相對應(yīng)的浮點乘加部件,與單純的浮點乘法器和浮點加法器相比,采用浮點乘加部件有以下兩個好處 ①降低了用乘法器和全加器執(zhí)行乘加指令的延遲。通常的微處理器中實現(xiàn)的浮點乘法是2 4拍,浮點加法2 3拍,而浮點乘加指令的延遲一般在3 5拍左右,可以看出一條浮點乘法指令接著一條浮點加法指令所需要的節(jié)拍數(shù)之和大于等于一條浮點乘加指令的執(zhí)行節(jié)拍數(shù),所以采用浮點乘加指令降低了先乘后加(乘加)的指令序列的延遲。 ②比乘法器和全加器的硬件開銷之和要小,而且提高了乘加指令結(jié)果的精度。浮點乘加器只在AXB+C結(jié)束后做一次舍入(rounding)和規(guī)格化(normalization),而用浮
點乘法和浮點加法指令來實現(xiàn)浮點乘加指令時,需要先進行乘法的舍入和規(guī)格化,然后進行加法的舍入和規(guī)格化,要做兩次舍入和規(guī)格化。只做一次舍入和規(guī)格化使得浮點乘加器硬件規(guī)模比浮點乘法器和浮點加法器之和的硬件規(guī)模要小一些。并且在浮點乘加器中,進行舍入的數(shù)據(jù)長度是161比特,提高了浮點運算的精度。 在已實現(xiàn)的多數(shù)處理器中,浮點乘加運算都是基于IBMRS/6000中的算法
改進, 一般通過以下步驟來實現(xiàn)(相關(guān)內(nèi)容請見參考文獻1 : Design of the IBM RISC
System/6000 floating-point execution unit, IBM journal of Research & Development, Vol.34,
pp.59-70, 1990,參考文獻2 : Second-Generation RISC Floating Point w池Multiply-Add
Fused,正EE Journal of Solid state circuits, Vol.25, pp.l207-1213, 1990) 1、操作數(shù)AXB利用乘法壓縮樹進行壓縮,得到carry(進位)和sum(和)兩個
部分積。在進行乘法樹壓縮的同時,操作數(shù)C進行取反和對齊移位操作。 2、把對齊移位后的Cinv和AXB壓縮后的carry和sum用壓縮比為3 : 2的
161bitCSAtree壓縮,得到兩個部分積。把3 : 2CSA壓縮后得到的兩個部分積做161bit
加法運算,同時利用這兩個部分積進行161bitLZA(Leading Zero Anticipator,首位0的個
數(shù)預(yù)測)得到加法結(jié)果的規(guī)格化左移的位數(shù)。 3、加法結(jié)果利用LZA預(yù)測的左移的位數(shù)進行規(guī)格化左移和舍入操作得到最終的計算結(jié)果。
為了降低浮點乘加器的時延,現(xiàn)有技術(shù)中提出了多種方案,例如規(guī)格化在最終的加法以及舍入之前的方法(參考文獻3 : Floating-Point Multiply-Add-Fused with ReducedLatency),對運算根據(jù)指數(shù)差d分為5個路徑的方案(參考文獻4 : Multiple Path IEEEFloating-Point Fused Multiply-add, proc.of the 46th IEEE International Midwest Symposium onCircuits and Systems, pp.l359-1362, 2003)以及根據(jù)指數(shù)差分為3條路徑的方法(參考文獻5 : Floating-Point Fused Multiply-Add Architectures, Proceeding of the Fortieth AsilomarConference on Signals, Systems, and Computers, 2007),以及根據(jù)指數(shù)差分為2條路徑FAR和CLOSE路徑的方法C參考文獻6 : Floating-Point Fused Multiply-Add : Reducedlatency for Floating-Point Addition, Proc.of 17th IEEE Symposium on Computer Arithmetic,pp.42-51, 2005)。參考文獻6中,根據(jù)指數(shù)差提出的2條路徑的方法,雖然相對于傳統(tǒng)乘加器能夠在一定程度上降低時延,但由于大規(guī)模(106bit)移位器的存在和舍入位計算的復(fù)雜使得FAR路徑的時延成為瓶頸。參考文獻5的3路徑方法相對于2路徑的方法能大規(guī)模的降低乘加器的時延,但同時由于通路的劃分的復(fù)雜性,相對于2通路的方法增加了大量的面積開銷。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的缺陷,為了在盡量少增加面積的前提下降低現(xiàn)有技術(shù)中乘加器時延而提供一種64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法。 為實現(xiàn)本發(fā)明目的而提供的一種64比特浮點乘加器,實現(xiàn)形式為(AXB)+C的浮點乘加運算,其中 所述浮點乘加器,包括第一指數(shù)處理單元,用于計算浮點乘加和浮點乘法運算時的指數(shù)差;其根據(jù)操作數(shù)A的指數(shù)、操作數(shù)B的指數(shù)和操作數(shù)C的指數(shù)計算指數(shù)差dl=exp(A)-(exp(B)+exp(C)-1023)的值和符號; 所述浮點乘加器,還包括第一符號處理單元,用于判斷浮點乘加運算和浮點乘法運算結(jié)果的符號以及是否做有效減法;如果操作數(shù)C的符號位和操作數(shù)AXB的符號位不同,那么尾數(shù)計算做有效減法,然后根據(jù)所述第一指數(shù)處理單元中所述指數(shù)差dl的符號來判斷最后結(jié)果的符號; 所述浮點乘加器,還包括第二指數(shù)處理單元和第二符號處理單元,其中
所述第二指數(shù)處理單元,用于對只做加法操作時操作數(shù)的指數(shù)進行處理;當只做加法操作時,第一個流水節(jié)拍中的第一指數(shù)處理單元被旁路,使用第二指數(shù)處理單元進行指數(shù)處理,其根據(jù)操作數(shù)A的指數(shù)和操作數(shù)C的指數(shù)計算指數(shù)差d2的值以及符號,由于操作數(shù)B為1, d2的計算簡化為d2 = exp(A)-exp(C); 所述第二符號處理單元,用于對只作加法操作時操作數(shù)的符號進行處理;如果操作數(shù)C的符號位和操作數(shù)A的符號位不同,那么尾數(shù)計算做有效減法,然后根據(jù)第二
指數(shù)處理單元中的所述指數(shù)差d2的符號來判斷最后結(jié)果的符號; 指數(shù)以及符號選擇器,用于選擇第一指數(shù)處理單元和第一符號處理單元的結(jié)果,或者選擇第二指數(shù)處理單元和第二符號處理單元的結(jié)果;當浮點乘加器做浮點乘加和浮點乘法運算時,指數(shù)差d為dl的值,且符號為第一符號處理單元的結(jié)果;當只做浮點加法運算時,指數(shù)差d為d2的值,且符號為第二符號處理單元的結(jié)果;并判斷指數(shù)差
d,當(1 = 0或者(1= 1或者(1 = 2或者(1 = -1,而且做有效減法時,乘加運算通過CLOSE 路徑進行運算;否則乘加運算通過FAR路徑進行運算。 為實現(xiàn)本發(fā)明目的還提供一種64比特雙精度雙通路浮點乘加器浮點運算流水節(jié) 拍處理方法,其操作過程按照時序劃分為四個流水節(jié)拍,包括下列步驟
步驟S100,在第一拍中,利用27 : 2的乘法壓縮樹計算操作數(shù)AXB的結(jié)果, 并計算浮點乘加和浮點乘法運算的指數(shù)差dl和符號,同時進行浮點乘加和浮點乘法運算 時的符號處理; 步驟S200,在第二拍中,計算單做浮點加法運算時的指數(shù)差d2和符號;當浮點 乘加器做浮點乘加和浮點乘法運算時,指數(shù)差d為dl的值,;當只做浮點加法運算時, 指數(shù)差d為d2的值;當d = 0或者d = 1或者d = 2或者d = -1,而且做有效減法時, 乘加運算通過CLOSE路徑進行運算;否則乘加運算通過FAR路徑進行運算;在CLOSE 路徑中,用一個57比特3 : 2CSA壓縮樹進行運算,同時預(yù)測CLOSE路徑首0位置以及 計算CLOSE的加法的結(jié)果;在FAR路徑中,對操作數(shù)C進行51比特的對齊移位或者不 移位,并利用全加器得到乘法結(jié)果以及乘法結(jié)果低51位的補碼; 步驟S300,在第三拍中,在CLOSE路徑中,首先對首0檢測的結(jié)果進行編碼, 得到規(guī)格化左移的位數(shù),同時根據(jù)57比特符號判斷得到結(jié)果是否需要取補,然后再進行 規(guī)格化移位;在FAR路徑中,首先對乘法結(jié)果或者在第二拍中操作數(shù)C的結(jié)果進行55比 特的移位,然后取反,并進行半加運算(HA)以及l(fā)bit的規(guī)格化; 步驟S400,在第四拍中,對CLOSE路徑和FAR路徑分別進行舍入操作,然后
通過選擇得到最后的結(jié)果。 本發(fā)明的優(yōu)點在于 1、本發(fā)明的64比特雙精度雙通路浮點乘加器根據(jù)指數(shù)差d的范圍劃分為 CLOSE路徑和FAR路徑,CLOSE路徑處理d = 0, d=l, d=2, d = -l且做有效減 法時的數(shù)據(jù),其他情況都是在FAR路徑中完成的,通過CLOSE和FAR路徑的劃分使得 大規(guī)模的規(guī)格化和大規(guī)模的對齊移位操作處在不同路徑上,從而降低了時延。
2、為了降低64比特雙精度雙通路浮點乘加器的面積,CLOSE路徑中直接用3 個全加器57bit雙全加器、57bit取反全加器、106bit全加器和51bit補碼器來代替?zhèn)鹘y(tǒng)浮 點乘加部件中的半加器,使得只需要對一個操作數(shù)進行對齊移位或者規(guī)格化移位,從而 達到減少所需的移位器的數(shù)目。由于移位器的面積比一個同比特的全加器的面積要大的 多,所以這樣會降低乘加器的面積。 3、在CLOSE路徑和FAR路徑中盡量復(fù)用移位器來降低面積開銷。在CLOSE 路徑中,只需要一個58bit的移位器來進行規(guī)格化,比傳統(tǒng)的161bit規(guī)格化的面積要小的 多。在FAR路徑中,根據(jù)指數(shù)差d的符號分為兩類路徑, 一個是d幼, 一個是dX)。 當d幼時要對操作數(shù)C先經(jīng)過一個51bit的移位器,然后在用一個55bit的移位器完成最 多106比特的移位,而d > 0這種情況只需要一個55bit的移位器。通過共用55bit的移 位器使得對齊移位降低了面積,而對操作數(shù)C移位分為2個步驟并且劃分到2個流水節(jié)拍 中則降低了流水節(jié)拍的時延。 4、在浮點乘加器的第一節(jié)拍中只做了浮點乘法運算,所以在單純浮點加法運算中可以把第一拍完全旁路,使得浮點加法運算減少了一個流水節(jié)拍,提高了浮點加法的 性能,并且通過增加一份操作數(shù)A輸入觸發(fā)器來控制乘法樹不翻轉(zhuǎn),使得浮點加法指令 的功耗大大降低。


圖1是本發(fā)明的64比特雙精度雙通路浮點乘加器的流水結(jié)構(gòu)框圖;
圖2是浮點乘加器旁路第一個流水節(jié)拍的控制圖。
其中 1-第一指數(shù)處理單元2-第一符號處理單元3-基4的波茨編碼器4-27 : 2乘法壓縮樹5-3bit對齊移位器6-INV取反單元7-57bit3 : 2CSA壓縮樹8-57bit LZA9-57bit雙全加器10-57bit取反雙全加器11-第一選擇器12-第二選擇器13-106bit全加器和51bit補碼器14-51比特對齊移位器15-第三選擇器16-第二符號處理單元17-第二指數(shù)處理單元18-指數(shù)以及符號選擇器19-57bit符號檢測器20-57bitLOD編碼器21-109bit選擇器22-5 lbit LOD編碼器23-58bit移位器24-55bit對齊移位器25-舍入sticky計算單元26-取反器27-107bitHA28-lbit規(guī)格化單元29-d = 0和d = 1的符號處理單元30-指數(shù)計算單元31-CLOSE舍入和規(guī)格化單元32-5 lbit雙全加器33-FAR舍入和進位單元34-53bit選擇器35-64bit選擇器
具體實施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施 例,對本發(fā)明的64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法進行進一步詳細說 明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明而不是對本發(fā)明的限制。
本發(fā)明實施例的64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法,實現(xiàn)形式 為(AXB)+C的浮點乘加運算。 本發(fā)明實施例中的64比特浮點乘加器,是改進型的雙精度雙通路的64比特浮點 乘加器,其根據(jù)乘法和加法的指數(shù)差分成2條通路, 一路是CLOSE路徑, 一路是FAR路徑。 下面詳細說明本發(fā)明實施例的64比特浮點乘加器,作為一種可實施方式,其可 以按照時序劃分為4個流水節(jié)拍,根據(jù)順序?qū)?個流水節(jié)拍進行功能劃分,如圖1所示, 其中
在第一個流水節(jié)拍中,包括第一指數(shù)處理單元l、第一符號處理單元2、基4的 波茨編碼器3、 27 : 2的乘法壓縮樹4,其中 第一指數(shù)處理單元l,用于計算浮點乘加和浮點乘法運算時的指數(shù)差dl ;
其根據(jù)操作數(shù)A的指數(shù)、B的指數(shù)和C的指數(shù)計算指數(shù)差dl = exp(C)-(exp(A)+exp(B)-1023)的值以及符號; 第一符號處理單元2,用于判斷浮點乘加運算和浮點乘法運算結(jié)果的符號以及是 否做有效減法; 如果C的符號位和AXB的符號位不同,那么尾數(shù)計算做有效減法即sub_effl為 真,然后根據(jù)第一指數(shù)處理單元1中指數(shù)差dl的符號來判斷最后結(jié)果的符號;
基4的波茨編碼器3,用于對操作數(shù)B的尾數(shù)進行編碼,然后將編碼的結(jié)果與操 作數(shù)A的尾數(shù)相乘得到27個部分積,這27個部分積送到27 : 2的乘法壓縮樹4中;
27 : 2的乘法壓縮樹4,用于對操作數(shù)AXB的27個部分積進行壓縮得到兩個 "和"及"進位",標記為carry, sum的106比特數(shù)據(jù)。 在第二個流水節(jié)拍中,包括3bit的對齊移位器5、 INV取反單元6、 57bit 3 : 2CSA壓縮樹7、 57bitLZA8、 57bit雙全加器9、 57bit取反全加器10、第一選擇器 11、第二選擇器12、 106比特全加器和51比特補碼器13、 51比特對齊移位器14、第三選 擇器15、第二符號處理單元16、第二指數(shù)處理單元17,指數(shù)以及符號選擇器18其中
第二指數(shù)處理單元17,用于對只做加法操作時操作數(shù)的指數(shù)進行處理;
當只做加法操作時,第一個流水節(jié)拍中的第一指數(shù)處理單元l被旁路,使用第 二指數(shù)處理單元17進行指數(shù)處理,其根據(jù)操作數(shù)A的指數(shù)和操作數(shù)C的指數(shù)計算指數(shù)差 d2的值及符號,由于操作數(shù)B為1,指數(shù)差d2的計算簡化為為2二exp(A)-exp(C);
第二符號處理單元16,用于對只作加法操作時操作數(shù)的符號進行處理;
如果操作數(shù)C的符號位和操作數(shù)A的符號位不同,那么尾數(shù)計算做有效減法即 sub_efG為真,然后根據(jù)第二指數(shù)處理單元16中d2的符號來判斷最后結(jié)果的符號。
指數(shù)以及符號選擇器18,用于在第一個流水節(jié)拍的第一指數(shù)處理單元1和第一 符號處理單元2的結(jié)果,以及第二個流水節(jié)拍的第二指數(shù)處理單元17和第二符號處理單 元16的結(jié)果之間進行選擇;當做浮點乘法和浮點乘加運算時,指數(shù)以及符號選擇器18選 擇第一指數(shù)處理單元1和第一符號處理單元2的結(jié)果,即指數(shù)差d為dl的值,且符號為 第一符號處理單元2的結(jié)果;當只作浮點加法運算時選擇第二指數(shù)處理單元17和第二符 號處理單元16的結(jié)果,即指數(shù)差為d2的值,且符號為第二符號處理單元的結(jié)果;并判斷 指數(shù)差d是否等于O, d是否等于l, d是否等于2和d是否等于-l ;當指數(shù)差(1 = 0、或 者d = 1、或者d = 2、或者d = -1,且做有效減法時(sub_eff = 1,即sub_eff為真),通 過CLOSE路徑進行運算,否則通過FAR路徑進行運算; 其中,sub—eff的值為sub—effl或sub—eff2,當指數(shù)以及符號選擇器18,選擇第一 個流水節(jié)拍的指數(shù)處理單元和符號處理單元的結(jié)果時,sub_eff的值為sub_effl ;當指數(shù) 以及符號選擇器18,選擇第二個流水節(jié)拍的指數(shù)處理單元和符號處理單元的結(jié)果時sub_ eff2。 3bit的對齊移位器5,用于對操作數(shù)C的53比特尾數(shù),根據(jù)指數(shù)差d的值進行 移位;當d = 0時沒有移位,當d = 1時向左移1位,當d = 2時向左移2位,當d = -1時向右移1位,得到1個56比特的數(shù)據(jù),這個移位數(shù)據(jù)用在CLOSE路徑中;
INV取反單元6,用于對3bit的對齊移位器的56比特數(shù)據(jù)進行取反;由于 CLOSE路徑中都是做有效減法,所以在CLOSE路徑中都對操作數(shù)C移位后的結(jié)果進行取 反來完成減法運算,INV取反單元6位于CLOSE路徑中; INV取反單元6輸出的結(jié)果為56bit,高位擴充1位符號位1得到57bit的數(shù)據(jù), sum和carry的高56bit也高位擴充1位符號位0得到57bit的數(shù)據(jù),這3組57bit的數(shù)據(jù)輸 入到57bit3 : 2CSA壓縮樹7中進行壓縮得到2個57bit帶符號的結(jié)果,由于對操作數(shù)C 進行做減法,操作數(shù)C經(jīng)過INV取反單元6后還需要再加1才得到操作數(shù)C的補碼,這 個1放在57bit3 : 2CSA壓縮數(shù)7結(jié)果的"進位"結(jié)果中; 57bitLZA8(Leading Zero Anticipator),用于對57bit3 : 2CSA壓縮樹7輸出的2 個帶符號的結(jié)果進行首0或者首1的預(yù)測,預(yù)測結(jié)果用一個序列表示,該序列標記為f, 如果57bitLZA8的2個輸入數(shù)據(jù)相加為正數(shù),那么f給出的是首0的位置,如果57bitLZA 8的2個輸入數(shù)據(jù)相加為負數(shù),那么f給出的是首1的位置,57bit LZA 8位于CLOSE路 徑中; 57bit雙全加器9,用于對57bit3 : 2CSA壓縮樹7的2個57bit結(jié)果進行相加, 輸出這兩個輸入相加的結(jié)果,標記為sum,,以及這兩個輸入相加再加1的結(jié)果,標記為 sump。sl, 57bit雙全加器9位于CLOSE路徑中; 57bit取補雙全加器10,用于對57bit3 : 2CSA壓縮樹7的2個57bit結(jié)果先 取反再相加,輸出取反后相加的結(jié)果,標記為sum^,以及相加再加l的結(jié)果,標記為 summvl, 57bit取反雙全加器10位于CLOSE路徑中; 第一選擇器ll,用于在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加 法時直接輸出操作數(shù)A的尾數(shù),否則輸出乘法的結(jié)果的sum」el ; 第二選擇器12,用于在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加 法時直接輸出數(shù)據(jù)0值,否則則輸出乘法結(jié)果的carry」el ; 106bit全加器和51bit補碼器13,用于對第一選擇器11和第二選擇器12輸出的2 個106比特的結(jié)果sum_sel和carry_sel進行相加并對低51比特進行取補,輸出一個106 比特乘法結(jié)果,標記為MUL—res,低51比特取補的結(jié)果標記為MUL51C, 1位低51比特 的進位標記位carry51, 1位51比特取補后的進位結(jié)果,標記為carry5ic,其中MUL51C、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路徑中,而106比特乘法結(jié)果用于 FAR路徑中; 51比特對齊移位器14,用于對操作數(shù)C的尾數(shù)根據(jù)指數(shù)差-d的值進行最多51bit 右移操作,得到104比特的結(jié)果,51比特對齊移位器14位于FAR路徑中;
第三選擇器15,用于對51比特對齊移位器14的輸出以及操作數(shù)C進行選擇; 當ck0時選擇51比特對齊移位器14的輸出,當dX)時直接輸出操作數(shù)C,第三選擇器 15位于 路徑中; 在第三個流水節(jié)拍中,包括57bit符號檢測器19、 57bitLOD編碼器20、 109bit 選擇器21、 51bitLOD編碼器22、 58bit移位器23、 55bit對齊移位器24、舍入sticky計算 單元25、取反器26、 107bitHA 27、 lbit規(guī)格化單元28、 d = 0和d = 1的符號處理單元 29,其中
57bit符號檢測器19,用于根據(jù)57比特雙全加器9輸出結(jié)果sum,禾Psump。d第57 位進行符號判斷;如果106bit全加器和51bit補碼器13的輸出結(jié)果Carry51 = 1而且sump。sl 第57位為1,或者106bit全加器和51bit補碼器13的輸出結(jié)果carry51 = 0而且sump。s的 第57比特為1,那么CLOSE路徑的乘加結(jié)果為負數(shù),否則為正數(shù);
57bitLOD編碼器20,用于對57bit LZA 8輸出的f進行編碼,編碼后得到一個6 比特結(jié)果Sl[5:0],并輸出到58bit移位器23中用來控制移位的位數(shù);
109bit選擇器21,用于根據(jù)57bit符號檢測器19輸出的符號以及Carry51和Carry5ic 進行選擇,輸出109bit的結(jié)果數(shù)據(jù);如果為正數(shù)且carry^ = 0,那么選擇輸出結(jié)果為 sump。s和MUL_res的低51比特,如果為正數(shù)且carry51 = 1 ,那么選擇輸出結(jié)果為sump。sl和 MUL—res的低51比特,如果為負數(shù)且carry5ic = 0,那么選擇輸出結(jié)果為sum,和MUL51C 的結(jié)果,如果為負數(shù)且carry^二 1,那么選擇輸出結(jié)果為summvl和MUL51C的結(jié)果;
51bitLOD編碼器22,用于對109bit選擇器21輸出的109bit結(jié)果數(shù)據(jù)的低51bit 進行編碼,得到首1的位置的一個5bit數(shù)據(jù)S2[5:0]; 58bit移位器23,用于進行最多58bit的移位;當109bit選擇器21輸出的109bit 結(jié)果數(shù)據(jù)的高58bit存在l個'l'時,根據(jù)57bitLOD編碼器20的編碼結(jié)果Sl[5:0]進行 移位,如果109bit結(jié)果數(shù)據(jù)的高58bit全部為0,則根據(jù)51bitLOD編碼器22的編碼結(jié)果 S2[5:0]進行移位,得到1個58bit的移位結(jié)果sumnOTm,以及低位的舍入位sticky_close ;
55bit對齊移位器24,用于選擇106bit全加器和51bit補碼器13輸出的乘法結(jié)果 MUL_res或者第三選擇器15輸出的結(jié)果,根據(jù)指數(shù)差d或-d的值進行向右最多55bit的對 齊移位;當d幼時,對第三選擇器15輸出的結(jié)果,根據(jù)-d的值進行最多55bit右移位, 直接輸出MUL—res;當dX)時,對MUL_res根據(jù)d的值進行最多55bit對齊移位,并直 接輸出第三選擇器15的結(jié)果,55bit對齊移位器24輸出2組106bit的數(shù)據(jù),其中一組對 應(yīng)著操作數(shù)AXB對齊后的結(jié)果, 一組對應(yīng)著操作數(shù)C對齊后的結(jié)果;
舍入sticky計算單元25,用于在55bit對齊移位器24進行右對齊移位的同時,對 移位后移出106bit位置的數(shù)據(jù)進行sticky運算,當移出的數(shù)據(jù)不全為0時,F(xiàn)AR_sticky = 1,否則FAR_sticky = 0 ; 取反器26,用于對55bit對齊移位器24輸出的2個106比特的數(shù)據(jù)進行取反,當 d幼且做有效減法時只對操作數(shù)C尾數(shù)對齊移位后的結(jié)果進行取反;當d > 0時且做有效 減法時對AXB對齊后的結(jié)果進行取反;其他情況不取反; 107bitHA單元27,用于對取反器26輸出的2個106比特數(shù)據(jù)進行半加運算,為 后續(xù)的舍入操作做準備; lbit規(guī)格化單元28,用于對107bitHA單元27的輸出2個106bit結(jié)果進行l(wèi)bit的 左移,只當107bitHA單元27輸出的2個結(jié)果的最高2位都為0時,向左移位1位,否則 不移位; d = 0禾P d = 1的符號處理單元29,用于對CLOSE通路中d = 0禾P d = 1時的 符號根據(jù)57bit符號檢測器19的結(jié)果做進一步的判斷處理;當57bit符號檢測器19輸出結(jié) 果是負數(shù)時,CLOSE路徑輸出的符號是操作數(shù)C的符號,當57bit符號檢測器19輸出結(jié) 果位正數(shù)時,CLOSE路徑輸出的符號時操作數(shù)AXB的符號。在第四個流水節(jié)拍中,包括指數(shù)計算單元30、 CLOSE舍入和規(guī)格化單元31、51bit雙全加器32、 FAR舍入和進位單元33、 53bit選擇器34、 64bit選擇器35,其中
指數(shù)計算單元30 ,用于根據(jù)CLOSE路徑中規(guī)格化移位的位數(shù)以及FAR路徑中規(guī) 格化移位的位數(shù)進行指數(shù)的運算;CLOSE路徑的指數(shù)結(jié)果為AXB的指數(shù)減去CLOSE規(guī) 格化移位的位數(shù)(為58bit移位器19移位的位數(shù)加上舍入后移位的位數(shù));FAR路徑中, 當d幼時為AXB的指數(shù)減去FAR路徑舍入移位的位數(shù)再減去lbit規(guī)格化單元24移位的 位數(shù),當d > 0時為操作數(shù)C的指數(shù)減去FAR路徑輸入移位的位數(shù)再減去lbit規(guī)格化單 元24移位的位數(shù)。 CLOSE舍入和規(guī)格化單元31,用于對CLOSE的路徑的58bit結(jié)果進行舍入和規(guī) 格化;由于57bitLZA 8有l(wèi)bit的誤差,會使的規(guī)格化少移1位,而且由于57bitLZA 8沒 有計算Carry51和Carry51c;的值,所以也有可能多移1位,所以CLOSE舍入和規(guī)格化單元 31根據(jù)舍入的結(jié)果進行左移1位或者右移1位; 5 lbit雙全加器32,用于根據(jù)lbit規(guī)格化單元28輸出的FAR_norml和FAR_ norm2計算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_ norml+FAR_norm2記為res 0, FAR_norml+FAR_norm2+l記為resl,并將得到的res0和 resl輸出到53比特選擇器34中; FAR舍入和進位單元33,用于根據(jù)處理器的舍入模式對FAR_norml和FAR_ norm2的低55比特的數(shù)據(jù)做舍入操作,如果有舍入進位,則cin = 1,否則沒有舍入進 位,則cin = 0,并且給出高4bit的結(jié)果L4[3:0]; 53bit選擇器34,用于根據(jù)FAR舍入和進位單元33輸出的cin和res0和resl的 最高2bit進行選擇處理;如果cin二l,有進位選擇,那么選擇resl,再根據(jù)resl的最高 兩bit進行選擇,如果resl最高位為1那么resl和L4[3:2]組成53比特數(shù)據(jù),如果最高兩 bit為01,那么resl舍掉最高的0和L4[3:l]組成53比特數(shù)據(jù),而如果最高兩bit為00, 那么resl舍掉最高兩位00和L4[3:0]組成53bit的數(shù)據(jù),當cin二0時,沒有進位選擇,那 么選擇resO,再根據(jù)resO的最高兩bit進行選擇,選擇的過程和選resl的情況是相同的;
64比特選擇器35,用于根據(jù)FAR和CLOSE的判斷來選擇FAR路徑的數(shù)據(jù)還是 CLOSE路徑的數(shù)據(jù);當d = 0或者d = 1或者d = 2或者d = -1,而且做有效減法時, 選擇CLOSE路徑的結(jié)果,否則選擇FAR通路的結(jié)果。 本發(fā)明實施例中的64比特雙精度雙通路浮點乘加器,其根據(jù)乘法和加法的指數(shù) 差分成2條通路, 一路是CLOSE路徑, 一路是FAR路徑。FAR路徑又根據(jù)指數(shù)差的符 號分為兩類, 一類是操作數(shù)C的指數(shù)大于操作數(shù)AXB的指數(shù),另一種是操作數(shù)C的指數(shù) 小于等于操作數(shù)AXB的指數(shù),CLOSE通路只包含58bit的規(guī)格化移位器,而FAR通路 只包含一個51bit對齊移位器和1個55bit對齊移位器,利用規(guī)格化和對齊移位不會同時存 在FAR和CLOSE運算路徑中的特點,來降低浮點乘加器的延遲等。 與本發(fā)明的64比特雙精度雙通路浮點乘加器相應(yīng),本發(fā)明還提供一種64比特雙 精度雙通路浮點乘加器浮點運算流水節(jié)拍處理方法,其操作過程按照時序劃分為四個流 水節(jié)拍,包括下列步驟 步驟SIOO,在第一拍中,利用27 : 2的乘法壓縮樹計算操作數(shù)AXB的結(jié)果, 并計算浮點乘加和浮點乘法運算的指數(shù)差dl和符號,同時進行浮點乘加和浮點乘法運算 時的符號處理;
第一指數(shù)處理單元1根據(jù)操作數(shù)A的指數(shù),B的指數(shù)和C的指數(shù)計算dl = exp(C)-(exp(A)+exp(B)-1023)的值以及符號;利用第一符號處理單元2判斷,如果操作數(shù)C的符號位和AXB的符號位不同, 那么尾數(shù)計算做有效減法即sub_effl為真,然后根據(jù)第一指數(shù)處理單元1中dl的符號來 判斷最后結(jié)果的符號; 基4的波茨編碼器3對操作數(shù)B的尾數(shù)進行編碼,然后將編碼的結(jié)果與操作數(shù)A 的尾數(shù)相乘得到27個部分積,這27個部分積送到27 : 2的乘法壓縮樹4中;
27 : 2的乘法壓縮樹4對AXB的27個部分積進行壓縮得到兩個"和"及"進 位",標記為carry, sum的106比特數(shù)據(jù)。 步驟S200,在第二拍中,計算單做浮點加法運算時的指數(shù)差d2和符號;當浮點 乘加器做浮點乘加和浮點乘法運算時,指數(shù)差d為dl的值,;當只做浮點加法運算時, 指數(shù)差d為d2的值;當d = 0或者d = 1或者d = 2或者d = -1,而且做有效減法時, 乘加運算通過CLOSE路徑進行運算;否則乘加運算通過FAR路徑進行運算;在CLOSE 路徑中,用一個57比特3 : 2CSA壓縮樹進行運算,同時預(yù)測CLOSE路徑首0位置以及 計算CLOSE的加法的結(jié)果;在FAR路徑中,對操作數(shù)C進行51比特的對齊移位或者不 移位,并利用全加器得到乘法結(jié)果以及乘法結(jié)果低51位的補碼; 3bit的對齊移位器5對操作數(shù)C的53比特尾數(shù),根據(jù)指數(shù)差d的值進行移位; 當d二0時沒有移位,當d二l時向左移l位,當d二2時向左移2位,當d二-l時向 右移1位,得到1個56比特的數(shù)據(jù),這個移位數(shù)據(jù)用在CLOSE路徑中;
INV取反單元6對3bit的對齊移位器的56比特數(shù)據(jù)進行取反;由于CLOSE路 徑中都是做有效減法,所以在CLOSE路徑中都對操作數(shù)C移位后的結(jié)果進行取反來完成 減法運算; INV取反單元6輸出的結(jié)果為56bit,高位擴充1位符號位1得到57bit的數(shù)據(jù), sum和carry的高56bit也高位擴充1位符號位0得到57bit的數(shù)據(jù),這3組57bit的數(shù)據(jù)輸 入到57bit 3 : 2CSA壓縮樹7中進行壓縮得到2個57bit帶符號的結(jié)果;
57bit LZA 8對57bit 3 : 2CSA壓縮樹7輸出的2個帶符號的結(jié)果進行首0或者 首1的預(yù)測,預(yù)測結(jié)果用一個序列表示,該序列標記為f,如果57bitLZA8的2個輸入數(shù) 據(jù)相加為正數(shù),那么f給出的是首0的位置,如果57bitLZA8的2個輸入數(shù)據(jù)相加為負 數(shù),那么f給出的是首l的位置; 57bit雙全加器9對57bit3 : 2CSA壓縮樹7的2個57bit結(jié)果進行相加,給出這兩 個輸入相加的結(jié)果,標記為sum,,以及這兩個輸入相加再加1的結(jié)果,標記為sum,。
57bit取補雙全加器10對57bit 3 : 2CSA壓縮樹7的2個57bit結(jié)果先取反再相 加,給出取反后相加的結(jié)果,標記為sum,,以及相加再加l的結(jié)果,標記為sum,。
第一選擇器11在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法時直 接輸出操作數(shù)A的尾數(shù),否則則輸出乘法的結(jié)果的sum」el ; 第二選擇器12在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法時直 接輸出數(shù)據(jù)0值,否則則輸出乘法結(jié)果的carry」el ; 106bit全加器和51bit補碼器13對第一選擇器11和第二選擇器12輸出的2個 106比特的結(jié)果sum_sel和carry_sel進行相加并對低51比特進行取補,輸出出一個106比特乘法結(jié)果,標記為MUL—res,低51比特取補的結(jié)果標記為MUL51C, 1位低51比特 的進位標記位carry51, 1位51比特取補后的進位結(jié)果,標記為carry5ic,其中MUL51C、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路徑中,而106比特乘法結(jié)果用于 FAR路徑中; 51比特對齊移位器14對操作數(shù)C的尾數(shù),根據(jù)指數(shù)差-d的值進行最多51bit右
移操作,得到104比特的結(jié)果,51比特對齊移位器位于FAR路徑中;第三選擇器15對51比特對齊移位器14的輸出以及操作數(shù)C進行選擇,當ckO
時選擇51比特對齊移位器14的輸出,當d > 0時直接輸出操作數(shù)C ; 第二指數(shù)處理單元17對只做加法操作時操作數(shù)的指數(shù)進行處理;當只做加法操
作時,第一個流水節(jié)拍中的第一指數(shù)處理單元l被旁路,使用第二指數(shù)處理單元17進行
指數(shù)處理,其根據(jù)操作數(shù)A的指數(shù)和操作數(shù)C的指數(shù)計算指數(shù)差d2的值及符號,由于操
作數(shù)B為1,指數(shù)差d2的計算簡化為d2 = exp(A)-exp(C); 第二符號處理單元16對只作加法操作時操作數(shù)的符號進行處理;如果操作數(shù)C 的符號位和操作數(shù)A的符號位不同,那么尾數(shù)計算做有效減法即sub—eff2為真,然后根據(jù) 第二指數(shù)處理單元16中d2的符號來判斷最后結(jié)果的符號。 指數(shù)以及符號選擇器18,用于在第一個流水節(jié)拍的第一指數(shù)處理單元1和第一 符號處理單元2的結(jié)果以及第二個流水節(jié)拍的第二指數(shù)處理單元17和第二符號處理單元 16的結(jié)果之間進行選擇;當做浮點乘法和浮點乘加運算時,指數(shù)以及符號選擇器18選擇 第一指數(shù)處理單元1和第一符號處理單元2的結(jié)果,即指數(shù)差d為dl的值,且符號為第 一符號處理單元2的結(jié)果;當只作浮點加法運算時選擇第二指數(shù)處理單元17和第二符號 處理單元16的結(jié)果,即指數(shù)差為d2的值,且符號為第二符號處理單元的結(jié)果;并判斷指 數(shù)差d是否等于0, d是否等于l, d是否等于2和d是否等于-l ;當指數(shù)差(1 = 0、或者 d = 1、或者d = 2、或者d = -1,且做有效減法時(即sub_eff = 1,即sub_eff為真), 通過CLOSE路徑進行運算,否則通過FAR路徑進行運算; 其中,sub—eff的值為sub—effl或sub—eff2,當指數(shù)以及符號選擇器18,選擇第一 個流水節(jié)拍的指數(shù)處理單元和符號處理單元的結(jié)果時,sub_eff的值為sub_effl ;當指數(shù) 以及符號選擇器18,選擇第二個流水節(jié)拍的指數(shù)處理單元和符號處理單元的結(jié)果時sub_ eff2。 步驟S300,在第三拍中,在CLOSE路徑中,首先對首0檢測的結(jié)果進行編碼, 得到規(guī)格化左移的位數(shù),同時根據(jù)57比特符號判斷得到結(jié)果是否需要取補,然后再進行 規(guī)格化移位首先對乘法結(jié)果或者在第二拍中操作數(shù)C的結(jié)果進行55比特的移位,然后取 反,并進行半加運算(HA)以及l(fā)bit的規(guī)格化; 57bit符號檢測器19根據(jù)57比特雙全加器9輸出結(jié)果SUmp。s和sump。sl第57位進 行符號判斷;如果106bit和51bit補碼器13的輸出結(jié)果Carry51 = 1而且sump。sl第57位 為1,或者106bit和51bit補碼器13的輸出結(jié)果carry51 = 0而且sump。s的第57比特為1, 那么CLOSE路徑的乘加結(jié)果為負數(shù),否則為正數(shù); 57bit LOD編碼器20對57bit LZA 8輸出的f進行編碼,編碼后得到一個6比特 結(jié)果Sl[5:0],并輸出到58bit移位器23中用來控制移位的位數(shù); 109bit選擇器21根據(jù)57bit符號檢測器19輸出的符號以及carry51和carry5ic進行選擇,輸出109bit的結(jié)果數(shù)據(jù);如果為正數(shù)且carry^二0,那么選擇輸出結(jié)果為sump。s和MUL_res的低51比特,如果為正數(shù)且carry51 = 1,那么選擇輸出結(jié)果為sump。sl和MUL_res的低51比特,如果為負數(shù)且Carry51c = 0,那么選擇輸出結(jié)果為summv和MUL51C的結(jié)果,如果為負數(shù)且carry^二 1,那么選擇輸出結(jié)果為summvl和MUL51C的結(jié)果;
51bitLOD編碼器22對109bit選擇器21輸出的109bit結(jié)果數(shù)據(jù)的低51bit進行編碼,得到首1的位置的一個5bit數(shù)據(jù)S2[5:0]; 58bit移位器23進行最多58bit的移位;當109bit選擇器21輸出的109bit結(jié)果數(shù)據(jù)的高58bit存在l個'l'時,根據(jù)57bitLOD編碼器20的編碼結(jié)果Sl[5:0]進行移位,如果109bit結(jié)果數(shù)據(jù)的高58bit全部為0,則根據(jù)51bitL0D編碼器22的編碼結(jié)果S2[5:0]進行移位,得到1個58bit的移位結(jié)果sumnOTm,以及低位的舍入位sticky—close ;
55bit對齊移位器24選擇106bit全加器和51bit補碼器13輸出的乘法結(jié)果MUL_res或者第三選擇器15輸出的結(jié)果,根據(jù)d或-d的值進行向右最多55bit的對齊移位;當ckO時,對第三選擇器15輸出的結(jié)果,根據(jù)-d的值進行最多55bit右移位,直接輸出MUL_res,當d > 0時,對MUL_res根據(jù)d的值進行最多55bit對齊移位,并直接輸出第三選擇器15的結(jié)果;55bit對齊移位器24輸出2組106bit的數(shù)據(jù),其中一組對應(yīng)著操作數(shù)AXB對齊后的結(jié)果, 一組對應(yīng)著操作數(shù)C對齊后的結(jié)果; 在55bit對齊移位器24進行右對齊移位的同時,舍入sticky計算單元25對移位后移出106bit位置的數(shù)據(jù)進行sticky運算,當移出的數(shù)據(jù)不全為0時,F(xiàn)AR_sticky = 1,否則FAR_sticky = 0 ; 取反器26,對55bit對齊移位器24輸出的2個106比特的數(shù)據(jù)進行取反,當ckO且做有效減法時只對操作數(shù)C尾數(shù)對齊移位后的結(jié)果進行取反;當d > 0時且做有效減法時對AXB對齊后的結(jié)果進行取反;其他情況不取反; 107bitHA單元27對取反器26輸出的2個106比特數(shù)據(jù)進行半加運算,為后續(xù)的舍入操作做準備; lbit規(guī)格化單元28對107bitHA單元27的輸出2個106bit結(jié)果進行l(wèi)bit的左移,只當107bitHA單元27輸出的2個結(jié)果的最高2位都為0時,向左移位1位,否則不移位; d = 0禾P d = 1的符號處理單元29對CLOSE路徑中d = 0禾P d = 1時的符號根據(jù)57bit的符號檢測器19的結(jié)果做進一步的判斷處理;當57bi t符號檢測器19輸出結(jié)果是負數(shù)時,CLOSE路徑輸出的符號是操作數(shù)C的符號,當57bit符號檢測器19輸出結(jié)果位正數(shù)時,CLOSE路徑輸出的符號時操作數(shù)AXB的符號。 步驟S400,在第四拍中,對CLOSE和FAR通路分別進行舍入操作,然后通過選擇得到最后的結(jié)果。 指數(shù)計算單元30根據(jù)CLOSE路徑中規(guī)格化移位的位數(shù)以及FAR路徑中規(guī)格化移位的位數(shù)進行指數(shù)的運算;CLOSE路徑的指數(shù)結(jié)果為AXB的指數(shù)減去CLOSE規(guī)格化移位的位數(shù)(為58bit移位器19移位的位數(shù)加上舍入后移位的位數(shù)),F(xiàn)AR路徑中,當d幼時為AXB的指數(shù)減去FAR路徑舍入移位的位數(shù)再減去lbit規(guī)格化單元24移位的位數(shù),當d > 0時為C的指數(shù)減去FAR路徑輸入移位的位數(shù)再減去lbit規(guī)格化單元24移位的位數(shù)。
CLOSE舍入和規(guī)格化單元31對CLOSE的路徑的58bit結(jié)果進行舍入和規(guī)格化,由于57bitLZA 8有l(wèi)bit的誤差,會使的規(guī)格化少移1位,而且由于57bitLZA 8沒有計算carry51和Carry5ic的值,所以也有可能多移1位,所以CLOSE舍入和規(guī)格化單元31根據(jù)舍入的結(jié)果進行左移1位或者右移1位; 51bit雙全加器32根據(jù)lbit規(guī)格化單元28輸出的FAR_norml和FAR_norm2計算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_norml+FAR_norm2記為resO, FAR_norml+FAR_norm2+l記為resl,并將得到的res0和resl輸出到53
比特選擇器34中; FAR舍入和進位單元33根據(jù)處理器的舍入模式對FAR_norml和FAR_norm2的低55比特的數(shù)據(jù)做舍入操作,如果有舍入進位,則cin二l,否則沒有舍入進位,則cin=0,并且給出高4bit的結(jié)果L4[3:0]; 53bit選擇器34根據(jù)FAR舍入和進位單元33輸出的c in和res 0和resl的最高2bit進行選擇處理;如果cin二l,有進位選擇,那么選擇resl,再根據(jù)resl的最高兩bit進行選擇,如果resl最高位為1那么resl和L4[3:2]組成53比特數(shù)據(jù),如果最高兩bit為01,那么resl舍掉最高的0和L4[3:l]組成53比特數(shù)據(jù),而如果最高兩bit為00,那么resl舍掉最高兩位00和L4[3:0]組成53bit的數(shù)據(jù),當cin = 0時,沒有進位選擇,那么選擇resO,再根據(jù)resO的最高兩bit進行選擇,選擇的過程和選resl的情況是相同的;
64比特選擇器35根據(jù)FAR和CLOSE的判斷,選擇FAR路徑的數(shù)據(jù)還是CLOSE路徑的數(shù)據(jù);當(1 = 0或者(1=1或者(1 = 2或者(1 = -1,且做有效減法時,選擇CLOSE路徑的結(jié)果,反之選擇FAR路徑的結(jié)果。 本發(fā)明實施例的優(yōu)點在于利用雙通路中CLOSE和FAR通路的互斥性使得大規(guī)模的對齊移位和大規(guī)模的規(guī)格化不會共存在同一個運算通路中,并且對FAR路徑進行進一步分為2種情況,并利用了 1個51比特和55比特的對齊移位器對兩種情況進行移位,從而縮短了浮點乘加器的時延; 本發(fā)明實施的64比特雙精度雙通路浮點乘加器浮點運算流水節(jié)拍處理方法,在第一拍只對乘法進行操作,所以在加法運算是可以把第一拍旁路,從而使得單獨的浮點加法指令的運算減少了一個流水節(jié)拍,而且在運行加法指令時可以使得第一拍中的27 : 2的乘法壓縮樹不翻轉(zhuǎn),從而降低浮點加法指令運算的功耗; 本發(fā)明實施例的64比特雙精度雙通路浮點乘加器及其浮點運算流水節(jié)拍處理方法,利用2個通路進行浮點乘加運算,在每次操作中兩個通路不同時進行計算,所以對每次操作可以只使能一個通路從而達到降低功耗的目的。 作為一種可實現(xiàn)方式,在本實施例中,以(AXB)+C表示一個乘加操作進一步詳細說明本發(fā)明實施例的64比特雙精度雙通路浮點乘加器及其浮點運算流水節(jié)拍處理方法的過程。 在第一個流水節(jié)拍中,利用基四的波茨編碼器3和27 : 2的乘法壓縮樹4來計算AXB的結(jié)果,將B的尾數(shù)經(jīng)過基4的波茨編碼,得到27個編碼結(jié)果,編碼結(jié)果與A相乘,得到27個部分積,最后采用1個壓縮比為27 : 2的乘法壓縮樹4,同時壓縮27個部分積和操作數(shù)C取反移位后的結(jié)果,得l個"和"及l(fā)個"進位",標記為sum,carry o
在本實施例中,如圖1所示,當只有乘法和乘加指令執(zhí)行時,操作數(shù)A和操作數(shù)B的才輸入到存儲器A和B中,否則當只做加法指令時存儲器A和B保持不變,操作數(shù)A存儲到存儲器Al中。通過增加一個存儲操作數(shù)A的存儲器Al,能夠在做單純的浮點加法對使得波茨編碼和27 : 2的乘法樹不翻轉(zhuǎn),從而降低了浮點加法指令執(zhí)行的功耗。
在執(zhí)行浮點加法指令時第一個流水節(jié)拍是被旁路的,如圖1所示,操作數(shù)C旁路第一個流水節(jié)拍的存儲器直接輸入到第二個流水節(jié)拍中,操作數(shù)A也是由存儲器Al直接旁路到第二個流水節(jié)拍的。 在第二個流水節(jié)拍中,用2個選擇器來選擇是否對第一個流水節(jié)拍的乘法結(jié)果sum和carry或者對直接從第一個流水節(jié)拍旁路的Al的值的尾數(shù)部分進行操作。由于浮點加法直接從第二個流水節(jié)拍開始計算,完全不經(jīng)過第一個流水節(jié)拍,所以第二拍也需要一個第二符號處理單元和第二指數(shù)處理單元。在第二個流水節(jié)拍進行了流水控制的操作,浮點加法指令相對于浮點乘法和浮點乘加指令來說優(yōu)先使用第二拍的硬件資源。
本實施例的實現(xiàn)方式,根據(jù)浮點乘加器中CLOSE和FAR路徑的互斥性,對每個操作利用時鐘門控單元只使能一個通路的時鐘,達到另一個通路不翻轉(zhuǎn)的目的,從而能夠降低浮點乘加器運算的功耗。 如圖2所示,當一個浮點乘加指令后緊跟著一個浮點加法指令時,當浮點乘加指令完成第一個流水節(jié)拍并存儲到PI級的觸發(fā)器后,浮點加法指令也由旁路通路進入浮點乘加器的第二個流水節(jié)拍。這時浮點乘加指令和浮點加法指令出現(xiàn)了硬件競爭,由于浮點加法指令優(yōu)先使用第二個流水節(jié)拍的硬件,所以這時要保留浮點乘加指令的第一個流水節(jié)拍P1級的觸發(fā)器的值,以免丟失所運行的浮點乘加指令。在本發(fā)明中利用浮點加法指令的指示信號來控制第一個流水節(jié)拍PI級觸發(fā)器的值。當?shù)诙€流水節(jié)拍正在執(zhí)行浮點加法指令時,第一個流水節(jié)拍P1級觸發(fā)器的使能為0,使得Pl級觸發(fā)器保存原來的結(jié)果。通過這樣的流水節(jié)拍的控制使得浮點乘加器每拍能夠執(zhí)行l(wèi)條指令,而不會發(fā)生流水節(jié)拍的停滯。 從第二個流水節(jié)拍開始,浮點乘加的通路開始分為CLOSE和FAR路徑。當d=0,或(1=1,或(1 = 2,或(1 = -1,且做有限減法時,乘加運算通過CLOSE路徑進行計算,否則乘加運算通過FAR路徑進行計算。 在CLOSE路徑中只對操作數(shù)C進行移位,根據(jù)d的值進行左移或者右移,然后取反,利用3 : 2CSA壓縮再相加。也就是說在CLOSE通路中只計算AXB-C的值,當C > AXB時這個計算結(jié)果有可能是負數(shù),所以在CLOSE通路中要利用取反全加器來計算AXB-C的補碼。由于CLOSE路徑中,AXB和C的值比較接近,所以做減法后可能會出現(xiàn)結(jié)果高位出現(xiàn)多位0(正數(shù))或者多位1(負數(shù))的情況。在這種情況下,為了降低時延采用LZA來預(yù)測減法結(jié)果首位0或者1的個數(shù),然后再利用首尾0或者1的個數(shù)來指導規(guī)格化移位。由于準確的LZA需要校正并且增加很大的延遲,所以本發(fā)明實施例采用非精確的LZA來預(yù)測首尾0或者1的個數(shù),LZA的預(yù)測結(jié)果比準確結(jié)果小1或等于準確結(jié)果,這就使得移位后可能比準確結(jié)果少移l位的情況出現(xiàn)。在本發(fā)明實施例中的浮點乘加器中由于只對高57bit進行預(yù)測,少加了一個carry51或者carry^位,可能會出現(xiàn)多預(yù)測1位的情況。在CLOSE路徑中為了降低延遲做減法時,只對操作數(shù)C進行了取反。為了得到操作數(shù)C的補碼,操作數(shù)C的取反需要在尾數(shù)加1。這個l利用57bit3 : 2CSA壓縮樹結(jié)果中'進位'的空槽來加入。 對于FAR路徑中,只對操作數(shù)C在ck0時進行51比特移位,并利用106bit全加
器得到乘法的結(jié)果。這樣,對操作數(shù)C在d幼時就分為兩個步驟進行移位,降低了第二拍的延遲。而且單個乘法結(jié)果移位只需要l個移位器,移位器的個數(shù)的減少降低了面積開銷。 在第二個流水節(jié)拍計算完成后進入的第二拍P2的存儲器,對于CLOSE和FAR路徑是完全分開的,所以利用了 CLOSE和FAR的指示信號對流水節(jié)拍的存儲器的時鐘進行控制。當(1 = 0,或(1=1,或(1 = 2,或(1 = -1,且做有效減法時,CLOSE的指示信號為l, FAR的指示信號為O,其他情況下CLOSE的指示信號為0, FAR的指示信號為1 。 CLOSE的指示信號用來對C10SE路徑的存儲器單元進行控制,當CLOSE的指示信號為1時開啟CLOSE路徑的存儲器單元的時鐘,否則關(guān)閉CLOSE路徑的存儲器單元的時鐘。FAR的指示信號用來對FAR通路的存儲器單元進行控制,當FAR的指示信號為1時開啟FAR通路的存儲器單元的時鐘,否則則關(guān)閉FAR通路的存儲器單元的時鐘。利用這些時鐘門控單元使得只有1條路徑的存儲器和組合邏輯翻轉(zhuǎn),從而降低了浮點乘加器的功耗。在第三個流水節(jié)拍中,CLOSE和FAR路徑時完全分開的2條通路。
在CLOSE通路中把第二流水節(jié)拍得到的首0個數(shù)預(yù)測得到的序列f進行編碼,得到一個5比特數(shù)據(jù)S1。同時利用57bit雙全加器的最高位進行符號判斷,當AXB-C的值為正數(shù)時,選擇57bit雙全加器的結(jié)果和乘法結(jié)果的低51bit,當AXB-C的值為負時,選擇51bit取補雙全加器的結(jié)果和乘法結(jié)果低51bit的補碼。然后對這個109bit的結(jié)果進行移位,如果高位存在l個'l'那么利用Sl[5:0]進行移位,否則則利用低51bit的編碼結(jié)果S2[5:0]進行移位,得到1個58bit的結(jié)果。由LZA預(yù)測不準確性,可能出現(xiàn)多移l位或者少移l位的情況,為了避免把首位l移出,采用把57bit擴充一位的方法,采用58bit移位器來進行移位。在多移1位時,首位1不會移出而是移到58bit的最高位中。
FAR路徑中,當d幼時操作數(shù)C小于等于AXB的值,根據(jù)-d的值對C的尾數(shù)進行最多55bit的右移操作,如果做有效減法需要對移位后數(shù)據(jù)取反,所以d《0時計算的是AXB士C的值而且結(jié)果一定為正。當d > 0是對乘法結(jié)果根據(jù)d做最多55bit的右移操作,計算的結(jié)果是C士AXB而且結(jié)果一定為正。進行移位后得到2個106bit的數(shù)據(jù),這兩個106bit的數(shù)據(jù)進行最高位擴充lbit進入107bitHA(半加運算)。107bitHA使得低55bit在各種舍入模式時只有l(wèi)bit的向高51bit的進位。由于AXB的尾數(shù)有可能首位為0,如果減去某個數(shù)可能得到高2位都為0的情況,這種情況需要對指數(shù)減2。為了在FAR通路中統(tǒng)一指數(shù)為或者加1或者減1或者不變,在106bitHA之后如果2個106bit的數(shù)的高2位都為0,需要向左移l位,使得相加結(jié)果的最高位或者次高位為1。
和第二個流水節(jié)拍相同,也利用CLOSE和FAR的指示信號對P3級存儲器進行時鐘門控,以達到降低浮點乘加器的功耗的目的。 在第四個流水節(jié)拍中,利用第三流水節(jié)拍得到CLOSE的高58bit數(shù)據(jù)進行舍入和舍入后規(guī)格化,由于LZA的不準確性,規(guī)格化最多向左或者向右移l位。對于FAR通路的107bit的數(shù)據(jù),對高51bit做加法,得到2個結(jié)果res0和resl,同時對FAR_norml和15/15頁
FAR_norm2的低56比特進行舍入并得到一個進位符號cin和低4bit數(shù)據(jù),然后用cin來 選擇resO和resl,并相應(yīng)的選擇低4bit的值,從而得到最后乘加的尾數(shù)結(jié)果res。對FAR 通路來說結(jié)果也只需最多向左1或者向右移1位,所以CLOSE和FAR路徑中共用了一個 指數(shù)計算單元。 本發(fā)明實施中的浮點乘加器是符合IEEE754標準的雙精度浮點乘加器,是采用 不同方法的改進型雙精度雙通路的浮點乘加器, 一方面利用雙通路的規(guī)格化和對齊移位 不會同時存在于CLOSE和FAR路徑的特點和利用小規(guī)模的對齊移位器,降低了乘加器的 時延,另一方面采用共用移位器的方法,來減少移位器的數(shù)目,從而降低乘加器的面積 開銷。相應(yīng)地,本發(fā)明實施還提供一種64比特雙精度雙通路浮點乘加器浮點運算流水節(jié) 拍處理方法,其按照時序劃分為四個流水節(jié)拍,利用這種流水節(jié)拍處理方法可以把第一 拍的乘法操作旁路使得浮點加法指令降低了一個流水節(jié)拍,并給出了旁路第一拍操作的 流水控制方法,使得整個浮點乘加器的每個節(jié)拍仍然可以運行一條指令,而不會導致流 水節(jié)拍的停滯,并且在運行浮點加法指令的過程中使得第一拍中的乘法樹不翻轉(zhuǎn),從而 降低了浮點加法指令的功耗。 最后應(yīng)當說明的是,很顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和 變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán) 利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型。
權(quán)利要求
一種64比特雙精度雙通路浮點乘加器,實現(xiàn)形式為(A×B)+C的浮點乘加運算,其特征在于,包括第一指數(shù)處理單元和第一符號處理單元和第二指數(shù)處理單元、第二符號處理單元、指數(shù)以及符號選擇器;所述第一指數(shù)處理單元,用于計算浮點乘加和浮點乘法運算時的指數(shù)差;所述第一符號處理單元,用于判斷浮點乘加運算和浮點乘法運算結(jié)果的符號以及是否做有效減法;所述第二指數(shù)處理單元,用于對只做加法操作時操作數(shù)的指數(shù)進行處理;所述第二符號處理單元,用于對只作加法操作時操作數(shù)的符號進行處理;所述指數(shù)以及符號選擇器,用于選擇第一指數(shù)處理單元和第一符號處理單元的結(jié)果,或者選擇第二指數(shù)處理單元和第二符號處理單元的結(jié)果;并判斷指數(shù)差,當指數(shù)差等于0、或者等于1、或者等于2、或者等于-1,且做有效減法時,通過CLOSE路徑進行運算,否則通過FAR路徑進行運算。
2. 根據(jù)權(quán)利要求1所述的浮點乘加器,其特征在于,其按照時序劃分為4個流水節(jié) 拍,根據(jù)順序?qū)?個流水節(jié)拍進行功能劃分,在第一流水節(jié)拍中,除包括所述第一指數(shù) 處理單元、所述第一符號處理單元外,還包括基4的波茨編碼器、27:2的乘法壓縮樹,其 中所述基4的波茨編碼器,用于對操作數(shù)B的尾數(shù)進行編碼,然后將編碼的結(jié)果與操作 數(shù)A的尾數(shù)相乘得到27個部分積,所述27個部分積送到所述27:2的乘法壓縮樹中;所述27:2的乘法壓縮樹,用于對操作數(shù)AXB的所述27個部分積進行壓縮得到兩個 標記為carry, sum的106比特數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2所述的浮點乘加器,其特征在于,在第二個流水節(jié)拍中,除包括所 述第二符號處理單元、所述第二指數(shù)處理單元、所述指數(shù)以及符號選擇器外,還包括3bit 的對齊移位器、INV取反單元、57bit3:2CSA壓縮樹、57bit LZA、 57bit雙全加器、57bit 取反全加器、第一選擇器、第二選擇器、106比特全加器和51比特補碼器、51比特對齊 移位器、第三選擇器,其中所述3bit的對齊移位器,用于對操作數(shù)C的53比特尾數(shù),根據(jù)指數(shù)差d的值進行移位;所述INV取反單元,用于對所述3bit的對齊移位器的56比特數(shù)據(jù)進行取反并將其擴 充1位符號位得到57bit的數(shù)據(jù);所述數(shù)據(jù)sum和carry的高56bit也高位擴充1位符號位 0得到57bit的數(shù)據(jù),將這3組57bit的數(shù)據(jù)輸入到所述57bit3:2CSA壓縮樹;所述57bit 3:2 CSA壓縮樹,用于對所述INV取反單元輸出的3組57bit的數(shù)據(jù)進行壓 縮,得到2個57bit帶符號的結(jié)果;所述57bit LZA,用于對所述57 bit 3:2 CSA壓縮樹輸出的2個帶符號的結(jié)果進行首0 或者首l的預(yù)測,預(yù)測結(jié)果用一個序列表示,該序列標記為f;如果所述57bit的LZA的 2個輸入數(shù)據(jù)相加為正數(shù),那么f輸出的是首0的位置,如果所述57bit的LZA的2個輸 入數(shù)據(jù)相加為負數(shù),那么f輸出的是首1的位置;所述57bit雙全加器,用于對所述57bit 3:2 CSA壓縮樹的2個57bit結(jié)果進行相加, 輸出這兩個輸入相加的結(jié)果,標記為sum,,以及這兩個輸入相加再加1的結(jié)果,標記為 sumposl ;所述57bit取反雙全加器,用于對所述57bit 3:2 CSA壓縮樹的2個57bit結(jié)果先取反再 相加,輸出取反后相加的結(jié)果,標記為sum,,以及相加再加l的結(jié)果,標記為sum,。所述第一選擇器,用于在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法 時直接輸出操作數(shù)A的尾數(shù),否則輸出所述乘法的結(jié)果的sum」el ;所述第二選擇器,用于在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法 時直接輸出數(shù)據(jù)0值,否則輸出所述乘法結(jié)果的carry_Sel ;所述106bit全加器和51bit補碼器,用于對所述第一選擇器和所述第二選擇器輸出的 2個106比特的結(jié)果sum_sel和carry_sel進行相加并對低51比特進行取補,輸出一個106 比特乘法結(jié)果,標記為MUL—res,低51比特取補的結(jié)果標記為MUL51C, 1位低51比特 的進位,標記位carry^, 1位51比特取補后的進位結(jié)果,標記為carry5ic,其中MUL51c、 carry51、 carry5ic和MUL_res的低51比特用于CLOSE路徑中,而106比特乘法結(jié)果用于 FAR路徑中;所述51比特對齊移位器,用于對操作數(shù)C的尾數(shù)根據(jù)所述指數(shù)差-d的值進行最多 51bit右移操作,得到104比特的結(jié)果;所述第三選擇器,用于對所述51比特對齊移位器的輸出以及操作數(shù)C進行選擇,當 指數(shù)差ck0時選擇所述51比特對齊移位器的輸出;當指數(shù)差dX)時直接輸出操作數(shù)C。
4.根據(jù)權(quán)利要求3所述的浮點乘加器,其特征在于,在第三個流水節(jié)拍中,包括 57bit符號檢測器、57bitLOD編碼器、109bit選擇器、51bitLOD編碼器、58bit移位器、 55bit對齊移位器、舍入sticky計算單元、取反器、107bitHA、 lbit規(guī)格化單元、d = 0禾口 d = 1的符號處理單元,其中所述57bit符號檢測器,用于根據(jù)所述57比特雙全加器輸出結(jié)果sum,禾Psump。d第 57位進行符號判斷;所述57bitLOD編碼器,用于對所述57bitLZA輸出的所述序列f進行編碼,編碼后 得到一個6比特結(jié)果S1[5:0],并輸出到所述58bit移位器中用來控制移位的位數(shù);所述109bit選擇器,用于根據(jù)所述57bit符號檢測器輸出的符號以carry51和Carry5ic進 行選擇,輸出109bit的結(jié)果數(shù)據(jù);所述51bitLOD編碼器,用于對所述109bit選擇器輸出的109bit結(jié)果數(shù)據(jù)的低51bit進 行編碼,得到首1的位置的一個5bit數(shù)據(jù)S2[5:0];所述58bit移位器,用于進行最多58bit的移位;所述55bit對齊移位器,用于選擇所述106bit全加器和51bit補碼器輸出的乘法結(jié)果 MULjes或者所述第三選擇器輸出的結(jié)果,根據(jù)所述指數(shù)差d或-d的值,進行向右最多 55bit的對齊移位,當指數(shù)差d幼時,對所述第三選擇器輸出的結(jié)果,根據(jù)指數(shù)差-d的值 進行最多55bit右移位,直接輸出MUL—res;當所述指數(shù)差dX)時,對MUL—res根據(jù)所 述指數(shù)差d的值進行最多55bit對齊移位,并直接輸出所述第三選擇器的結(jié)果,所述55bit 對齊移位器輸出2組106bit的數(shù)據(jù),其中一組對應(yīng)著操作數(shù)AXB對齊后的結(jié)果, 一組對 應(yīng)著操作數(shù)C對齊后的結(jié)果;所述舍入sticky計算單元,用于對移位后移出106bit位置的數(shù)據(jù)進行sticky運算,當 移出的數(shù)據(jù)不全為0時,F(xiàn)AR_sticky =1,否則FAR_sticky = 0 ;所述取反器,用于對所述55bit對齊移位器輸出的2個106比特的數(shù)據(jù)進行取反,當指數(shù)差(kO且做有效減法時只對操作數(shù)C尾數(shù)對齊移位后的結(jié)果進行取反;當指數(shù)差(1>0時且做有效減法時對操作數(shù)AXB對齊后的結(jié)果進行取反;否則不取反;所述107bitHA單元,用于對所述取反器輸出的2個106比特數(shù)據(jù)進行半加運算; 所述lbit規(guī)格化單元27,用于對所述107bitHA單元的輸出2個106bit結(jié)果進行l(wèi)bit的左移,只當所述107bitHA單元輸出的2個結(jié)果的最高2位都為0時,向左移位1位,否則不移位;所述d = 0禾P d = 1的符號處理單元,用于對CLOSE路徑中指數(shù)差d = 0禾P d = 1 時的符號,根據(jù)所述57bit的符號檢測器的結(jié)果做進一步的判斷處理。
5. 根據(jù)權(quán)利要求4所述的浮點乘加器,其特征在于,在第四個流水節(jié)拍中,包括指數(shù) 計算單元、CLOSE舍入和規(guī)格化單元、51bit雙全加器、FAR舍入和進位單元、53bit選 擇器、64bit選擇器,其中所述指數(shù)計算單元,用于根據(jù)CLOSE路徑中規(guī)格化移位的位數(shù)以及FAR路徑中規(guī)格 化移位的位數(shù)進行指數(shù)的運算;所述CLOSE舍入和規(guī)格化單元,用于對CLOSE的路徑的58bit結(jié)果進行舍入和規(guī)格化;所述51bit雙全加器,用于根據(jù)所述lbit規(guī)格化單元輸出的FAR_norml和FAR_ norm2計算FAR_norml+FAR_norm2和FAR_norml+FAR_norm2+l的值,所得到的FAR_ norml+FAR_norm2記為resO, FAR_norml+FAR_norm2+l記為resl,并將得到的res0和 resl輸出到所述53比特選擇器中;所述FAR舍入和進位單元,用于根據(jù)處理器的舍入模式對FAR_norml和FAR_norm2 的低55比特的數(shù)據(jù)做舍入操作;如果有舍入進位,則cin二l;否則沒有舍入進位,則 cin = 0,并且給出高4bit的結(jié)果L4[3:0];所述53bit選擇器,用于根據(jù)所述FAR舍入和進位單元輸出的cin和resO和resl的最 高2bit進行選擇處理;所述64比特選擇器,用于根據(jù)FAR和CLOSE的判斷,選擇FAR路徑的數(shù)據(jù)還是 CLOSE路徑的數(shù)據(jù);當所述指數(shù)差d = 0或者指數(shù)差d = 1或者指數(shù)差d = 2或者指數(shù) 差(1 = -1,且做有效減法時,選擇CLOSE路徑的結(jié)果,否則選擇FAR路徑的結(jié)果。
6. —種64比特雙精度雙 路浮點乘加器浮點運算流水節(jié)拍處理方法,其特征在于, 其操作過程按照時序劃分為四個流水節(jié)拍,包括下列步驟步驟S100,在第一拍中,利用27:2的乘法壓縮樹計算操作數(shù)AXB的結(jié)果,并計算 浮點乘加和浮點乘法運算的指數(shù)差dl和符號,同時進行浮點乘加和浮點乘法運算時的符 號處理;步驟S200,在第二拍中,計算單做浮點加法運算時的指數(shù)差d2和符號;當浮點乘加 器做浮點乘加和浮點乘法運算時,指數(shù)差d為dl的值,;當只做浮點加法運算時,指數(shù) 差d為d2的值;當d = 0或者d = 1或者d = 2或者d = -1,而且做有效減法時,乘加 運算通過CLOSE路徑進行運算;否則乘加運算通過FAR路徑進行運算;在CLOSE路 徑中,用一個57比特3:2CSA壓縮樹進行運算,同時預(yù)測CLOSE路徑首0位置以及計算 CLOSE的加法的結(jié)果;在FAR路徑中,對操作數(shù)C進行51比特的對齊移位或者不移位, 并利用全加器得到乘法結(jié)果以及乘法結(jié)果低51位的補碼;步驟S300,在第三拍中,在CLOSE路徑中,首先對首O檢測的結(jié)果進行編碼,得到 規(guī)格化左移的位數(shù),同時根據(jù)57比特符號判斷得到結(jié)果是否需要取補,然后再進行規(guī)格 化移位;在FAR路徑中,首先對乘法結(jié)果或者在第二拍中操作數(shù)C的結(jié)果進行55比特的 移位,然后取反,并進行半加運算以及l(fā)bit的規(guī)格化;步驟S400,在第四拍中,對CLOSE路徑和FAR路徑分別進行舍入操作,然后通過 選擇得到最后的結(jié)果。
7. 根據(jù)權(quán)利要求6所述的浮點運算流水節(jié)拍處理方法,其特征在于,所述步驟SIOO 包括下列步驟第一指數(shù)處理單元根據(jù)操作數(shù)A的指數(shù),B的指數(shù)和C的指數(shù)計算指數(shù)差d = exp(C)-(exp(A)+exp(B)-1023)的值以及符號;利用第一符號處理單元判斷,如果操作數(shù)C的符號位和操作數(shù)AXB的符號位不同, 那么尾數(shù)計算做有效減法即sub—eff為真,然后根據(jù)所述第一指數(shù)處理單元中指數(shù)差dl的 符號來判斷最后結(jié)果的符號;基4的波茨編碼器對操作數(shù)B的尾數(shù)進行編碼,然后將編碼的結(jié)果與操作數(shù)A的尾 數(shù)相乘得到27個部分積,這27個部分積送到27:2的乘法壓縮樹中;所述27:2的乘法壓縮樹對操作數(shù)AXB的27個部分積進行壓縮得到兩個標記為 carry, sum的106比特數(shù)據(jù)。
8. 根據(jù)權(quán)利要求6所述的浮點運算流水節(jié)拍處理方法,其特征在于,所述步驟S200 包括下列步驟3bit的對齊移位器對操作數(shù)C的53比特尾數(shù)根據(jù)指數(shù)差d的值進行移位;當d = 0 時沒有移位,當(1=1時向左移1位,當(1 = 2時向左移2位,當(1 = -1時向右移1位, 得到1個56比特的數(shù)據(jù);INV取反單元對3bit的對齊移位器的56比特數(shù)據(jù)進行取反;INV取反單元輸出的結(jié)果為56bit,高位擴充1位符號位1得到57bit的數(shù)據(jù),sum和 carry的高56bit也高位擴充1位符號位0得到57bit的數(shù)據(jù),這3組57bit的數(shù)據(jù)輸入到 57bit 3:2 CSA壓縮樹中進行壓縮得到2個57bit帶符號的結(jié)果;57bitLZA對所述57bit 3:2 CSA壓縮數(shù)輸出的2個帶符號的結(jié)果進行首0或者首1的 預(yù)測,預(yù)測結(jié)果用一個序列表示,該序列標記為f,如果所述57bit LZA的2個輸入數(shù)據(jù) 相加為正數(shù),那么f給出的是首O的位置,如果所述57bitLZA的2個輸入數(shù)據(jù)相加為負 數(shù),那么f給出的是首l的位置;57bit雙全加器對所述57bit 3:2 CSA壓縮樹的2個57bit結(jié)果進行相加,給出這兩個輸 入相加的結(jié)果,標記為sum,,以及這兩個輸入相加再加1的結(jié)果,標記為sum,。57bit取補雙全加器對所述57bit 3:2 CSA壓縮樹的2個57bit結(jié)果先取反再相加,給出 取反后相加的結(jié)果,標記為summv,以及相加再加1的結(jié)果,標記為summvl ;第一選擇器在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法時直接輸出 操作數(shù)A的位數(shù),否則輸出乘法的結(jié)果的sum_sel ;第二選擇器在只做浮點加法時對乘法的結(jié)果進行旁路,當只做浮點加法時直接輸出 數(shù)據(jù)0值,否則輸出乘法結(jié)果的carry_Sel ;106bit全加器和51bit補碼器對第一選擇器和第二選擇器輸出的2個106比特的結(jié)果sum—sel和carry—sel進行相加并對低51比特進行取補,輸出一個比特乘法結(jié)果,標記106 為MUL—res,低51比特取補的結(jié)果標記為MUL51c, l位低51比特的進位標記位carry51, 1位51比特取補后的進位結(jié)果,標記為carry^,其中MUL51c、 carry51、 carry5ic和MUL_ res的低51比特用于CLOSE路徑中,而106比特乘法結(jié)果用于FAR路徑中;51比特對齊移位器對操作數(shù)C的尾數(shù),根據(jù)指數(shù)差-d的值進行最多51bit右移操作, 得到104比特的結(jié)果;第三選擇器對所述51比特對齊移位器的輸出以及操作數(shù)C進行選擇,當指數(shù)差d幼 時選擇所述51比特對齊移位器的輸出,當指數(shù)差d > 0時直接輸出操作數(shù)C ;第二指數(shù)處理單元對只做加法操作時指數(shù)進行處理;第二符號處理單元對只作加法操作時的符號進行處理;指數(shù)以及符號選擇器在當做浮點乘法和浮點乘加運算時,選擇第一指數(shù)處理單元和 第一符號處理單元的結(jié)果;當只作浮點加法運算時選擇第二指數(shù)處理單元和第二符號處 理單元的結(jié)果;并判斷指數(shù)差d,當指數(shù)差(1 = 0、或者(1=1、或者(1=2、或者d二-l, 且做有效減法時,通過CLOSE路徑進行運算,否則通過FAR路徑進行運算。
9.根據(jù)權(quán)利要求6所述的浮點運算流水節(jié)拍處理方法,其特征在于,所述步驟S300 包括下列步驟57bit符號檢測器根據(jù)所述57比特雙全加器輸出結(jié)果sump。s和sump。sl第57位進行符 號判斷;如果所述106bit全加器和51bit補碼器的輸出結(jié)果carry51 = 1而且sump。sl第57 位為1,或者所述106bit全加器和51bit補碼器的輸出結(jié)果carry51 = 0而且sump。s的第57 比特為l,那么CLOSE路徑的乘加結(jié)果為負數(shù),否則為正數(shù);57bit LOD編碼器對所述57bit LZA輸出的序列f進行編碼,編碼后得到一個6比特結(jié) 果Sl[5:0],并輸出到58bit移位器中用來控制移位的位數(shù);109bit選擇器根據(jù)所述57bit符號檢測器輸出的符號以及carrycl和Carryc進行選擇, 輸出109bit的結(jié)果數(shù)據(jù);如果為正數(shù)且carry^ = 0,那么選擇輸出結(jié)果為sump。s和MUL_ res的低51比特,如果為正數(shù)且carry51 = 1,那么選擇輸出結(jié)果為sump。sl和MUL_res的 低51比特,如果為負數(shù)且Carry51c = 0,那么選擇輸出結(jié)果為summv和MUL51C的結(jié)果, 如果為負數(shù)且carry51c = 1,那么選擇輸出結(jié)果為summvl和MUL51C的結(jié)果;51bitLOD編碼器對所述109bit選擇器輸出的109bit結(jié)果數(shù)據(jù)的低51bit進行編碼,得 到首1的位置的一個5bit數(shù)據(jù)S2[5:0];58bit移位器進行最多58bit的移位;當109bit選擇器輸出的109bit結(jié)果數(shù)據(jù)的高58bit 存在l個'l'時,根據(jù)所述57bitLOD編碼器的編碼結(jié)果Sl[5:0]進行移位,如果109bit 結(jié)果數(shù)據(jù)的高58bit全部為0,則根據(jù)所述51bitLOD編碼器的編碼結(jié)果S2[5:0]進行移位, 得到1個58bit的移位結(jié)果sumn。m,以及低位的舍入位sticky_close ;55bit對齊移位器選擇所述106bit全加器和51bit補碼器輸出的乘法結(jié)果MUL—res或者 所述第三選擇器輸出的結(jié)果,根據(jù)指數(shù)差d或-d的值進行向右最多55bit的對齊移位,當 指數(shù)差d幼時,對所述第三選擇器輸出的結(jié)果根據(jù)指數(shù)差-d的值進行最多55bit右移位, 直接輸出MUL_res,當指數(shù)差d > 0時,對MUL_res根據(jù)指數(shù)差d的值進行最多55bit對 齊移位,并直接輸出所述第三選擇器的結(jié)果,所述55bit對齊移位器輸出2組106bit的數(shù) 據(jù),其中一組對應(yīng)著操作數(shù)AXB對齊后的結(jié)果, 一組對應(yīng)著操作數(shù)C對齊后的結(jié)果;在所述55bit對齊移位器進行右對齊移位的同時,舍入sticky計算單元對移位后移出 106bit位置的數(shù)據(jù)進行sticky運算,當移出的數(shù)據(jù)不全為O時,F(xiàn)AR_sticky = 1,否則 FAR_sticky = 0 ;取反器對所述55bit對齊移位器輸出的2個106比特的數(shù)據(jù)進行取反,當指數(shù)差d幼 且做有效減法時只對操作數(shù)C尾數(shù)對齊移位后的結(jié)果進行取反;當指數(shù)差d > 0時且做 有效減法時對操作數(shù)AXB對齊后的結(jié)果進行取反;否則不取反;107bitHA單元對所述取反器輸出的2個106比特數(shù)據(jù)進行半加運算;lbit規(guī)格化單元對所述107bitHA單元的輸出2個106bit結(jié)果進行l(wèi)bit的左移,只當 所述107bitHA單元輸出的2個結(jié)果的最高2位都為0時,向左移位1位,否則不移位;d = 0禾P d = 1的符號處理單元對CLOSE路徑中指數(shù)差d = 0禾P d = 1時的符號根 據(jù)所述57bit的符號檢測器的結(jié)果做進一步的判斷處理;當所述57bit符號檢測器輸出結(jié)果 是負數(shù)時,CLOSE路徑輸出的符號是操作數(shù)C的符號,當所述57bit符號檢測器輸出結(jié)果 位正數(shù)時,CLOSE路徑輸出的符號時操作數(shù)AXB的符號。
10.根據(jù)權(quán)利要求6至9任一項所述的浮點運算流水節(jié)拍處理方法,其特征在于,所 述步驟S400包括下列步驟指數(shù)計算單元根據(jù)CLOSE路徑中規(guī)格化移位的位數(shù)以及FAR路徑中規(guī)格化移位的位 數(shù)進行指數(shù)的運算;CLOSE路徑的指數(shù)結(jié)果為AXB的指數(shù)減去CLOSE規(guī)格化移位的位 數(shù);FAR路徑中,當指數(shù)差ckO時為AXB的指數(shù)減去FAR路徑舍入移位的位數(shù)再減去 所述lbit規(guī)格化單元移位的位數(shù),當d > 0時為操作數(shù)C的指數(shù)減去FAR路徑輸入移位 的位數(shù)再減去所述lbit規(guī)格化單元移位的位數(shù);CLOSE舍入和規(guī)格化單元對CLOSE的路徑的58bit結(jié)果進行舍入和規(guī)格化,根據(jù)舍 入的結(jié)果進行左移1位或者右移1位;51bit雙全加器根據(jù)所述lbit規(guī)格化單元輸出的FAR_norml和FAR_norm2計算FAR_ norml+FAR_norm2禾P FAR_norml+FAR_norm2+l的值,所得至lj的FAR_norml+FAR_ norm2記為resO, FAR_norml+FAR_norm2+l記為resl,并將得到的resO和resl輸出到所 述53比特選擇器中;FAR舍入和進位單元根據(jù)處理器的舍入模式對FAR_norml和FAR_norm2的低55比 特的數(shù)據(jù)做舍入操作,如果有舍入進位,WUcin=l,否則沒有舍入進位,則cin二0,并 且給出高4bit的結(jié)果L4[3:0];53bit選擇器根據(jù)所述FAR舍入和進位單元輸出的cin和resO和resl的最高2bit進行 選擇處理;如果cin二l,有進位選擇,那么選擇resl,再根據(jù)resl的最高兩bit進行選 擇,如果resl最高位為l那么resl和L4[3:2]組成53比特數(shù)據(jù),如果最高兩bit為Ol,那 么resl舍掉最高的0和L4[3:l]組成53比特數(shù)據(jù),而如果最高兩bit為00,那么resl舍掉 最高兩位00和L4[3:0]組成53bit的數(shù)據(jù),當cin = 0時,沒有進位選擇,那么選擇resO, 再根據(jù)resO的最高兩bit進行選擇;64比特選擇器根據(jù)FAR路徑和CLOSE路徑的判斷,選擇FAR路徑的數(shù)據(jù)還是 CLOSE路徑的數(shù)據(jù);當d = 0或者d = 1或者d = 2或者d = -1,且做有效減法時,選 擇CLOSE路徑的結(jié)果,否則選擇FAR路徑的結(jié)果。
全文摘要
本發(fā)明公開一種64比特浮點乘加器及其浮點運算流水節(jié)拍處理方法。該乘加器的第一指數(shù)處理單元用于計算浮點乘加和浮點乘法運算時的指數(shù)差;第一符號處理單元用于判斷浮點乘加運算和浮點乘法運算結(jié)果的符號以及是否做有效減法;第二指數(shù)處理單元用于對只做加法操作時操作數(shù)的指數(shù)進行處理;第二符號處理單元用于對只作加法操作時操作數(shù)的符號進行處理;指數(shù)以及符號選擇器用于選擇第一指數(shù)處理單元和第一符號處理單元的結(jié)果,或者選擇第二指數(shù)處理單元和第二符號處理單元的結(jié)果;并判斷指數(shù)差d,當d=0、或d=1、或d=2、或d=-1,且做有效減法時,通過CLOSE路徑進行運算,否則通過FAR路徑進行運算,以此來降低乘加器時延。
文檔編號G06F7/57GK101692202SQ20091009304
公開日2010年4月7日 申請日期2009年9月27日 優(yōu)先權(quán)日2009年9月27日
發(fā)明者胡偉武, 郭崎, 齊子初 申請人:北京龍芯中科技術(shù)服務(wù)中心有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1