雷達信號處理:FPGA還是GPU?
GPU可以通過使用Nvidia專用CUDA語言或開放標準OpenCL語言來編程。這些語言在能力上非常相似,最大的不同在于CUDA只能用在Nvidia GPU上。
FPGA通常使用HDL語言Verilog或VHDL進行編程。這些語言的最新版雖然采用了浮點數定義,但都不太適合支持浮點設計。例如,在System Verilog中,短實數變量對應于IEEE單精度(浮點),實數變量對應于IEEE雙精度。
DSP Builder高級模塊庫
使用傳統的方法將浮點數據通路綜合到FPGA的效率非常低,如Xilinx FPGA在Cholesky算法上使用了Xilinx浮點內核產生函數的低性能顯示,。而Altera采兩種不同的方法。首先是使用DSP Builder高級模塊庫,這是基于Mathworks的設計輸入方法。這一工具支持定點和浮點數,支持7種不同精度的浮點處理,包括IEEE半、單和雙精度實現。它還支持矢量化,這是高效實現線性代數所需要的。最重要的是,它能夠將浮點電路高效的映射到目前的定點FPGA體系結構中,如基準測試所示,規模中等的28 nm FPGA,Cholesky算法接近了100 GFLOP。作為對比,在不具有綜合能力的規模相似的Xilinx FPGA上,實現Cholesky相同算法,性能只有20 GFLOP。
面向FPGA的OpenCL
GPU編程人員較為熟悉OpenCL。面向FPGA的OpenCL編譯意味著,面向AMD或Nvidia GPU編寫的OpenCL代碼可以編譯到FPGA中。而且,Altera的OpenCL編譯器支持GPU程序使用FPGA,無需具備典型的FPGA設計技巧。
使用支持FPGA的OpenCL,相對于GPU有幾個關鍵優勢。首先,GPU的I/O是有限制的。所有輸入和輸出數據必須由主CPU通過PCI Express® (PCIe®)接口進行傳輸。結果延時會讓GPU處理引擎暫停,因此,降低了性能。
面向FPGA的OpenCL擴展
FPGA以各種寬帶I/O功能而知名。這些功能支持數據通過千兆以太網(GbE)和Serial RapidIO® (SRIO),或直接從模數轉換器(ADC)和數模轉換器(DAC)輸入輸出FPGA。Altera定義了OpenCL標準的供應商專用擴展,以支持流操作。這種擴展對于雷達系統非常關鍵,數據能夠從定點前端波束成形直接輸出,支持浮點處理階段的數字下變頻處理,實現脈沖壓縮,多普勒,STAP, 動目標顯示(MTI),以及圖2所示的其他功能。通過這種方法,數據流在通過GPU加速器之前,避免了CPU瓶頸問題,從而降低了總處理延時。

圖2.通用雷達信號處理圖
即使與I/O瓶頸無關,FPGA的處理延時也要比GPU低很多。眾所周知,GPU必須有數千個線程才能高效工作,這是由于存儲器讀取很長的延時,以及GPU大量的處理內核之間的延時。實際上,GPU必須有很多任務才能使得處理內核不會暫停等待數據,否則會導致任務很長的延時。
而FPGA使用了“粗粒度并行”體系結構。它建立了多個經過優化的并行數據通路,每一通路在每個時鐘周期輸出一個結果。數據通路的例化數取決于FPGA資源,但一般要比GPU內核數少很多。但是,每一數據通路例化的吞吐量要比GPU內核高得多。這一方法的主要優勢是低延時,這在很多應用中都是關鍵的性能優勢。
FPGA的另一優勢是很低的功耗,極大的降低了GFLOPs/W。使用開發板測量FPGA功耗,表明Cholesky和QRD等算法是5-6 GFLOPs/W,而FFT等簡單算法則是10 GFLOPs/W。一般很難進行GPU能效測量,但是,Cholesky的GPU性能達到50 GFLOP,典型功耗是200 W,得到的結果是0.25 GFLOPs/W,單位FLOP的功率比FPGA高20倍。
對于機載或車載雷達裝備,系統體積、重量和功耗(SWaP)都非常重要。在未來的系統中,雷達工作很容易達到數十個TFLOP。總處理能力與現代雷達系統的分辨率和覆蓋范圍相關。
融合數據通路
OpenCL和DSP Builder都依靠“融合數據通路”這種技術(圖3),以這種技術實現浮點處理,能大幅度減少桶形移位電路,支持使用FPGA開發大規模高性能浮點設計。

圖3.采用融合數據通路實現浮點處理
fpga相關文章:fpga是什么
鎖相環相關文章:鎖相環原理
評論