劉明 傅文佳




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