?

基于“魂芯一號”的自適應截位浮點乘法實現?

2015-01-22 10:19
雷達科學與技術 2015年3期
關鍵詞:浮點定點乘法

(中國電子科技集團公司第三十八研究所,安徽合肥230088)

0 引言

在雷達陣列信號處理算法中,很多計算權系數的過程中都要用到自相關矩陣的求逆[1],但是由于自相關矩陣具有較大的條件數,為了保證求逆過程的準確性,必須要求自相關矩陣具有較高的精度[2]?,F階段32位單浮點精度無法滿足自相關浮點矩陣的精度要求,因此本文基于國產“魂芯一號”DSP(簡稱BWDSP100)的指令系統,提出了一種自適應截位的浮點復數矩陣乘法,將浮點數據以最大值為基準擴位成定點數據,采用BWDSP100指令集中的72位定點乘累加器,將乘累加后的結果通過自適應截位處理,并對獲取浮點數據的指數位進行調整,使得最終獲取的結果最大程度地保留小數精度,減少截位過程的誤差影響。

本文使用BWDSP100作為實現平臺,BWDSP100是由中國電子科技集團公司第三十八研究所研制,可廣泛運用于各種高性能計算領域,如雷達、電子對抗、精確制導、通信保障、圖像處理等信號處理領域。作為BWDSP系列的第一款產品,BWDSP100是一款32位浮點DSP,同時兼容16位和32位定點數據格式,采用VLIW架構,具有強大的并行處理能力,能較好地滿足高速實時信號處理的應用要求[3]。

1 算法的實現流程

1.1 單精度浮點算法存在的問題

對于雷達信號處理中的自相關矩陣而言,在求取過程中R=A?A′,其核心運算由大量的浮點乘累加運算構成。而根據IEEE標準754/854,如圖1所示,32位單精度浮點格式包含一個符號位s、一個24位的尾數和8位無符號量指數e[4]。

對于原始矩陣的數據,當其動態范圍較大時,在進行乘累加運算的過程中,有可能導致個別數據的小數位被舍棄,最終導致誤差結果的累積。

同時,普通的浮點乘法運算存在截位舍去問題。在進行32位浮點乘法運算過程中,其運算過程如圖2所示。

圖2 正常32位浮點運算流程

處理器在進行32位浮點乘法的過程中,需要對生成的數據進行截位,從而輸出32位的浮點數據結果,在截位的過程中會導致數據的偏差[5]。該誤差在一次的浮點運算中沒有明顯的體現,但是在工程實踐中進行自相關復數矩陣的運算過程中,誤差被累積放大,導致后續運算無法進行。

1.2 本文算法的實現

為了在最大程度上保留浮點的運算精度,且充分發揮BWDSP100指令集中72位定點乘累加器的作用,首先按照一定的規則將原始浮點數據轉化為定點數據[6],然后采用BWDSP100的指令系統進行定點的乘累加運算,最后再把求取的定點乘累加結果轉化為所需要的浮點數據。其具體的轉化步驟如下,流程圖如圖3所示(以矩陣F=[fij]24?80為例)。

算法的具體流程為:

1)對輸入復數矩陣,按行不區分實虛部取最大值EXP(矩陣EXP=[expij]24?1);

2)以步驟1)中取得的最大值為基準,將浮點數據擴位為32位定點數據,此時獲取定點矩陣A(矩陣A=[aij]24?80);

3)在進行自適應相關矩陣運算時,需要對復數矩陣進行共軛轉置,即得到矩陣B(矩陣B=[bij]80?24);

4)對于矩陣乘法而言,由于是A?B,因此要進行576(即24?24)次乘累加運算。對于BWDSP100的指令系統,采用72位乘累加器MACC進行上述乘累加運算,獲取MACC的值;

5)對于每次獲取的72位MACC,從最高位開始判斷符號位的位數,然后從符號位開始截32位,最大程度保留運算過程的低位數據;

6)將截取的32位定點數據轉化為浮點,然后根據數據截位以及原始擴位的位數,對浮點數據的指數位進行修正,得到結果CO(矩陣CO=[coij]24?24)。

圖3 浮點轉定點矩陣乘法的流程圖

1.3 自適應截位處理

對于上述算法流程而言,在最大程度上保留計算精度的前提下,如何將72位乘累加器中的結果通過BWDSP100指令系統轉化為32位浮點數據是本文的關鍵。

對于一個BWDSP100中的72位乘累加器而言,其具體的表示如圖4所示[7]。

圖4 72位定點乘累加器MACC的數據表示

如圖4所示,由于MACC是由若干個32位定點數(其中最大值為滿32位)進行乘累加運算而得到,故X表示的位數一定介于63~71之間,為了從中截取32位數據長度且最大程度的保留精度,因此需要將其中的[X-32∶X]位截取出來,這就需要對X的位數進行判斷獲取,然后基于BWDSP100的指令系統,進行具體的截取操作。下面是處理的主要流程:

1)由于數據符號位的判斷需要在寄存器堆中進行,因此需要將72位的MACC數據放置到若干寄存器中。為了簡化運算,降低8位截掉,只將MACC中[71∶40]與[39∶8]分別放置到兩個寄存器中去,如圖5所示。

圖5 將MACC通過截位放置到寄存器中

在截位的過程中,需要對數據進行四舍五入處理。當截掉的最高位為1時,則在保留的最低位上加上1,減少截位誤差的影響。

2)現在要從64位數據中截取32位數據以最大程度地保留精度,因此要判斷其最高的有效位在多少位,如圖5中X的取值。

基于BWDSP100指令集中的pos1指令,該指令給出寄存器中1對應的最高位置,根據該位置,高32位寄存器左移相應位數,低32位右移相應位數(均是邏輯移位),然后再進行“與”操作。

3)最后將定點數據轉化為浮點,并對浮點數據的指數位進行相關調整,一方面考慮最初浮點轉定點的擴展位數,還要考慮MACC的截位以及步驟2)中的移位,根據BWDSP100指令集中的exp與fext指令對其指數位進行調整。

根據上述步驟,能夠在最大程度上保留乘累加過程中的尾數部分,防止由于數據截位導致的誤差,其具體的流程圖如圖6所示。

圖6 乘累加器MACC的自適應截位流程示意圖

2 實驗結果

采用若干組實際的某型號雷達波束數據經過FFT運算后形成的復數矩陣進行測試,分別采用TS201的浮點復數矩陣乘法、BWDSP100的浮點復數乘法和本文算法進行計算,并將結果與MATLAB計算的標準結果進行對比,如表1所示。

表1 不同算法數據與標準MATLAB的誤差和方差分布

根據表1中的誤差對比可以看出,本文算法在整體上能夠有效提高運算精度,與BWDSP100的浮點算法相比能夠提高一個數量級,與TS201的浮點算法相比甚至能夠提高兩個數量級,同時在誤差分布上也具有很大的優勢。選取其中兩組數據繪制三維分布圖能夠更加明顯地看到上述結論,如圖7、圖8所示。

圖7 第1組數據的相對誤差分布圖

3 結束語

目前浮點算法運算精度上的不足,導致部分需要高精度浮點運算結果的算法無法實現。本文在BWDSP100指令系統的基礎上,提出了一種自適應截位的浮點轉定點浮點復數乘法的新算法。仿真結果表明,本文提出的新算法能夠有效提高浮點運算的精度,降低誤差分布,與普通的浮點算法相比具有較明顯的優勢。最終應用到某型號雷達中,其檢測效果實現了明顯提高。

[1]ELGAMEL S A,SORAGHAN J J.Enhanced Monopulse Radar Tracking Using Filtering in Fractional Fourier Domain[C]∥2010 IEEE International Radar Conference,[S.l.]:[s.n.],2010:247-250.

[2]SKOLNIK M I.雷達系統導論[M].3版.左群聲,徐國良,馬林,等譯.北京:電子工業出版社,2006:56-62.

[3]中國電子科技集團公司第三十八研究所.BWDSP100軟件用戶手冊[M].合肥:中國電子科技集團公司第三十八研究所,2011.

[4]ARANDI S,EVRIPIDOU P.Programming Multi-Core Architectures Using Data-Flow Techniques[C]∥2010 International Conference on Embedded Computer Systems,Samos:IEEE,2010:152-161.

[5]史鴻聲,穆文爭,劉麗.基于“魂芯一號”的雷達信號處理機設計[J].雷達科學與技術,2012,10(2):161-164.SHI Hong-sheng,MU Wen-zheng,LIU Li.Design of Radar Signal Processor Based on HunXin-1 Chip[J].Radar Science and Technology,2012,10(2):161-164.(in Chinese)

[6]黎淵,蔣江,張選民,等.基于模擬退火算法的浮點轉定點自動位寬優化工具[J].上海交通大學學報,2013,47(1):76-85.

[7]龔曉華,郭二輝,劉小明.BWDSP100高速鏈路口模塊的設計[J].中國集成電路,2012(3):60-64.

猜你喜歡
浮點定點乘法
算乘法
例談圓錐曲線中的定點定值問題
LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
定點幫扶讓村民過上美好生活
解析幾何中定點問題的處理策略
我們一起來學習“乘法的初步認識”
基線長度和俯仰角約束條件下的模糊度浮點解求解及仿真實現
直線過定點的5種特優解法
《整式的乘法與因式分解》鞏固練習
基于Simulink浮點模型和定點模型的問題研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合