劉明 傅文佳
摘要:高精度浮點(diǎn)超越函數(shù)在科學(xué)計(jì)算等應(yīng)用中需求越來越大,雙曲函數(shù)是超越函數(shù)中的一個(gè)重要組成部分。早期雙曲函數(shù)的計(jì)算借助軟件實(shí)現(xiàn),近年來由于硬件實(shí)現(xiàn)超越函數(shù)的性能優(yōu)于軟件,硬件實(shí)現(xiàn)逐漸獲得重視。計(jì)算高精度的超越函數(shù)時(shí),雖然位寬的增加會(huì)帶來資源消耗的急劇增加,但數(shù)字電路集成規(guī)模的擴(kuò)大為全硬件化高精度浮點(diǎn)運(yùn)算單元提供設(shè)計(jì)基礎(chǔ)。CORDIC算法作為逐位迭代法中的經(jīng)典算法,僅需要加法和移位操作即可完成函數(shù)計(jì)算。因此,本文基于CORDIC四步并行迭代算法,完成128位浮點(diǎn)雙曲函數(shù)運(yùn)算單元的硬件建模。
關(guān)鍵詞:雙曲函數(shù)? 超越函數(shù)? CORDIC算法
一、引言
近五年來,中國的集成電路(Integrated Circuit,IC)業(yè)在國家政策的有力支持和市場(chǎng)需求的快速提振下取得了快速發(fā)展,其整體技術(shù)水平和市場(chǎng)規(guī)模在不斷地增長。隨著人工智能、5G、智慧城市等概念的提出和蓬勃發(fā)展,IC業(yè)逐步成為國內(nèi)信息技術(shù)產(chǎn)業(yè)的重要支撐和安全核心。然而,作為全世界IC產(chǎn)業(yè)消費(fèi)占比約1/3的市場(chǎng)國,中國本國的IC產(chǎn)值全球占比不足7.5%。細(xì)分至芯片設(shè)計(jì)產(chǎn)業(yè),我國的通信芯片、LED芯片等雖已有一定的市場(chǎng)規(guī)模,但高端芯片市場(chǎng)迫切需要打破瓶頸。
在能源勘測(cè)、游戲渲染、氣象學(xué)和海洋學(xué)、金融保險(xiǎn)、計(jì)算機(jī)輔助設(shè)計(jì)等領(lǐng)域中,需要大量三角函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)、雙曲函數(shù)等超越函數(shù)的計(jì)算。在科學(xué)計(jì)算中,雙曲函數(shù)在信號(hào)處理、電力傳輸、航空航天、統(tǒng)計(jì)學(xué)等工程領(lǐng)域,有著廣泛的應(yīng)用。對(duì)于實(shí)時(shí)處理要求高的領(lǐng)域,比如通信、測(cè)繪等,高速度、高精度的雙曲函數(shù)具有重要作用。早期的計(jì)算大多借助于軟件來實(shí)現(xiàn),往往需要頻繁調(diào)用浮點(diǎn)運(yùn)算子程序庫,這樣顯然降低了運(yùn)算的速度,在進(jìn)行高精度運(yùn)算時(shí)速度甚至更低。直到近十年,由于硬件實(shí)現(xiàn)函數(shù)的計(jì)算性能優(yōu)于軟件,硬件實(shí)現(xiàn)才獲得重視。
二、雙曲函數(shù)硬件實(shí)現(xiàn)算法研究
通常,雙曲函數(shù)的運(yùn)算只由軟件實(shí)現(xiàn),直到最近的十幾年,隨著生產(chǎn)工藝的升級(jí)迭代,使用硬件實(shí)現(xiàn)浮點(diǎn)雙曲函數(shù)計(jì)算的性能逐漸優(yōu)于使用軟件的實(shí)現(xiàn)方式。諸多文獻(xiàn)都提出了雙曲函數(shù)的硬件實(shí)現(xiàn),其中典型的方法包括查表法、多項(xiàng)式逼近法和CORDIC算法。近年來,隨機(jī)計(jì)算法也引起了廣泛的關(guān)注。以上的方法都有其優(yōu)缺點(diǎn),使用時(shí)性能側(cè)重點(diǎn)也不一致。
通過對(duì)超越函數(shù)計(jì)算方法的分析和比較可知,若采用查表法,則需要至少一個(gè)2n× n位的ROM表,隨著n的增大,硬件資源的消耗劇增。多項(xiàng)式逼近法和基于查找表的多項(xiàng)式逼近法適用于小范圍小輸入數(shù)值的計(jì)算,當(dāng)輸入接近某些值時(shí),雙曲函數(shù)的計(jì)算誤差將會(huì)變大;此外,由于多項(xiàng)式逼近法中有大量的乘法操作,用該方法計(jì)算雙曲函數(shù)時(shí)將難以達(dá)到高精度的要求。而隨機(jī)計(jì)算法在計(jì)算精度和計(jì)算速度這兩大要求的限制下也不宜使用。相對(duì)于這些算法來說,從算法精度和復(fù)雜度上考慮,基本CORDIC算法均非常具有優(yōu)勢(shì)。
為了大幅提高計(jì)算的效率,基于雙步CORDIC算法,本文采用了CORDIC四步并行迭代算法,用于雙曲函數(shù)的計(jì)算。CORDIC四步并行迭代算法在一個(gè)時(shí)鐘周期內(nèi)合并四個(gè)連續(xù)時(shí)鐘周期的單步迭代計(jì)算,即在一個(gè)時(shí)鐘周期內(nèi)得到4位位寬的有效計(jì)算結(jié)果。該算法的關(guān)鍵是在一個(gè)時(shí)鐘周期內(nèi)預(yù)測(cè)后四個(gè)連續(xù)時(shí)鐘周期的判決因子ε的值。因此,該算法可以大幅減少基本CORDIC算法逐位迭代中的時(shí)延,將計(jì)算效率提升至四倍左右。其示意圖如圖1所示:
雙曲函數(shù)的計(jì)算建立在CORDIC算法的雙曲坐標(biāo)系,下面將根據(jù)雙曲坐標(biāo)系的迭代公式進(jìn)行CORDIC四步并行迭代算法的迭代式推導(dǎo)。首先,對(duì)于X通道分量,公式推導(dǎo)如下:
三、浮點(diǎn)雙曲函數(shù)運(yùn)算硬件單元的體系結(jié)構(gòu)設(shè)計(jì)
在科學(xué)計(jì)算和工程設(shè)計(jì)中,雙曲線函數(shù)的浮點(diǎn)運(yùn)算占有重要的地位。同時(shí),由于對(duì)計(jì)算速度和精度的要求不斷改進(jìn),專用的FPU通常用于執(zhí)行浮點(diǎn)運(yùn)算。隨著集成電路的快速發(fā)展,半導(dǎo)體工藝水平的不斷提高,芯片集成程度大幅提高。通過犧牲一部分面積,可以實(shí)現(xiàn)高精度高速浮點(diǎn)運(yùn)算的要求。本章設(shè)計(jì)和優(yōu)化浮點(diǎn)計(jì)算單元的整體硬件架構(gòu),使用Verilog硬件語言實(shí)現(xiàn)雙曲函數(shù)浮點(diǎn)計(jì)算單元。
表1列出了滿足科學(xué)計(jì)算高精度要求的一些基本浮點(diǎn)數(shù)據(jù)格式和相關(guān)參數(shù)。本文使用表3-1中的128位浮點(diǎn)數(shù)據(jù)來計(jì)算雙曲函數(shù)。128位浮點(diǎn)數(shù)據(jù)包括1位符號(hào)位S、15位指數(shù)位E和112位尾數(shù)位T。
根據(jù)對(duì)IEEE-754標(biāo)準(zhǔn)浮點(diǎn)數(shù)和CORDIC四步并行迭代算法原理的分析,雙曲系浮點(diǎn)運(yùn)算硬件單元包括預(yù)處理模塊、CORDIC定點(diǎn)運(yùn)算模塊、后處理模塊。根據(jù)雙曲函數(shù)6個(gè)函數(shù)的定義式,將這6個(gè)函數(shù)分為3個(gè)總設(shè)計(jì)來實(shí)現(xiàn),分別是sinh_cosh_tanh函數(shù)設(shè)計(jì),arcsinh_arccosh函數(shù)設(shè)計(jì)和arctanh函數(shù)設(shè)計(jì)。
頂層結(jié)構(gòu)表明了本設(shè)計(jì)在進(jìn)行雙曲系函數(shù)的計(jì)算時(shí),首先,對(duì)輸入浮點(diǎn)數(shù)據(jù)進(jìn)行一定的預(yù)處理,接著,將預(yù)處理的結(jié)果輸入到CORDIC定點(diǎn)運(yùn)算模塊中進(jìn)行迭代計(jì)算,最后,將迭代計(jì)算的輸出數(shù)據(jù)傳入到后處理模塊完成標(biāo)準(zhǔn)浮點(diǎn)數(shù)規(guī)則化。
CORDIC定點(diǎn)運(yùn)算模塊是設(shè)計(jì)的核心模塊,主要包括X通道、Y通道和Z通道的四步并行迭代模塊。
浮點(diǎn)規(guī)則化模塊將CORDIC定點(diǎn)運(yùn)算模塊的運(yùn)算結(jié)果轉(zhuǎn)換成符合IEEE754浮點(diǎn)格式標(biāo)準(zhǔn)的數(shù)據(jù),最終輸出雙曲系函數(shù)的128位浮點(diǎn)數(shù)值sinh_result、cosh_result、tanh_result、asinh_result、acosh_result和atanh_result。
四、浮點(diǎn)雙曲函數(shù)運(yùn)算硬件單元驗(yàn)證與比較
隨著芯片系統(tǒng)的日益復(fù)雜,在硬件設(shè)計(jì)中,仿真驗(yàn)證已經(jīng)成為非常重要的環(huán)節(jié)。本文使用Verilog語言對(duì)雙曲函數(shù)浮點(diǎn)運(yùn)算硬件單元中的各個(gè)模塊進(jìn)行RTL級(jí)建模,整合成3大頂層模塊,用于計(jì)算6個(gè)雙曲函數(shù)。利用Python的bigfloat函數(shù)運(yùn)算庫生成仿真數(shù)據(jù)集,在仿真工具M(jìn)odelSim平臺(tái)上對(duì)雙曲函數(shù)浮點(diǎn)運(yùn)算硬件單元中的重要模塊和整體電路進(jìn)行測(cè)試,然后將Python中的理想值與基于RTL設(shè)計(jì)的結(jié)果進(jìn)行對(duì)比,最后基于TSMC 65 nm工藝,使用Synopsys 綜合工具Design Compiler完成雙曲函數(shù)浮點(diǎn)運(yùn)算硬件單元的邏輯綜合。
經(jīng)過仿真驗(yàn)證后,利用Synopsys公司的設(shè)計(jì)工具在TSMC 65nm工藝下完成了DC綜合,最終得到雙曲函數(shù)運(yùn)算單元的硬件面積和速度等綜合結(jié)果。
綜合結(jié)果如表2所示,從表中數(shù)據(jù)可知,本文提出的浮點(diǎn)雙曲函數(shù)運(yùn)算單元以面積換速度的策略實(shí)現(xiàn)高運(yùn)算效率,同時(shí)保證精度達(dá)到設(shè)計(jì)要求。
由DC綜合結(jié)果可知,本文提出的浮點(diǎn)雙曲函數(shù)運(yùn)算單元中CORDIC定點(diǎn)運(yùn)算模塊占據(jù)了大多數(shù)電路面積,因此,若需要進(jìn)一步的優(yōu)化,優(yōu)先可對(duì)其作設(shè)計(jì)優(yōu)化,以最大程度減少電路面積、降低電路功耗和提高運(yùn)算性能。
五、總結(jié)
隨著天體物理和天氣及圖像數(shù)據(jù)的高精度需求的增加,同時(shí),隨著人們對(duì)實(shí)時(shí)信息處理的要求不斷提高,提升運(yùn)算單元計(jì)算效率是十分有必要的。本文提出基于函數(shù)化的思想設(shè)計(jì)了128位的高精度浮點(diǎn)雙曲函數(shù)的硬件電路。該電路不僅針對(duì)傳統(tǒng)的CORDIC迭代算法進(jìn)行了改善,同時(shí)在硬件結(jié)構(gòu)中設(shè)計(jì)出并行的硬件結(jié)構(gòu),將時(shí)鐘周期算短至41個(gè),極大地提高了運(yùn)算效率,減少了輸入到輸出的電路延時(shí)。后續(xù)進(jìn)一步改進(jìn)預(yù)測(cè)-修正算法,通過硬件模塊復(fù)用以及割集重定時(shí)技術(shù)減少整體電路面積、功耗和關(guān)鍵路徑的延時(shí)。
參考文獻(xiàn)
[1]馬群生,溫東嬋,仇玉章,唐瑞春.微計(jì)算機(jī)技術(shù)[M].北京:清華大學(xué)出版社,2006:64-68.
[2]崔林海,張子迎,姜占鵬,郭鑫.計(jì)算機(jī)組成原理與結(jié)構(gòu)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2015:236-237.
[3]侯力秩.DSP中的浮點(diǎn)與定點(diǎn)比較[J].通信電源技術(shù),2020,37(01):105-106.
[4]韓山秀.浮點(diǎn)三角類超越函數(shù)的算法研究及硬件實(shí)現(xiàn)[D].西北工業(yè)大學(xué),2006.
[5]Muller,J.M.Elementary Functions:Algorithms and Implementations,2nd ed.;Birkhauser:Basel,Swit-zerland,2006.
[6]Parhami,B.Computer Arithmetic:Algorithms and Hardware Designs;Oxford University Press:Oxford,UK,1999.
基金項(xiàng)目:
1:深圳市科技計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):JCYJ20180307123857045)
2:廣東省教育廳科技項(xiàng)目(項(xiàng)目編號(hào):2019GKQNCX122)
3:校級(jí)科研項(xiàng)目(項(xiàng)目編號(hào):SZIIT2019KJ026)