一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器的制造方法
【專利摘要】一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器。方法有:第一階段,采用最小最大二次多項(xiàng)式逼近算法計(jì)算倒數(shù)函數(shù)1/X的種子值Rf,基中,X為除數(shù)的53位尾數(shù)部分;第二階段,基于硬件復(fù)用方法的兩次Goldschmidt迭代,得到最終精確的結(jié)果。除法器,包括有用于計(jì)算倒數(shù)函數(shù)1/X的種子值Rf的第一部分和與所述的第一部分的輸出相連的用于計(jì)算最終精確結(jié)果的第二部分。本發(fā)明是一種高性能、地面積開(kāi)銷的除法器,通過(guò)硬件復(fù)用方法,在性能減低很小的情況下可或者很大的面積優(yōu)勢(shì),尤其適用于對(duì)面積要求嚴(yán)格的嵌入式微處理器領(lǐng)域。
【專利說(shuō)明】一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種除法器。特別是涉及一種高性能、低面積開(kāi)銷的雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器。
【背景技術(shù)】
[0002]除法算法主要分為兩種:一種是慢速算法,一種是快速算法。慢速算法是一種基于數(shù)位迭代的方法,每次迭代產(chǎn)生一位商位,收斂速度為線性收斂?;謴?fù)余數(shù)法、不恢復(fù)余數(shù)法及SRT法都屬于慢速算法。快速算法通常使用查表法得到一個(gè)接近商值的種子值,以乘法作為基本的迭代步驟,每次迭代產(chǎn)生多個(gè)商位,收斂速度為對(duì)數(shù)收斂。Newton-Raphson和Goldschmidt都屬于快速算法。
[0003]由IEEE-754標(biāo)準(zhǔn)對(duì)雙精度浮點(diǎn)數(shù)的定義得知,一個(gè)雙精度浮點(diǎn)數(shù)占64bit,其中I位符號(hào)位,11位指數(shù)位,52位尾數(shù)位(加上隱含的前導(dǎo)I則為53位)。兩雙精度浮點(diǎn)數(shù)相除得到的結(jié)果,尾數(shù)部分的取值范圍為(0.5,2),因此要確保尾數(shù)部分的最終誤差e〈2_54,這樣才能保證最終的尾數(shù)是精確的結(jié)果。
[0004]高性能雙精度浮點(diǎn)除法器的一種廣泛被認(rèn)可的設(shè)計(jì)方法是先通過(guò)二次逼近查表法得到被除數(shù)X (以Y/X為例)倒數(shù)的種子值Rf,該種子值是1/X的近似值,精度為30bit。得到種子值之后再通過(guò)一次Goldschmidt的方法,具體來(lái)講是一次乘法運(yùn)算和兩次乘加運(yùn)算,得到最終的結(jié)果。
[0005]在實(shí)際的應(yīng)用中,相比較于乘法和加法來(lái)講除法并不是一種常見(jiàn)的操作,如果用上述方法設(shè)計(jì)雙精度浮點(diǎn)除法器,其面積開(kāi)銷會(huì)遠(yuǎn)大于設(shè)計(jì)乘法器和加法器所帶來(lái)的面積開(kāi)銷,分析得知,主要的面積開(kāi)銷在于通過(guò)二次逼近法得到的查找表的面積(31Kb),一個(gè)53x30乘法器面積,一個(gè)53x30的乘加單元面積和56x28的乘加單元的面積。雖然該方法可以實(shí)現(xiàn)完全流水,但是由于除法操作的較少使用,使得在實(shí)際應(yīng)用中不能發(fā)揮該雙精度浮點(diǎn)除法器的性能優(yōu)勢(shì)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種能夠減少雙精度浮點(diǎn)除法器的面積開(kāi)銷又滿足應(yīng)用需求的雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器。
[0007]本發(fā)明所采用的技術(shù)方案是:一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法,包括:
[0008]第一階段,采用最小最大二次多項(xiàng)式逼近算法計(jì)算倒數(shù)函數(shù)1/X的種子值Rf,基中,X為除數(shù)的53位尾數(shù)部分;
[0009]第二階段,基于硬件復(fù)用方法的兩次Goldschmidt迭代,得到最終精確的結(jié)果。
[0010]第一階段包括如下步驟:
[0011]I)將53位尾數(shù)X被分成三個(gè)部分:高位部分X1,中間部分X2和低位部分X3,得到,
[0012]X1=Ll.X1X2X3...Xml]
[0013]X2=[xml+1........xm2]X2_ml[0014]X3=[xffl2+1.........xn]X2_m2
[0015]對(duì)于倒數(shù)函數(shù)1/X通過(guò)如下公式進(jìn)行計(jì)算,
[0016]X~WdC2X22(I)
[0017]其中,系數(shù)Cc^CpC2通過(guò)軟件Maple獲得,在Maple中通過(guò)調(diào)用Remez算法來(lái)實(shí)現(xiàn)最小最大算法,從而得到三個(gè)系數(shù)CO、Cl和C2,并將三個(gè)系數(shù)Ctl, C1, C2存入系數(shù)查找表;
[0018]2)采用高位部分Xl進(jìn)行查表,得到CO、Cl和C2的位寬,同時(shí)對(duì)中間部分X2進(jìn)行基數(shù)為4的Booth編碼,以及求中間部分X2的平方值和對(duì)所述該平方值進(jìn)行Booth編碼;
[0019]3)將用兩個(gè)部分積產(chǎn)生模塊分別產(chǎn)生C1X2和C2X22的部分積與查表得到的Ctl,采用三級(jí)4:2CSA樹(shù)得到最終種子值的CARRY和SUM項(xiàng);
[0020]4)采用一個(gè)超前進(jìn)位加法器CLA對(duì)最終種子值的CARRY和SUM項(xiàng)進(jìn)行相加,得到輸出結(jié)果倒數(shù)函數(shù)1/X的種子值Rf。
[0021]第二階段包括兩次Goldschmidt迭代共涉及5次乘法和2次求補(bǔ)運(yùn)算,如下步驟:
[0022]I)將第一階段得到的種子值Rf分別與53位尾數(shù)X和被除數(shù)的尾數(shù)部分Y相乘得到dO和zO,對(duì)dO求補(bǔ)后得到xO,然后將zO與xO相乘得到zl ;
[0023]2)在第二次Goldschmidt迭代中,將dO與xO相乘得到dl,dl求補(bǔ)后得到xl,將得到的Xl與Zl相乘得到最終的結(jié)果Z。
[0024]本發(fā)明的采用雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法得到的除法器,包括有用于計(jì)算倒數(shù)函數(shù)1/X的種子值Rf的第一部分和與所述的第一部分的輸出相連的用于計(jì)算最終精確結(jié)果的第二部分,其中,
[0025]第一部分包括:
[0026]寄存器,分別存放53位尾數(shù)X的高位部分X1、中間部分X2和低位部分X3 ;
[0027]第一查找表、第二查找表和第三查找表,分別連接所述寄存器的高位部分X1的輸出端;
[0028]第一 Booth編碼器,輸入端連接所述寄存器的中間部分X2,用于對(duì)中間部分X2進(jìn)行重新編碼;
[0029]專用平方單元,輸入端連接所述寄存器的中間部分X2,用于求取中間部分X2的平方值;
[0030]第二 Booth編碼器,輸入端連接所述專用平方單元輸出端,用于對(duì)求出的平方值進(jìn)行重新編碼;
[0031]第一部分積產(chǎn)行單兀,分別連接第二查找表和第一 Booth編碼器的輸出端,用于產(chǎn)生C1X2的9個(gè)部分積;
[0032]第二部分積產(chǎn)生單元,分別連接第三查找表和第二 Booth編碼器的輸出端,用于產(chǎn)生C2X22的6個(gè)部分積;
[0033]第一級(jí)進(jìn)位保存加法器單元,分別連接第一查找表、第一部分積產(chǎn)行單元和第二部分積產(chǎn)生單元,用于產(chǎn)生第一級(jí)的CARRY和SUM項(xiàng);
[0034]第二級(jí)進(jìn)位保存加法器單元,連接第一級(jí)進(jìn)位保存加法器單元的輸出端,用于產(chǎn)生第二級(jí)的CARRY和SUM項(xiàng);
[0035]第三級(jí)進(jìn)位保存 加法器,連接第二級(jí)進(jìn)位保存加法器單元用于產(chǎn)生第三級(jí)的CARRY 和 SUM 項(xiàng);[0036]超前進(jìn)位加法器,連接第三級(jí)進(jìn)位保存加法器單元的輸出端,用于計(jì)算得到最終的種子值Rf ;
[0037]第二部分包括:
[0038]第一多路選擇器,分別連接外部控制信號(hào)sel、補(bǔ)碼器的輸出和第二部分輸出的最終的種子值Rf,用于根據(jù)外部控制信號(hào)sel,選擇補(bǔ)碼器的輸出信號(hào)和第二部分輸出的最終的種子值Rf兩個(gè)信號(hào)中的一個(gè);
[0039]第二多路選擇器,分別連接外部控制信號(hào)sel、補(bǔ)碼器的輸出和第二部分輸出的最終的種子值Rf,用于根據(jù)外部控制信號(hào)sel,選擇補(bǔ)碼器的輸出信號(hào)和第二部分輸出的最終的種子值Rf兩個(gè)信號(hào)中的一個(gè);
[0040]第三多路選擇器,分別連接外部控制信號(hào)sel、53位尾數(shù)X的輸出信號(hào)以及第一乘法器的輸出端,用于根據(jù)外部控制信號(hào)se I,選擇53位尾數(shù)X的輸出信號(hào)和第一乘法器的輸出信號(hào)中的一個(gè);
[0041]第四多路選擇器,分別連接外部控制信號(hào)sel、被除數(shù)的尾數(shù)部分Y的輸出信號(hào)以及第二乘法器的輸出端,用于根據(jù)外部控制信號(hào)sel,選擇被除數(shù)的尾數(shù)部分Y的輸出信號(hào)和第二乘法器的輸出信號(hào)中的一個(gè);
[0042]第一乘法器,分別連接第一多路選擇器和第三多路選擇器的輸出端,用于對(duì)該兩路輸出進(jìn)行相乘;
[0043]第二乘法器,分別連接第二多路選擇器和第四多路選擇器的輸出端,用于對(duì)該兩路輸出進(jìn)行相乘,同時(shí)輸出最終結(jié)果;
[0044]補(bǔ)碼器,連接第一乘法器的輸出端,用于對(duì)第一乘法器的輸出結(jié)果求補(bǔ)。
`[0045]對(duì)應(yīng)計(jì)算倒數(shù)函數(shù)1/X的公式X—1 ^ Cc^C1XfC2X22,所述的第一查找表內(nèi)存儲(chǔ)系數(shù)Ctl,第二查找表內(nèi)存儲(chǔ)系數(shù)C1,第三查找表內(nèi)存儲(chǔ)系數(shù)C2。
[0046]所述的第一級(jí)進(jìn)位保存加法器單元包括有:
[0047]第一進(jìn)位保存加法器,分別連接第一查找表的輸出端和第一部分積產(chǎn)行單元的9個(gè)部分積中的3個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第一個(gè)CARRY和SUM項(xiàng);
[0048]第二進(jìn)位保存加法器,連接第一部分積產(chǎn)行單元的9個(gè)部分積中的另4個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第二個(gè)CARRY和SUM項(xiàng);
[0049]第三進(jìn)位保存加法器,分別連接第一部分積產(chǎn)行單元的9個(gè)部分積中的最后2個(gè)部分積的輸出端和第二部分積產(chǎn)生單元的6個(gè)部分積中的2個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第三個(gè)CARRY和SUM項(xiàng);
[0050]第四進(jìn)位保存加法器,連接第二部分積產(chǎn)生單元的6個(gè)部分積中的其余4個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第三個(gè)CARRY和SUM項(xiàng)。
[0051]所述的第二級(jí)進(jìn)位保存加法器單元包括有:
[0052]第六進(jìn)位保存加法器,分別連接第一級(jí)進(jìn)位保存加法器單元中的第一進(jìn)位保存加法器和第二進(jìn)位保存加法器的輸出端,用于產(chǎn)生第二級(jí)的第一個(gè)CARRY和SUM項(xiàng);
[0053]第七進(jìn)位保存加法器,分別連接第一級(jí)進(jìn)位保存加法器單元中的第三進(jìn)位保存加法器和第四進(jìn)位保存加法器的輸出端,用于產(chǎn)生第二級(jí)的第二個(gè)CARRY和SUM項(xiàng)。
[0054]本發(fā)明的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器,是一種高性能、地面積開(kāi)銷的除法器,通過(guò)硬件復(fù)用方法,在性能減低很小的情況下可或者很大的面積優(yōu)勢(shì),尤其適用于對(duì)面積要求嚴(yán)格的嵌入式微處理器領(lǐng)域。
【專利附圖】
【附圖說(shuō)明】
[0055]圖1是本發(fā)明基于查找表法計(jì)算1/X的種子值Rf的結(jié)構(gòu)框圖;
[0056]圖2是本發(fā)明兩次Goldschmidt迭代的結(jié)構(gòu)框圖;
[0057]圖3是本發(fā)明兩次Goldschmidt迭代的計(jì)算流程圖。
[0058]圖中
[0059]1:寄存器2:第一查找表
[0060]3:第二查找表4:第三查找表
[0061]5:第一 Booth編碼器6:專用平方單元
[0062]7:第二 Booth編碼器8:第一部分積產(chǎn)行單元
[0063]9:第二部分積產(chǎn)生單元10:第一進(jìn)位保存加法器
[0064]11:第二進(jìn)位保存加法器12:第三進(jìn)位保存加法器
[0065]13:第四進(jìn)位保存加法器14:第六進(jìn)位保存加法器
[0066]15:第七進(jìn)位保存加法器16:第三級(jí)進(jìn)位保存加法器
[0067]17:超前進(jìn)位加法器18:第一多路選擇器
[0068]19:第二多路選擇器20:第三多路選擇器
[0069]21:第四多路選擇器22:第一乘法器
[0070]23:第二乘法器24:補(bǔ)碼器
【具體實(shí)施方式】
[0071]下面結(jié)合實(shí)施例和附圖對(duì)本發(fā)明的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器做出詳細(xì)說(shuō)明。
[0072]發(fā)明的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法及除法器,采用一次查表法+兩次Goldschmidt迭代的方法來(lái)設(shè)計(jì)雙精度浮點(diǎn)除法器,其中查找表也是采用二次多項(xiàng)式逼近算法得到,但是其面積要遠(yuǎn)小于原方法所使用的查找表的面積,經(jīng)查找表之后會(huì)得到一個(gè)比原先方法更小精度的種子值Rf,在后續(xù)的Goldschmidt中,采用兩次迭代的方法來(lái)獲得與原方法相同的精度,但是兩次迭代使用相同的硬件單元(2個(gè)60x60的乘法器)??偟膩?lái)看,我們采用的方法在查找表的面積上有很大的減少,但是由于采用了硬件復(fù)用技術(shù),因此后續(xù)兩次Goldschmidt的面積開(kāi)銷并沒(méi)有增加太多,總面積開(kāi)銷要小于原方法的面積開(kāi)銷。從性能上來(lái)看,采用我們的方法設(shè)計(jì)出的雙精度浮點(diǎn)除法器雖然不能完全可流水,但是由于實(shí)際應(yīng)用中除法操作并不常見(jiàn),因此采用該方法設(shè)計(jì)的除法器并不會(huì)帶來(lái)整體性能上的損失。
[0073]本發(fā)明的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法,包括:
[0074]第一階段,采用最小最大二次多項(xiàng)式逼近算法計(jì)算倒數(shù)函數(shù)1/X的種子值Rf,基中,X為除數(shù)的53位尾數(shù)部分;第二階段,基于硬件復(fù)用方法的兩次Goldschmidt迭代,得到最終精確的結(jié)果。
[0075]其中,第一階段包括如下步驟:
[0076]1)將53位尾數(shù)X被分成三個(gè)部分:高位部分X1,可為5位,中間部分X2,可為17位和低位部分X3,可為31位,得到,
[0077]X1=Ll.X1X2X3...Xml]
[0078]X2=[xffll+1........X1112] X 2_ml
[0079]X3=[xm2+1.........xn]X2_m2
[0080]對(duì)于倒數(shù)函數(shù)1/X通過(guò)如下公式進(jìn)行計(jì)算,
[0081]X-1 ^ Cq+C^+C^2(I)
[0082]其中,系數(shù)Cc^CnC2通過(guò)軟件Maple獲得,在Maple中通過(guò)調(diào)用Remez算法來(lái)實(shí)現(xiàn)最小最大算法,從而得到三個(gè)系數(shù)Ctl, C1, C2,并將三個(gè)系數(shù)Ctl, C1, C2存入系數(shù)查找表;
[0083]在實(shí)際的計(jì)算中,通過(guò)53位尾數(shù)X的mlbit高位部分X1進(jìn)行查表得到系數(shù)CO、Cl和C2,然后用得到的三個(gè)系數(shù)與53位尾數(shù)X的中位部分X2按照公式(I)進(jìn)行二次多
項(xiàng)式的計(jì)算,從而得到I的近似值Rf。用于查表的Xl的位寬,用于計(jì)算的X2的位寬及
CO、Cl和C2的位寬會(huì)直接影響得到的種子值的精度,其中Xl的位寬和三個(gè)系數(shù)的位寬又會(huì)直接影響系數(shù)查找表的大小,前者決定了查找表的深度而后者決定了查找表的寬度。查找表的面積會(huì)極大影響整個(gè)雙精度浮點(diǎn)除法器的面積,而得到的種子值的精度又會(huì)對(duì)后續(xù)Goldschmidt迭代的次數(shù)有著直接的影響,因此如何折中查找表的面積與得到的種子值的精度則需要設(shè)計(jì)者進(jìn)行仔細(xì)權(quán)衡。 [0084]2)采用高位部分Xl進(jìn)行查表,得到CO、Cl和C2的位寬,同時(shí)對(duì)中間部分X2進(jìn)行基數(shù)為4的Booth編碼,以及求中間部分X2的平方值和對(duì)所述該平方值進(jìn)行Booth編碼;
[0085]在本方法的實(shí)施例中選用位寬較小的Xl進(jìn)行查表,具體來(lái)講是采用5位Xl進(jìn)行查表,得到CO、Cl和C2的位寬分別為30、20和12進(jìn)行多項(xiàng)式的計(jì)算,X2的一次項(xiàng)采用17bit,二次項(xiàng)用12bit,最終經(jīng)過(guò)多項(xiàng)式的計(jì)算得到一個(gè)精度為19bit的種子值Rf,由于得到的種子值精度較低,因此在第二階段采用兩次Goldschmidt迭代來(lái)獲得滿足需要的精度。
[0086]在進(jìn)行二次多項(xiàng)式的計(jì)算過(guò)程中,本發(fā)明使用了一種優(yōu)化算法來(lái)計(jì)算X2的平方項(xiàng),在性能不降低的情況之下面積開(kāi)銷減小了一半。在得到了 X2的平方項(xiàng)之后整個(gè)多項(xiàng)式的計(jì)算就剩下了兩次乘法和兩次加法,在我們的設(shè)計(jì)中采用了一種融合累加樹(shù)的方法進(jìn)行后續(xù)多項(xiàng)式的計(jì)算。
[0087]3)將用兩個(gè)部分積產(chǎn)生模塊分別產(chǎn)生C1X2和C2X22的部分積與查表得到的Ctl,采用三級(jí)4:2CSA樹(shù)得到最終種子值的CARRY和SUM項(xiàng);
[0088]4)采用一個(gè)超前進(jìn)位加法器CLA對(duì)最終種子值的CARRY和SUM項(xiàng)進(jìn)行相加,得到輸出結(jié)果倒數(shù)函數(shù)1/X的種子值Rf。
[0089]其中,第二階段包括兩次Goldschmidt迭代共涉及5次乘法和2次求補(bǔ)運(yùn)算,第一階段的結(jié)果產(chǎn)生之后就開(kāi)始進(jìn)行第二階段的計(jì)算,第二階段計(jì)算的流程如圖3所示,具體采用如下步驟:
[0090]I)將第一階段得到的種子值Rf分別與53位尾數(shù)X和被除數(shù)的尾數(shù)部分Y相乘得到dO和z0,對(duì)dO求補(bǔ)后得到x0,然后將zO與xO相乘得到zl ;
[0091]2)在第二次Goldschmidt迭代中,將dO與xO相乘得到dl,dl求補(bǔ)后得到xl,將得到的Xl與Zl相乘得到最終的結(jié)果Z。[0092]下面對(duì)本發(fā)明方法的計(jì)算過(guò)程進(jìn)行誤差分析:
[0093]整個(gè)雙精度浮點(diǎn)除法器的計(jì)算過(guò)程分為兩個(gè)階段,誤差分析也主要根據(jù)計(jì)算的兩個(gè)階段進(jìn)行分析。
[0094]l、Rf的誤差分析
[0095]第一階段的結(jié)果會(huì)產(chǎn)生一個(gè)種子值Rf,該種子值的誤差來(lái)源主要有:1) 二次多項(xiàng)式逼近算法本身的誤差(e appM),2)在多項(xiàng)式計(jì)算過(guò)程中因有限位寬而引入的算術(shù)誤差。
[0096]總誤差
【權(quán)利要求】
1.一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法,其特征在于,包括: 第一階段,采用最小最大二次多項(xiàng)式逼近算法計(jì)算倒數(shù)函數(shù)l/x的種子值Rf,基中,X為除數(shù)的53位尾數(shù)部分; 第二階段,基于硬件復(fù)用方法的兩次Goldschmidt迭代,得到最終精確的結(jié)果。
2.根據(jù)權(quán)利要求1所述的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法,其特征在于,第一階段包括如下步驟: 1)將53位尾數(shù)X被分成三個(gè)部分:高位部分X1,中間部分X2和低位部分X3,得到,
X1-El.X1X2X3...Xml]
X2=[xffll+1........X1112] X 2_ml X3=[xffl2+1.........xn]X2_m2 對(duì)于倒數(shù)函數(shù)1/X通過(guò)如下公式進(jìn)行計(jì)算, X-1 ^ Cc^C1XfC2X22(1) 其中,系數(shù)Cc^CpC2通過(guò)軟件Maple獲得,在Maple中通過(guò)調(diào)用Remez算法來(lái)實(shí)現(xiàn)最小最大算法,從而得到三個(gè)系數(shù)CO、Cl和C2,并將三個(gè)系數(shù)Ctl, C1, C2存入系數(shù)查找表; 2)采用高位部分Xl進(jìn)行查表,得到CO、Cl和C2的位寬,同時(shí)對(duì)中間部分X2進(jìn)行基數(shù)為4的Booth編碼,以及求中間部分X2的平方值和對(duì)所述該平方值進(jìn)行Booth編碼; 3)將用兩個(gè)部分積產(chǎn)生模塊分別產(chǎn)生C1X2和C2X22的部分積與查表得到的Ctl,采用三級(jí)4:2CSA樹(shù)得到最終種子值的CARRY和SUM項(xiàng); 4)采用一個(gè)超前進(jìn)位加法器CLA對(duì)最終種子值的CARRY和SUM項(xiàng)進(jìn)行相加,得到輸出結(jié)果倒數(shù)函數(shù)1/X的種子值Rf。
3.根據(jù)權(quán)利要求1所述的一種雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法,其特征在于,第二階段包括兩次Goldschmidt迭代共涉及5次乘法和2次求補(bǔ)運(yùn)算,如下步驟: 1)將第一階段得到的種子值Rf分別與53位尾數(shù)X和被除數(shù)的尾數(shù)部分Y相乘得到dO和zO,對(duì)dO求補(bǔ)后得到xO,然后將zO與x0相乘得到zl ; 2)在第二次Goldschmidt迭代中,將dO與xO相乘得到dl,dl求補(bǔ)后得到xl,將得到的Xl與zl相乘得到最終的結(jié)果z。
4.一種采用權(quán)利要求1或2或3所述的雙精度浮點(diǎn)數(shù)除法器的設(shè)計(jì)方法得到的除法器,其特征在于,包括有用于計(jì)算倒數(shù)函數(shù)1/X的種子值Rf的第一部分和與所述的第一部分的輸出相連的用于計(jì)算最終精確結(jié)果的第二部分,其中, 第一部分包括: 寄存器(1 ),分別存放53位尾數(shù)X的高位部分X1、中間部分X2和低位部分X3 ; 第一查找表(2)、第二查找表(3)和第三查找表(4),分別連接所述寄存器(I)的高位部分X1的輸出端; 第一 Booth編碼器(5),輸入端連接所述寄存器(I)的中間部分X2,用于對(duì)中間部分X2進(jìn)行重新編碼; 專用平方單元(6),輸入端連接所述寄存器(I)的中間部分X2,用于求取中間部分X2的平方值; 第二 Booth編碼器(7),輸入端連接所述專用平方單元(6)輸出端,用于對(duì)求出的平方值進(jìn)行重新編碼;第一部分積產(chǎn)行單元(8),分別連接第二查找表(3)和第一 Booth編碼器(5)的輸出端,用于產(chǎn)生C1X2的9個(gè)部分積; 第二部分積產(chǎn)生單元(9),分別連接第三查找表(4)和第二 Booth編碼器(7)的輸出端,用于產(chǎn)生C2X22的6個(gè)部分積; 第一級(jí)進(jìn)位保存加法器單元,分別連接第一查找表(2)、第一部分積產(chǎn)行單元(8)和第二部分積產(chǎn)生單元(9),用于產(chǎn)生第一級(jí)的CARRY和SUM項(xiàng); 第二級(jí)進(jìn)位保存加法器單元,連接第一級(jí)進(jìn)位保存加法器單元的輸出端,用于產(chǎn)生第二級(jí)的CARRY和SUM項(xiàng); 第三級(jí)進(jìn)位保存加法器(16),連接第二級(jí)進(jìn)位保存加法器單元用于產(chǎn)生第三級(jí)的CARRY 和 SUM 項(xiàng); 超前進(jìn)位加法器(17),連接第三級(jí)進(jìn)位保存加法器單元的輸出端,用于計(jì)算得到最終的種子值Rf ; 第二部分包括: 第一多路選擇器(18),分別連接外部控制信號(hào)sel、補(bǔ)碼器(24)的輸出和第二部分輸出的最終的種子值Rf,用于根據(jù)外部控制信號(hào)sel,選擇補(bǔ)碼器(24)的輸出信號(hào)和第二部分輸出的最終的種子值Rf兩個(gè)信號(hào)中的一個(gè); 第二多路選擇器(19),分 別連接外部控制信號(hào)sel、補(bǔ)碼器(24)的輸出和第二部分輸出的最終的種子值Rf,用于根據(jù)外部控制信號(hào)sel,選擇補(bǔ)碼器(24)的輸出信號(hào)和第二部分輸出的最終的種子值Rf兩個(gè)信號(hào)中的一個(gè); 第三多路選擇器(20),分別連接外部控制信號(hào)sel、53位尾數(shù)X的輸出信號(hào)以及第一乘法器(22)的輸出端,用于根據(jù)外部控制信號(hào)sel,選擇53位尾數(shù)X的輸出信號(hào)和第一乘法器(22)的輸出信號(hào)中的一個(gè); 第四多路選擇器(21),分別連接外部控制信號(hào)sel、被除數(shù)的尾數(shù)部分Y的輸出信號(hào)以及第二乘法器(23)的輸出端,用于根據(jù)外部控制信號(hào)sel,選擇被除數(shù)的尾數(shù)部分Y的輸出信號(hào)和第二乘法器(23)的輸出信號(hào)中的一個(gè); 第一乘法器(22),分別連接第一多路選擇器(18)和第三多路選擇器(20)的輸出端,用于對(duì)該兩路輸出進(jìn)行相乘; 第二乘法器(23),分別連接第二多路選擇器(19)和第四多路選擇器(21)的輸出端,用于對(duì)該兩路輸出進(jìn)行相乘,同時(shí)輸出最終結(jié)果; 補(bǔ)碼器(24),連接第一乘法器(22)的輸出端,用于對(duì)第一乘法器(22)的輸出結(jié)果求補(bǔ)。
5.根據(jù)權(quán)利要求4所述的除法器,其特征在于,對(duì)應(yīng)計(jì)算倒數(shù)函數(shù)1/X的公式X—1。WdC2X22,所述的第一查找表(2)內(nèi)存儲(chǔ)系數(shù)Ctl,第二查找表(3)內(nèi)存儲(chǔ)系數(shù)C1,第三查找表(4)內(nèi)存儲(chǔ)系數(shù)C2。
6.根據(jù)權(quán)利要求4所述的除法器,其特征在于,所述的第一級(jí)進(jìn)位保存加法器單元包括有: 第一進(jìn)位保存加法器(10),分別連接第一查找表(2)的輸出端和第一部分積產(chǎn)行單元(8)的9個(gè)部分積中的3個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第一個(gè)CARRY和SUM項(xiàng); 第二進(jìn)位保存加法器(11),連接第一部分積產(chǎn)行單元(8)的9個(gè)部分積中的另4個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第二個(gè)CARRY和SUM項(xiàng); 第三進(jìn)位保存加法器(12),分別連接第一部分積產(chǎn)行單元(8)的9個(gè)部分積中的最后2個(gè)部分積的輸出端和第二部分積產(chǎn)生單元(9)的6個(gè)部分積中的2個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第三個(gè)CARRY和SUM項(xiàng); 第四進(jìn)位保存加法器(13),連接第二部分積產(chǎn)生單元(9)的6個(gè)部分積中的其余4個(gè)部分積的輸出端,用于產(chǎn)生第一級(jí)的第三個(gè)CARRY和SUM項(xiàng)。
7.根據(jù)權(quán)利要求4所述的除法器,其特征在于,所述的第二級(jí)進(jìn)位保存加法器單元包括有: 第六進(jìn)位保存加法器(14),分別連接第一級(jí)進(jìn)位保存加法器單元中的第一進(jìn)位保存加法器(IO )和第二進(jìn)位保存加法器(11)的輸出端,用于產(chǎn)生第二級(jí)的第一個(gè)CARRY和SUM項(xiàng); 第七進(jìn)位保存加法器(15),分別連接第一級(jí)進(jìn)位保存加法器單元中的第三進(jìn)位保存加法器(12)和第四進(jìn)位保存加法器(13)的輸出端,用于產(chǎn)生第二級(jí)的第二個(gè)CARRY和SUM項(xiàng)。
【文檔編號(hào)】G06F17/50GK103809930SQ201410036165
【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2014年1月24日 優(yōu)先權(quán)日:2014年1月24日
【發(fā)明者】郭煒, 崔魯平, 李光赫, 魏繼增 申請(qǐng)人:天津大學(xué)