CPU和GPU都屬于馮·諾依曼結構,指令譯碼執行,共享內存。FPGA之所以比CPU、GPU更快,本質(zhì)上是因為其無(wú)指令,無(wú)共享內存的體系結構所決定的。
馮氏結構中,由于執行單元可能執行任意指令,就需要有指令存儲器、譯碼器、各種指令的運算器、分支跳轉處理邏輯。而FPGA的每個(gè)邏輯單元的功能在重編程時(shí)就已經(jīng)確定,不需要指令。
馮氏結構中使用內存有兩種作用:①保存狀態(tài)。②執行單元間的通信。
1)保存狀態(tài):FPGA中的寄存器和片上內存(BRAM)是屬于各自的控制邏輯的,無(wú)需不必要的仲裁和緩存。
2)通信需求:FPGA每個(gè)邏輯單元與周?chē)壿媶卧倪B接在重編程時(shí)就已經(jīng)確定了,并不需要通過(guò)共享內存來(lái)通信。
計算密集型任務(wù)中:
在數據中心,FPGA相比GPU的核心優(yōu)勢在于延遲。FPGA為什么比GPU的延遲低很多?本質(zhì)上是體系結構的區別。FPGA同時(shí)擁有流水線(xiàn)并行和數據并行,而GPU幾乎只有數據并行(流水線(xiàn)深度受限)。
處理一個(gè)數據包有10個(gè)步驟,FPGA可以搭建一個(gè)10級流水線(xiàn),流水線(xiàn)的不同級在處理不同的數據包,每個(gè)數據包流經(jīng)10級之后處理完成。每個(gè)處理完成的數據包可以馬上輸出。而GPU的數據并行方法是做10個(gè)計算單元,每個(gè)計算單元也在處理不同的數據包,但是所有的計算單元必須按照統一的步調,做相同的事情(SIMD)。這就要求10個(gè)數據包必須同進(jìn)同出。當任務(wù)是逐個(gè)而非成批到達的時(shí)候,流水線(xiàn)并行比數據并行可實(shí)現更低的延遲。因此對流水式計算的任務(wù),FPGA比GPU天生有延遲方面的優(yōu)勢。
ASIC在吞吐量、延遲、功耗單個(gè)方面都是最優(yōu)秀的。但是其研發(fā)成本高,周期長(cháng)。FPGA的靈活性可以保護資產(chǎn)。數據中心是租給不同租戶(hù)使用的。有的機器上有神經(jīng)網(wǎng)絡(luò )加速卡,有的有bing搜索加速卡,有的有網(wǎng)絡(luò )虛擬加速卡,任務(wù)的調度和運維會(huì )很麻煩。使用FPGA可以保持數據中心的同構性。
通信密集型任務(wù)中,FPGA相比GPU、CPU的優(yōu)勢更大。
①吞吐量:FPGA可以直接接上40Gbps或者100Gbps的網(wǎng)線(xiàn),以線(xiàn)速處理任意大小的數據包;而CPU則需要網(wǎng)卡把數據包接收過(guò)來(lái);GPU也可以高性能處理數據包,但GPU沒(méi)有網(wǎng)口,同樣需要網(wǎng)卡,這樣吞吐量受到網(wǎng)卡和(或)者CPU的限制。
②延遲:網(wǎng)卡把數據傳給CPU,CPU處理后傳給網(wǎng)卡,再加上系統中的時(shí)鐘中斷和任務(wù)調度增加了延遲的不穩定性。
綜上所述,在數據中心里 FPGA 的主要優(yōu)勢是穩定又極低的延遲,適用于流式的計算密集型任務(wù)和通信密集型任務(wù)。
FPGA 和 GPU 最大的區別在于體系結構,FPGA 更適合做需要低延遲的流式處理,GPU 更適合做大批量同構數據的處理。
成也蕭何,敗也蕭何。缺少指令同時(shí)是 FPGA 的優(yōu)勢和軟肋。每做一點(diǎn)不同的事情,就要占用一定的 FPGA 邏輯資源。如果要做的事情復雜、重復性不強,就會(huì )占用大量的邏輯資源,其中的大部分處于閑置狀態(tài)。這時(shí)就不如用馮·諾依曼結構的處理器。
FPGA 和 CPU 協(xié)同工作,局部性和重復性強的歸 FPGA,復雜的歸 CPU。
更多關(guān)于FPGA的精彩閱讀:
-
FPGA
+關(guān)注
關(guān)注
1610文章
21374瀏覽量
595062 -
cpu
+關(guān)注
關(guān)注
68文章
10525瀏覽量
207449 -
gpu
+關(guān)注
關(guān)注
27文章
4490瀏覽量
127356
原文標題:FPGA為什么比CPU和GPU快
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論