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