張 越,馬艷艷
(中國船舶集團(tuán)有限公司第七二三研究所,江蘇 揚(yáng)州 225101)
近年來,雷達(dá)技術(shù)呈現(xiàn)發(fā)展速度快、愈趨復(fù)雜的特點(diǎn),大量新技術(shù),比如認(rèn)知雷達(dá)、智能化信號(hào)處理算法等有待快速地在實(shí)際應(yīng)用中去驗(yàn)證,這就需要雷達(dá)開發(fā)滿足新的要求:
(1) 具備新的算法快速嵌入、功能快速集成、資源快速配置的能力;
(2) 功能算法可以分解復(fù)用和繼承,具備標(biāo)準(zhǔn)化、通用化開發(fā)流程,以提高效率[1]。
傳統(tǒng)的雷達(dá)信號(hào)處理算法都是基于數(shù)字信號(hào)處理(DSP)+現(xiàn)場可編程門陣列(FPGA)的硬件平臺(tái)實(shí)現(xiàn),這種方案運(yùn)算效率和精度高,適合實(shí)時(shí)性要求高的雷達(dá)信號(hào)處理,但是其軟件和硬件耦合緊密、程序移植性差并且開發(fā)周期長的缺點(diǎn)不滿足當(dāng)前的算法快速嵌入驗(yàn)證和算法代碼通用化的需求。
現(xiàn)階段,國內(nèi)外都開展了軟件化雷達(dá)的相關(guān)研究和應(yīng)用,其中利用通用中央處理器(CPU)進(jìn)行軟件化雷達(dá)的研究尤為重要。基于通用處理器平臺(tái),可以軟件的方式完成雷達(dá)實(shí)時(shí)信號(hào)處理,基于標(biāo)準(zhǔn)化通用接口,實(shí)現(xiàn)軟件算法與硬件的解耦,以實(shí)現(xiàn)算法代碼在不同處理器平臺(tái)上的復(fù)用移植。
本文針對(duì)現(xiàn)階段軟件化雷達(dá)發(fā)展需要,在飛騰處理器下開展了雷達(dá)信號(hào)處理算法的研究和實(shí)現(xiàn)。針對(duì)飛騰處理器的特點(diǎn)進(jìn)行了雷達(dá)算法組件的相關(guān)設(shè)計(jì),選取雷達(dá)信號(hào)處理中典型的處理算法——自適應(yīng)副瓣對(duì)消算法和動(dòng)目標(biāo)檢測,來進(jìn)行算法實(shí)現(xiàn)及驗(yàn)證。
相較于以往的軟件設(shè)計(jì),軟件化雷達(dá)設(shè)計(jì)的最大特點(diǎn)就是實(shí)現(xiàn)了軟硬件解耦、組件化設(shè)計(jì)。其依賴于通用化、標(biāo)準(zhǔn)化和可擴(kuò)展性的處理器硬件平臺(tái),通過軟件編程實(shí)現(xiàn)具體算法功能。其中,通用化接口和中間件技術(shù)是實(shí)現(xiàn)軟硬件解耦的關(guān)鍵,中間件一般包含通信中間件和計(jì)算中間件。計(jì)算中間件的功能是將與操作系統(tǒng)和計(jì)算相關(guān)的接口統(tǒng)一封裝并形成標(biāo)準(zhǔn),以簡化跨平臺(tái)軟硬件的開發(fā),統(tǒng)一軟件接口[2]。本文使用矢量信號(hào)圖像處理庫(VSIPL)函數(shù)接口作為計(jì)算中間件,該接口包含了以下內(nèi)容:(1)標(biāo)量數(shù)學(xué)函數(shù)及數(shù)據(jù)索引函數(shù);(2)隨機(jī)數(shù)產(chǎn)生函數(shù);(3)實(shí)數(shù)、復(fù)數(shù)基礎(chǔ)向量運(yùn)算函數(shù);(4)信號(hào)處理函數(shù);(5)矩陣運(yùn)算及線性系統(tǒng)求解函數(shù)等。其基本滿足雷達(dá)后端處理(主要是包含向量運(yùn)算的信號(hào)處理和成像處理算法)的需求。使用統(tǒng)一的規(guī)范進(jìn)行算法編寫,實(shí)現(xiàn)了對(duì)計(jì)算平臺(tái)的屏蔽,設(shè)計(jì)接口簡潔明了,提高了算法開發(fā)人員的開發(fā)效率,并且易于形成統(tǒng)一的算法組件。
常規(guī)雷達(dá)信號(hào)處理算法包含空域?yàn)V波、快時(shí)間域?yàn)V波和慢時(shí)間域?yàn)V波,干擾抑制,目標(biāo)檢測和目標(biāo)識(shí)別算法。信號(hào)處理可劃分為很多功能組件,包括脈沖壓縮、動(dòng)目標(biāo)檢測/動(dòng)目標(biāo)指示(MTD/MTI)、副瓣抑制、抗異步干擾、恒虛警等。雷達(dá)信號(hào)處理軟件化,即需要將信號(hào)處理算法分解成獨(dú)立和具有固定功能的組件,并可配置屬性以滿足不同應(yīng)用的需求,組件之間設(shè)計(jì)為標(biāo)準(zhǔn)的輸入輸出接口,采用統(tǒng)一的數(shù)據(jù)類型和數(shù)據(jù)流的模式進(jìn)行數(shù)據(jù)傳輸。
作為國產(chǎn)化系列的CPU,飛騰系列CPU具有譜系全、性能高、生態(tài)完善、自主化程度高的特點(diǎn)。而眾多系列中,FT-2000+在單核計(jì)算能力、單芯片并行性能、訪存帶寬等方面都處于國際先進(jìn)水平,本文的算法在FT-2000+的VPX高性能計(jì)算刀片上進(jìn)行實(shí)現(xiàn)。
FT2000+計(jì)算刀片上的處理器芯片集成了64個(gè)兼容ARMv8指令集的內(nèi)核FTC662,核心時(shí)鐘頻率最高2.2 GHz。FT2000+處理器采用非一致性內(nèi)存訪問架構(gòu)(NUMA),每8個(gè)處理器核心劃分為一個(gè)節(jié)點(diǎn)。其包含8個(gè)DDR4接口,2個(gè)x16和1個(gè)x1PCIe3,0接口[3]。基于ARM V8架構(gòu),其支持針對(duì)浮點(diǎn)FPU的VFP硬件擴(kuò)展和NEON advanced SIMD技術(shù),本文將在第3節(jié)利用這一技術(shù)對(duì)雷達(dá)信號(hào)處理算法進(jìn)行實(shí)時(shí)性優(yōu)化。另外,采用多核處理器,實(shí)現(xiàn)組件的多線程并行計(jì)算,利用線程池技術(shù)增加處理的實(shí)時(shí)性。可以說,FT2000+適合具有高實(shí)時(shí)性要求的雷達(dá)信號(hào)處理算法。
雷達(dá)信號(hào)處理算法功能組件往往采用3層封裝的結(jié)構(gòu):通信中間件接口層、緩存空間管理層與核心算法邏輯層[4]。本文主要針對(duì)核心算法邏輯層進(jìn)行相關(guān)算法組件設(shè)計(jì),采用標(biāo)準(zhǔn)VSIPL函數(shù)進(jìn)行向量化運(yùn)算的封裝,選取信號(hào)處理中的自適應(yīng)副瓣對(duì)消(ASLC)和動(dòng)目標(biāo)檢測(MTD)算法進(jìn)行相關(guān)設(shè)計(jì)。
自適應(yīng)副瓣對(duì)消的基本原理是增加一個(gè)輔助天線陣列,主副天線之間需要有較高相關(guān)性,輔助天線數(shù)據(jù)通過最優(yōu)權(quán)求和,使得主天線信號(hào)對(duì)消輔助天線信號(hào)之后信號(hào)功率最小,從而實(shí)現(xiàn)主天線副瓣干擾的對(duì)消功能。
自適應(yīng)副瓣對(duì)消的實(shí)現(xiàn)通常采用開環(huán)算法的形式實(shí)現(xiàn),即利用有限的快拍或樣本點(diǎn)計(jì)算最優(yōu)權(quán)值,基于最小均方誤差準(zhǔn)則,使得對(duì)消輸出信號(hào)的功率最小。假設(shè)主天線的輸入信號(hào)為Y,N個(gè)輔助天線的接收信號(hào)為X1,X2,…,Xn,最優(yōu)權(quán)值為WT=(W1,W1,…,Wn),主通道與輔助通道的互相關(guān)矩陣為RXY=E[XY*],輔助通道間的自相關(guān)矩陣為R=E[XXH],根據(jù)維納-霍夫方程可以得到:RW=RXY,以此可以求得最優(yōu)權(quán)重W=R-1RXY,則對(duì)消剩余信號(hào)為Z=Y-WHX。本文以講述組件構(gòu)成方法,樣本選取采用常規(guī)方法在遠(yuǎn)區(qū)或休止區(qū)選取,如果要考慮主輔通道數(shù)據(jù)關(guān)系選取,則還需要增加求模和比較等操作。
圖1為自適應(yīng)副瓣對(duì)消組件的實(shí)現(xiàn),應(yīng)用的VSIPL接口都在每個(gè)步驟的括號(hào)中給出。

圖1 ASLC組件實(shí)現(xiàn)流程圖
MTD算法被用于進(jìn)行自適應(yīng)雜波抑制。在工程實(shí)現(xiàn)上,為了追求實(shí)時(shí)性,通常采用在慢時(shí)間維上進(jìn)行快速傅里葉變換(FFT),即MTD濾波器組采用FFT濾波器組進(jìn)行,并采用加窗的方式進(jìn)行副瓣抑制。但是這種方式下,雜波區(qū)的阻帶衰減滿足不了當(dāng)前雷達(dá)的指標(biāo)要求,因此需要在通用處理器上實(shí)現(xiàn)有限長單位沖激響應(yīng)(FIR)濾波器組來進(jìn)行濾波,并且在零頻附近設(shè)計(jì)成滿足要求的零陷。很多文獻(xiàn)提出了自己的方法以實(shí)現(xiàn)滿足指標(biāo)的濾波器組,如文獻(xiàn)[5]提出了二階錐規(guī)劃方法設(shè)計(jì)FIR濾波器組。工程上實(shí)現(xiàn)后者,即用每個(gè)快拍的慢時(shí)間維數(shù)據(jù)與每個(gè)濾波器通道進(jìn)行乘加操作,如果將FIR濾波器看做M×K的矩陣A,M為濾波器組的濾波器個(gè)數(shù),K為濾波器長度,將MTD組件的輸入看做一個(gè)K×N的矩陣B,按行連續(xù),K為慢時(shí)間域積累點(diǎn)數(shù),N為快拍數(shù),則MTD即為將矩陣A和矩陣B進(jìn)行復(fù)數(shù)矩陣共軛乘法操作,而后的步驟和使用FFT方法一樣,可采用求模選大的方式。
圖2為MTD組件的實(shí)現(xiàn),VSIPL接口都在每個(gè)步驟的括號(hào)中提出,其中為了追求速度,將矩陣C的內(nèi)存看作矩陣來存放共軛乘的結(jié)果,又看做是一個(gè)向量進(jìn)行求模操作。

圖2 MTD組件實(shí)現(xiàn)流程圖
利用VSIPL標(biāo)準(zhǔn)接口作為計(jì)算中間件,實(shí)現(xiàn)的雷達(dá)信號(hào)處理算法組件才具有可移植性,在不同平臺(tái)下,核心算法邏輯代碼才得以一致。但是為了滿足信號(hào)處理的實(shí)時(shí)性,需要針對(duì)不同的平臺(tái),對(duì)向量運(yùn)算進(jìn)行優(yōu)化。針對(duì)飛騰平臺(tái),本文利用NEON技術(shù)進(jìn)行相關(guān)的運(yùn)算優(yōu)化。
針對(duì)CPU下的計(jì)算優(yōu)化,往往采用單指令多數(shù)據(jù)(SIMD)技術(shù),即使用一條指令來實(shí)現(xiàn)針對(duì)同種數(shù)據(jù)類型和長度的多個(gè)數(shù)據(jù)進(jìn)行并行操作。當(dāng)今處理器引入SIMD技術(shù)的主要有Intel的MMX/SSE,AMD的3D Now!和ARM的NEON等等。NEON高級(jí)單指令多數(shù)據(jù)技術(shù),即NEON指令集,可以實(shí)現(xiàn)存儲(chǔ)訪問、NEON和通用寄存器間的數(shù)據(jù)拷貝、數(shù)據(jù)類型轉(zhuǎn)換、向量數(shù)據(jù)處理等操作。ARM V8平臺(tái)下,NEON寄存器區(qū)支持2種類型視圖:包含64個(gè)64位雙字長的NEON寄存器(D0~D63),或者32個(gè)128位4字長寄存器(Q0~Q31)。每個(gè)Q0~Q31中的寄存器都映射到一組D寄存器。釆用雙重視圖的好處在于,它可以滿足擴(kuò)大或縮小結(jié)果的數(shù)學(xué)操作[6]。
以32位float數(shù)據(jù)類型為例,圖3為4個(gè)float類型數(shù)據(jù)之間進(jìn)行數(shù)據(jù)計(jì)算的過程。Qn和Qm為128位源寄存器,分為4個(gè)32位通道,存放4個(gè)float數(shù)據(jù)類型的輸入數(shù)據(jù),通過并行計(jì)算操作之后輸出到Qd目標(biāo)寄存器中。

圖3 NEON數(shù)據(jù)并行計(jì)算
在FT-2000+上使用NEON優(yōu)化算法通常有4種方法:(1)編譯器自動(dòng)向量化;(2)NEON匯編;(3)NEON開源庫;(4)NEON內(nèi)嵌函數(shù)。第1種方法,在ARM V8架構(gòu)下,只需要在編譯時(shí)使用-O3優(yōu)化編譯代碼即可自動(dòng)調(diào)用(GCC編譯器)。這種方法往往優(yōu)化效果一般,并且大部分代碼并不能自動(dòng)優(yōu)化為NEON指令。第2種方法優(yōu)化效果是最好的,即直接使用匯編語言進(jìn)行優(yōu)化,難度較大,實(shí)際開發(fā)中很少采用這種方式。對(duì)于第3種方法,常見的有NE10、OpenBlas、ffmpeg、Eigen3和Math-neon等庫,使用時(shí)直接調(diào)用封裝函數(shù)即可實(shí)現(xiàn)NEON優(yōu)化。其中,OpenBlas庫利用基礎(chǔ)線性代數(shù)庫(BLAS)接口和線性代數(shù)函數(shù)庫(LAPACK)接口優(yōu)化了矩陣相關(guān)運(yùn)算,很適合本文中的ASLC和MTD的運(yùn)算優(yōu)化。第4種方法,NEON內(nèi)嵌函數(shù)調(diào)用。類似于普通函數(shù)調(diào)用,NEON內(nèi)嵌函數(shù)提供了一種低級(jí)的NEON指令訪問方式,而編譯器負(fù)責(zé)將NEON指令替換為匯編語言的復(fù)雜任務(wù),主要包括寄存器分配和代碼調(diào)度以及指令集重排,來達(dá)到獲取最高性能的目標(biāo)。
信號(hào)處理的計(jì)算加速主要是針對(duì)實(shí)數(shù)或復(fù)數(shù)的向量/矩陣運(yùn)算。本文中,矩陣相關(guān)運(yùn)算采用OpenBlas庫實(shí)現(xiàn)功能封裝,而向量相關(guān)運(yùn)算則利用NEON內(nèi)嵌函數(shù)進(jìn)行優(yōu)化。2種方法結(jié)合,將計(jì)算優(yōu)化效果達(dá)到最佳。
信號(hào)處理計(jì)算中包含的復(fù)數(shù)矩陣求逆和復(fù)數(shù)矩陣乘法等矩陣運(yùn)算主要利用OpenBlas庫進(jìn)行速度優(yōu)化,比如說SLC算法和MTD算法都用到了矩陣復(fù)數(shù)共軛乘操作,即VSIPL接口中的“vsip_cmprodh_f”。在BLAS接口中對(duì)應(yīng)于cblas_cgemm接口函數(shù),其底層除了用到NEON指令集優(yōu)化外,還對(duì)矩陣進(jìn)行了分塊計(jì)算,并且采用了數(shù)據(jù)預(yù)取等技術(shù),使得其矩陣運(yùn)算效率大大提高。相較于單純使用NEON內(nèi)嵌函數(shù),計(jì)算加速比約提升2倍。
而針對(duì)向量相關(guān)運(yùn)算,本文采用NEON內(nèi)嵌函數(shù)方式進(jìn)行優(yōu)化。復(fù)數(shù)向量求模運(yùn)算常用于雷達(dá)信號(hào)處理,比如說MTD算法需要對(duì)FIR濾波后的復(fù)數(shù)數(shù)據(jù)求模,本文以此為例具體說明優(yōu)化方法。其VSIPL接口為vsip_cvmag_f,優(yōu)化步驟如圖4所示。針對(duì)其他計(jì)算優(yōu)化過程,只需要修改輸入向量數(shù)量以及替換中間的計(jì)算循環(huán)體即可。

圖4 復(fù)數(shù)向量求模計(jì)算優(yōu)化流程圖
本節(jié)利用FT-2000+平臺(tái)實(shí)現(xiàn)典型的信號(hào)處理算法:ASLC和MTD,并利用計(jì)算中間件封裝成算法組件,利用仿真數(shù)據(jù)驗(yàn)證算法的正確性。
ASLC仿真驗(yàn)證包含4路輔助通道和1路主信號(hào),主信號(hào)采用線性調(diào)頻信號(hào)疊加信干比20 dB的噪聲壓制干擾,基帶數(shù)據(jù)的數(shù)據(jù)率采用10 MHz,仿真信號(hào)距離單元點(diǎn)為4 096點(diǎn),目標(biāo)在第2 000個(gè)距離單元點(diǎn)上。ASLC算法采集200個(gè)干擾樣本進(jìn)行權(quán)值計(jì)算。圖5(a)為ASLC組件輸入信號(hào),可看出目標(biāo)被干擾淹沒,圖5(b)為ASLC的輸出信號(hào)曲線,可看出干擾基本被對(duì)消掉,目標(biāo)可正常被提取出來,說明ASLC組件處理流程與計(jì)算結(jié)果正確。

圖5 ASLC組件輸入前后,主波束IQ信號(hào)
MTD仿真采用FIR濾波器的方式,采用32點(diǎn)MTD,設(shè)計(jì)32個(gè)32階濾波器,其中0,1,2,30和31通道設(shè)計(jì)為雜波通道,其余濾波器阻帶衰減設(shè)計(jì)為-40 dB,零頻附近歸一化頻率寬度0.1范圍內(nèi)衰減為-70 dB,FIR濾波器組如圖6所示。

圖6 32階FIR濾波器組
仿真信號(hào)工作頻率為6 GHz,重頻為400 μs,采樣率為10 MHz,脈壓后每個(gè)回波長度為4 096,慢時(shí)間采樣32點(diǎn),仿真一個(gè)雜波和一個(gè)目標(biāo)進(jìn)行MTD算法組件的驗(yàn)證,雜波速度為0.05 m/s,距離在第2 000個(gè)距離單元點(diǎn)上,動(dòng)目標(biāo)速度為31.25 m/s(中心通道速度),在第500個(gè)距離單元點(diǎn)上,雜波和目標(biāo)的幅度設(shè)為一樣。
經(jīng)過MTD組件計(jì)算,輸出濾波后的選大值和通道號(hào)。因?yàn)榉抡娴碾s波與目標(biāo)輸入幅度一致,所以計(jì)算得到信雜比改善ISCR即為計(jì)算MTD輸出的目標(biāo)與雜波幅度之比,動(dòng)目標(biāo)所在通道的模值為1.009 7e+05,雜波所在通道的模值為31.793 3,計(jì)算得到ISCR=70.037 4 dB。這說明組件改善因子和設(shè)計(jì)的衰減-70 dB是一致的,且目標(biāo)落在第16個(gè)通道也與仿真一致。以上結(jié)果可以證明實(shí)現(xiàn)的MTD算法組件功能的有效性。
以上2個(gè)算法的驗(yàn)證同時(shí)在MTALAB軟件上進(jìn)行了仿真,其計(jì)算結(jié)果與在FT2000+板卡上的運(yùn)行結(jié)果也是一致的。
在FT-2000+平臺(tái)下實(shí)現(xiàn)信號(hào)處理算法需要滿足計(jì)算實(shí)時(shí)性要求,本文利用NEON技術(shù)對(duì)算法進(jìn)行了計(jì)算加速優(yōu)化。表1為本文舉例的2種算法的計(jì)算耗時(shí)以及使用編譯器自帶的-O3優(yōu)化的計(jì)算耗時(shí)。計(jì)算時(shí)間為循環(huán)10次所得到的平均值,其中計(jì)算的數(shù)據(jù)規(guī)模與上文仿真一致,即ASLC為1+4個(gè)波束,每個(gè)波束4 096點(diǎn),權(quán)重計(jì)算采用200點(diǎn)樣本;MTD輸入數(shù)據(jù)為4 096×32。

表1 處理性能分析
表1表明利用NEON技術(shù)進(jìn)行計(jì)算加速,可以獲得明顯的速度優(yōu)化,相較于-O3優(yōu)化,ASLC算法處理效率提升約3.8倍,MTD算法提升約7.3倍。由于雷達(dá)信號(hào)處理算法基本上都是向量/矩陣運(yùn)算,所以雷達(dá)信號(hào)處理算法的計(jì)算速度都可以得益于該技術(shù)的使用。
本文采用國產(chǎn)化通用處理器,利用VSIPL標(biāo)準(zhǔn)接口實(shí)現(xiàn)雷達(dá)信號(hào)處理的軟件化,以比較耗時(shí)的信號(hào)處理算法ASLC和基于FIR濾波的MTD算法為例,進(jìn)行了相關(guān)算法組件的實(shí)現(xiàn),并介紹了在該平臺(tái)下的并行計(jì)算加速技術(shù)——NEON技術(shù),利用該技術(shù)對(duì)代碼進(jìn)行了加速優(yōu)化。利用仿真數(shù)據(jù)對(duì)實(shí)現(xiàn)的ASLC和MTD組件進(jìn)行了有效性驗(yàn)證,并將本文使用的計(jì)算加速方法與編譯器自帶的優(yōu)化方法進(jìn)行了處理速度的比較。結(jié)果表明本文方法取得了明顯的優(yōu)化效果,使得實(shí)現(xiàn)的信號(hào)處理算法組件能夠滿足軟件化雷達(dá)計(jì)算實(shí)時(shí)性要求。