文/劉明,佳沐,許志良,傅文佳,張霆廷
基于Gold-Schmidt 迭代算法,筆者采用IEEE-754(2008)標(biāo)準(zhǔn)中的128 位浮點(diǎn)標(biāo)準(zhǔn)數(shù)據(jù)格式,模塊化地實(shí)現(xiàn)了浮點(diǎn)平方根運(yùn)算單元的VLSI 電路設(shè)計(jì)。隨后,筆者對實(shí)現(xiàn)的128 位浮點(diǎn)平方根運(yùn)算單元進(jìn)行了仿真測試,結(jié)果表明,本文設(shè)計(jì)的硬件運(yùn)算單元滿足全浮點(diǎn)域的精度要求。接著,筆者使用TSMC 65nm 標(biāo)準(zhǔn)工藝庫對該硬件運(yùn)算單元做了邏輯綜合,結(jié)果表明,本文設(shè)計(jì)的硬件運(yùn)算單元工作頻率可達(dá)800MHz,完成一次完整的128 位浮點(diǎn)計(jì)算需要4 個時鐘周期,最大計(jì)算誤差小于1 比特位,硬件電路面積為0.8216mm2,硬件功耗為13.87MW。
目前常見的開方算法有以下幾類。
(1)數(shù)字遞歸法。該方法操作簡單,易于實(shí)現(xiàn),但延遲較長,這點(diǎn)在精度較大的浮點(diǎn)數(shù)運(yùn)算過程中表現(xiàn)得尤為明顯。
(2)函數(shù)迭代法。如Newton–Raphson 法、Householders 法和Gold-Schmidt 迭代算法,此類算法需要更多的硬件成本,卻不能保證運(yùn)算結(jié)果的完全準(zhǔn)確,此類算法的優(yōu)點(diǎn)是快速、可擴(kuò)展、易于流水線化。
(3)高基數(shù)運(yùn)算法。該方法運(yùn)算速度快,但實(shí)現(xiàn)起來較為復(fù)雜,且通常需要消耗相當(dāng)大的硬件面積。
(4)查表法。該方法簡單、快速,但硬件成本較高,可擴(kuò)展性較差。
基于此,本文采用Gold-Schmidt 法來設(shè)計(jì)并實(shí)現(xiàn)高精度、低時延的浮點(diǎn)平方根運(yùn)算單元。Gold-Schmidt 法的迭代公式如下:
式(1)中,ri表示平方根變量;xi表示調(diào)變因子x 變量;hi表示調(diào)變因子h 變量。
初始值設(shè)置如式(2)所示:
其 中,r0≈1/X1/2是1/X1/2的近似值(查表獲取)。經(jīng)過n 次迭代,筆者得到xn=X1/2。此時,筆者結(jié)合式(1),得到Gold-Schmidt 法的迭代示意圖,如圖1 所示。
基于Gold-Schmidt 法的浮點(diǎn)平方根運(yùn)算單元的結(jié)構(gòu)如圖2所示。
如圖2 所示,sqrt_preconfig模塊主要負(fù)責(zé)對輸入的128 位浮點(diǎn)數(shù)data 進(jìn)行異常檢測與預(yù)處理。首先,該模塊會將輸入的data分解為符號data_in_sign、指數(shù)data_in_exp以及尾數(shù)data_in_m,并計(jì)算指數(shù)偏差值exp_out;隨后,進(jìn)行異常檢測,輸出異常檢測旗幟信號exception。exception 有5種可能的值:3′b000(輸入不存在異常情況),3′b001(輸入為非數(shù),輸出為非數(shù)),3′b010(輸入為負(fù)數(shù),輸出為非數(shù)),3′b011(輸入為正無窮,輸出為正無窮),3′b100(輸入為0,輸出為0)。同時,在檢查輸入浮點(diǎn)數(shù)的指數(shù)為奇數(shù)還是偶數(shù)后,該模塊還會調(diào)整尾數(shù)部分,例如將其由113 位調(diào)整為116 位,并輸出mantissa_out,以便后續(xù)sqrt_mantissa_calculation 模塊的分組計(jì)算。
在本研究中,仿真驗(yàn)證共分為三大部分,分別是浮點(diǎn)異常驗(yàn)證、邊界數(shù)據(jù)驗(yàn)證和邏輯功能驗(yàn)證。其中,浮點(diǎn)異常驗(yàn)證主要針對的是輸入的非數(shù)(NaN)、正負(fù)無窮、0 或者不符合定義域的輸入數(shù)值,邊界數(shù)據(jù)驗(yàn)證的一般是定義域邊界的輸入數(shù)值,而邏輯功能驗(yàn)證的則是定義域內(nèi)的浮點(diǎn)正規(guī)數(shù)。
基于此,筆者對此次設(shè)計(jì)的浮點(diǎn)平方根運(yùn)算單元進(jìn)行大量的隨機(jī)數(shù)據(jù)測試,測試數(shù)據(jù)包括非數(shù)、正負(fù)無窮、0、浮點(diǎn)正規(guī)數(shù)以及邊界數(shù)。仿真驗(yàn)證結(jié)果如表1 所示。
表1 浮點(diǎn)平方根運(yùn)算單元仿真驗(yàn)證結(jié)果對比
在電路設(shè)計(jì)得到仿真驗(yàn)證之后,本文根據(jù)TSMC 65nm標(biāo)準(zhǔn)工藝庫,在0.9V 的工作電壓下完成了邏輯實(shí)現(xiàn)和綜合,最終得到有關(guān)硬件的工作頻率、面積等邏輯綜合結(jié)果,如表2 所示。
表2 浮點(diǎn)平方根運(yùn)算單元綜合結(jié)果
本文對128 位浮點(diǎn)平方根運(yùn)算單元實(shí)現(xiàn)了RTL 級(寄存器傳輸級)建模,并基于ModelSim硬件仿真平臺完成了平方根運(yùn)算單元的邏輯功能的仿真驗(yàn)證;在TSMC 65nm的標(biāo)準(zhǔn)工藝完成了邏輯實(shí)現(xiàn)和綜合。結(jié)果表明,本文所設(shè)計(jì)的浮點(diǎn)平方根運(yùn)算硬件單元完成一次128位浮點(diǎn)計(jì)算需要4 個時鐘周期,計(jì)算誤差最大不超過128 位浮點(diǎn)尾數(shù)的最低位,滿足精度高、延遲低的特征。DC 邏輯綜合結(jié)果表明,當(dāng)電路的工作頻率為800MHz 時,硬件電路面積為0.8216mm2,功耗為13.87MW。