(中國電子科技集團(tuán)公司第三十八研究所,安徽合肥230088)
在雷達(dá)陣列信號處理算法中,很多計(jì)算權(quán)系數(shù)的過程中都要用到自相關(guān)矩陣的求逆[1],但是由于自相關(guān)矩陣具有較大的條件數(shù),為了保證求逆過程的準(zhǔn)確性,必須要求自相關(guān)矩陣具有較高的精度[2]?,F(xiàn)階段32位單浮點(diǎn)精度無法滿足自相關(guān)浮點(diǎn)矩陣的精度要求,因此本文基于國產(chǎn)“魂芯一號”DSP(簡稱BWDSP100)的指令系統(tǒng),提出了一種自適應(yīng)截位的浮點(diǎn)復(fù)數(shù)矩陣乘法,將浮點(diǎn)數(shù)據(jù)以最大值為基準(zhǔn)擴(kuò)位成定點(diǎn)數(shù)據(jù),采用BWDSP100指令集中的72位定點(diǎn)乘累加器,將乘累加后的結(jié)果通過自適應(yīng)截位處理,并對獲取浮點(diǎn)數(shù)據(jù)的指數(shù)位進(jìn)行調(diào)整,使得最終獲取的結(jié)果最大程度地保留小數(shù)精度,減少截位過程的誤差影響。
本文使用BWDSP100作為實(shí)現(xiàn)平臺,BWDSP100是由中國電子科技集團(tuán)公司第三十八研究所研制,可廣泛運(yùn)用于各種高性能計(jì)算領(lǐng)域,如雷達(dá)、電子對抗、精確制導(dǎo)、通信保障、圖像處理等信號處理領(lǐng)域。作為BWDSP系列的第一款產(chǎn)品,BWDSP100是一款32位浮點(diǎn)DSP,同時兼容16位和32位定點(diǎn)數(shù)據(jù)格式,采用VLIW架構(gòu),具有強(qiáng)大的并行處理能力,能較好地滿足高速實(shí)時信號處理的應(yīng)用要求[3]。
對于雷達(dá)信號處理中的自相關(guān)矩陣而言,在求取過程中R=A?A′,其核心運(yùn)算由大量的浮點(diǎn)乘累加運(yùn)算構(gòu)成。而根據(jù)IEEE標(biāo)準(zhǔn)754/854,如圖1所示,32位單精度浮點(diǎn)格式包含一個符號位s、一個24位的尾數(shù)和8位無符號量指數(shù)e[4]。
對于原始矩陣的數(shù)據(jù),當(dāng)其動態(tài)范圍較大時,在進(jìn)行乘累加運(yùn)算的過程中,有可能導(dǎo)致個別數(shù)據(jù)的小數(shù)位被舍棄,最終導(dǎo)致誤差結(jié)果的累積。
同時,普通的浮點(diǎn)乘法運(yùn)算存在截位舍去問題。在進(jìn)行32位浮點(diǎn)乘法運(yùn)算過程中,其運(yùn)算過程如圖2所示。
圖2 正常32位浮點(diǎn)運(yùn)算流程
處理器在進(jìn)行32位浮點(diǎn)乘法的過程中,需要對生成的數(shù)據(jù)進(jìn)行截位,從而輸出32位的浮點(diǎn)數(shù)據(jù)結(jié)果,在截位的過程中會導(dǎo)致數(shù)據(jù)的偏差[5]。該誤差在一次的浮點(diǎn)運(yùn)算中沒有明顯的體現(xiàn),但是在工程實(shí)踐中進(jìn)行自相關(guān)復(fù)數(shù)矩陣的運(yùn)算過程中,誤差被累積放大,導(dǎo)致后續(xù)運(yùn)算無法進(jìn)行。
為了在最大程度上保留浮點(diǎn)的運(yùn)算精度,且充分發(fā)揮BWDSP100指令集中72位定點(diǎn)乘累加器的作用,首先按照一定的規(guī)則將原始浮點(diǎn)數(shù)據(jù)轉(zhuǎn)化為定點(diǎn)數(shù)據(jù)[6],然后采用BWDSP100的指令系統(tǒng)進(jìn)行定點(diǎn)的乘累加運(yùn)算,最后再把求取的定點(diǎn)乘累加結(jié)果轉(zhuǎn)化為所需要的浮點(diǎn)數(shù)據(jù)。其具體的轉(zhuǎn)化步驟如下,流程圖如圖3所示(以矩陣F=[fij]24?80為例)。
算法的具體流程為:
1)對輸入復(fù)數(shù)矩陣,按行不區(qū)分實(shí)虛部取最大值EXP(矩陣EXP=[expij]24?1);
2)以步驟1)中取得的最大值為基準(zhǔn),將浮點(diǎn)數(shù)據(jù)擴(kuò)位為32位定點(diǎn)數(shù)據(jù),此時獲取定點(diǎn)矩陣A(矩陣A=[aij]24?80);
3)在進(jìn)行自適應(yīng)相關(guān)矩陣運(yùn)算時,需要對復(fù)數(shù)矩陣進(jìn)行共軛轉(zhuǎn)置,即得到矩陣B(矩陣B=[bij]80?24);
4)對于矩陣乘法而言,由于是A?B,因此要進(jìn)行576(即24?24)次乘累加運(yùn)算。對于BWDSP100的指令系統(tǒng),采用72位乘累加器MACC進(jìn)行上述乘累加運(yùn)算,獲取MACC的值;
5)對于每次獲取的72位MACC,從最高位開始判斷符號位的位數(shù),然后從符號位開始截32位,最大程度保留運(yùn)算過程的低位數(shù)據(jù);
6)將截取的32位定點(diǎn)數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn),然后根據(jù)數(shù)據(jù)截位以及原始擴(kuò)位的位數(shù),對浮點(diǎn)數(shù)據(jù)的指數(shù)位進(jìn)行修正,得到結(jié)果CO(矩陣CO=[coij]24?24)。
圖3 浮點(diǎn)轉(zhuǎn)定點(diǎn)矩陣乘法的流程圖
對于上述算法流程而言,在最大程度上保留計(jì)算精度的前提下,如何將72位乘累加器中的結(jié)果通過BWDSP100指令系統(tǒng)轉(zhuǎn)化為32位浮點(diǎn)數(shù)據(jù)是本文的關(guān)鍵。
對于一個BWDSP100中的72位乘累加器而言,其具體的表示如圖4所示[7]。
圖4 72位定點(diǎn)乘累加器MACC的數(shù)據(jù)表示
如圖4所示,由于MACC是由若干個32位定點(diǎn)數(shù)(其中最大值為滿32位)進(jìn)行乘累加運(yùn)算而得到,故X表示的位數(shù)一定介于63~71之間,為了從中截取32位數(shù)據(jù)長度且最大程度的保留精度,因此需要將其中的[X-32∶X]位截取出來,這就需要對X的位數(shù)進(jìn)行判斷獲取,然后基于BWDSP100的指令系統(tǒng),進(jìn)行具體的截取操作。下面是處理的主要流程:
1)由于數(shù)據(jù)符號位的判斷需要在寄存器堆中進(jìn)行,因此需要將72位的MACC數(shù)據(jù)放置到若干寄存器中。為了簡化運(yùn)算,降低8位截掉,只將MACC中[71∶40]與[39∶8]分別放置到兩個寄存器中去,如圖5所示。
圖5 將MACC通過截位放置到寄存器中
在截位的過程中,需要對數(shù)據(jù)進(jìn)行四舍五入處理。當(dāng)截掉的最高位為1時,則在保留的最低位上加上1,減少截位誤差的影響。
2)現(xiàn)在要從64位數(shù)據(jù)中截取32位數(shù)據(jù)以最大程度地保留精度,因此要判斷其最高的有效位在多少位,如圖5中X的取值。
基于BWDSP100指令集中的pos1指令,該指令給出寄存器中1對應(yīng)的最高位置,根據(jù)該位置,高32位寄存器左移相應(yīng)位數(shù),低32位右移相應(yīng)位數(shù)(均是邏輯移位),然后再進(jìn)行“與”操作。
3)最后將定點(diǎn)數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn),并對浮點(diǎn)數(shù)據(jù)的指數(shù)位進(jìn)行相關(guān)調(diào)整,一方面考慮最初浮點(diǎn)轉(zhuǎn)定點(diǎn)的擴(kuò)展位數(shù),還要考慮MACC的截位以及步驟2)中的移位,根據(jù)BWDSP100指令集中的exp與fext指令對其指數(shù)位進(jìn)行調(diào)整。
根據(jù)上述步驟,能夠在最大程度上保留乘累加過程中的尾數(shù)部分,防止由于數(shù)據(jù)截位導(dǎo)致的誤差,其具體的流程圖如圖6所示。
圖6 乘累加器MACC的自適應(yīng)截位流程示意圖
采用若干組實(shí)際的某型號雷達(dá)波束數(shù)據(jù)經(jīng)過FFT運(yùn)算后形成的復(fù)數(shù)矩陣進(jìn)行測試,分別采用TS201的浮點(diǎn)復(fù)數(shù)矩陣乘法、BWDSP100的浮點(diǎn)復(fù)數(shù)乘法和本文算法進(jìn)行計(jì)算,并將結(jié)果與MATLAB計(jì)算的標(biāo)準(zhǔn)結(jié)果進(jìn)行對比,如表1所示。
表1 不同算法數(shù)據(jù)與標(biāo)準(zhǔn)MATLAB的誤差和方差分布
根據(jù)表1中的誤差對比可以看出,本文算法在整體上能夠有效提高運(yùn)算精度,與BWDSP100的浮點(diǎn)算法相比能夠提高一個數(shù)量級,與TS201的浮點(diǎn)算法相比甚至能夠提高兩個數(shù)量級,同時在誤差分布上也具有很大的優(yōu)勢。選取其中兩組數(shù)據(jù)繪制三維分布圖能夠更加明顯地看到上述結(jié)論,如圖7、圖8所示。
圖7 第1組數(shù)據(jù)的相對誤差分布圖
目前浮點(diǎn)算法運(yùn)算精度上的不足,導(dǎo)致部分需要高精度浮點(diǎn)運(yùn)算結(jié)果的算法無法實(shí)現(xiàn)。本文在BWDSP100指令系統(tǒng)的基礎(chǔ)上,提出了一種自適應(yīng)截位的浮點(diǎn)轉(zhuǎn)定點(diǎn)浮點(diǎn)復(fù)數(shù)乘法的新算法。仿真結(jié)果表明,本文提出的新算法能夠有效提高浮點(diǎn)運(yùn)算的精度,降低誤差分布,與普通的浮點(diǎn)算法相比具有較明顯的優(yōu)勢。最終應(yīng)用到某型號雷達(dá)中,其檢測效果實(shí)現(xiàn)了明顯提高。
[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.雷達(dá)系統(tǒng)導(dǎo)論[M].3版.左群聲,徐國良,馬林,等譯.北京:電子工業(yè)出版社,2006:56-62.
[3]中國電子科技集團(tuán)公司第三十八研究所.BWDSP100軟件用戶手冊[M].合肥:中國電子科技集團(tuán)公司第三十八研究所,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]史鴻聲,穆文爭,劉麗.基于“魂芯一號”的雷達(dá)信號處理機(jī)設(shè)計(jì)[J].雷達(dá)科學(xué)與技術(shù),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]黎淵,蔣江,張選民,等.基于模擬退火算法的浮點(diǎn)轉(zhuǎn)定點(diǎn)自動位寬優(yōu)化工具[J].上海交通大學(xué)學(xué)報(bào),2013,47(1):76-85.
[7]龔曉華,郭二輝,劉小明.BWDSP100高速鏈路口模塊的設(shè)計(jì)[J].中國集成電路,2012(3):60-64.