基于Goldschmidt算法的浮點(diǎn)除法器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明主要涉及到微處理器運(yùn)算部件領(lǐng)域,特指一種適用于在高性能通用 DSP(GPDSP)芯片設(shè)計(jì)中通過復(fù)用乘法器實(shí)現(xiàn)處理器中高速浮點(diǎn)除法運(yùn)算,特別是一種在同 一硬件平臺(tái)上實(shí)現(xiàn)雙精度浮點(diǎn)除法或者單精度浮點(diǎn)除法器。
【背景技術(shù)】
[0002] 科學(xué)計(jì)算應(yīng)用、商業(yè)應(yīng)用以及娛樂應(yīng)用等領(lǐng)域中需要用到大量的單精度浮點(diǎn)運(yùn)算 或者雙精度浮點(diǎn)運(yùn)算。隨著VLSI技術(shù)的飛速發(fā)展,浮點(diǎn)運(yùn)算邏輯已經(jīng)成為了高性能計(jì)算機(jī) 系統(tǒng)中基本的組成部分。浮點(diǎn)運(yùn)算部件的處理速度限制了需要大量浮點(diǎn)運(yùn)算的應(yīng)用的性 能,因此,高性能的FPU對(duì)于處理這類應(yīng)用的系統(tǒng)是至關(guān)重要的。微處理器發(fā)展至今,F(xiàn)PU已 經(jīng)經(jīng)歷了幾次的更新?lián)Q代。相對(duì)于浮點(diǎn)加、減、乘運(yùn)算,處理器實(shí)現(xiàn)除法運(yùn)算仍然最為復(fù)雜, 所耗時(shí)間最長。因此設(shè)計(jì)并實(shí)現(xiàn)高性能的浮點(diǎn)除法器是十分重要的。
[0003] 目前,已有的除法算法按照迭代運(yùn)算過程主要可以分為兩類:一類是基于減法 的算法,另一類是基于乘法的算法。基于減法的算法硬件電路主要是通過加法和移位來 實(shí)現(xiàn),這類算法中目前應(yīng)用最廣泛的是SRT算法,通過提高算法基數(shù),可以提高每次迭代 產(chǎn)生的商的位數(shù),從而降低迭代次數(shù)(迭代次數(shù)與操作數(shù)位寬正相關(guān)),當(dāng)然這是以提高 硬件的復(fù)雜度為代價(jià)的?;诔朔ǖ乃惴ㄖ凶罹叽硇缘乃惴ㄓ蠳ewton-Raphson算法、 Goldschmidt算法和Taylor級(jí)數(shù)算法,這類算法是以指數(shù)增長的速度精確商值的,適用于 高性能、高精度運(yùn)算。
[0004] 基于SRT算法實(shí)現(xiàn)的除法器具有結(jié)構(gòu)簡單,面積開銷小的優(yōu)勢(shì),但是其運(yùn)算速度 與基于乘法的迭代算法差距較大?;诔朔ǖ乃惴▽?shí)現(xiàn)的除法器迭代過程中需要運(yùn)算乘 法,因此硬件實(shí)現(xiàn)電路中要包含乘法器,這樣往往面積開銷比較大。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一 種指令執(zhí)行周期少、延遲小、結(jié)構(gòu)簡單、可行性好的基于Goldschmidt算法的浮點(diǎn)除法器。
[0006] 為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
[0007] -種基于Goldschmidt算法的浮點(diǎn)除法器,其包括:
[0008] 迭代初值產(chǎn)生器,用來生成除數(shù)尾數(shù)倒數(shù)的近似值,近似值精確到14位;
[0009] Goldschmidt算法迭代模塊,包括兩個(gè)乘法器、一個(gè)加法器和一個(gè)迭代控制狀態(tài) 機(jī);所述迭代控制狀態(tài)機(jī)用來控制Goldschmidt算法迭代過程,通過調(diào)度3條連續(xù)的除法指 令,填充乘法器流水站;
[0010] 規(guī)格化處理模塊,用來進(jìn)行浮點(diǎn)數(shù)例外判斷、符號(hào)位、指數(shù)和尾數(shù)規(guī)格,規(guī)格化雙 精度浮點(diǎn)除法或者單精度浮點(diǎn)除法不同運(yùn)算精度的商結(jié)果。
[0011] 作為本發(fā)明的進(jìn)一步改進(jìn):所述迭代初值產(chǎn)生器采用倒數(shù)查找表。
[0012] 作為本發(fā)明的進(jìn)一步改進(jìn):所述倒數(shù)查找表通過雙倒數(shù)查找表構(gòu)造法構(gòu)造。
[0013] 作為本發(fā)明的進(jìn)一步改進(jìn):所述倒數(shù)查找表分為P表和N表,取除數(shù)尾數(shù)的高11 位作為P表的輸入索引,取除數(shù)尾數(shù)的{[51:46],[40:36]}位或者{[22:17],[10:7]}位作 為N表的輸入索引;將P表中索引到的值減去N表中索引到的值取高14位即為所求迭代初 值。
[0014] 作為本發(fā)明的進(jìn)一步改進(jìn):所述迭代控制狀態(tài)機(jī)分為兩種狀態(tài),分別是空閑狀態(tài) Idle和計(jì)算狀態(tài)Div_cal;當(dāng)狀態(tài)機(jī)處于空閑狀態(tài)時(shí),狀態(tài)機(jī)在等待接受除法指令有效信 號(hào),檢測(cè)到除法工作信號(hào)有效,就開始獲取迭代初值并將迭代初值Init_num送入乘法器, 乘法器開始工作;如果接收到3次除法指令有效信號(hào),狀態(tài)機(jī)進(jìn)入計(jì)算狀態(tài);處于計(jì)算狀態(tài) Div_cal期間,每次迭代送入乘法器的數(shù)值Reg_num為上一次迭代計(jì)算結(jié)果舍入后的數(shù)值, 迭代次數(shù)計(jì)數(shù)器count_State在每次迭代完成之后加1 ;當(dāng)?shù)螖?shù)計(jì)數(shù)器達(dá)到目標(biāo)迭代 次數(shù)之后,就完成了一條除法的迭代運(yùn)算,狀態(tài)從計(jì)算狀態(tài)Div_cal變化到空閑狀態(tài)Idle。
[0015] 作為本發(fā)明的進(jìn)一步改進(jìn):單精度浮點(diǎn)除法單元迭代一次,計(jì)算兩次串行的乘法; 雙精度浮點(diǎn)除法單元迭代兩次,計(jì)算三次串行的乘法。
[0016] 作為本發(fā)明的進(jìn)一步改進(jìn):所述浮點(diǎn)除法器執(zhí)行以下流水站:
[0017] E1站:接收操作數(shù)及對(duì)操作數(shù)進(jìn)行預(yù)處理;在此站接收以IEEE-754標(biāo)準(zhǔn)表示的除 數(shù)和被除數(shù),對(duì)符號(hào)位異或計(jì)算結(jié)果符號(hào)位,指數(shù)位相減預(yù)測(cè)結(jié)果指數(shù),分離出除數(shù)和被除 數(shù)的尾數(shù);
[0018] E2站:利用此站的迭代初值產(chǎn)生器求出除數(shù)尾數(shù)的倒數(shù)近似值;
[0019] E3站:進(jìn)行基于Goldschmidt算法的迭代;
[0020] E4站:在E3站后規(guī)格化模塊將尾數(shù)相除結(jié)果與指數(shù)相減結(jié)果按IEEE-754浮點(diǎn)標(biāo) 準(zhǔn)執(zhí)行規(guī)格化操作;對(duì)指數(shù)相減結(jié)果規(guī)格化時(shí),檢測(cè)尾數(shù)相除結(jié)果的最高位是否為1,來確 定指數(shù)相減結(jié)果是否需要借位。
[0021] 與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
[0022] 1、本發(fā)明的除法運(yùn)算指令周期短,可以直接運(yùn)用于處理器上。
[0023] 2、本發(fā)明能同一硬件平臺(tái)上實(shí)現(xiàn)雙精度浮點(diǎn)除法或者單精度浮點(diǎn)除法。
[0024] 3、本發(fā)明基于Goldschmidt除法算法設(shè)計(jì),性能好。
[0025] 4、本發(fā)明通過指令調(diào)度填充乘法器流水線空閑周期,使其具有較高運(yùn)算吞吐率。
[0026] 5、本發(fā)明采用復(fù)用處理器已有乘法器策略,面積開銷小。
[0027] 6、本發(fā)明的除法器結(jié)構(gòu)簡單,可行性好,易于設(shè)計(jì)和實(shí)現(xiàn)。
【附圖說明】
[0028] 圖1是本發(fā)明浮點(diǎn)除法器的結(jié)構(gòu)示意圖。
[0029] 圖2是本發(fā)明在具體應(yīng)用實(shí)例中Goldschmidt算法迭代模塊的示意圖。
[0030] 圖3是本發(fā)明在具體應(yīng)用實(shí)例中非流水執(zhí)行時(shí)迭代過程中乘法器流水線填充情 況示意圖。
[0031] 圖4是本發(fā)明在具體應(yīng)用實(shí)例中迭代控制狀態(tài)機(jī)相關(guān)信號(hào)時(shí)序圖。
[0032] 圖5是本發(fā)明在具體應(yīng)用實(shí)例中Goldschmidt算法迭代過程的示意圖。
[0033] 圖6是本發(fā)明本發(fā)明在具體應(yīng)用實(shí)例中浮點(diǎn)除法器復(fù)用乘法器的處理器結(jié)構(gòu)示 意圖。
【具體實(shí)施方式】
[0034] 以下將結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
[0035] 如圖1所示,本發(fā)明的基于Goldschmidt算法的浮點(diǎn)除法器,包括:
[0036] 迭代初值產(chǎn)生器,用來生成除數(shù)尾數(shù)倒數(shù)的近似值,近似值精確到14位;在具體 應(yīng)用時(shí)它主要由倒數(shù)查找表構(gòu)成。
[0037] Goldschmidt算法迭代模塊,由兩個(gè)乘法器、一個(gè)加法器和一個(gè)迭代控制狀態(tài)機(jī)構(gòu) 成(參見圖2),通過復(fù)用處理器中已有的乘法器節(jié)省面積開銷;所述迭代控制狀態(tài)機(jī)一方 面承擔(dān)了控制Goldschmidt算法迭代過程,使其按照算法約定完成商值的計(jì)算;另一方面, 由于處理器內(nèi)部使用的乘法器被劃分為3個(gè)執(zhí)行站,可以實(shí)現(xiàn)全流水,所述迭代控制狀態(tài) 機(jī)通過調(diào)度3條連續(xù)的除法指令,填充乘法器流水站,從而提高運(yùn)算吞吐率。
[0038] 規(guī)格化處理模塊,用來進(jìn)行浮點(diǎn)數(shù)例外判斷、符號(hào)位、指數(shù)和尾數(shù)規(guī)格,規(guī)格化雙 精度浮點(diǎn)除法或者單精度浮點(diǎn)除法不同運(yùn)算精度的商結(jié)果。
[0039] 有上述結(jié)構(gòu)可知,本發(fā)明的功能包括實(shí)現(xiàn)IEEE-754標(biāo)準(zhǔn)雙精度浮點(diǎn)除法和單精 度浮點(diǎn)除法,其要解決的主要技術(shù)問題是降低除法的計(jì)算延時(shí),減少硬件開銷,并能在同一 硬件結(jié)構(gòu)上實(shí)現(xiàn)一個(gè)雙精度浮點(diǎn)除法或者單精度浮點(diǎn)除法。本發(fā)明由兩條迭代除法指令 (FDIVD、FDIVS32)組成,組織FDIVD指令實(shí)現(xiàn)雙精度浮點(diǎn)除法,組織FDIVS32指令實(shí)現(xiàn)單精 度浮點(diǎn)除法。
[0040] 通過以上結(jié)構(gòu),使除法器流水化可以提高除法器的運(yùn)算速率。本發(fā)明的除法器在 應(yīng)用時(shí)位于處理器的某條執(zhí)行流水線上,其中,處理器中的寄存器文件能夠?yàn)樵搱?zhí)行流水 線提供2個(gè)讀端口和1個(gè)寫端口,實(shí)現(xiàn)雙精度浮點(diǎn)除法和單精度浮點(diǎn)除法的指令。
[0041] 根據(jù)功能劃分及總體性能的分析,采用上述結(jié)構(gòu)之后,實(shí)際上是將其劃分為4個(gè) 流水站;即,對(duì)浮點(diǎn)除法器流水站做如下功能劃分(參見圖1):
[0042] E1站:接收操作數(shù)及對(duì)操作數(shù)進(jìn)行預(yù)處理。在此站接收以IEEE-754標(biāo)準(zhǔn)表示的 除數(shù)和被除數(shù),對(duì)符號(hào)位異或計(jì)算結(jié)果符號(hào)位,指數(shù)位相減預(yù)測(cè)結(jié)果指數(shù),分離出除數(shù)和被 除數(shù)的尾數(shù);
[0043] E2站:利用此站的迭代初值產(chǎn)生器求出除數(shù)尾數(shù)的倒數(shù)近似值,迭代初值產(chǎn)生器 主要組成部分是倒數(shù)查找表,本發(fā)明使用的倒數(shù)查找表為雙查找表,求解相同精度的倒數(shù) 近似值,雙查找表較單查找表面積開銷更小,并且兩個(gè)表可以同時(shí)查詢,速度更快;
[0044] E3站:本發(fā)明的E3站主要實(shí)現(xiàn)了Goldschmidt算法迭代單元。Goldschmidt算法 迭代單元包括兩個(gè)乘法器和一個(gè)加法器,這里的加法器用作計(jì)算2減去迭代過程中的一個(gè) 中間結(jié)果;
[0045] E4站:在E3站后規(guī)格化模塊將尾數(shù)相除結(jié)果與指數(shù)相減結(jié)果按IEEE-754浮點(diǎn)標(biāo) 準(zhǔn)執(zhí)行規(guī)格化操作,規(guī)格化處理模塊的功能包括浮點(diǎn)數(shù)例外判斷、符號(hào)位、指數(shù)、和尾數(shù)規(guī) 格,規(guī)格化雙精度浮點(diǎn)除法或者單精度浮點(diǎn)除法不同運(yùn)算精度的商結(jié)果。對(duì)指數(shù)相減結(jié)果 規(guī)格化時(shí),檢測(cè)尾數(shù)相除結(jié)果的最高位是否為1,來確定指數(shù)相減結(jié)果是否需要借位。
[0046] 在具體應(yīng)用實(shí)例中,上述倒數(shù)查找表分為P表和N表,需要取除數(shù)尾數(shù)的高11 位作為P表的輸入索引,取除數(shù)尾數(shù)的{[51:46],[40:36]}位(雙精度浮點(diǎn)數(shù)