)或者 {[22:17],[10:7]}位作為N表的輸入索引。將P表中索引到的值減去N表中索引到的值取 高14位即為所求迭代初值。
[0047] 在實踐中,上述倒數(shù)查找表的構(gòu)造方法:
[0048] 構(gòu)造輸入是3y+g+l輸出是3y+g_l的查找表。y取整數(shù),g取值為0,1,-1。輸入 操作數(shù) 1.b3y+gb3y+gp. .t^bib。被分為 3 部分:Xh=b3y+gb3y+gp. .b2y+(^y+Ι位高位索引部 分,Xm=b2y+g山;^ 2··· 1^是y+g位的中間位的索引部分。X: =by九2···b。是y位的低位 索引部分。對于任何一個輸入x都可以被編碼為[XhIIXJ這種形式,然后根據(jù)下面給出的 算法分別構(gòu)造出倒數(shù)查找表中的P表和N表。高位部分連接中間位部分[Xh |XJ作為P表 的2y+g+l位的輸入索引,輸出3y+g+l位。高位部分連接低位部分[Xh |XJ作為N表的2y+l 位的輸入索引,輸出y+1位。
[0049]
[0050]
[0051] 如圖5所示,為本發(fā)明在具體應(yīng)用實例中Goldschmidt算法迭代過程的示意圖。每 次迭代需要計算兩個并行的乘法和一次減法。在Goldschmidt算法迭代計算過程中,要對 中間計算結(jié)果進行舍入處理,這種舍入必然會對最終的運算結(jié)果造成誤差。而為了要把誤 差控制在目標(biāo)精度可以接受的范圍之內(nèi),就需要根據(jù)目標(biāo)精度來確定迭代初值的精度、迭 代次數(shù)以及中間結(jié)果舍入位數(shù)。根據(jù)IEEE754標(biāo)準結(jié)果精度要求的誤差控制在±0.5ulp 以下,即雙精度浮點除法運算結(jié)果相對誤差P(N)〈2 54,單精度浮點除法運算結(jié)果相對誤差 P(N)〈2 25。運算過程中隊Ai的運算結(jié)果截斷舍入賦給NyDiA4勺運算結(jié)果截斷舍入賦 給01,2-01的運算結(jié)果截斷舍入賦給? 1。舍入時產(chǎn)生的相對誤差分別為11'、11'4'??紤]舍 入誤差之后的迭代過程如下:
[0052]
[0053] 通過對結(jié)果誤差控制來確定迭代過程中的舍入位數(shù)。對于雙精度浮點數(shù),結(jié)果尾 數(shù)的目標(biāo)精度要達到53位,對于單精度浮點數(shù),結(jié)果尾數(shù)的目標(biāo)精度要達到24位,綜合性 能和面積的考慮,本發(fā)明采用具有14位精度的迭代初值,也就是要做能達到14位精度的倒 數(shù)查找表。這樣要達到53位的目標(biāo)精度迭代次數(shù)k取2,要達到24位的目標(biāo)精度迭代次數(shù) k取1。根據(jù)相關(guān)理論研究得出的結(jié)論,為了確保計算結(jié)果達到目標(biāo)精度,控制迭代過程中 的誤差,乘法器的位寬要大于58位,迭代運算中用到的加法器位寬要大于57位。
[0054] 根據(jù)上述Goldschmidt算法運算除法的迭代過程描述,每次迭代需要計算兩個并 行的乘法,再與減法操作串行,所以本發(fā)明采用了如圖2所示的Goldschmidt算法迭代單 元,其中包括迭代控制器、兩個乘法器和一個加法器,這里的加法器用作計算2減去迭代過 程中的一個中間結(jié)果。
[0055] 當(dāng)只有一條雙精度浮點除法指令執(zhí)行時,乘法器的流水線填充情況如圖3所示。 如果將乘法器的流水線填滿,就可以改善除法器的性能,提高運算吞吐率。為此本發(fā)明對迭 代控制狀態(tài)機做了相應(yīng)設(shè)計,使其允許連續(xù)3次請求除法運算。如圖4所示的狀態(tài)機相關(guān) 信號時序圖。狀態(tài)機分為兩種狀態(tài),分別是空閑狀態(tài)(Idle)和計算狀態(tài)(Div_cal)。當(dāng)狀 態(tài)機處于空閑狀態(tài)時,狀態(tài)機在等待接受除法指令有效信號,檢測到除法工作信號有效,就 開始獲取迭代初值并將迭代初值(Init_num)送入乘法器,乘法器開始工作。如果接收到3 次除法指令有效信號,狀態(tài)機進入計算狀態(tài)。處于此狀態(tài)期間,每次迭代送入乘法器的數(shù)值 (Reg_num)為上一次迭代計算結(jié)果舍入后的數(shù)值,迭代次數(shù)計數(shù)器(count_state)在每次 迭代完成之后加1。迭代次數(shù)計數(shù)器達到目標(biāo)迭代次數(shù)之后,就完成了一條除法的迭代運 算,狀態(tài)從計算狀態(tài)變化到空閑。在這種控制下3條連續(xù)的除法就可以順序的流水執(zhí)行,本 發(fā)明中雙精度浮點除法運算需要3次迭代計算,那么間隔6個時鐘周期就可以繼續(xù)送入3 次連續(xù)的除法請求。這樣以流水的方式執(zhí)行平均運算每條除法僅需要3個周期。單精度浮 點除法運算需要兩次迭代計算,那么間隔3個時鐘周期就可以繼續(xù)送入3次連續(xù)的除法請 求。這樣以流水的方式執(zhí)行平均運算每條除法僅需要2個周期。這種情況下乘法器的流水 線可以被填滿。單精度浮點除法指令迭代控制過程與雙精度浮點除法指令迭代控制過程相 同,唯一不同的是單精度浮點除法單元迭代一次,需要計算兩次串行的乘法,而雙精度浮點 除法單元迭代兩次,需要計算3次串行的乘法。
[0056] 如圖6所示,本發(fā)明的浮點除法器于具體應(yīng)用中在處理器中與MAC部件共享 乘法器單元,從而大幅度的減小除法器面積開銷。實現(xiàn)浮點除法運算的關(guān)鍵硬件電路 Goldschmidt算法迭代單元主要包括兩個乘法器和一個加法器,如果在浮點除法器內(nèi)部設(shè) 置兩個除法器專用乘法器,那么浮點除法器面積開銷會很大。在處理器的標(biāo)量運算單元中 包含兩個MAC運算部件,負責(zé)定點浮點乘加運算,每個MAC內(nèi)部包含一個64X64的共享乘法 器。本發(fā)明為了節(jié)省浮點除法器面積開銷,采用復(fù)用兩個MAC部件內(nèi)部乘法器的策略。具 體實現(xiàn)方式是將需要進行乘法迭代運算的數(shù)據(jù)端口接到除法器頂層,將乘法器的輸入輸出 端口與相應(yīng)的浮點除法器數(shù)據(jù)端口連接,在迭代過程中進行數(shù)據(jù)交互。圖中顯示了浮點除 法器在處理器中的位置及與MAC部件共享乘法器結(jié)構(gòu)。
[0057] 以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅局限于上述實施例, 凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進和潤飾,應(yīng)視為本發(fā)明的保護 范圍。
【主權(quán)項】
1. 一種基于Goldschmidt算法的浮點除法器,其特征在于,包括: 迭代初值產(chǎn)生器,用來生成除數(shù)尾數(shù)倒數(shù)的近似值,近似值精確到14位; Goldschmidt算法迭代模塊,包括兩個乘法器、一個加法器和一個迭代控制狀態(tài)機;所 述迭代控制狀態(tài)機用來控制Goldschmidt算法迭代過程,通過調(diào)度3條連續(xù)的除法指令,填 充乘法器流水站; 規(guī)格化處理模塊,用來進行浮點數(shù)例外判斷、符號位、指數(shù)和尾數(shù)規(guī)格,規(guī)格化雙精度 浮點除法或者單精度浮點除法不同運算精度的商結(jié)果。2. 根據(jù)權(quán)利要求1所述的基于Goldschmidt算法的浮點除法器,其特征在于,所述迭代 初值產(chǎn)生器采用倒數(shù)查找表。3.根據(jù)權(quán)利要求2所述的基于Goldschmidt算法的浮點除法器,其特征在于,所述倒數(shù) 查找表通過雙倒數(shù)查找表構(gòu)造法構(gòu)造。4. 根據(jù)權(quán)利要求2所述的基于Goldschmidt算法的浮點除法器,其特征在于,所述 倒數(shù)查找表分為P表和N表,取除數(shù)尾數(shù)的高11位作為P表的輸入索引,取除數(shù)尾數(shù)的 {[51:46],[40:36]}位或者{[22:17],[10:7]}位作為N表的輸入索引;將P表中索引到的 值減去N表中索引到的值取高14位即為所求迭代初值。5. 根據(jù)權(quán)利要求1所述的基于Goldschmidt算法的浮點除法器,其特征在于,所述迭代 控制狀態(tài)機分為兩種狀態(tài),分別是空閑狀態(tài)Idle和計算狀態(tài)Div_cal;當(dāng)狀態(tài)機處于空閑 狀態(tài)時,狀態(tài)機在等待接受除法指令有效信號,檢測到除法工作信號有效,就開始獲取迭代 初值并將迭代初值Init_num送入乘法器,乘法器開始工作;如果接收到3次除法指令有效 信號,狀態(tài)機進入計算狀態(tài);處于計算狀態(tài)Div_cal期間,每次迭代送入乘法器的數(shù)值Reg_ num為上一次迭代計算結(jié)果舍入后的數(shù)值,迭代次數(shù)計數(shù)器c〇unt_State在每次迭代完成 之后加1 ;當(dāng)?shù)螖?shù)計數(shù)器達到目標(biāo)迭代次數(shù)之后,就完成了一條除法的迭代運算,狀態(tài) 從計算狀態(tài)Div_cal變化到空閑狀態(tài)Idle。6.根據(jù)權(quán)利要求5所述的基于Goldschmidt算法的浮點除法器,其特征在于,單精度浮 點除法單元迭代一次,計算兩次串行的乘法;雙精度浮點除法單元迭代兩次,計算三次串行 的乘法。7.根據(jù)權(quán)利要求1~6中任意一項所述的基于Goldschmidt算法的浮點除法器,其特 征在于,所述浮點除法器執(zhí)行以下流水站: E1站:接收操作數(shù)及對操作數(shù)進行預(yù)處理;在此站接收以IEEE-754標(biāo)準表示的除數(shù)和 被除數(shù),對符號位異或計算結(jié)果符號位,指數(shù)位相減預(yù)測結(jié)果指數(shù),分離出除數(shù)和被除數(shù)的 尾數(shù); E2站:利用此站的迭代初值產(chǎn)生器求出除數(shù)尾數(shù)的倒數(shù)近似值; E3站:進行基于Goldschmidt算法的迭代; E4站:在E3站后規(guī)格化模塊將尾數(shù)相除結(jié)果與指數(shù)相減結(jié)果按IEEE-754浮點標(biāo)準執(zhí) 行規(guī)格化操作;對指數(shù)相減結(jié)果規(guī)格化時,檢測尾數(shù)相除結(jié)果的最高位是否為1,來確定指 數(shù)相減結(jié)果是否需要借位。
【專利摘要】本發(fā)明公開了一種基于Goldschmidt算法的浮點除法器,其包括:迭代初值產(chǎn)生器,用來生成除數(shù)尾數(shù)倒數(shù)的近似值,近似值精確到14位;Goldschmidt算法迭代模塊,包括兩個乘法器、一個加法器和一個迭代控制狀態(tài)機;所述迭代控制狀態(tài)機用來控制Goldschmidt算法迭代過程,通過調(diào)度3條連續(xù)的除法指令,填充乘法器流水站;規(guī)格化處理模塊,用來進行浮點數(shù)例外判斷、符號位、指數(shù)和尾數(shù)規(guī)格,規(guī)格化雙精度浮點除法或者單精度浮點除法不同運算精度的商結(jié)果。本發(fā)明具有指令執(zhí)行周期少、延遲小、結(jié)構(gòu)簡單、可行性好等優(yōu)點。
【IPC分類】G06F7/537
【公開號】CN105389157
【申請?zhí)枴緾N201510717166
【發(fā)明人】雷元武, 彭元喜, 何婷婷, 萬江華, 魯建壯, 李振濤, 劉必慰, 孫海燕, 陳勝剛, 陳躍躍, 孫永節(jié), 劉勝, 陳海燕, 陳小文, 李勇
【申請人】中國人民解放軍國防科學(xué)技術(shù)大學(xué)
【公開日】2016年3月9日
【申請日】2015年10月29日