FPGAvs. ASIC
專用芯片ASIC的開(kāi)發(fā)流程是:設(shè)計(jì)、驗(yàn)證、流片、封裝、測(cè)試;
而FPGA已經(jīng)是做好的芯片,所以不需要流片、封裝、測(cè)試。這樣,可以至少節(jié)省四個(gè)月的時(shí)間。
另外ASIC還有可能多次流片才能成功,同步的軟件開(kāi)發(fā)也需要芯片做好才能完成大部分功能,這些也是時(shí)間成本。
在量小的時(shí)候,F(xiàn)PGA的成本低,量大了之后,ASIC的成本低。
FPGA的功耗比ASIC高,因?yàn)橛泻芏喽嘤嗟倪壿?,不過(guò)比CPU省電,畢竟CPU的多余邏輯更多。
相比ASIC,F(xiàn)PGA的調(diào)試比較方便,可以直接燒到FPGA執(zhí)行,也可以用調(diào)試工具抓取芯片里面的信號(hào)查看狀態(tài)。
FPGA需要跑多快?
跟Intel CPU相比,F(xiàn)PGA的主頻差一個(gè)數(shù)量級(jí),一般FPGA芯片時(shí)鐘頻率300MHz左右,而Intel CPU可以到3GHz,就是說(shuō)CPU 1秒能做30億次計(jì)算,而FPGA只能做3億次,差了10倍。
另外FPGA用作可重構(gòu)計(jì)算是來(lái)加速CPU的,如果和CPU跑一樣快就沒(méi)意思了,所以一般要比CPU快5倍才行。
FPGA的開(kāi)發(fā)周期是比較久的,1年甚至2年很正常,在這個(gè)過(guò)程中,CPU上的軟件算法還在不斷升級(jí),所以有可能FPGA算法設(shè)計(jì)的比CPU快,等開(kāi)發(fā)完,卻發(fā)現(xiàn)CPU上的軟件算法快速迭代,已經(jīng)超過(guò)FPGA算法了。這種事還是比較常見(jiàn)的,不只是軟件算法升級(jí),CPU自己也會(huì)升級(jí),這些都有可能讓FPGA加速器做了無(wú)用功。比如用FPGA做一個(gè)數(shù)據(jù)壓縮卡,可是CPU可能就自己帶了一個(gè)數(shù)據(jù)壓縮功能,成本還比FPGA卡低,開(kāi)發(fā)FPGA的人白干一場(chǎng)。
所以,正常來(lái)說(shuō),F(xiàn)PGA算法加速性能設(shè)計(jì)的時(shí)候要比CPU快5-10倍才能保證最終做出來(lái)的產(chǎn)品是可以實(shí)現(xiàn)硬件加速的目標(biāo)。
影響FPGA計(jì)算性能的幾大因素
1. 數(shù)據(jù)并行性
對(duì)FPGA計(jì)算來(lái)說(shuō),同時(shí)處理大量的數(shù)據(jù),同時(shí)數(shù)據(jù)之間沒(méi)有相互依賴是最好的。這樣,可以有幾百上千個(gè)并行計(jì)算單元獨(dú)立處理幾百上千個(gè)數(shù)據(jù),如果數(shù)據(jù)之間有依賴,比如有很多的if else,就并發(fā)不起來(lái),A必須要等B完成才能執(zhí)行。就跟步騎兵混合軍團(tuán)出征,如果將軍下令大家要同步進(jìn)軍,步兵要和騎兵一起沖,騎兵不能跑太快,要等步兵一起走,那這個(gè)仗就沒(méi)法打了,只能被敵人包餃子。
2. 數(shù)據(jù)大小和計(jì)算復(fù)雜度
FPGA并行計(jì)算是很多個(gè)計(jì)算并行執(zhí)行,如果每個(gè)計(jì)算單元要處理的數(shù)據(jù)太多,同時(shí)計(jì)算邏輯太復(fù)雜,那么占用的FPGA計(jì)算資源就變多了,這樣總的并行單元數(shù)量相應(yīng)減少,性能下降。而且,老司機(jī)都知道,計(jì)算邏輯太復(fù)雜,在電路上消耗的時(shí)間變多,還會(huì)導(dǎo)致每個(gè)模塊的延遲變長(zhǎng),這樣時(shí)鐘頻率也會(huì)下降,也會(huì)影響到性能。
3. 流水線
計(jì)算復(fù)雜的時(shí)候,延遲會(huì)變長(zhǎng),如果要求計(jì)算任務(wù)在一個(gè)時(shí)鐘周期里完成,那么時(shí)鐘周期就變長(zhǎng)了,相應(yīng)的頻率降低,性能下降。所以為了提高時(shí)鐘頻率,F(xiàn)PGA會(huì)采用流水線技術(shù),把復(fù)雜的計(jì)算分解成幾段,放到幾個(gè)時(shí)鐘周期里完成。這樣做的后果就是,計(jì)算需要的時(shí)間變長(zhǎng)了,但是總的性能卻提高了
4. 靜態(tài)控制邏輯
我們寫(xiě)軟件程序的時(shí)候,習(xí)慣了給函數(shù)很多參數(shù)作為條件,根據(jù)參數(shù)內(nèi)容執(zhí)行函數(shù)的操作。FPGA做計(jì)算就不希望靠參數(shù)內(nèi)容確定怎么計(jì)算,而是希望一開(kāi)始就定好。比如在軟件里面,算個(gè)位數(shù)的平方和二位數(shù)的平方差不多,可是到FPGA里面,個(gè)位數(shù)需要的計(jì)算資源少,二位數(shù)占用的多,一個(gè)計(jì)算單元要同時(shí)支持個(gè)位數(shù)和二位數(shù)平方計(jì)算就會(huì)很占資源,最好是一開(kāi)始就確定好算哪一種,不要?jiǎng)討B(tài)確定。
歸根結(jié)底,我們只要明白FPGA計(jì)算快的兩大優(yōu)點(diǎn)就是并行和流水線,但是必須時(shí)刻有并行計(jì)算的思想,盡量壓縮算法占用的資源,這樣才能用有限的FPGA計(jì)算資源實(shí)現(xiàn)最強(qiáng)大的并行計(jì)算能力。
至芯科技12年不忘初心、再度起航11月12日北京中心FPGA工程師就業(yè)班開(kāi)課、線上線下多維教學(xué)、歡迎咨詢!
FPGA學(xué)習(xí)-邊沿檢測(cè)技術(shù)
掃碼加微信邀請(qǐng)您加入FPGA學(xué)習(xí)交流群
歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
原文標(biāo)題:FPGA需要跑多快?影響FPGA計(jì)算性能的幾大因素
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論