www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計(jì)自動化
[導(dǎo)讀]FPGA,一種全新的古老計(jì)算機(jī)芯片,正在悄然改變著全球的芯片市場。知乎問題“如何評價(jià)微軟在數(shù)據(jù)中心使用FPGA代替?zhèn)鹘y(tǒng)CPU的做法?”的下面,來自微軟亞洲研究院的實(shí)習(xí)生李博杰的回答在很短的時間內(nèi)就收獲了近2000的點(diǎn)贊數(shù)(他此前在微軟研究院的微信平臺上的文章網(wǎng)絡(luò)技術(shù)的風(fēng)向標(biāo)——SIGCOMM2016也很受歡迎哦)。這篇文章轉(zhuǎn)載自他在知乎上的回答,看看他眼中微軟的FPGA布局和FPGA的研究前景吧!

 FPGA,一種全新的古老計(jì)算機(jī)芯片,正在悄然改變著全球的芯片市場。知乎問題“如何評價(jià)微軟在數(shù)據(jù)中心使用FPGA代替?zhèn)鹘y(tǒng)CPU的做法?”的下面,來自微軟亞洲研究院的實(shí)習(xí)生李博杰的回答在很短的時間內(nèi)就收獲了近2000的點(diǎn)贊數(shù)(他此前在微軟研究院的微信平臺上的文章網(wǎng)絡(luò)技術(shù)的風(fēng)向標(biāo)——SIGCOMM2016也很受歡迎哦)。這篇文章轉(zhuǎn)載自他在知乎上的回答,看看他眼中微軟的FPGA布局和FPGA的研究前景吧!

問題“用 FPGA 代替 CPU”中,這個“代替”的說法不準(zhǔn)確。我們并不是不用 CPU 了,而是用 FPGA 加速適合它的計(jì)算任務(wù),其他任務(wù)仍然在 CPU 上完成,讓 FPGA 和 CPU 協(xié)同工作。

本回答將涵蓋三個問題:

1.為什么使用 FPGA,相比 CPU、GPU、ASIC(專用芯片)有什么特點(diǎn)?

2.微軟的 FPGA 部署在哪里?FPGA 之間、FPGA 與 CPU 之間是如何通信的?

3.未來 FPGA 在云計(jì)算平臺中應(yīng)充當(dāng)怎樣的角色?僅僅是像 GPU 一樣的計(jì)算加速卡嗎?

一、為什么使用 FPGA?

眾所周知,通用處理器(CPU)的摩爾定律已入暮年,而機(jī)器學(xué)習(xí)和 Web 服務(wù)的規(guī)模卻在指數(shù)級增長。人們使用定制硬件來加速常見的計(jì)算任務(wù),然而日新月異的行業(yè)又要求這些定制的硬件可被重新編程來執(zhí)行新類型的計(jì)算任務(wù)。FPGA (Field Programmable Gate Array) 正是一種硬件可重構(gòu)的體系結(jié)構(gòu),常年來被用作專用芯片(ASIC)的小批量替代品,然而近年來在微軟、百度等公司的數(shù)據(jù)中心大規(guī)模部署,以同時提供強(qiáng)大的計(jì)算能力和足夠的靈活性。

 

 

不同體系結(jié)構(gòu)性能和靈活性的比較

FPGA 為什么快?“都是同行襯托得好”。CPU、GPU 都屬于馮·諾依曼結(jié)構(gòu),指令譯碼執(zhí)行、共享內(nèi)存。FPGA 之所以比 CPU 甚至 GPU 能效高,本質(zhì)上是無指令、無需共享內(nèi)存的體系結(jié)構(gòu)帶來的福利。

馮氏結(jié)構(gòu)中,由于執(zhí)行單元(如 CPU 核)可能執(zhí)行任意指令,就需要有指令存儲器、譯碼器、各種指令的運(yùn)算器、分支跳轉(zhuǎn)處理邏輯。由于指令流的控制邏輯復(fù)雜,不可能有太多條獨(dú)立的指令流,因此 GPU 使用 SIMD(單指令流多數(shù)據(jù)流)來讓多個執(zhí)行單元以同樣的步調(diào)處理不同的數(shù)據(jù),CPU 也支持 SIMD 指令。而 FPGA 每個邏輯單元的功能在重編程(燒寫)時就已經(jīng)確定,不需要指令。

馮氏結(jié)構(gòu)中使用內(nèi)存有兩種作用。一是保存狀態(tài),二是在執(zhí)行單元間通信。由于內(nèi)存是共享的,就需要做訪問仲裁;為了利用訪問局部性,每個執(zhí)行單元有一個私有的緩存,這就要維持執(zhí)行部件間緩存的一致性。對于保存狀態(tài)的需求,F(xiàn)PGA中的寄存器和片上內(nèi)存(BRAM)是屬于各自的控制邏輯的,無需不必要的仲裁和緩存。對于通信的需求,F(xiàn)PGA每個邏輯單元與周圍邏輯單元的連接在重編程(燒寫)時就已經(jīng)確定,并不需要通過共享內(nèi)存來通信。

說了這么多三千英尺高度的話,F(xiàn)PGA 實(shí)際的表現(xiàn)如何呢?我們分別來看計(jì)算密集型任務(wù)和通信密集型任務(wù)。

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

 

 

FPGA 的整數(shù)乘法運(yùn)算能力(估計(jì))

 

 

FPGA 的浮點(diǎn)乘法運(yùn)算能力(估計(jì))

在數(shù)據(jù)中心,F(xiàn)PGA 相比 GPU 的核心優(yōu)勢在于延遲。像必應(yīng)搜索排序這樣的任務(wù),要盡可能快地返回搜索結(jié)果,就需要盡可能降低每一步的延遲。如果使用 GPU 來加速,要想充分利用 GPU 的計(jì)算能力,batch size 就不能太小,延遲將高達(dá)毫秒量級。使用 FPGA 來加速的話,只需要微秒級的 PCIe 延遲(我們現(xiàn)在的 FPGA 是作為一塊 PCIe 加速卡)。未來 Intel 推出通過 QPI 連接的 Xeon + FPGA 之后,CPU 和 FPGA 之間的延遲更可以降到 100 納秒以下,跟訪問主存沒什么區(qū)別了。

FPGA 為什么比 GPU 的延遲低這么多?這本質(zhì)上是體系結(jié)構(gòu)的區(qū)別。FPGA 同時擁有流水線并行和數(shù)據(jù)并行,而 GPU 幾乎只有數(shù)據(jù)并行(流水線深度受限)。例如處理一個數(shù)據(jù)包有 10 個步驟,F(xiàn)PGA 可以搭建一個 10 級流水線,流水線的不同級在處理不同的數(shù)據(jù)包,每個數(shù)據(jù)包流經(jīng) 10 級之后處理完成。每處理完成一個數(shù)據(jù)包,就能馬上輸出。而 GPU 的數(shù)據(jù)并行方法是做 10 個計(jì)算單元,每個計(jì)算單元也在處理不同的數(shù)據(jù)包,然而所有的計(jì)算單元必須按照統(tǒng)一的步調(diào),做相同的事情(SIMD,Single Instruction Multiple Data)。這就要求 10 個數(shù)據(jù)包必須一起輸入、一起輸出,輸入輸出的延遲增加了。當(dāng)任務(wù)是逐個而非成批到達(dá)的時候,流水線并行比數(shù)據(jù)并行可實(shí)現(xiàn)更低的延遲。因此對流式計(jì)算的任務(wù),F(xiàn)PGA 比 GPU 天生有延遲方面的優(yōu)勢。

 

 

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

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

1.數(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è)想大不相同。

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

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

 

 

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

對通信密集型任務(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ù)載較高時,轉(zhuǎn)發(fā)延遲可能升到幾十微秒甚至更高(如下圖所示);現(xiàn)代操作系統(tǒng)中的時鐘中斷和任務(wù)調(diào)度也增加了延遲的不確定性。

 

 

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

雖然 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 大會上與微軟 CEO Satya Nadella 一起做了 FPGA 加速機(jī)器翻譯的演示。

 

 

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

這里就給大家八一八這個每秒 1 Exa-op 的數(shù)字是怎么算出來的。每塊生產(chǎn)環(huán)境中部署的 Stratix V FPGA 有 1.8 T ops 的計(jì)算能力,每臺服務(wù)器上插一塊 FPGA。實(shí)際使用時,每 8 臺服務(wù)器為一組,一臺服務(wù)器作為 FPGA 的控制節(jié)點(diǎn)。控制節(jié)點(diǎn)的 CPU 也可以做機(jī)器翻譯的計(jì)算,但是每個 CPU 核只能做 0.1 T ops,相比 FPGA 是聊勝于無。非控制節(jié)點(diǎn)上的 FPGA 通過網(wǎng)絡(luò)從其他 FPGA 收發(fā)數(shù)據(jù),不需要本地 CPU 處理數(shù)據(jù)平面。

截至演示時,微軟 Azure 云有 46 萬臺服務(wù)器部署了 FPGA,必應(yīng)有 1.5 萬臺,Exchange 服務(wù)有 9.5 萬臺,共計(jì) 57 萬臺。乘起來得到總的計(jì)算能力是 103 萬 T ops,也就是 1.03 Exa-op,相當(dāng)于 10 萬塊頂級 GPU 計(jì)算卡。一塊 FPGA(加上板上內(nèi)存和網(wǎng)絡(luò)接口等)的功耗大約是 30 W,僅增加了整個服務(wù)器功耗的十分之一。

微軟部署 FPGA 并不是一帆風(fēng)順的。對于把 FPGA 部署在哪里這個問題,大致經(jīng)歷了三個階段:

專用的 FPGA 集群,里面插滿了 FPGA

每臺機(jī)器一塊 FPGA,采用專用網(wǎng)絡(luò)連接

每臺機(jī)器一塊 FPGA,放在網(wǎng)卡和交換機(jī)之間,共享服務(wù)器網(wǎng)絡(luò)

 

 

微軟 FPGA 部署方式的三個階段

第一個階段是專用集群,里面插滿了 FPGA 加速卡,就像是一個 FPGA 組成的超級計(jì)算機(jī)。下圖是最早的 BFB 實(shí)驗(yàn)板,一塊 PCIe 卡上放了 6 塊 FPGA,每臺 1U 服務(wù)器上又插了 4 塊 PCIe 卡。

 

 

最早的 BFB 實(shí)驗(yàn)板,上面放了 6 塊 FPGA

只要規(guī)模足夠大,對 FPGA 價(jià)格過高的擔(dān)心將是不必要的。

 

 

最早的 BFB 實(shí)驗(yàn)板,1U 服務(wù)器上插了 4 塊 FPGA 卡

像超級計(jì)算機(jī)一樣的部署方式,意味著有專門的一個機(jī)柜全是上圖這種裝了 24 塊 FPGA 的服務(wù)器(下圖左)。這種方式有幾個問題:

不同機(jī)器的 FPGA 之間無法通信,F(xiàn)PGA 所能處理問題的規(guī)模受限于單臺服務(wù)器上 FPGA 的數(shù)量;

數(shù)據(jù)中心里的其他機(jī)器要把任務(wù)集中發(fā)到這個機(jī)柜,構(gòu)成了 in-cast,網(wǎng)絡(luò)延遲很難做到穩(wěn)定。

FPGA 專用機(jī)柜構(gòu)成了單點(diǎn)故障,只要它一壞,誰都別想加速了;

裝 FPGA 的服務(wù)器是定制的,冷卻、運(yùn)維都增加了麻煩。

 

 

部署 FPGA 的三種方式,從中心化到分布式

一種不那么激進(jìn)的方式是,在每個機(jī)柜一面部署一臺裝滿 FPGA 的服務(wù)器(上圖中)。這避免了上述問題 (2)(3),但 (1)(4) 仍然沒有解決。

第二個階段,為了保證數(shù)據(jù)中心中服務(wù)器的同構(gòu)性(這也是不用 ASIC 的一個重要原因),在每臺服務(wù)器上插一塊 FPGA(上圖右),F(xiàn)PGA 之間通過專用網(wǎng)絡(luò)連接。這也是微軟在 ISCA‘14 上所發(fā)表論文采用的部署方式。

 

 

Open Compute Server 在機(jī)架中

 

 

Open Compute Server 內(nèi)景。紅框是放 FPGA 的位置

 

 

插入 FPGA 后的 Open Compute Server

 

 

FPGA 與 Open Compute Server 之間的連接與固定

FPGA采用Stratix V D5,有172K個ALM,2014個M20K片上內(nèi)存,1590個 DSP。板上有一個8GB DDR3-1333內(nèi)存,一個PCIe Gen3 x8接口,兩個10 Gbps網(wǎng)絡(luò)接口。一個機(jī)柜之間的FPGA采用專用網(wǎng)絡(luò)連接,一組10G網(wǎng)口8個一組連成環(huán),另一組10G網(wǎng)口6個一組連成環(huán),不使用交換機(jī)。

 

 

機(jī)柜中 FPGA 之間的網(wǎng)絡(luò)連接方式

這樣一個 1632 臺服務(wù)器、1632 塊 FPGA 的集群,把必應(yīng)的搜索結(jié)果排序整體性能提高到了 2 倍(換言之,節(jié)省了一半的服務(wù)器)。如下圖所示,每 8 塊 FPGA 穿成一條鏈,中間用前面提到的 10 Gbps 專用網(wǎng)線來通信。這 8 塊 FPGA 各司其職,有的負(fù)責(zé)從文檔中提取特征(黃色),有的負(fù)責(zé)計(jì)算特征表達(dá)式(綠色),有的負(fù)責(zé)計(jì)算文檔的得分(紅色)。

 

 

FPGA 加速必應(yīng)的搜索排序過程

除了加速搜索結(jié)果的排序(RaaS,Ranking as a Service),F(xiàn)PGA 還被用來加速從倒排索引中取出相關(guān)文檔并譯碼的過程(SaaS,Selection as a Service)。為了加快文檔數(shù)據(jù)結(jié)構(gòu)的訪問,F(xiàn)PGA 把服務(wù)器主存里常用的 4K 內(nèi)存頁面緩存在 FPGA 板上的 DDR 上。

 

 

FPGA 不僅降低了必應(yīng)搜索的延遲,還顯著提高了延遲的穩(wěn)定性

 

 

本地和遠(yuǎn)程的 FPGA 均可以降低搜索延遲,遠(yuǎn)程 FPGA 的通信延遲相比搜索延遲可忽略

FPGA 在必應(yīng)的部署取得了成功,Catapult 項(xiàng)目繼續(xù)在公司內(nèi)擴(kuò)張。微軟內(nèi)部擁有最多服務(wù)器的,就是云計(jì)算 Azure 部門了。Azure 部門急需解決的問題是網(wǎng)絡(luò)和存儲虛擬化帶來的開銷。Azure 把虛擬機(jī)賣給客戶,需要給虛擬機(jī)的網(wǎng)絡(luò)提供防火墻、負(fù)載均衡、隧道、NAT 等網(wǎng)絡(luò)功能。由于云存儲的物理存儲跟計(jì)算節(jié)點(diǎn)是分離的,需要把數(shù)據(jù)從存儲節(jié)點(diǎn)通過網(wǎng)絡(luò)搬運(yùn)過來,還要進(jìn)行壓縮和加密。

在 1 Gbps 網(wǎng)絡(luò)和機(jī)械硬盤的時代,網(wǎng)絡(luò)和存儲虛擬化的 CPU 開銷不值一提。隨著網(wǎng)絡(luò)和存儲速度越來越快,網(wǎng)絡(luò)上了 40 Gbps,一塊 SSD 的吞吐量也能到 1 GB/s,CPU 漸漸變得力不從心了。例如 Hyper-V 虛擬交換機(jī)只能處理 25 Gbps 左右的流量,不能達(dá)到 40 Gbps 線速,當(dāng)數(shù)據(jù)包較小時性能更差;AES-256 加密和 SHA-1 簽名,每個 CPU 核只能處理 100 MB/s,只是一塊 SSD 吞吐量的十分之一。

 

 

網(wǎng)絡(luò)隧道協(xié)議、防火墻處理 40 Gbps 需要的 CPU 核數(shù)

為了加速網(wǎng)絡(luò)功能和存儲虛擬化,微軟把 FPGA 部署在網(wǎng)卡和交換機(jī)之間。如下圖所示,每個 FPGA 有一個 4 GB DDR3-1333 DRAM,通過兩個 PCIe Gen3 x8 接口連接到一個 CPU socket(物理上是 PCIe Gen3 x16 接口,因?yàn)?FPGA 沒有 x16 的硬核,邏輯上當(dāng)成兩個 x8 的用)。物理網(wǎng)卡(NIC)就是普通的 40 Gbps 網(wǎng)卡,僅用于宿主機(jī)與網(wǎng)絡(luò)之間的通信。

 

 

Azure 服務(wù)器部署 FPGA 的架構(gòu)

FPGA(SmartNIC)對每個虛擬機(jī)虛擬出一塊網(wǎng)卡,虛擬機(jī)通過 SR-IOV 直接訪問這塊虛擬網(wǎng)卡。原本在虛擬交換機(jī)里面的數(shù)據(jù)平面功能被移到了 FPGA 里面,虛擬機(jī)收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包均不需要 CPU 參與,也不需要經(jīng)過物理網(wǎng)卡(NIC)。這樣不僅節(jié)約了可用于出售的 CPU 資源,還提高了虛擬機(jī)的網(wǎng)絡(luò)性能(25 Gbps),把同數(shù)據(jù)中心虛擬機(jī)之間的網(wǎng)絡(luò)延遲降低了 10 倍。

 

 

網(wǎng)絡(luò)虛擬化的加速架構(gòu)

這就是微軟部署 FPGA 的第三代架構(gòu),也是目前“每臺服務(wù)器一塊 FPGA”大規(guī)模部署所采用的架構(gòu)。FPGA 復(fù)用主機(jī)網(wǎng)絡(luò)的初心是加速網(wǎng)絡(luò)和存儲,更深遠(yuǎn)的影響則是把 FPGA 之間的網(wǎng)絡(luò)連接擴(kuò)展到了整個數(shù)據(jù)中心的規(guī)模,做成真正 cloud-scale 的“超級計(jì)算機(jī)”。第二代架構(gòu)里面,F(xiàn)PGA 之間的網(wǎng)絡(luò)連接局限于同一個機(jī)架以內(nèi),F(xiàn)PGA 之間專網(wǎng)互聯(lián)的方式很難擴(kuò)大規(guī)模,通過 CPU 來轉(zhuǎn)發(fā)則開銷太高。

第三代架構(gòu)中,F(xiàn)PGA 之間通過 LTL (Lightweight Transport Layer) 通信。同一機(jī)架內(nèi)延遲在 3 微秒以內(nèi);8 微秒以內(nèi)可達(dá) 1000 塊 FPGA;20 微秒可達(dá)同一數(shù)據(jù)中心的所有 FPGA。第二代架構(gòu)盡管 8 臺機(jī)器以內(nèi)的延遲更低,但只能通過網(wǎng)絡(luò)訪問 48 塊 FPGA。為了支持大范圍的 FPGA 間通信,第三代架構(gòu)中的 LTL 還支持 PFC 流控協(xié)議和 DCQCN 擁塞控制協(xié)議。

 

 

縱軸:LTL 的延遲,橫軸:可達(dá)的 FPGA 數(shù)量

 

 

FPGA 內(nèi)的邏輯模塊關(guān)系,其中每個 Role 是用戶邏輯(如 DNN 加速、網(wǎng)絡(luò)功能加速、加密),外面的部分負(fù)責(zé)各個 Role 之間的通信及 Role 與外設(shè)之間的通信

 

 

FPGA 構(gòu)成的數(shù)據(jù)中心加速平面,介于網(wǎng)絡(luò)交換層(TOR、L1、L2)和傳統(tǒng)服務(wù)器軟件(CPU 上運(yùn)行的軟件)之間

通過高帶寬、低延遲的網(wǎng)絡(luò)互聯(lián)的 FPGA 構(gòu)成了介于網(wǎng)絡(luò)交換層和傳統(tǒng)服務(wù)器軟件之間的數(shù)據(jù)中心加速平面。除了每臺提供云服務(wù)的服務(wù)器都需要的網(wǎng)絡(luò)和存儲虛擬化加速,F(xiàn)PGA 上的剩余資源還可以用來加速必應(yīng)搜索、深度神經(jīng)網(wǎng)絡(luò)(DNN)等計(jì)算任務(wù)。

對很多類型的應(yīng)用,隨著分布式 FPGA 加速器的規(guī)模擴(kuò)大,其性能提升是超線性的。例如 CNN inference,當(dāng)只用一塊 FPGA 的時候,由于片上內(nèi)存不足以放下整個模型,需要不斷訪問 DRAM 中的模型權(quán)重,性能瓶頸在 DRAM;如果 FPGA 的數(shù)量足夠多,每塊 FPGA 負(fù)責(zé)模型中的一層或者一層中的若干個特征,使得模型權(quán)重完全載入片上內(nèi)存,就消除了 DRAM 的性能瓶頸,完全發(fā)揮出 FPGA 計(jì)算單元的性能。當(dāng)然,拆得過細(xì)也會導(dǎo)致通信開銷的增加。把任務(wù)拆分到分布式 FPGA 集群的關(guān)鍵在于平衡計(jì)算和通信。

 

 

從神經(jīng)網(wǎng)絡(luò)模型到 HaaS 上的 FPGA。利用模型內(nèi)的并行性,模型的不同層、不同特征映射到不同 FPGA

在 MICRO’16 會議上,微軟提出了 Hardware as a Service (HaaS)的概念,即把硬件作為一種可調(diào)度的云服務(wù),使得 FPGA 服務(wù)的集中調(diào)度、管理和大規(guī)模部署成為可能。

 

 

Hardware as a Service (HaaS)

從第一代裝滿 FPGA 的專用服務(wù)器集群,到第二代通過專網(wǎng)連接的 FPGA 加速卡集群,到目前復(fù)用數(shù)據(jù)中心網(wǎng)絡(luò)的大規(guī)模 FPGA 云,三個思想指導(dǎo)我們的路線:

硬件和軟件不是相互取代的關(guān)系,而是合作的關(guān)系;

必須具備靈活性,即用軟件定義的能力;

必須具備可擴(kuò)放性(scalability)。

三、FPGA 在云計(jì)算中的角色

最后談一點(diǎn)我個人對 FPGA 在云計(jì)算中角色的思考。作為三年級博士生,我在微軟亞洲研究院的研究試圖回答兩個問題:

FPGA 在云規(guī)模的網(wǎng)絡(luò)互連系統(tǒng)中應(yīng)當(dāng)充當(dāng)怎樣的角色?

如何高效、可擴(kuò)放地對 FPGA + CPU 的異構(gòu)系統(tǒng)進(jìn)行編程?

我對 FPGA 業(yè)界主要的遺憾是,F(xiàn)PGA 在數(shù)據(jù)中心的主流用法,從除微軟外的互聯(lián)網(wǎng)巨頭,到兩大 FPGA 廠商,再到學(xué)術(shù)界,大多是把 FPGA 當(dāng)作跟 GPU 一樣的計(jì)算密集型任務(wù)的加速卡。然而 FPGA 真的很適合做 GPU 的事情嗎?前面講過,F(xiàn)PGA 和 GPU 最大的區(qū)別在于體系結(jié)構(gòu),F(xiàn)PGA 更適合做需要低延遲的流式處理,GPU 更適合做大批量同構(gòu)數(shù)據(jù)的處理。

由于很多人打算把 FPGA 當(dāng)作計(jì)算加速卡來用,兩大 FPGA 廠商推出的高層次編程模型也是基于 OpenCL,模仿 GPU 基于共享內(nèi)存的批處理模式。CPU 要交給 FPGA 做一件事,需要先放進(jìn) FPGA 板上的 DRAM,然后告訴 FPGA 開始執(zhí)行,F(xiàn)PGA 把執(zhí)行結(jié)果放回 DRAM,再通知 CPU 去取回。CPU 和 FPGA 之間本來可以通過 PCIe 高效通信,為什么要到板上的 DRAM 繞一圈?也許是工程實(shí)現(xiàn)的問題,我們發(fā)現(xiàn)通過 OpenCL 寫 DRAM、啟動 kernel、讀 DRAM 一個來回,需要 1.8 毫秒。而通過 PCIe DMA 來通信,卻只要 1~2 微秒。

 

 

PCIe I/O channel 與 OpenCL 的性能比較??v坐標(biāo)為對數(shù)坐標(biāo)。

OpenCL 里面多個 kernel 之間的通信就更夸張了,默認(rèn)的方式也是通過共享內(nèi)存。本文開篇就講,F(xiàn)PGA 比 CPU 和 GPU 能效高,體系結(jié)構(gòu)上的根本優(yōu)勢是無指令、無需共享內(nèi)存。使用共享內(nèi)存在多個 kernel 之間通信,在順序通信(FIFO)的情況下是毫無必要的。況且 FPGA 上的 DRAM 一般比 GPU 上的 DRAM 慢很多。

因此我們提出了 ClickNP 網(wǎng)絡(luò)編程框架 [5],使用管道(channel)而非共享內(nèi)存來在執(zhí)行單元(element/kernel)間、執(zhí)行單元和主機(jī)軟件間進(jìn)行通信。需要共享內(nèi)存的應(yīng)用,也可以在管道的基礎(chǔ)上實(shí)現(xiàn),畢竟 CSP(Communicating Sequential Process)和共享內(nèi)存理論上是等價(jià)的嘛。ClickNP 目前還是在 OpenCL 基礎(chǔ)上的一個框架,受到 C 語言描述硬件的局限性(當(dāng)然 HLS 比 Verilog 的開發(fā)效率確實(shí)高多了)。理想的硬件描述語言,大概不會是 C 語言吧。

 

 

ClickNP 使用 channel 在 elements 間通信

 

 

ClickNP 使用 channel 在 FPGA 和 CPU 間通信

低延遲的流式處理,需要最多的地方就是通信。然而 CPU 由于并行性的限制和操作系統(tǒng)的調(diào)度,做通信效率不高,延遲也不穩(wěn)定。此外,通信就必然涉及到調(diào)度和仲裁,CPU 由于單核性能的局限和核間通信的低效,調(diào)度、仲裁性能受限,硬件則很適合做這種重復(fù)工作。因此我的博士研究把 FPGA 定義為通信的“大管家”,不管是服務(wù)器跟服務(wù)器之間的通信,虛擬機(jī)跟虛擬機(jī)之間的通信,進(jìn)程跟進(jìn)程之間的通信,CPU 跟存儲設(shè)備之間的通信,都可以用 FPGA 來加速。

成也蕭何,敗也蕭何。缺少指令同時是 FPGA 的優(yōu)勢和軟肋。每做一點(diǎn)不同的事情,就要占用一定的 FPGA 邏輯資源。如果要做的事情復(fù)雜、重復(fù)性不強(qiáng),就會占用大量的邏輯資源,其中的大部分處于閑置狀態(tài)。這時就不如用馮·諾依曼結(jié)構(gòu)的處理器。數(shù)據(jù)中心里的很多任務(wù)有很強(qiáng)的局部性和重復(fù)性:一部分是虛擬化平臺需要做的網(wǎng)絡(luò)和存儲,這些都屬于通信;另一部分是客戶計(jì)算任務(wù)里的,比如機(jī)器學(xué)習(xí)、加密解密。我們首先把 FPGA 用于它最擅長的通信,日后也許也會像 AWS 那樣把 FPGA 作為計(jì)算加速卡租給客戶。

不管通信還是機(jī)器學(xué)習(xí)、加密解密,算法都是很復(fù)雜的,如果試圖用 FPGA 完全取代 CPU,勢必會帶來 FPGA 邏輯資源極大的浪費(fèi),也會提高 FPGA 程序的開發(fā)成本。更實(shí)用的做法是FPGA 和 CPU 協(xié)同工作,局部性和重復(fù)性強(qiáng)的歸 FPGA,復(fù)雜的歸 CPU。

當(dāng)我們用 FPGA 加速了必應(yīng)搜索、深度學(xué)習(xí)等越來越多的服務(wù);當(dāng)網(wǎng)絡(luò)虛擬化、存儲虛擬化等基礎(chǔ)組件的數(shù)據(jù)平面被 FPGA 把持;當(dāng) FPGA 組成的“數(shù)據(jù)中心加速平面”成為網(wǎng)絡(luò)和服務(wù)器之間的天塹……似乎有種感覺,F(xiàn)PGA 將掌控全局,CPU 上的計(jì)算任務(wù)反而變得碎片化,受 FPGA 的驅(qū)使。以往我們是 CPU 為主,把重復(fù)的計(jì)算任務(wù)卸載(offload)到 FPGA 上;以后會不會變成 FPGA 為主,把復(fù)雜的計(jì)算任務(wù)卸載到 CPU 上呢?隨著 Xeon + FPGA 的問世,古老的 SoC 會不會在數(shù)據(jù)中心煥發(fā)新生?

『本文轉(zhuǎn)載自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系刪除』

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉