新聞中心

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

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

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

   為什么比 的延遲低這么多?

本文引用地址:http://m.butianyuan.cn/article/201806/382354.htm

  這本質(zhì)上是體系結(jié)構(gòu)的區(qū)別。

   同時(shí)擁有流水線并行和數(shù)據(jù)并行,而 幾乎只有數(shù)據(jù)并行(流水線深度受限)。

  例如處理一個(gè)數(shù)據(jù)包有 10 個(gè)步驟, 可以搭建一個(gè) 10 級(jí)流水線,流水線的不同級(jí)在處理不同的數(shù)據(jù)包,每個(gè)數(shù)據(jù)包流經(jīng) 10 級(jí)之后處理完成。每處理完成一個(gè)數(shù)據(jù)包,就能馬上輸出。

  而 的數(shù)據(jù)并行方法是做 10 個(gè)計(jì)算單元,每個(gè)計(jì)算單元也在處理不同的數(shù)據(jù)包,然而所有的計(jì)算單元必須按照統(tǒng)一的步調(diào),做相同的事情(SIMD,Single Instruction Multiple Data)。這就要求 10 個(gè)數(shù)據(jù)包必須一起輸入、一起輸出,輸入輸出的延遲增加了。

  當(dāng)任務(wù)是逐個(gè)而非成批到達(dá)的時(shí)候,流水線并行比數(shù)據(jù)并行可實(shí)現(xiàn)更低的延遲。因此對(duì)流式計(jì)算的任務(wù),F(xiàn)PGA 比 GPU 天生有延遲方面的優(yōu)勢。


  計(jì)算密集型任務(wù),CPU、GPU、FPGA、ASIC 的數(shù)量級(jí)比較(以 16 位整數(shù)乘法為例,數(shù)字僅為數(shù)量級(jí)的估計(jì)

  ASIC 專用芯片在吞吐量、延遲和功耗三方面都無可指摘,但微軟并沒有采用,出于兩個(gè)原因:

  數(shù)據(jù)中心的計(jì)算任務(wù)是靈活多變的,而 ASIC 研發(fā)成本高、周期長。好不容易大規(guī)模部署了一批某種神經(jīng)網(wǎng)絡(luò)的加速卡,結(jié)果另一種神經(jīng)網(wǎng)絡(luò)更火了,錢就白費(fèi)了。FPGA 只需要幾百毫秒就可以更新邏輯功能。FPGA 的靈活性可以保護(hù)投資,事實(shí)上,微軟現(xiàn)在的 FPGA 玩法與最初的設(shè)想大不相同。

  數(shù)據(jù)中心是租給不同的租戶使用的,如果有的機(jī)器上有神經(jīng)網(wǎng)絡(luò)加速卡,有的機(jī)器上有 Bing 搜索加速卡,有的機(jī)器上有網(wǎng)絡(luò)虛擬化加速卡,任務(wù)的調(diào)度和服務(wù)器的運(yùn)維會(huì)很麻煩。使用 FPGA 可以保持?jǐn)?shù)據(jù)中心的同構(gòu)性。

  接下來看通信密集型任務(wù)。

  相比計(jì)算密集型任務(wù),通信密集型任務(wù)對(duì)每個(gè)輸入數(shù)據(jù)的處理不甚復(fù)雜,基本上簡單算算就輸出了,這時(shí)通信往往會(huì)成為瓶頸。對(duì)稱加密、防火墻、網(wǎng)絡(luò)虛擬化都是通信密集型的例子。


  ▲通信密集型任務(wù),CPU、GPU、FPGA、ASIC 的數(shù)量級(jí)比較(以 64 字節(jié)網(wǎng)絡(luò)數(shù)據(jù)包處理為例,數(shù)字僅為數(shù)量級(jí)的估計(jì))

  對(duì)通信密集型任務(wù),F(xiàn)PGA 相比 CPU、GPU 的優(yōu)勢就更大了。

  從吞吐量上講,F(xiàn)PGA 上的收發(fā)器可以直接接上 40 Gbps 甚至 100 Gbps 的網(wǎng)線,以線速處理任意大小的數(shù)據(jù)包;而 CPU 需要從網(wǎng)卡把數(shù)據(jù)包收上來才能處理,很多網(wǎng)卡是不能線速處理 64 字節(jié)的小數(shù)據(jù)包的。盡管可以通過插多塊網(wǎng)卡來達(dá)到高性能,但 CPU 和主板支持的 PCIe 插槽數(shù)量往往有限,而且網(wǎng)卡、交換機(jī)本身也價(jià)格不菲。

  從延遲上講,網(wǎng)卡把數(shù)據(jù)包收到 CPU,CPU 再發(fā)給網(wǎng)卡,即使使用 DPDK 這樣高性能的數(shù)據(jù)包處理框架,延遲也有 4~5 微秒。更嚴(yán)重的問題是,通用 CPU 的延遲不夠穩(wěn)定。例如當(dāng)負(fù)載較高時(shí),轉(zhuǎn)發(fā)延遲可能升到幾十微秒甚至更高(如下圖所示);現(xiàn)代操作系統(tǒng)中的時(shí)鐘中斷和任務(wù)調(diào)度也增加了延遲的不確定性。


  ClickNP(FPGA)與 Dell S6000 交換機(jī)(商用交換機(jī)芯片)、Click+DPDK(CPU)和 Linux(CPU)的轉(zhuǎn)發(fā)延遲比較,error bar 表示 5% 和 95%。來源:[5]

  雖然 GPU 也可以高性能處理數(shù)據(jù)包,但 GPU 是沒有網(wǎng)口的,意味著需要首先把數(shù)據(jù)包由網(wǎng)卡收上來,再讓 GPU 去做處理。這樣吞吐量受到 CPU 和/或網(wǎng)卡的限制。GPU 本身的延遲就更不必說了。

  那么為什么不把這些網(wǎng)絡(luò)功能做進(jìn)網(wǎng)卡,或者使用可編程交換機(jī)呢?ASIC 的靈活性仍然是硬傷。

  盡管目前有越來越強(qiáng)大的可編程交換機(jī)芯片,比如支持 P4 語言的 Tofino,ASIC 仍然不能做復(fù)雜的有狀態(tài)處理,比如某種自定義的加密算法。

  綜上,在數(shù)據(jù)中心里 FPGA 的主要優(yōu)勢是穩(wěn)定又極低的延遲,適用于流式的計(jì)算密集型任務(wù)和通信密集型任務(wù)。

  微軟部署FPGA的實(shí)踐

  2016 年 9 月,《連線》(Wired)雜志發(fā)表了一篇《微軟把未來押注在 FPGA 上》的報(bào)道 [3],講述了 Catapult 項(xiàng)目的前世今生。

  緊接著,Catapult 項(xiàng)目的老大 Doug Burger 在 Ignite 2016 大會(huì)上與微軟 CEO Satya Nadella 一起做了 FPGA 加速機(jī)器翻譯的演示。

  演示的總計(jì)算能力是 103 萬 T ops,也就是 1.03 Exa-op,相當(dāng)于 10 萬塊頂級(jí) GPU 計(jì)算卡。一塊 FPGA(加上板上內(nèi)存和網(wǎng)絡(luò)接口等)的功耗大約是 30 W,僅增加了整個(gè)服務(wù)器功耗的十分之一。


  ▲Ignite 2016 上的演示:每秒 1 Exa-op (10^18) 的機(jī)器翻譯運(yùn)算能力



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

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉