加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

FPGA技術(shù)的未來發(fā)展:誰與AI平分秋色

2019/03/22
104
  • 1評論
閱讀需 51 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

 

任何科學(xué)技術(shù)的發(fā)展和進(jìn)步都離不開兩個主要的推動力量,一個是相關(guān)領(lǐng)域各大公司的研發(fā),另一個就是各大高校與科研院所的科學(xué)研究。這兩者往往是相互補(bǔ)充、相互促進(jìn)的關(guān)系,既能涵蓋短期的實(shí)用性研究,又有長期技術(shù)難題的攻關(guān)與突破。
 
這樣的技術(shù)發(fā)展模式,FPGA 行業(yè)也不例外。除了英特爾、賽靈思等大公司的研發(fā)投入之外,世界上各大頂尖高校對于 FPGA 的研究也在不斷幫助 FPGA 技術(shù)取得新的成就。
 
在諸多決定著 FPGA 技術(shù)發(fā)展的新成就里,那些最為突出的成果,也就是所謂的“皇冠上的明珠”,都會集中發(fā)表在一年一度的“FPGA 國際研討會”上(簡稱 ISFPGA)。從 1993 年舉辦至今,ISFPGA 一直是 FPGA 領(lǐng)域的旗艦級頂會,沒有之一。在 ISFPGA 上發(fā)表的文章,都代表著 FPGA 最前沿和最優(yōu)秀的研究成果,也被業(yè)界人士看成是預(yù)測 FPGA 今后發(fā)展方向的風(fēng)向標(biāo)。
 
在 2019 年 2 月結(jié)束的 ISFPGA 會議上,再一次涌現(xiàn)出了諸多嶄新的研究成果。從整體上看,業(yè)界的研究方向主要集中在兩個方面:
一個是和人工智能機(jī)器學(xué)習(xí)相關(guān)的各個領(lǐng)域,比如 FPGA 微架構(gòu)、FPGA 編程工具與編程語言,以及 FPGA 在 AI 的各種應(yīng)用等。
 
另一個是 FPGA 的高層次綜合(High-Level Synthesis,HLS),也就是使用高層語言,如 C++/OpenCL/Python 等,對 FPGA 進(jìn)行有效的編程和使用。
 
其中,這屆會議中與 AI 相關(guān)的文章有 8 篇,與高層次綜合相關(guān)的文章有 6 篇,占會議接收的全部 24 篇論文的超過一半。
 
老石在之前詳細(xì)介紹過賽靈思在這次會議上發(fā)表的有關(guān) ACAP 架構(gòu)的論文。在今天的這篇文章中,老石又挑選了另外五篇具有代表性的論文,為各位逐一點(diǎn)評和解析。同時,我也會簡單介紹論文主要作者的背景和代表性研究,方便各位把握當(dāng)前最新的 FPGA 發(fā)展動態(tài)。
 
欲查看本文介紹的這幾篇論文全文,請?jiān)?ldquo;老石談芯”后臺回復(fù)“FPGA 論文”。
 
1
FPGA 微架構(gòu):低精度乘加單元
 
 
一句話總結(jié)
隨著軟硬件技術(shù)的不斷發(fā)展,DNN 算力的瓶頸已逐漸從內(nèi)存帶寬轉(zhuǎn)向乘加(MAC)操作效率,因此本文提出了面向英特爾 FPGA 的全新低精度乘加單元微架構(gòu)。
 
對行業(yè)發(fā)展的影響和意義
顯著提升了 FPGA 低精度乘加操作的性能與資源利用率,是針對 DNN 應(yīng)用的“殺手級”微架構(gòu)創(chuàng)新。提出的新架構(gòu)專為英特爾 FPGA 設(shè)計(jì),預(yù)計(jì)會帶來巨大的競爭優(yōu)勢。
 
技術(shù)細(xì)節(jié)
本論文來自多倫多大學(xué)的 Vaughn Betz 課題組。多倫多大學(xué)的 FPGA 研究一直被公認(rèn)是世界頂尖水平,歸功于這里的一群大牛教授,比如 Jonathan Rose, Vaughn Betz, Jason Anderson, Paul Chow 等。他們的研究基本涵蓋了 FPGA 的各個層面,包括架構(gòu)、工具、應(yīng)用等各個領(lǐng)域。
 
他們很多人都曾經(jīng)擔(dān)任過 FPGA 公司高管,有多年的工業(yè)界一線研發(fā)經(jīng)歷,轉(zhuǎn)向?qū)W術(shù)界后仍然與工業(yè)界結(jié)合非常緊密,這使得他們的研究有著極強(qiáng)的實(shí)用性,對于 FPGA 行業(yè)發(fā)展有著很重要的推動作用。
 
 
這篇論文研究的大背景,是當(dāng)前在 DNN 中使用低精度算術(shù)運(yùn)算可以取得極大的性能提升。DNN 中的兩類核心算法:CNN 和 LSTM,都可以在很大程度上受益于低精度的乘加運(yùn)算。為了實(shí)現(xiàn)這種低精度的 DNN 數(shù)據(jù)通路,F(xiàn)PGA 往往是超越 CPU 和 GPU 的第一選擇,因?yàn)樗陟`活性和性能等方面有著很好的平衡。例如,微軟的腦波項(xiàng)目就使用了自定義的低精度(8~9 位)浮點(diǎn)數(shù)表示。
 
另一方面,作者指出隨著 FPGA 器件和云端部署等技術(shù)的發(fā)展,內(nèi)存帶寬已經(jīng)逐漸不再是 DNN 的算力瓶頸,取而代之的是單周期可以完成的乘加操作數(shù)量,這其實(shí)是一個非常新穎的觀點(diǎn)。
 
作者發(fā)現(xiàn),傳統(tǒng)的 FPGA 架構(gòu)在執(zhí)行乘加操作時,會浪費(fèi)大量邏輯資源,進(jìn)而導(dǎo)致性能無法達(dá)到最優(yōu)。因此本文提出了三種針對英特爾 Stratix 10 FPGA 的微架構(gòu)創(chuàng)新,以提升 DNN 里乘加操作的性能和資源使用率。例如,一種方法是在傳統(tǒng) ALM 結(jié)構(gòu)里增加一條額外的進(jìn)位鏈,如下圖所示。這樣避免了使用多余的 ALM 完成最后一級加法操作,從而節(jié)省了邏輯資源,也減少了 ALM 間的傳輸延時。
 
 
使用這種方法,乘加操作的平均延時會縮短 21%,乘加單元的面積會減小 35%。文中提出的另外兩種微架構(gòu)在這里不再詳述,這篇文章的文筆很棒,可讀性很強(qiáng),推薦有興趣的讀者看看。

 

 
2
名為 HetroCL 的可重構(gòu)計(jì)算編程語言框架
 
 
一句話總結(jié)
基于 Python 的 FPGA 編程模型與編譯工具,為 DNN 應(yīng)用而優(yōu)化。
 
對行業(yè)發(fā)展的影響和意義
降低了 FPGA 的編程難度,有效解決了一些當(dāng)前高層次綜合存在的問題與痛點(diǎn)。相比傳統(tǒng)的 FPGA 開發(fā)與編程模型,這個新提出的名為 HetroCL 的領(lǐng)域?qū)S谜Z言和編程框架兼顧了性能與開發(fā)效率,使開發(fā)者可以專注于算法實(shí)現(xiàn),而無需考慮 FPGA 底層邏輯的實(shí)現(xiàn)與優(yōu)化。
 
技術(shù)細(xì)節(jié)
這篇文章由康奈爾大學(xué)的張志如副教授、以及 UCLA 的叢京生教授及兩位的團(tuán)隊(duì)合作完成,并獲得了本次大會的最佳論文獎。這兩位也是 FPGA 領(lǐng)域的頂級學(xué)者,主要專注于 FPGA 的高層次綜合等領(lǐng)域,而叢教授也是張教授的博士導(dǎo)師。在博士研究期間,二人創(chuàng)辦了 AutoESL 公司,并隨后被賽靈思收購,其主要軟件產(chǎn)品也正是賽靈思 Vivado HLS 的前身。
 
 
FPGA 的高層次綜合(High-Level Synthesis)指的是將諸如 C++、OpenCL 等高層語言,通過特定編譯工具直接轉(zhuǎn)化成 FPGA 上可以運(yùn)行的硬件代碼。有關(guān) HLS 的研究一直是學(xué)術(shù)界和工業(yè)界的研究熱點(diǎn),英特爾和賽靈思都有各自的 HLS 工具和開發(fā)套件。
 
然而,使用 HLS 并沒有想象中那么簡單。雖然算法和模型可以使用高層語言編寫,但為了達(dá)到最優(yōu)的硬件性能,開發(fā)者仍然需要清楚的了解底層 FPGA 的硬件架構(gòu),并通過特殊的預(yù)處理指令指導(dǎo) HLS 編譯器生成期望的硬件結(jié)構(gòu)。這也使得 HLS 在很多時候并沒有體現(xiàn)出它的便利性優(yōu)勢。
 
例如,一個簡單的點(diǎn)積函數(shù)的 HLS 描述如下圖所示,可以看到算法部分包含很多與底層硬件相關(guān)的#pragma,用以指導(dǎo)特定的編譯器行為,嚴(yán)重影響開發(fā)效率與代碼可讀性。
 
 
為了解決這個問題,這篇論文提出了一種基于 Python 的領(lǐng)域?qū)S谜Z言(Domain Specific Language),名為 HeteroCL。它的最主要特點(diǎn)是能將算法描述與底層硬件結(jié)構(gòu)進(jìn)行完全解耦,使得算法設(shè)計(jì)師不需要關(guān)心底層硬件的數(shù)據(jù)類型、計(jì)算單元實(shí)現(xiàn)以及存儲器架構(gòu)優(yōu)化等,如下圖所示。
 
 
關(guān)于 HeteroCL 的語法和語義在這里不再詳述,有興趣的讀者可以在老石談芯后臺回復(fù)“FPGA 論文”自行查閱論文原文。

 

 
3
使用 P4 語言編程 FPGA
 
 
一句話總結(jié)
使用高層語言“P4”構(gòu)建網(wǎng)絡(luò)算法和應(yīng)用,并直接映射到 FPGA 上執(zhí)行。
 
對行業(yè)發(fā)展的影響和意義
這是一種快速開發(fā) FPGA 的新方法。與基于 RTL 的傳統(tǒng) FPGA 開發(fā)方法、以及基于 C/C++的高層次綜合 HLS 相比,這種方法在性能和靈活性達(dá)到了很好的平衡。P4 適用于諸如網(wǎng)絡(luò)數(shù)據(jù)包處理等算法和應(yīng)用,使用者不需要掌握 Verilog 或 VHDL 等硬件描述語言,就可以快速完成網(wǎng)絡(luò)算法的建模與 FPGA 硬件實(shí)現(xiàn)。
 
技術(shù)細(xì)節(jié)
這篇論文的作者來自斯坦福大學(xué)、賽靈思和劍橋大學(xué),作者之一的 Nick McKeown 教授就是 P4 語言的發(fā)明者。這篇論文主要介紹了如何使用 P4 編寫計(jì)算機(jī)網(wǎng)絡(luò)算法,并如何通過新提出的軟件工具將其自動映射到 FPGA 上。
 
P4 語言的全名為“Programming Protocol-independent Packet Processors”。與 C/C++/Python 等通用語言不同,P4 是一種領(lǐng)域?qū)S谜Z言,主要被設(shè)計(jì)用來描述各類網(wǎng)絡(luò)算法與應(yīng)用,如數(shù)據(jù)包處理、分類、查找、路由等等。顧名思義,P4 語言的主要設(shè)計(jì)目標(biāo)有以下三點(diǎn):
 
協(xié)議無關(guān):即 P4 語言及其底層硬件可以支持各類網(wǎng)絡(luò)協(xié)議
 
現(xiàn)場可編程:即部署后仍然具有可編程能力
 
可擴(kuò)展:即 P4 可以在多種硬件平臺上使用
 
與 ASIC 相比,F(xiàn)PGA 在性能上有著大約一個量級的差距。即便如此,F(xiàn)PGA 有著很好的靈活性,能夠?qū)崿F(xiàn)多種網(wǎng)絡(luò)算法并在其中靈活切換,因此被廣泛用于網(wǎng)絡(luò)數(shù)據(jù)處理的場合,例如之前講過的智能網(wǎng)卡等等。
 
然而,F(xiàn)PGA 對于非硬件工程師而言有著很大的開發(fā)難度,因此使用 P4 這種領(lǐng)域?qū)S谜Z言進(jìn)行 FPGA 的高層次開發(fā)就成了十分自然的考慮。
 
這篇論文提出的開發(fā)流程如下圖所示。簡單來說,就是將 P4 程序,借助賽靈思的 P4 和 SDNet 編譯器生成底層的 Verilog 模塊,然后映射到名為“NetFPGA”的參考設(shè)計(jì)上。
 
 
在生成 Verilog 模塊的過程中,使用了定義好的模塊庫和元組。因此這種方法本質(zhì)上是一種 FPGA 虛擬化方法,即在 FPGA 底層硬件之上,增加了一層虛擬的模塊層,并可以通過 P4 語言直接映射。

 

 
4
將 DNN 模型映射到 FPGA 云的開源架構(gòu)
 
 
一句話總結(jié)
一個開源的工具鏈,用于將訓(xùn)練完成的 CNN 模型映射到亞馬遜 AWS FPGA 云服務(wù)上運(yùn)行。
 
對行業(yè)發(fā)展的影響和意義
這篇論文與微軟腦波項(xiàng)目(Project Brainwave)完成的工作非常類似,不同之處在于采用了高層次綜合 HLS 的方法,針對公有云的 FPGA 服務(wù),并且開源。因此為從事云端 DNN 加速研究的相關(guān)人員和機(jī)構(gòu)提供了應(yīng)用平臺與經(jīng)驗(yàn)借鑒。
 
技術(shù)細(xì)節(jié)
這篇論文的作者來自新加坡和美國伊利諾伊厄巴納 - 香檳分校(UIUC),作者之一來自 UIUC 的陳德銘教授是硬件加速器研究領(lǐng)域的知名學(xué)者。
 
這篇論文與微軟腦波項(xiàng)目完成的目標(biāo)非常類似,只是實(shí)現(xiàn)方法有所不同。老石之前介紹過,腦波項(xiàng)目將訓(xùn)練好的 DNN 模型轉(zhuǎn)化成數(shù)據(jù)流圖表示,然后根據(jù)單一 FPGA 的資源情況,對數(shù)據(jù)流圖進(jìn)行拆分,并映射到 FPGA 的軟核 NPU 上。
 
在這篇論文中,直接使用 HLS 工具對 DNN 模型進(jìn)行綜合,見下圖,這在很大程度上減少了開發(fā)的難度,但與腦波方案相比,不可避免的會有較大的性能差距。同時,這個工作只支持 Caffe,而不支持其他 DNN 框架。
 
 
在腦波項(xiàng)目中,F(xiàn)PGA 基礎(chǔ)架構(gòu)是源于 Catapult 項(xiàng)目的大規(guī)模 FPGA 互聯(lián)和資源池,而本論文主要面向的是亞馬遜 AWS-F1 實(shí)例的 FPGA 公有云。這樣的好處是能為廣大 AWS 開發(fā)者或其他希望進(jìn)行 FPGA DNN 加速的用戶提供參考平臺和經(jīng)驗(yàn)借鑒,但同樣的也會有明顯的性能限制。
 
相比 CPU 而言,使用 FPGA 對 DNN 進(jìn)行硬件加速仍然可以取得可觀的性能提升。比如在這篇論文中,針對不同的 DNN 模型,使用 FPGA 可以取得 47 倍~104 倍的加速性能。
 
5
多線程代碼的高層次綜合工具:EASY
 
 
一句話總結(jié)
使用形式化(formal)方法,有效減少高層次綜合多線程代碼時使用的內(nèi)存仲裁器數(shù)量與邏輯復(fù)雜度。
 
對行業(yè)發(fā)展的影響和意義
極大的提高了 FPGA 的高層次綜合工具的性能,尤其是對多線程代碼有了更好的支持。
 
技術(shù)細(xì)節(jié)
這篇論文由倫敦帝國理工大學(xué)的 George Constantinides 教授團(tuán)隊(duì)和多倫多大學(xué)的 Jason Anderson 教授團(tuán)隊(duì)合作完成。這兩位都是 FPGA 學(xué)術(shù)界鼎鼎大名的人物,George Constantinides 有著很深的數(shù)學(xué)功底,研究方向主要集中在針對 FPGA 內(nèi)存優(yōu)化的高層次綜合,以及和數(shù)學(xué)相關(guān)的 FPGA 字長優(yōu)化,還有近年興起的近似計(jì)算等領(lǐng)域。
 
帝國理工大學(xué)在 FPGA 研究領(lǐng)域也處于世界頂尖水平,除了 George 之外,還有 Peter Cheung 和 Wayne Luk 兩位華裔教授,這兩位對于現(xiàn)代 FPGA 技術(shù)的發(fā)展做出了舉足輕重的貢獻(xiàn),本文不再展開。
 

 

 
這篇論文研究的主要問題是,當(dāng)對多線程代碼進(jìn)行 FPGA 的高層次綜合時,多個線程之間對內(nèi)存的讀寫需要額外的仲裁機(jī)制,這主要用來判斷某塊內(nèi)存會被哪些線程所訪問。而這個仲裁機(jī)制在硬件實(shí)現(xiàn)上會有很大的額外開銷,對性能也有很大的消極影響,如下圖所示。
 
 
不過作者注意到,線程往往不會訪問所有內(nèi)存塊,因此很多情況下仲裁器不需要支持全部的線程 - 內(nèi)存塊映射,這樣就大大減少了仲裁器的邏輯復(fù)雜度,從而提高了系統(tǒng)性能。
 
為了判斷某個線程是否會訪問某個內(nèi)存塊,作者使用了形式化方法,通過將多線程代碼轉(zhuǎn)換成一種單線程的形式化描述語言 Boogie,并通過形式化工具證明某個線程與內(nèi)存塊的訪問關(guān)系,這樣就能完全確定仲裁器需要支持的線程與內(nèi)存塊的映射。
 
這個思路十分簡潔但有效,它的完整流程圖如下圖所示。這篇文章使用這種方法取得了高達(dá) 39%的性能提升,以及高達(dá) 87%的面積縮減。
 
 
6
結(jié)語
展望 2019 年 FPGA 技術(shù)的發(fā)展趨勢,人工智能與高層次綜合必將是兩大值得關(guān)注的重點(diǎn)領(lǐng)域。隨著新技術(shù)的不斷涌現(xiàn),F(xiàn)PGA 的易用性和性能都將得到極大提升。在這其中,人工智能和數(shù)據(jù)中心將會是老石持續(xù)關(guān)注的重中之重。

 

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

微信公眾號“老石談芯”主理人,博士畢業(yè)于倫敦帝國理工大學(xué)電子工程系,現(xiàn)任某知名半導(dǎo)體公司高級FPGA研發(fā)工程師,從事基于FPGA的數(shù)據(jù)中心網(wǎng)絡(luò)加速、網(wǎng)絡(luò)功能虛擬化、高速有線網(wǎng)絡(luò)通信等領(lǐng)域的研發(fā)和創(chuàng)新工作。曾經(jīng)針對FPGA、高性能與可重構(gòu)計(jì)算等技術(shù)在學(xué)術(shù)界頂級會議和期刊上發(fā)表過多篇研究論文。