主頻只是影響計(jì)算速度的一個(gè)因素,并不是全部。在執(zhí)行一些計(jì)算密集型的任務(wù)場(chǎng)景中,FPGA的計(jì)算速度是更快的,目前FPGA作為CPU的協(xié)處理器已經(jīng)廣泛應(yīng)用在Intel、AMD等公司的產(chǎn)品中。
CPU、GPU、和FPGA的比較
桌面端的CPU為馮諾依曼結(jié)構(gòu),從上圖可以看出,其基本組成為控制器,Cache,和ALU。而計(jì)算單元ALU在CPU中的占比不大,所以它的并行計(jì)算能力有限。
中間的為GPU,綠色的計(jì)算單元占了絕大部分,所以并行計(jì)算能力很強(qiáng)。
弱點(diǎn)是控制能力很弱,Cache小,為了保證計(jì)算能力,就需要大量的高速DDR保證數(shù)據(jù)吞吐率。
右側(cè)為FPGA,包含可編程的I/O、DSP、memory、PCIE等,因?yàn)榇罅看鎯?chǔ)單元的存在,F(xiàn)PGA在做計(jì)算的時(shí)候可以直接從內(nèi)部存儲(chǔ)單元讀取數(shù)據(jù)。
推薦一個(gè)國(guó)外的FPGA學(xué)習(xí)網(wǎng)站 -- fpga4fun,里邊有FPGA的介紹及26個(gè)實(shí)戰(zhàn)項(xiàng)目及實(shí)現(xiàn)代碼,非常適合入門(mén)學(xué)習(xí)!
https://www.fpga4fun.com/
正因?yàn)镃PU、GPU、和FPGA在結(jié)構(gòu)上的不同,也讓他們?cè)趯?shí)際應(yīng)用層面有所側(cè)重。
目前主流的方案是把CPU、GPU和FPGA都集成在一個(gè)SoC中,通過(guò)片內(nèi)總線互聯(lián)。在執(zhí)行并行計(jì)算的時(shí)候,比如進(jìn)行圖像處理,F(xiàn)PGA的優(yōu)勢(shì)就體現(xiàn)出來(lái)了,通過(guò)協(xié)作分工,使芯片的工作效率最大化。
目前的3D封裝以及chiplet等技術(shù)為這樣的組合提供了可實(shí)現(xiàn)性。
為什么FPGA計(jì)算速度會(huì)比CPU更快?
在執(zhí)行大量的運(yùn)算場(chǎng)景中,F(xiàn)PGA相比GPU的核心優(yōu)勢(shì)在于低延遲。FPGA比CPU延遲低,在本質(zhì)上是體系結(jié)構(gòu)的區(qū)別。FPGA同時(shí)擁有流水線并行和數(shù)據(jù)并行,而CPU幾乎只有數(shù)據(jù)并行,雖然也會(huì)才有流水線設(shè)計(jì),但深度受限。因此,F(xiàn)PGA 更適合做需要低延遲的流式處理,GPU 更適合做大批量同構(gòu)數(shù)據(jù)的處理。
舉個(gè)例子:
我們有四個(gè)全加器,每一個(gè)的進(jìn)為輸出連接到下一個(gè)的進(jìn)位輸入,這樣實(shí)現(xiàn)的加法器被稱(chēng)作行波進(jìn)位加法器(Ripple-Carry Adder, RCA)。其特點(diǎn)為:
結(jié)構(gòu)特點(diǎn):低位全加器的Cout連接到高一位全加器Cin
優(yōu)點(diǎn):電路布局簡(jiǎn)單,設(shè)計(jì)方便
缺點(diǎn):高位的運(yùn)算必須等待低位的運(yùn)算完成
我們來(lái)看一下其關(guān)鍵路徑的延遲:
總延遲時(shí)間:(T + T)*4 + T = 9T,推廣到n位,總時(shí)間為(2n + 1)*T。
每一個(gè)全加器計(jì)算的時(shí)候必須等待它的進(jìn)位輸入產(chǎn)生后才能計(jì)算,所以四個(gè)全加器并不是同時(shí)進(jìn)行計(jì)算的,而是一個(gè)一個(gè)的串行計(jì)算。這樣會(huì)造成較大的延遲。
我們把這個(gè)電路改進(jìn)一下:提前計(jì)算出“進(jìn)位信號(hào)”,對(duì)進(jìn)位信號(hào)進(jìn)行分析。
這樣我們就得到了一個(gè):超前進(jìn)位加法器(Carry-Lookahead Adder, CLA)
其中,C1、C2、C3、C4都由下面的電路計(jì)算好,需要3級(jí)門(mén)延遲,然后在全加器中關(guān)鍵路徑上還有1級(jí)延遲
所以,總共有4級(jí)門(mén)延遲。
如果采用這種完全的超前進(jìn)位,理論上的門(mén)延遲都是4級(jí)門(mén)延遲。
實(shí)際電路過(guò)于復(fù)雜,難以實(shí)現(xiàn)(C31需要32位的與門(mén)和或門(mén)?。?/p>
通常的方法:采用多個(gè)小規(guī)模的超前進(jìn)位加法器拼接而成,例如,用4個(gè)8-bit的超前進(jìn)位加法器連接成32-bit加法器。
所以我們需要更多的計(jì)算位寬或者更大的數(shù)組,或者矩陣的運(yùn)算的時(shí)候,我們使用FPGA的優(yōu)勢(shì)就體現(xiàn)出來(lái)。再多的計(jì)算,也就是放置更多的硬件邏輯資源。
FPGA對(duì)CPU加速場(chǎng)景
在一些特定的應(yīng)用場(chǎng)景下,單獨(dú)使用CPU和CPU+FPGA兩種方案所需處理時(shí)間的對(duì)比,可見(jiàn)FPGA對(duì)CPU的加速效果非常明顯,甚至比單獨(dú)使用CPU高出1~2個(gè)數(shù)量級(jí)!
FPGA的缺點(diǎn)
FPGA也是有缺點(diǎn)的,其中之一便是開(kāi)發(fā)周期長(zhǎng)。其需要對(duì)特定的應(yīng)用編寫(xiě)特定的FPGA。只要干的事情稍有不同,一般來(lái)說(shuō)FPGA代碼就要重新寫(xiě)一遍或者是至少要修改很多東西。如果要做的事情復(fù)雜、重復(fù)性不強(qiáng),就會(huì)占用大量的邏輯資源,其中的大部分處于閑置狀態(tài)。
不過(guò),Chiplet的應(yīng)用對(duì)對(duì)FPGA的開(kāi)發(fā)周期有一定的優(yōu)化,以下是傳統(tǒng)FPGA開(kāi)發(fā)的周期和應(yīng)用chiplet的開(kāi)發(fā)周期對(duì)比:
未來(lái)的方向
在現(xiàn)在的SoC設(shè)計(jì)中,要充分考慮不同模塊的特點(diǎn),F(xiàn)PGA 和 CPU 協(xié)同工作,充分發(fā)揮各自的長(zhǎng)處,局部性和重復(fù)性強(qiáng)的歸 FPGA,復(fù)雜的歸 CPU。從而達(dá)到整個(gè)系統(tǒng)算力的最優(yōu)化。
在未來(lái),F(xiàn)PGA會(huì)作為協(xié)處理器和CPU、GPU共存一段時(shí)間,其主要提供以下三方面的能力:
能夠提供專(zhuān)門(mén)的硬件加速,實(shí)現(xiàn)各種應(yīng)用中需要的關(guān)鍵處理功能。
FPGA設(shè)計(jì)在性能上非常靈活,使用流水線和并行結(jié)構(gòu),適應(yīng)對(duì)性能的需求變化。
協(xié)處理器能為主處理器和系統(tǒng)存儲(chǔ)器提供寬帶,低延遲接口。
目前,英特爾,AMD,賽靈思等公司都把FPGA作為協(xié)處理器集成在SoC中作為實(shí)際應(yīng)用的硬件加速解決方案,這樣的設(shè)計(jì)也使得CPU和FPGA在未來(lái)的一段時(shí)間內(nèi)會(huì)共存,互相配合,賦能各種計(jì)算場(chǎng)景。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602986 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211578 -
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890
原文標(biāo)題:為什么CPU主頻一般都比FPGA快,但是卻說(shuō)FPGA可以幫助CPU加速?
文章出處:【微信號(hào):leezym0317,微信公眾號(hào):FPGA開(kāi)源工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論