為什么FPGA芯片不適合做算法?

04/27 12:11
1006
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1.?FPGA的本質定位——硬件平臺,不是常規(guī)“計算機

FPGA的最大優(yōu)勢是硬件級的靈活定制。它非常適合實現(xiàn)特定用途的高速并行電路、定制接口、時序控制等。但算法處理——很多時候其實更需要靈活的數(shù)據(jù)訪問、復雜控制、海量算術運算和程序流轉,這個正好是“通用處理器”(比如CPUDSP、ARM)擅長的領域。

2.?軟件算法和FPGA之間的“思維鴻溝”

軟件算法開發(fā),本質上就是不斷寫代碼、修改、測試,這個流程對于CPU/DSP來說是再自然不過的事情,甚至支持浮點運算、復雜控制流程、遞歸調用等各種功能,極為高效。

FPGA做算法則完全不同,所有的步驟要“硬寫”在硬件里。比如一個加法不是“寫一句代碼就跑”,而是得“造出加法器的電路”,每個數(shù)據(jù)操作都需要具體的邏輯電路支持。所以設計起來工程量巨大、維護困難,也很難靈活調整。

3.?開發(fā)難度和周期對比——“同樣造車,CPU是拼積木,F(xiàn)PGA是鍛鐵造零件”

在CPU或DSP平臺,算法就像用樂高快速拼裝、可以靈活改裝。

在FPGA上,等于是要自己“熔煉鋼鐵—鍛造成零件—再組成模型”,周期長,調試難。

代碼級別的小改動,在FPGA上可能就要大幅度重做硬件邏輯。

4.?開發(fā)工具鏈和生態(tài)不友好

FPGA的工程開發(fā)主要靠硬件描述語言(如Verilog、VHDL),不支持大多數(shù)算法工程師擅長的高級語言開發(fā)和調試。很多算法實現(xiàn)起來需要數(shù)學庫或者現(xiàn)成的算法支持,在FPGA開發(fā)環(huán)境里往往都得從底層自建,門檻高,靈活性差,效率低。

5.?資源結構受限導致的效率問題

FPGA中大部分資源用于構建各種基礎邏輯單元和少量乘法器、存儲單元,而不是為大批量的數(shù)據(jù)算法處理而生。

算法涉及到的數(shù)據(jù)交互、復雜數(shù)組、特殊數(shù)據(jù)結構、頻繁的讀寫操作,在FPGA中想要實現(xiàn)往往需要極大的硬件資源,造成芯片資源浪費甚至“做不下”。

6.?數(shù)據(jù)流和程序流的架構差異

CPU/DSP結構適合做復雜程序流——如判斷、循環(huán)、函數(shù)調用等。

FPGA天然適合數(shù)據(jù)流并行處理——一次流水線“刷”一大波數(shù)據(jù),高吞吐、低延遲(比如圖像采集、信號協(xié)議處理等)。

很多算法本質上是“串行思維”,F(xiàn)PGA則更像“裝配線思維”,兩者不兼容。

7.?維護和升級的靈活性不足

軟件算法更新,CPU平臺只要重刷程序。

FPGA算法“寫死”在電路里,每次調整都要全過程重新綜合、布局、時序分析,開發(fā)效率極低。

一句話概括:FPGA適合用來做“專用硬件加速器”(如高并行、確定時延的數(shù)據(jù)通路和功能模塊),而如果要做靈活復雜的算法處理,就像讓一條生產(chǎn)線去學會變魔術,不僅不高效,還特別難維護。FPGA做算法,就像用積木蓋大樓必須每塊磚都特制一樣;而CPU做算法,則像有一支經(jīng)驗豐富的裝修隊,省時省力,換風格非常隨意。

工程建議:算法開發(fā)優(yōu)先選用CPU/DSP等通用平臺

如您有問題,請聯(lián)系老虎說芯,備注姓名+公司+崗位。

相關推薦