• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

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

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

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

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

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

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

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

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

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

代碼級(jí)別的小改動(dòng),在FPGA上可能就要大幅度重做硬件邏輯。

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

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

5.?資源結(jié)構(gòu)受限導(dǎo)致的效率問題

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

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

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

CPU/DSP結(jié)構(gòu)適合做復(fù)雜程序流——如判斷、循環(huán)、函數(shù)調(diào)用等。

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

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

7.?維護(hù)和升級(jí)的靈活性不足

軟件算法更新,CPU平臺(tái)只要重刷程序。

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

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

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

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

相關(guān)推薦