999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的CNN加速SoC系統設計

2020-04-23 05:43:54爍,范軍,何
計算機工程與設計 2020年4期
關鍵詞:系統設計

趙 爍,范 軍,何 虎

(清華大學 微電子學研究所,北京 100084)

0 引 言

近年來,卷積神經網絡廣泛應用于圖像識別和物體檢測等眾多應用中,其在圖像處理的準確率上遠遠優于其它機器學習技術。但是,隨著網絡深度不斷加深以及網絡結構不斷變得復雜,由此帶來的計算效率較低和功耗較大等問題,又使得人們關注于設計專用硬件來加速CNN的計算[1]。對于卷積計算,FPGA可靈活配置并且迭代周期快,加上軟硬件協作來執行CNN網絡,可以大大提高計算效率并降低能耗。目前的研究主要針對終端的推理計算的設計與優化。例如,FPGA會議上Zhang等提出的Roofline模型以優化FPGA資源的利用率[2],ACM會議中Ma等提出優化循環操作以及數據流進行CNN的加速[3],Eyeriss團隊提出新的數據流結構以提高并行性[4],同時Meloni等提出了NEURAGHE的軟硬件協同工作來加速CNN網絡計算[5]。這些研究提出各種技術主要為了實現計算單元利用率與緩存數據復用率的最大化,減少系統與內存之間頻繁的數據傳輸,從而實現計算性能和能效的提高。本研究提出的用于卷積加速的SoC系統,利用卷積計算的形式設計了專用的數據流結構,通過循環次序重組來提高計算陣列的利用率,同時采用分塊技術提高片上緩存數據的復用率。該SoC系統部署在FPGA上,處理器和加速器的結構使得SoC系統更加通用,可以支持眾多CNN網絡。測試結果表明,該SoC系統可以實現CNN網絡計算的加速,并且無論在性能和能耗上都優于CPU單獨計算。

1 CNN算法分析

經過多年的發展,神經網絡由最初的感知器模型到現在的深度神經網絡,網絡模型愈加復雜。第一個成功應用的CNN是1998年Yann LeCun教授的LeNet-5模型,它應用于手寫數字識別問題,在MNIST數據集上可以達到99%的正確率。從LeNet-5網絡結構中,可以看到CNN網絡最開始輸入圖像數據,依次經過卷積層、池化層以及分類層,最終得到10個輸出來表示手寫數字的0-9。在2012年ILSVRC競賽的AlexNet憑借優越的準確率確定了CNN網絡在圖像識別與定位等領域的地位。而2014年的VGG和GoogLeNet共同的特點就是通過不斷加深網絡結構來提升性能,VGG網絡的最深結構為19層,而GoogLeNet采用了Inception結構并不斷復用該結構,卷積層數達到21層。同時因為網絡越深,梯度退化阻礙了網絡的收斂。ResNet則提出一個殘差學習的框架,這個網絡有152層深度,在ImageNet的數據集上可以使top-5錯誤率降低到3.57%。

一些主流CNN網絡的參數和計算量見表1。CNN網絡層數不斷加深,意味著計算量不斷增大。但由于卷積計算有一定的規律容易實現并行計算,因此可以對卷積計算進行硬件加速[6]。CNN的加速可以設計成一個完整的神經網絡加速處理器,也可以基于處理器+卷積加速模塊來設計SoC系統,為了提高效率,卷積加速模塊可以采用空間結構的數據流結構。同時,神經網絡計算需要大量的數據在系統和內存中傳輸,如何優化加速器結構以最大化復用數據也是重要問題[7-10]。

表1 主流CNN網絡參數量和計算量分析

通過分析CNN網絡算法,可以得到:

(1)卷積計算量隨著層數加深比例越來越大,但其并行性很高可以在FPGA上設計專用電路來實現;

(2)CNN為前饋神經網絡,每個卷積層之間互不影響,而且同一層由于是局部感受域計算結果,所以可以采用分塊技術;

(3)由于數據量巨大,所以數據復用率要提高;

(4)CNN網絡主要為卷積計算,但會有新的技術出現,采用處理器+加速器結構可以將其它計算交給處理器,軟硬件協作更具有通用性和靈活性。

2 硬件系統設計

上一節對目前主流的CNN網絡進行分析發現,網絡主要有3種計算層:卷積層、池化層以及分類層等,而卷積層的計算量比例高達90%[11]。依據網絡分析結果設計CNN卷積加速模塊及其SoC系統。

2.1 卷積加速模塊設計

卷積加速模塊的結構框架如圖1所示,主要分為3部分:計算核心單元,片上緩存和控制器。片上緩存和控制器掛在AXI4總線上與SoC系統進行通信。

2.1.1 計算核心單元

首先分析卷積計算方式及其特點。CNN的卷積層與最初的全連接神經網絡不同之處是它采用了局部感受域。后一層網絡的神經元并不和前一層所有的神經元連接,而是有一個窗口,后層每一個神經元只連接到這個窗口的前層神經元即可。這樣一個窗口稱之為卷積核(filter),這個filter由上至下從左到右掃描一遍圖像(input fmap),得到輸出結果(output fmap)。每一個filter共享權重(weights)和偏置(biases)。

圖1 卷積加速器的結構框架

卷積層的計算主要將filter及其窗口對應的input fmap相乘并累加到一起得到output fmap。隨著卷積網絡計算從前往后的進行,卷積層的input fmap的channel數會逐漸增大,因此計算一個輸出結果除了將窗口對應的乘積累加還需要將所有channel累加的結果再次進行累加。而每個卷積層又不止一個filter,所以output fmap也會有相應的channel數[12]。

卷積加速模塊由16個由乘法陣列、加法樹、累加單元和激活函數單元來實現16個channel和16個filter的并行。其中,每個乘法陣列主要由16個并行的乘法單元構成,其后的加法樹對部分積結果進行求和,再通過累加單元將所有channel的部分和結果累加,當所有部分和結果都累加完成后再經過激活函數單元,從而得到最終的輸出數據。其中硬件實現的激活函數為ReLU和Leaky ReLU,其它激活函數可由處理器處理。每個數據通路結構如圖2所示,其中數據輸入由片上緩存提供,執行完乘法陣列和加法樹的乘加運算后,根據控制器決定是否需要累加和執行激活函數,得到的中間結果輸出到由片上緩存。當卷積計算得到最終結果后,片上緩存的數據將傳輸到內存中。

圖2 計算核心單元的數據通路結構

2.1.2 片上緩存

中科院的DianNao系列以及MIT團隊的Eyeriss等設計[13,14]已經驗證,片上緩存可以提高計算性能并降低功耗。計算核心單元的輸入數據由片上緩存提供,中間結果和最終結果都會先存儲到片上緩存。片上緩存使用FPGA內部提供的BRAM,經實驗和分析確定該系統的BRAM大小如圖3所示。

圖3 片上緩存的結構和大小

2.1.3 控制器

為了適應不同CNN網絡以及同一網絡不同卷積層之間參數的不同,如filter的尺寸和步長、每層input fmap的channel數量和filter的數量等,必須要有一個控制器來決定每一次卷積計算的循環次數以及是否需要累加或者激活。控制器還需要給出片上緩存的使能信號和地址信息,從而使得不同卷積層的卷積計算得到正確的結果。同時為了卷積計算效率更高,還提出了循環次序重組和分塊技術以及Ping-Pong操作,這些方法都需要在控制器的控制下有序完成。

首先,分析循環次序重組和分塊技術。卷積計算是輸入為3維特征映射,經過4維的卷積核,得到另一個3維的輸出特征映射的一種計算。計算的循環次序如圖4所示。利用這種計算模式,所設計的CNN加速模塊需要先用一個卷積核計算完每一個channel的輸入數據然后計算下一個channel的數據,這樣會導致重復的內存到片上緩存的數據傳輸。

圖4 原始的卷積計算循環次序

改變原始的循環次序,使多個channel和多個filter并行計算,這樣可以提高數據的復用率,從而充分利用片上緩存中已有的數據。但是為了做到channel和filter上的并行,將所有input fmap數據輸入到片上緩存需要非常大的片上緩存并不現實,所以每個channel中的輸入數據需要分塊技術,即每次只傳輸整幅圖像的一部分數據,當把這部分數據全部計算完后再依次把另一個分塊數據傳輸到片上緩存中。經過循環次序重組和分塊后的計算次序如圖5所示。調整循環次序以復用片上緩存的數據,減少能耗和傳輸帶寬。而分塊操作將數據分塊,以減小片上緩存的需求。

圖5 經過優化之后的卷積計算次序

其次,采用Ping-Pong操作使計算核心單元計算和片上緩存數據傳輸同時進行。當計算核心單元需要片上緩存0的數據時,片上緩存1從內存中傳輸數據;相反,計算核心單元需要片上緩存1的數據時,片上緩存0從內存中傳輸數據。在硬件實現中,控制器從AXI4總線上得到每個卷積層的配置信息,控制計算核心單元有序的執行,并對片上緩存的數據進行調度從而得到正確的結果。

2.2 SoC系統設計

卷積加速模塊實現了卷積計算的加速,但CNN網絡還有其它很多計算,想要運行一個完整的CNN網絡需要更多的硬件結構來實現。但是對于CNN網絡,卷積之外的其它計算比例比較小,如果每一種計算都設計硬件來實現將大大提高工作量。而處理器+加速器結構的SoC系統則相對更加通用且可擴展。加速器負責執行比例最大的卷積計算而其它計算則交給處理器運算,同時當有新的計算時,可以用處理器計算,并不影響系統在卷積計算上的加速。

將所設計的卷積加速模塊封裝為IP,并將其添加到由ARM處理器所組成的SoC系統中,從而實現可運行完整CNN網絡的SoC系統,結構框架如圖6所示。SoC系統主要為ARM處理器、DDR接口以及卷積加速模塊IP,還包括時鐘和復位單元、AXI總線互聯、BRAM控制器以及DMA等模塊。在卷積加速模塊IP中,控制器掛在AXI總線上,接收卷積層配置信息并控制計算核心單元與片上緩存有序工作;輸入和輸出片上緩存分別掛在AXI總線和內存之間進行數據傳輸;計算核心單元與片上緩存相連,根據輸入緩存的圖像和權重數據得到對應的輸出結果并傳輸到輸出緩存。該SoC系統可以計算不同filter尺寸和數量的卷積計算并使得資源利用率的最大化。

圖6 加速CNN網絡的SoC系統

有了帶有ARM處理器的SoC系統,進一步進行CNN網絡的程序開發。其中,訓練CNN網絡并保存訓練好的網絡參數在服務器上完成,網絡參數和輸入圖像數據將在程序執行前導入到FPGA開發板的內存中。

3 驗證與分析

3.1 卷積加速模塊的設計與仿真

卷積加速模塊的設計使用Vivado開發軟件,仿真調試平臺為Vivado和ModelSim仿真軟件。首先設計計算核心單元,編寫Verilog代碼并調用FPGA的DSP資源,考慮到卷積計算的通用性以及FPGA的資源,采用16×16的乘法陣列單元,即實現16個channel和16個filter的并行計算。產生測試數據驗證數據通路功能得到正確的仿真結果。其次設計控制器模塊,給定寄存器不同配置信息,觀察得到的仿真波形,片上緩存和計算核心單元的控制信號皆符合時序。

最后,將各個模塊例化為完整的卷積加速模塊,編寫代碼產生測試數據并計算得到參考結果。生成coe文件導入到BRAM對其進行初始化,對卷積加速模塊進行仿真并和參考結果對比,經過多次調試和修改,最終得到正確的輸出。

3.2 SoC系統的設計與驗證

卷積加速模塊設計完成并得到正確仿真結果后,將其封裝為IP并同其它模塊集成在整個SoC系統上。SoC的Block設計與驗證平臺使用Vivado及其SDK軟件開發套件,硬件平臺采用Xilinx型號為ZCU102的FPGA開發板進行驗證,其中ARM處理器為Cotex-A53,FPGA型號為XCZU9EG,內存為Micron的DDR4。

構建SoC系統,將ARM處理器、AXI4總線、BRAM模塊以及卷積加速模塊的各個IP集成到SoC中。設計完成后加入調試所需要的VIO以及ILA IP資源以查看波形。對完成的SoC系統添加約束并進行綜合,進一步布局布線得到時序分析報告以及資源利用率使用情況。經調試與修改,最終得到滿足時序要求的SoC系統設計。其中,布局布線之后得到的資源利用率主要為3部分:LUT、DSP和BRAM利用率,具體結果見表2。在工作頻率為100 MHz下,滿足時序要求,各資源的利用率大概為50%左右。布局布線之后,生成SoC系統的Bitstream文件,并將硬件信息導入到SDK中進行軟件的開發與驗證。

表2 FPGA資源利用率

SoC系統的硬件實現后,進行CNN網絡程序的開發。選定VGG網絡并將其簡化得到一個具有7層卷積層和1層全連接層的VGG網絡以便可以在Cifar10訓練集上進行訓練,從而可以快速訓練網絡得到網絡參數,經過270次迭代,該網絡在Cifar10測試集的準確率可以達到88%。

將保存下來的VGG網絡的filter參數和Cifar10測試集圖片下載到FPGA的SD卡中,在SDK中編寫SoC系統中ARM處理器運行的VGG代碼并調用自己編寫的卷積加速模塊的API函數,得到完整的可以運行在SoC系統上的程序。將bitstream文件下載到FPGA上,運行VGG程序,得到和處理器單獨運行準確率同為88%的結果。

不同硬件資源的運行時間和能耗等對比見表3。其中ARM處理器為Cortex-A53,功耗是ZCU102開發板的功耗;Intel處理器主頻為3.3 GHz,最大頻率可達4.6 GHz。處理器+加速器的SoC系統在工作頻率為100 MHz下,運行時間比編譯選項為o0下ARM快130倍,比編譯選項o2下快15倍,同時比i7-8700處理器快3倍。能耗上該SoC系統比其它運行結果都要低。

表3 不同硬件資源的數據對比

同樣,在100 MHz的工作頻率下,分析一次卷積計算為7×7×16大小的input fmap數據,通過大小為3×3×16×16的filter得到7×7×16大小的output fmap結果,計算量為225 792 FLOPS。SoC系統的卷積計算運行的時間為5.36 μs,其峰值計算性能可達42.13 GFLOPS。而ARM處理器單獨計算則需要1695 μs,SoC系統比處理器快了316倍。當卷積計算比例越大,該SoC系統性能則越高。

同時,對比其它FPGA上加速CNN網絡的結果,見表4。其中假定1GFLOPS等同于1GOPS,該SoC系統要比其它FPGA設計性能高。和FPGA2015對比,因為其資源更多峰值性能略高,但同樣DSP資源下,該SoC系統將比其快2倍。

4 結束語

針對CNN網絡算法與結構,對卷積加速模塊進行了設計和仿真驗證,進而構建處理器+卷積加速模塊結構的SoC系統。然后編寫VGG網絡并采用Cifar10訓練得到網絡參數,編寫處理器單獨運行的網絡程序以及帶有卷積加速模塊的網絡程序。下載bitstream文件到FPGA,分別運行并得到對應的結果,SoC系統的性能和能耗都優于CPU單獨計算的結果。該SoC系統設計具有通用性,可用于目前主流CNN網絡的硬件加速。SoC系統主要用于卷積神經網絡的推理計算,100 MHz的時鐘頻率下峰值計算性能達到42.13 GFLOPS。

表4 和先前FPGA工作的比較數據

下一步工作中,可以對CNN網絡中其它計算進行優化設計,如數據重組、池化和非ReLU形式的其它激活函數等計算。同時可在其它FPGA開發板中進一步增加BRAM資源,從而提升片上緩存數據的復用率。

猜你喜歡
系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 国产精品专区第1页| 美女一级毛片无遮挡内谢| 久久天天躁狠狠躁夜夜2020一| 欧美日韩国产高清一区二区三区| 色婷婷成人| www.日韩三级| 国产精品护士| 久久黄色小视频| 六月婷婷精品视频在线观看 | 久久www视频| 国产精品免费电影| 日本午夜网站| 成人精品在线观看| 99热这里只有免费国产精品 | 人妻精品久久久无码区色视| 白浆视频在线观看| 成人福利在线观看| 亚洲天堂福利视频| 日韩成人在线网站| 欧美人与动牲交a欧美精品| 国产最新无码专区在线| 国内毛片视频| 亚洲精品国产首次亮相| 狠狠色丁香婷婷综合| 色综合国产| 国产成人精品一区二区不卡| 亚洲精品午夜无码电影网| AV在线天堂进入| 九色视频一区| 欧美精品在线免费| 国产三级毛片| 91久久精品日日躁夜夜躁欧美| 喷潮白浆直流在线播放| 免费人成黄页在线观看国产| 国产第一页免费浮力影院| 亚洲国产理论片在线播放| 亚洲娇小与黑人巨大交| 久久国产亚洲偷自| 三上悠亚精品二区在线观看| 亚洲国产中文欧美在线人成大黄瓜| 99久久精品免费看国产免费软件 | 97超碰精品成人国产| 国产人成乱码视频免费观看| 亚洲愉拍一区二区精品| 国产精品黑色丝袜的老师| 日韩一级二级三级| 福利在线免费视频| 亚洲最新地址| 中文字幕在线观看日本| 亚洲丝袜第一页| 色婷婷电影网| 日本精品一在线观看视频| 亚洲天堂网在线视频| 视频国产精品丝袜第一页| 久久国产精品影院| 国产小视频a在线观看| 国产人人干| 国产成人艳妇AA视频在线| 国产成人高清在线精品| 亚洲v日韩v欧美在线观看| 中国黄色一级视频| 亚洲va欧美va国产综合下载| 自慰网址在线观看| 亚洲制服中文字幕一区二区| 午夜爽爽视频| 久爱午夜精品免费视频| 亚洲人成人无码www| 精品三级网站| 国产欧美一区二区三区视频在线观看| 欧美日韩国产在线观看一区二区三区 | 青青草原国产| 国产视频久久久久| 国产白浆在线| 久久久久亚洲精品成人网| 亚洲国产高清精品线久久| 亚洲无码高清一区| 久综合日韩| 美女扒开下面流白浆在线试听| 亚洲欧洲AV一区二区三区| 亚洲人成网站日本片| 亚洲av色吊丝无码| 她的性爱视频|