FPGA和CPU一直是雷達(dá)信號處理不可分割的組成部分。傳統(tǒng)上FPGA用于前端處理,CPU用于后端處理。隨著雷達(dá)系統(tǒng)的處理能力越來越強(qiáng),越來越復(fù)雜,對信息處理的需求也急劇增長。為此,F(xiàn)PGA不斷在提高處理能力和吞吐量,CPU也在發(fā)展以滿足下一代雷達(dá)的信號處理性能需求。這種努力發(fā)展的趨勢導(dǎo)致越來越多的使用CPU加速器,如圖形處理單元(GPU)等,以支持較重的處理負(fù)載。
本文對比了FPGA和GPU浮點(diǎn)性能和設(shè)計(jì)流程。最近幾年,GPU已經(jīng)不僅能完成圖形處理功能,而且成為強(qiáng)大的浮點(diǎn)處理平臺,被稱之為GP-GPU,具有很高的峰值FLOP指標(biāo)。FPGA傳統(tǒng)上用于定點(diǎn)數(shù)字信號處理器(DSP),而現(xiàn)在足以競爭完成浮點(diǎn)處理功能,也成為后端雷達(dá)處理加速功能的有力競爭者。
在FPGA前端,40 nm和28 nm均報(bào)道了很多可驗(yàn)證的浮點(diǎn)基準(zhǔn)測試結(jié)果。Altera的下一代高性能FPGA將采用Intel的14 nm三柵極技術(shù),性能至少達(dá)到5 TFLOP.使用這種先進(jìn)的半導(dǎo)體工藝,性能可實(shí)現(xiàn)100 GFLOPs/W.而且,Altera FPGA現(xiàn)在支持OpenCL,這是GPU使用的一款優(yōu)秀的編程語言。
峰值GFLOPS指標(biāo)
目前的FPGA性能可達(dá)到1TFLOP以上峰值,AMD和Nvidia最新的GPU甚至更高,接近4 TFLOP.但在某些應(yīng)用中,峰值GFLOP,即TFLOP,提供的器件性能信息有限。它只表示了每秒能完成的理論浮點(diǎn)加法或乘法總數(shù)。這一分析表示,在雷達(dá)應(yīng)用中,很多情況下,F(xiàn)PGA在算法和數(shù)據(jù)規(guī)模上超過了GPU吞吐量。
一種中等復(fù)雜且常用的算法是快速傅里葉變換(FFT)。大部分雷達(dá)系統(tǒng)由于在頻域完成大量處理工作,因此會經(jīng)常用到FFT算法。例如,使用單精度浮點(diǎn)處理實(shí)現(xiàn)一個(gè)4,096點(diǎn)FFT.它能在每個(gè)時(shí)鐘周期輸入輸出四個(gè)復(fù)數(shù)采樣。每個(gè)FFT內(nèi)核運(yùn)行速度超過80 GFLOP,大容量28 nm FPGA的資源支持實(shí)現(xiàn)7個(gè)此類內(nèi)核。
但如圖1所示,該FPGA的FFT算法接近400 GFLOP.這一結(jié)果基于“按鍵式”O(jiān)penCL編譯,無需FPGA專業(yè)知識。使用邏輯鎖定和設(shè)計(jì)空間管理器(DSE)進(jìn)行優(yōu)化,7內(nèi)核設(shè)計(jì)接近單內(nèi)核設(shè)計(jì)的fMAX,使用28 nm FPGA,將其提升至500 GFLOP,超過了10 GFLOPs/W.
圖1.Stratix V 5SGSD8 FPGA浮點(diǎn)FFT性能
這一GFLOPs/W結(jié)果要比CPU或者GPU功效高很多。對比GPU,GPU在這些FFT長度上效率并不高,因此沒有進(jìn)行基準(zhǔn)測試。當(dāng)FFT長度達(dá)到幾十萬個(gè)點(diǎn)時(shí),GPU效率才比較高,能夠?yàn)镃PU提供有效的加速功能。但是,雷達(dá)處理應(yīng)用一般是長度較短的FFT,F(xiàn)FT長度通常在512至8,192之間。
總之,實(shí)際的GFLOP一般只達(dá)到峰值或者理論GFLOP的一小部分。出于這一原因,更好的方法是采用算法來對比性能,這種算法能夠合理的表示典型應(yīng)用的特性。隨著基準(zhǔn)測試算法復(fù)雜度的提高,其更能代表實(shí)際雷達(dá)系統(tǒng)性能。
算法基準(zhǔn)測試
相比依靠供應(yīng)商的峰值GFLOP指標(biāo)來驅(qū)動處理技術(shù)決策,另一方法是使用比較復(fù)雜的第三方評估??諘r(shí)自適應(yīng)處理(STAP)雷達(dá)常用的算法是Cholesky分解。這一算法經(jīng)常用于線性代數(shù),高效的解出多個(gè)方程,可以用在相關(guān)矩陣上。
Cholesky算法在數(shù)值上非常復(fù)雜,要獲得合理的結(jié)果總是要求浮點(diǎn)數(shù)值表示。計(jì)算需求與N3成正比,N是矩陣維度,因此,一般對處理要求很高。雷達(dá)系統(tǒng)一般是實(shí)時(shí)工作,因此,要求有較高的吞吐量。結(jié)果取決于矩陣大小以及所要求的矩陣處理吞吐量,通常會超過100 GFLOP.
表1顯示了基于Nvidia GPU指標(biāo)1.35 TFLOP的基準(zhǔn)測試結(jié)果,使用了各種庫,以及Xilinx Virtex6 XC6VSX475T,其密度達(dá)到475K LC,這種FPGA針對DSP處理進(jìn)行了優(yōu)化。用于Cholesky基準(zhǔn)測試時(shí),這些器件在密度上與Altera FPGA相似。LAPACK和MAGMA是商用庫,而GPU GFLOP則是采用田納西州大學(xué)開發(fā)的OpenCL實(shí)現(xiàn)的(2)。對于小規(guī)模矩陣,后者更優(yōu)化一些。
表1.GPU和Xilinx FPGA Cholesky基準(zhǔn)測試(2)
Altera測試了容量中等的Altera Stratix?V FPGA(460K邏輯單元(LE)),使用了單精度浮點(diǎn)處理的Cholesky算法。如表2所示,在Stratix V FPGA上進(jìn)行Cholesky算法的性能要比Xilinx結(jié)果高很多。Altera基準(zhǔn)測試還包括QR分解,這是不太復(fù)雜的另一矩陣處理算法。Altera以可參數(shù)賦值內(nèi)核的形式提供Cholesky和QRD算法。
表2.Altera FPGA Cholesky和QR基準(zhǔn)測試
應(yīng)指出,基準(zhǔn)測試的矩陣大小并不相同。田納西州大學(xué)的結(jié)果來自[512×512]的矩陣,而Altera基準(zhǔn)測試的Cholesky是[360x360],QRD則高達(dá)[450x450]。原因是,矩陣規(guī)模較小時(shí),GPU效率非常低,因此,在這些應(yīng)用中,不應(yīng)該使用它們來加速CPU.作為對比,在規(guī)模較小的矩陣時(shí),F(xiàn)PGA的工作效率非常高。雷達(dá)系統(tǒng)對吞吐量的要求很高,每秒數(shù)千個(gè)矩陣,因此,效率非常關(guān)鍵。采用了小矩陣,甚至要求把大矩陣分解成小矩陣以便進(jìn)行處理。
而且,Altera基準(zhǔn)測試是基于每個(gè)Cholesky內(nèi)核的。每個(gè)可參數(shù)賦值的Cholesky內(nèi)核支持選擇矩陣大小,矢量大小和通道數(shù)量。矢量大小大致決定了FPGA資源。較大的[360×360]矩陣使用了較長的矢量,支持FPGA中實(shí)現(xiàn)一個(gè)內(nèi)核,達(dá)到91 GFLOP.較小的[60×60]矩陣使用的資源更少,因此,可以實(shí)現(xiàn)兩個(gè)內(nèi)核,總共是2×42 = 84 GFLOP.最小的[30×30]矩陣支持實(shí)現(xiàn)三個(gè)內(nèi)核,總共是3×25 = 75 GFLOP.
FPGA看起來更適合解決數(shù)據(jù)規(guī)模較小的問題,很多雷達(dá)系統(tǒng)都是這種情況。GPU之所以效率低,是因?yàn)橛?jì)算負(fù)載隨N3而增大,數(shù)據(jù)I/O隨N2增大,最終,隨著數(shù)據(jù)的增加,GPU的I/O瓶頸不再是問題。此外,隨著矩陣規(guī)模的增大,由于每個(gè)矩陣的處理量增大,矩陣每秒吞吐量會大幅度下降。在某些點(diǎn),吞吐量變得非常低,以至于無法滿足雷達(dá)系統(tǒng)的實(shí)時(shí)要求。
對于FFT,計(jì)算負(fù)載增加至N log2 N,而數(shù)據(jù)I/O隨N增大而增大。對于規(guī)模較大的數(shù)據(jù),GPU是高效的計(jì)算引擎。作為對比,對于所有規(guī)模的數(shù)據(jù),F(xiàn)PGA都是高效的計(jì)算引擎,更適合大部分雷達(dá)應(yīng)用,這些應(yīng)用中,F(xiàn)FT長度適中,但是吞吐量很大。
GPU和FPGA設(shè)計(jì)方法
GPU可以通過使用Nvidia專用CUDA語言或開放標(biāo)準(zhǔn)OpenCL語言來編程。這些語言在能力上非常相似,最大的不同在于CUDA只能用在Nvidia GPU上。
FPGA通常使用HDL語言Verilog或VHDL進(jìn)行編程。這些語言的最新版雖然采用了浮點(diǎn)數(shù)定義,但都不太適合支持浮點(diǎn)設(shè)計(jì)。例如,在System Verilog中,短實(shí)數(shù)變量對應(yīng)于IEEE單精度(浮點(diǎn)),實(shí)數(shù)變量對應(yīng)于IEEE雙精度。
DSP Builder高級模塊庫
使用傳統(tǒng)的方法將浮點(diǎn)數(shù)據(jù)通路綜合到FPGA的效率非常低,如Xilinx FPGA在Cholesky算法上使用了Xilinx浮點(diǎn)內(nèi)核產(chǎn)生函數(shù)的低性能顯示,。而Altera采兩種不同的方法。首先是使用DSP Builder高級模塊庫,這是基于Mathworks的設(shè)計(jì)輸入方法。這一工具支持定點(diǎn)和浮點(diǎn)數(shù),支持7種不同精度的浮點(diǎn)處理,包括IEEE半、單和雙精度實(shí)現(xiàn)。它還支持矢量化,這是高效實(shí)現(xiàn)線性代數(shù)所需要的。最重要的是,它能夠?qū)⒏↑c(diǎn)電路高效的映射到目前的定點(diǎn)FPGA體系結(jié)構(gòu)中,如基準(zhǔn)測試所示,規(guī)模中等的28 nm FPGA,Cholesky算法接近了100 GFLOP.作為對比,在不具有綜合能力的規(guī)模相似的Xilinx FPGA上,實(shí)現(xiàn)Cholesky相同算法,性能只有20 GFLOP.
面向FPGA的OpenCL
GPU編程人員較為熟悉OpenCL.面向FPGA的OpenCL編譯意味著,面向AMD或Nvidia GPU編寫的OpenCL代碼可以編譯到FPGA中。而且,Altera的OpenCL編譯器支持GPU程序使用FPGA,無需具備典型的FPGA設(shè)計(jì)技巧。
使用支持FPGA的OpenCL,相對于GPU有幾個(gè)關(guān)鍵優(yōu)勢。首先,GPU的I/O是有限制的。所有輸入和輸出數(shù)據(jù)必須由主CPU通過PCI Express?(PCIe?)接口進(jìn)行傳輸。結(jié)果延時(shí)會讓GPU處理引擎暫停,因此,降低了性能。
面向FPGA的OpenCL擴(kuò)展
FPGA以各種寬帶I/O功能而知名。這些功能支持?jǐn)?shù)據(jù)通過千兆以太網(wǎng)(GbE)和Serial RapidIO?(SRIO),或直接從模數(shù)轉(zhuǎn)換器(ADC)和數(shù)模轉(zhuǎn)換器(DAC)輸入輸出FPGA.Altera定義了OpenCL標(biāo)準(zhǔn)的供應(yīng)商專用擴(kuò)展,以支持流操作。這種擴(kuò)展對于雷達(dá)系統(tǒng)非常關(guān)鍵,數(shù)據(jù)能夠從定點(diǎn)前端波束成形直接輸出,支持浮點(diǎn)處理階段的數(shù)字下變頻處理,實(shí)現(xiàn)脈沖壓縮,多普勒,STAP,動目標(biāo)顯示(MTI),以及圖2所示的其他功能。通過這種方法,數(shù)據(jù)流在通過GPU加速器之前,避免了CPU瓶頸問題,從而降低了總處理延時(shí)。
圖2.通用雷達(dá)信號處理圖
即使與I/O瓶頸無關(guān),F(xiàn)PGA的處理延時(shí)也要比GPU低很多。眾所周知,GPU必須有數(shù)千個(gè)線程才能高效工作,這是由于存儲器讀取很長的延時(shí),以及GPU大量的處理內(nèi)核之間的延時(shí)。實(shí)際上,GPU必須有很多任務(wù)才能使得處理內(nèi)核不會暫停等待數(shù)據(jù),否則會導(dǎo)致任務(wù)很長的延時(shí)。
而FPGA使用了“粗粒度并行”體系結(jié)構(gòu)。它建立了多個(gè)經(jīng)過優(yōu)化的并行數(shù)據(jù)通路,每一通路在每個(gè)時(shí)鐘周期輸出一個(gè)結(jié)果。數(shù)據(jù)通路的例化數(shù)取決于FPGA資源,但一般要比GPU內(nèi)核數(shù)少很多。但是,每一數(shù)據(jù)通路例化的吞吐量要比GPU內(nèi)核高得多。這一方法的主要優(yōu)勢是低延時(shí),這在很多應(yīng)用中都是關(guān)鍵的性能優(yōu)勢。
FPGA的另一優(yōu)勢是很低的功耗,極大的降低了GFLOPs/W.使用開發(fā)板測量FPGA功耗,表明Cholesky和QRD等算法是5-6 GFLOPs/W,而FFT等簡單算法則是10 GFLOPs/W.一般很難進(jìn)行GPU能效測量,但是,Cholesky的GPU性能達(dá)到50 GFLOP,典型功耗是200 W,得到的結(jié)果是0.25 GFLOPs/W,單位FLOP的功率比FPGA高20倍。
對于機(jī)載或車載雷達(dá)裝備,系統(tǒng)體積、重量和功耗(SWaP)都非常重要。在未來的系統(tǒng)中,雷達(dá)工作很容易達(dá)到數(shù)十個(gè)TFLOP.總處理能力與現(xiàn)代雷達(dá)系統(tǒng)的分辨率和覆蓋范圍相關(guān)。
融合數(shù)據(jù)通路
OpenCL和DSP Builder都依靠“融合數(shù)據(jù)通路”這種技術(shù)(圖3),以這種技術(shù)實(shí)現(xiàn)浮點(diǎn)處理,能大幅度減少桶形移位電路,支持使用FPGA開發(fā)大規(guī)模高性能浮點(diǎn)設(shè)計(jì)。
圖3.采用融合數(shù)據(jù)通路實(shí)現(xiàn)浮點(diǎn)處理
為降低桶形移位頻率,綜合過程盡可能使用較大的尾數(shù)寬度,從而不需要頻率歸一化和去歸一化。27×27和36×36硬核乘法器支持比單精度實(shí)現(xiàn)所要求的23位更大的乘法計(jì)算,54×54和72×72結(jié)構(gòu)的乘法器支持比52位更大的雙精度計(jì)算,這通常是雙精度實(shí)現(xiàn)所要求的。FPGA邏輯已經(jīng)針對大規(guī)模定點(diǎn)加法器電路進(jìn)行了優(yōu)化,包括了內(nèi)置進(jìn)位超前電路。
當(dāng)需要進(jìn)行歸一化和去歸一化時(shí),另一種可以避免低性能和過度布線的方法是使用乘法器。對于一個(gè)24位單精度尾數(shù)(包括符號位),24×24乘法器通過乘以2n對輸入移位。27×27和36×36硬核乘法器支持單精度擴(kuò)展尾數(shù),可以用于構(gòu)建雙精度乘法器。
在很多線性代數(shù)算法中,矢量點(diǎn)乘是占用大量FLOP的底層運(yùn)算。單精度實(shí)現(xiàn)長度是64的長矢量點(diǎn)乘需要64個(gè)浮點(diǎn)乘法器,以及隨后由63個(gè)浮點(diǎn)加法器構(gòu)成的加法樹。這類實(shí)現(xiàn)需要很多桶形移位電路。
相反,可以對64個(gè)乘法器的輸出進(jìn)行去歸一化,成為公共指數(shù),最大是64位指數(shù)。可以使用定點(diǎn)加法器電路對這些64路輸出求和,在加法樹的最后進(jìn)行最終的歸一化。如圖4所示,這一本地模塊浮點(diǎn)處理過程省掉了每一加法器所需要的中間歸一化和去歸一化。即使是IEEE 754浮點(diǎn)處理,最大指數(shù)決定了最終的指數(shù),因此,這種改變只是在計(jì)算早期進(jìn)行指數(shù)調(diào)整。
圖4.矢量點(diǎn)乘優(yōu)化
但進(jìn)行信號處理時(shí),在計(jì)算最后盡可能以高精度來截?cái)嘟Y(jié)果才能獲得最佳結(jié)果。這種方法傳遞除單精度浮點(diǎn)處理所需要尾數(shù)位寬之外的額外的尾數(shù)位寬,一般從27位到36位補(bǔ)償了單精度浮點(diǎn)處理所需要的早期去歸一化這種次優(yōu)方法,。采用浮點(diǎn)乘法器進(jìn)行尾數(shù)擴(kuò)展,因此,在每一步消除了對乘積進(jìn)行歸一化的要求。
這一方法每個(gè)時(shí)鐘周期也會產(chǎn)生一個(gè)結(jié)果。GPU體系結(jié)構(gòu)可以并行產(chǎn)生所有浮點(diǎn)乘法,但不能高效并行進(jìn)行加法。原因是因?yàn)椴煌膬?nèi)核必須通過本地存儲器傳輸數(shù)據(jù)實(shí)現(xiàn)通信,因此缺乏FPGA架構(gòu)的連接的靈活特性。
融合數(shù)據(jù)通路方法產(chǎn)生的結(jié)果比傳統(tǒng)IEEE 754浮點(diǎn)結(jié)果更加精確,如表3所示。
表3.Cholesky分解準(zhǔn)確性(單精度)
使用Cholesky分解算法,實(shí)現(xiàn)大規(guī)模矩陣求逆,獲得了這些結(jié)果。相同的算法以三種不同的方法實(shí)現(xiàn):
n在MATLAB/Simulink中,采用IEEE 754單精度浮點(diǎn)處理。
n在RTL單精度浮點(diǎn)處理中,使用融合數(shù)據(jù)通路方法。
n在MATLAB中,采用雙精度浮點(diǎn)處理。
雙精度實(shí)現(xiàn)要比單精度實(shí)現(xiàn)精度高十億倍(10的9次方)。
MATLAB單精度誤差、RTL單精度誤差和MATLAB雙精度誤差對比確認(rèn)了融合數(shù)據(jù)通路方法的完整性。采用了這一方法來獲得輸出矩陣中所有復(fù)數(shù)元素的歸一化誤差以及矩陣元素的最大誤差。使用Frobenius范數(shù)計(jì)算了總誤差:
由于范數(shù)包括了所有元素的誤差,因此比單一誤差大很多。
此外,DSP Builder高級模塊庫和OpenCL工具流程都針對下一代FPGA體系結(jié)構(gòu),支持并優(yōu)化目前的設(shè)計(jì)。由于體系結(jié)構(gòu)創(chuàng)新和工藝技術(shù)創(chuàng)新,性能可以達(dá)到100峰值GFLOPs/W.
結(jié)論
高性能雷達(dá)系統(tǒng)現(xiàn)在有新的處理平臺選擇。除了更好的SWaP,與基于處理器的解決方案相比,F(xiàn)PGA能提供低延時(shí)和高GFLOP.隨著下一代高性能計(jì)算優(yōu)化FPGA的推出,這種優(yōu)勢會更明顯。
Altera的OpenCL編譯器為GPU編程人員提供了幾乎無縫的通路來評估這一新處理體系結(jié)構(gòu)的指標(biāo)。Altera OpenCL符合1.2規(guī)范,提供全面的數(shù)學(xué)庫支持。它解決了傳統(tǒng)FPGA遇到的時(shí)序收斂、DDR存儲器管理以及PCIe主處理器接口等難題。
對于非GPU開發(fā)人員,Altera提供DSP Builder高級模塊庫工具流程,支持開發(fā)人員開發(fā)高fMAX定點(diǎn)或浮點(diǎn)DSP設(shè)計(jì),同時(shí)保持基于Mathworks的仿真和開發(fā)環(huán)境的優(yōu)點(diǎn)。使用FPGA的雷達(dá)開發(fā)人員多年以來一直使用該產(chǎn)品,實(shí)現(xiàn)更高效的工作流程和仿真,其fMAX性能與手動編碼HDL相同。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603420 -
gpu
+關(guān)注
關(guān)注
28文章
4740瀏覽量
128951 -
雷達(dá)系統(tǒng)
+關(guān)注
關(guān)注
6文章
245瀏覽量
28680 -
雷達(dá)信號處理
+關(guān)注
關(guān)注
2文章
13瀏覽量
9299
原文標(biāo)題:雷達(dá)信號處理:FPGA還是GPU?
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論