<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 揭秘FPGA:為什么比 GPU 的延遲低這么多?

揭秘FPGA:為什么比 GPU 的延遲低這么多?

作者: 時(shí)間:2018-06-27 來(lái)源:網(wǎng)絡(luò ) 收藏

  最近幾年,這個(gè)概念越來(lái)越多地出現。

本文引用地址:http://dyxdggzs.com/article/201806/382354.htm

  例如,比特幣挖礦,就有使用基于的礦機。還有,之前微軟表示,將在數據中心里,使用“代替”CPU,等等。

  其實(shí),對于專(zhuān)業(yè)人士來(lái)說(shuō),FPGA并不陌生,它一直都被廣泛使用。但是,大部分人還不是太了解它,對它有很多疑問(wèn)——FPGA到底是什么?為什么要使用它?相比 CPU、GPU、ASIC(專(zhuān)用芯片),FPGA有什么特點(diǎn)?……

  今天,帶著(zhù)這一系列的問(wèn)題,我們一起來(lái)——揭秘FPGA。

  為什么使用FPGA?

  眾所周知,通用處理器(CPU)的摩爾定律已入暮年,而機器學(xué)習和 Web 服務(wù)的規模卻在指數級增長(cháng)。

  人們使用定制硬件來(lái)加速常見(jiàn)的計算任務(wù),然而日新月異的行業(yè)又要求這些定制的硬件可被重新編程來(lái)執行新類(lèi)型的計算任務(wù)。

  FPGA 正是一種硬件可重構的體系結構。它的英文全稱(chēng)是Field Programmable Gate Array,中文名是現場(chǎng)可編程門(mén)陣列。

  FPGA常年來(lái)被用作專(zhuān)用芯片(ASIC)的小批量替代品,然而近年來(lái)在微軟、百度等公司的數據中心大規模部署,以同時(shí)提供強大的計算能力和足夠的靈活性。


  ▲不同體系結構性能和靈活性的比較

  FPGA 為什么快?「都是同行襯托得好」。

  CPU、都屬于馮·諾依曼結構,指令譯碼執行、共享內存。FPGA 之所以比 CPU 甚至 能效高,本質(zhì)上是無(wú)指令、無(wú)需共享內存的體系結構帶來(lái)的福利。

  馮氏結構中,由于執行單元(如 CPU 核)可能執行任意指令,就需要有指令存儲器、譯碼器、各種指令的運算器、分支跳轉處理邏輯。由于指令流的控制邏輯復雜,不可能有太多條獨立的指令流,因此 使用 SIMD(單指令流多數據流)來(lái)讓多個(gè)執行單元以同樣的步調處理不同的數據,CPU 也支持 SIMD 指令。

  而 FPGA 每個(gè)邏輯單元的功能在重編程(燒寫(xiě))時(shí)就已經(jīng)確定,不需要指令。

  馮氏結構中使用內存有兩種作用。一是保存狀態(tài),二是在執行單元間通信。

  由于內存是共享的,就需要做訪(fǎng)問(wèn)仲裁;為了利用訪(fǎng)問(wèn)局部性,每個(gè)執行單元有一個(gè)私有的緩存,這就要維持執行部件間緩存的一致性。

  對于保存狀態(tài)的需求,FPGA 中的寄存器和片上內存(BRAM)是屬于各自的控制邏輯的,無(wú)需不必要的仲裁和緩存。

  對于通信的需求,FPGA 每個(gè)邏輯單元與周?chē)壿媶卧倪B接在重編程(燒寫(xiě))時(shí)就已經(jīng)確定,并不需要通過(guò)共享內存來(lái)通信。

  說(shuō)了這么多三千英尺高度的話(huà),FPGA 實(shí)際的表現如何呢?我們分別來(lái)看計算密集型任務(wù)和通信密集型任務(wù)。

  計算密集型任務(wù)的例子包括矩陣運算、圖像處理、機器學(xué)習、壓縮、非對稱(chēng)加密、Bing 搜索的排序等。這類(lèi)任務(wù)一般是 CPU 把任務(wù)卸載(offload)給 FPGA 去執行。對這類(lèi)任務(wù),目前我們正在用的 Altera(似乎應該叫 Intel 了,我還是習慣叫 Altera……)Stratix V FPGA 的整數乘法運算性能與 20 核的 CPU 基本相當,浮點(diǎn)乘法運算性能與 8 核的 CPU 基本相當,而比 GPU 低一個(gè)數量級。我們即將用上的下一代 FPGA,Stratix 10,將配備更多的乘法器和硬件浮點(diǎn)運算部件,從而理論上可達到與現在的頂級 GPU 計算卡旗鼓相當的計算能力。


  ▲FPGA 的整數乘法運算能力(估計值,不使用 DSP,根據邏輯資源占用量估計)


  ▲FPGA 的浮點(diǎn)乘法運算能力(估計值,float16 用軟核,float 32 用硬核)

  在數據中心,FPGA 相比 GPU 的核心優(yōu)勢在于延遲。

  像 Bing 搜索排序這樣的任務(wù),要盡可能快地返回搜索結果,就需要盡可能降低每一步的延遲。

  如果使用 GPU 來(lái)加速,要想充分利用 GPU 的計算能力,batch size 就不能太小,延遲將高達毫秒量級。

  使用 FPGA 來(lái)加速的話(huà),只需要微秒級的 PCIe 延遲(我們現在的 FPGA 是作為一塊 PCIe 加速卡)。

  未來(lái) Intel 推出通過(guò) QPI 連接的 Xeon + FPGA 之后,CPU 和 FPGA 之間的延遲更可以降到 100 納秒以下,跟訪(fǎng)問(wèn)主存沒(méi)什么區別了。


上一頁(yè) 1 2 3 4 5 6 下一頁(yè)

關(guān)鍵詞: FPGA 云計算 GPU

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>