《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > FPGA:AI ASIC的必經(jīng)之路?

FPGA:AI ASIC的必經(jīng)之路?

2018-08-22
關(guān)鍵詞: AI FPGA ASIC 端測(cè)DNN

想起寫這篇矽說(shuō)的起源是一個(gè)月前的AI界大新聞——知名AI硬件公司深鑒被FPGA巨頭Xilinx收購(gòu),傳說(shuō)中的交易金額在n億美金不等,大家紛紛感概創(chuàng)始人的財(cái)富自由與高尚情懷(給清華大學(xué)捐了500萬(wàn),簡(jiǎn)直是國(guó)內(nèi)由學(xué)、研至產(chǎn)再回饋學(xué)的典范),一時(shí)佳話。與此同時(shí),各種危言聳聽也開始流傳,如AI領(lǐng)域的垂直整合大幕即將開啟,泡沫破滅已經(jīng)不遠(yuǎn)矣的恐懼也落在雨后春筍般崛起的AI硬件公司中。


我并不想去評(píng)斷那個(gè)商業(yè)行為背后的動(dòng)機(jī),只是想以此為契機(jī)從技術(shù)的角度,略略討論下這次收購(gòu)背后的關(guān)鍵因素——FPGA和ASIC的在AI計(jì)算中銜接關(guān)系。因?yàn)椴⒉皇菍<?,所以如有錯(cuò)誤理解請(qǐng)指出。


從FPGA到ASIC,異曲同工還是南轅北轍?


在國(guó)產(chǎn)AI硬件三強(qiáng)“寒地深”中,deephi最強(qiáng)的當(dāng)屬其面向AI的專用design kit —— DNNDK以及其FPGA的實(shí)現(xiàn),其中涵蓋了其大殺四方的必殺技——稀疏化網(wǎng)絡(luò)。做AI硬件的如果沒有看過(guò)剪枝(prunning)就可以放棄科研了。


與此同時(shí),deephi也有其ASIC產(chǎn)品線——聽濤系列SoC。

微信圖片_20180822143641.jpg



我們假設(shè)聽濤的亞里士多德結(jié)構(gòu)傳承自深鑒在Zynq 7020上的Aristotle架構(gòu)(Aristotle是亞里士多德的英文),即下圖: (注:這里是姑妄言之隨便臆測(cè),這個(gè)假設(shè)很有可能是不對(duì)的)


微信圖片_20180822143705.jpg

那么,問(wèn)題來(lái)了 AI硬件的架構(gòu)最優(yōu)解是否從FPGA 到 ASIC是一以貫之呢?


這個(gè)問(wèn)題還需要回到FPGA和ASIC的設(shè)計(jì)的價(jià)值觀。隨著FPGA芯片的發(fā)展不斷深化,在一個(gè)FPGA fabric中,核心基礎(chǔ)模塊早已不僅僅是查找表(Look Up Table, LUT)。在以算力為主要矛盾的FPGA設(shè)計(jì)中,(典型例子是神經(jīng)網(wǎng)絡(luò)),F(xiàn)PGA中的DSP和BRAM IP的高效率決定了該設(shè)計(jì)的最終性能。


讓我們來(lái)看看目前應(yīng)用廣泛的Xilinx 7系列的dsp48 macro IP,其基本架構(gòu)如下圖,基本可以理解為一個(gè)可配置乘加模塊,值得注意的是其輸入位寬,25位和18位,輸出位寬可以達(dá)到48位。

微信圖片_20180822143725.jpg



這時(shí)候,尷尬的故事發(fā)生了,DNN,特別是端測(cè)DNN的大部分應(yīng)用僅僅需要8位精度,如果用牛逼的dsp48就是大炮打蚊子,如果用LUT綜邏輯時(shí)序又無(wú)法滿足。這個(gè)時(shí)候,Xilinx官宣了一份白皮書WP487,給出了一種在NN場(chǎng)景下一個(gè)dsp48怎樣實(shí)現(xiàn)并行實(shí)現(xiàn)兩個(gè)8-bit精度的方法。簡(jiǎn)而言之就是把兩個(gè)8-比特?cái)?shù)拼成一個(gè)27位的數(shù),當(dāng)中隔了10位然后和第三個(gè)數(shù)相乘,乘法的結(jié)果的MSB和 LSB分別是兩個(gè)乘法的結(jié)果。總之,尷尬癌還是有那么點(diǎn)的。

微信圖片_20180822143749.jpg


在這個(gè)場(chǎng)景下,每次MAC需要3個(gè)周期才能完成,復(fù)雜的流水線實(shí)現(xiàn)會(huì)給帶來(lái)很多debug的空間。然而在ASIC實(shí)現(xiàn)中,8-bit MAC僅僅需要一個(gè)周期,跑到500MHz是分分鐘的事情。由此,如果照搬FGPA的RTL到ASIC,那將帶來(lái)許多平白無(wú)故的性能損失。該問(wèn)題可能在時(shí)下越來(lái)越流行的低精度神經(jīng)網(wǎng)絡(luò)中越來(lái)越顯著,比如在ISSCC 2018中韓國(guó)KAIST提出的新形復(fù)用MAC,在乘加內(nèi)部做了新邏輯,完全超出了FPGA的mapping范圍,但是其在功耗性能上的優(yōu)勢(shì)顯著。


同樣的問(wèn)題還發(fā)生在片上RAM的使用。筆者認(rèn)為,CNN專用處理器和經(jīng)典SIMD計(jì)算/矩陣乘加速器 最大的差別,就是在于利用CNN的數(shù)據(jù)復(fù)用實(shí)現(xiàn)多樣化的data flow上。而實(shí)現(xiàn)各種data flow的切實(shí)需求就在于有一個(gè)不大不小的scratchpad用于實(shí)現(xiàn)存儲(chǔ)partial sum。目前主流的設(shè)計(jì),每個(gè)MAC對(duì)應(yīng)scratchpad大小在0.5kb-2kb左右。而FPGA片上macro IP(RAMB18E1)提供的BRAM/FIFO 的單位尺寸為18kb,顯著地大于scratchpad的需求。于是這個(gè)scratchpad在FPGA上的實(shí)現(xiàn)又陷于兩難,直接綜合將消耗大量的LUT中DFF的資源,如果用片上macro,又有一定程度的浪費(fèi),并且擠壓了用于存儲(chǔ)feature/weight的空間。由于這個(gè)scratchpad大小的尷尬處境,很多FPGA的DNN實(shí)現(xiàn)專注在矩陣乘法(Matrix product)的實(shí)現(xiàn)上,而放棄了在CNN/DNN中復(fù)雜data flow的支持。同樣地,這個(gè)問(wèn)題在以RAM compiler為基礎(chǔ)的ASIC實(shí)現(xiàn)上毫無(wú)問(wèn)題,畢竟ASIC設(shè)計(jì)中可以自由配置scratchpad的大小。


綜上所述,F(xiàn)PGA和 ASIC在面向AI的專用設(shè)計(jì)中,雖然表面都是寫RTL,但是在具體架構(gòu)和思想上已經(jīng)有了較大的差異。FPGA設(shè)計(jì)的最優(yōu)解是最大化底層marco IP的拼積木設(shè)計(jì),而ASIC卻完全沒有這樣的限制,以放飛自我的方式尋找可能。由此,照搬FPGA而來(lái)的ASIC很有可能在某種程度上受這些限制的影響,也無(wú)法達(dá)到存在的ASIC最優(yōu)解。這或許也是為什么深鑒在FPGA原型開發(fā)完成之后,還付出了大量努力才能完成真正ASIC設(shè)計(jì)的原因。


FPGA原型驗(yàn)證:食之無(wú)味,棄之可惜?


傳統(tǒng)意義上,F(xiàn)PGA出現(xiàn)的一個(gè)重要因素是為了給ASIC做原型驗(yàn)證(Prototyping)的。不可否認(rèn),原型驗(yàn)證仍然是FPGA的一個(gè)重大市場(chǎng)。

微信圖片_20180822143812.jpg



在AI應(yīng)用中,除了對(duì)RTL code的功能驗(yàn)證和高速仿真外,F(xiàn)PGA Prototyping對(duì)于產(chǎn)品的更重要優(yōu)勢(shì)在于,更早地讓嵌入式軟件設(shè)計(jì)(Embedded Software Development)進(jìn)入整體設(shè)計(jì)流程。軟件領(lǐng)域的bug和靈活度的數(shù)量級(jí)往往都遠(yuǎn)高于硬件,如果等ASIC流片完了再對(duì)軟件和系統(tǒng)接口著手,那也是白白浪費(fèi)時(shí)間。原型驗(yàn)證的一大優(yōu)勢(shì)就是盡早地從系統(tǒng)和集成的角度,以硬件原型著手進(jìn)行軟件與嵌入式的開發(fā)。而于此同時(shí)后端以及流片的ASIC研發(fā)時(shí)間可以同步進(jìn)行。


但和RTL simulation相比,Prototype的debug性差也是路人皆知的。常見的FPGA Prototype的debug方法是人為的在RTL中設(shè)置觀測(cè)點(diǎn)(probe),調(diào)用片上BRAM存儲(chǔ),然后用類似JTAG的串口方式讀取存儲(chǔ)信號(hào),再現(xiàn)波形。顯然地,這種觀測(cè)方法方法是在和有實(shí)際功用的RTL競(jìng)爭(zhēng)片上BRAM資源,特別是在存儲(chǔ)深度大,位寬寬的情況下。更嚴(yán)重的問(wèn)題是如果發(fā)生了新一輪規(guī)模性的修改probe,而導(dǎo)致的重新綜合與實(shí)現(xiàn)可能會(huì)耗去大量時(shí)間,可能還不如simulation的效率高。目前主流的FPGA的debug方案基本都是如上思路,如下圖中的ChipScope+ILA模式。

微信圖片_20180822143832.jpg



不僅如此,F(xiàn)PGA prototyping在復(fù)雜時(shí)鐘設(shè)計(jì)中的表現(xiàn)也令人堪憂。對(duì)于FPGA的初學(xué)者,門控時(shí)鐘(clock gating,CG)幾乎是完全不推薦的。而作為最主流的ASIC降功耗手段,CG幾乎存在AI芯片的每一角落,特別是在具有稀疏性的網(wǎng)絡(luò)中,門控時(shí)鐘是最簡(jiǎn)單易行的降低功耗的做法。FPGA對(duì)這一特點(diǎn)的弱支持將導(dǎo)致原型驗(yàn)證可能存在不完整性問(wèn)題。除此之外,多時(shí)鐘域的問(wèn)題在FPGA的原型驗(yàn)證也是一個(gè)問(wèn)題,由于FPGA片上的PLL資源受限,在原型設(shè)計(jì)中也將收到諸多限制。


上述種種原因的情況下,F(xiàn)PGA作為AI芯片的原型驗(yàn)證重要平臺(tái),雖然仍是不少產(chǎn)品的重要選項(xiàng),但是目前的受到的挑戰(zhàn)令他越來(lái)越后繼乏力。


Hardware Emulator,領(lǐng)域?qū)S玫腇PGA


隨著集成電路EDA工具的發(fā)展,一個(gè)兼具良好debug性能,又可接近原型功能提供軟件開發(fā)的便利的新型SoC系統(tǒng)開發(fā)工具正在崛起——hardware emulator(硬件模擬器)??梢哉f(shuō)它兼具了simulation和prototype的優(yōu)點(diǎn),又在很大程度上彌補(bǔ)了缺點(diǎn)。目前主流的EDA工具開發(fā)商均提供emulator平臺(tái),并且期望在不遠(yuǎn)的將來(lái),實(shí)現(xiàn)以emulator為中心的SoC開發(fā)流程。Synopsys 家的Zebu,Cadence家的Palladium和Mentor家的Veloce。其中Zebu就是以Xilinx的高端FPGA為基本元件搭建的。


從技術(shù)角度上,F(xiàn)PGA emulation 和 prototype的差別在于——emulator的RTL mapping是將原本的RTL分解映射(partition)到多塊FPGA上,每塊FPGA本身還集成了用于debug的觀測(cè)硬件部分的代碼。在Partition同時(shí),設(shè)計(jì)EDA軟件還關(guān)注模塊間的通信行為,通過(guò)FPGA集成的高速傳輸(high speed link)和路由(router)特性完成實(shí)現(xiàn)SoC partition,避免了在單一FPGA中硬件資源受限制的問(wèn)題。

微信圖片_20180822143854.jpg



下圖從性能的角度比較了以FPGA為核心的原型驗(yàn)證平臺(tái)與模擬器平臺(tái)的上的區(qū)別??梢园l(fā)現(xiàn),emulator雖然在速度上并不具有優(yōu)勢(shì),但是,其在內(nèi)部數(shù)據(jù)的可觀測(cè)性,以及由此帶來(lái)的debug的可實(shí)現(xiàn)性能,均具有明顯的優(yōu)勢(shì)。可以說(shuō),基于FPGA的模擬器正在并非對(duì)AISC 設(shè)計(jì)原代碼的直接映射,反之是在源代碼基礎(chǔ)上通過(guò)Partition, Interconnection,Probe-serialization等一系列RTL的再生成后,產(chǎn)生的新RTL的映射。拿時(shí)髦的話來(lái)講,emulator是領(lǐng)域?qū)S玫腇PGA Prototyping。

微信圖片_20180822143941.jpg



當(dāng)然,F(xiàn)PGA emulator有一個(gè)明顯的劣勢(shì),那就是貴!對(duì)于剛過(guò)門檻的AI 硬件startup們,購(gòu)買一臺(tái)emulator是真的在流血。但即使如此,隨著AI ASIC對(duì)于系統(tǒng)和應(yīng)用的要求越來(lái)越高,未來(lái)基于FPGA的Emulator取代基于FPGA的Prototyping是否將成為一種潮流?讓我們拭目以待。


FPGA AI:是否需要走ASIC的老路?


如前所述,F(xiàn)PGA設(shè)計(jì)很難直接照搬到ASIC。事實(shí)上,F(xiàn)PGA上的AI應(yīng)用是否真的要走傳統(tǒng)ASIC的老路,即“發(fā)現(xiàn)需求——定義產(chǎn)品規(guī)格——上量大規(guī)模出貨——以年為時(shí)間單位更新?lián)Q代”?我們認(rèn)為,F(xiàn)PGA的可重配置特點(diǎn)讓它完全沒有必要走這條路,而是可以走更接近于軟件開發(fā)模式的道路。一個(gè)例子就是最近流行的云端FPGA instance(AWS,阿里云等),用戶可以根據(jù)其自身的需求在云端FPGA instance上燒入相應(yīng)的bit-stream,從而讓FPGA能成為針對(duì)你應(yīng)用的專用加速器。另一個(gè)云FPGA的好處在于潛在地統(tǒng)一了FPGA的選型,令開源工作的移植減少了很多不必要的配置bug。著名的NVDLA的FPGA版本就以支持AWS的FPGA平臺(tái)為主要方案。


至此,F(xiàn)PGA AI這樣一來(lái)設(shè)計(jì)迭代速度(尤其是配合了Chisel,HLS等敏捷開發(fā)流程之后)可以遠(yuǎn)遠(yuǎn)快于傳統(tǒng)ASIC流程,同時(shí)硬件的能效比則遠(yuǎn)高于傳統(tǒng)的CPU/GPU。這一招在異構(gòu)計(jì)算得到越來(lái)越多重視的今天可謂是迎合了潮流(關(guān)于異構(gòu)計(jì)算詳見RISC-V與DSA! 計(jì)算機(jī)架構(gòu)宗師Patterson與Hennessy 演講實(shí)錄)。這也是為什么我們看到微軟,亞馬遜都紛紛在云端數(shù)據(jù)中心部署FPGA,而Intel則也在往高端CPU里加入Altera FPGA。未來(lái),這種新的模式可望成為FPGA市場(chǎng)的一個(gè)新成長(zhǎng)點(diǎn),值得我們關(guān)注。


最后做個(gè)小總結(jié),


(1)對(duì)于AI硬件的實(shí)現(xiàn)而言,F(xiàn)PGA和ASIC的 優(yōu)化路徑有很大區(qū)別,從FPGA到ASIC的直接移植并不是一種高效的做法。

(2)強(qiáng)調(diào)一下這里并不是說(shuō)基于FPGA的AI實(shí)現(xiàn)就沒有未來(lái),(相反我覺得還潛力無(wú)限),本文只是對(duì)于從FPGA到ASIC的直接移植提出了一點(diǎn)小想法。我們預(yù)計(jì)FPGA將會(huì)配合敏捷設(shè)計(jì)擁有自己的新生態(tài)。

(3)FPGA對(duì)SoC設(shè)計(jì)流程的影響正在從原型驗(yàn)證往硬件模擬的角度發(fā)展,你的產(chǎn)品有沒有掉隊(duì)呢?


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。