国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的可配置卷積結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)協(xié)處理器設(shè)計

2021-10-23 03:29許庚林郭愛英
關(guān)鍵詞:寄存器指令卷積

許庚林,冉 峰,郭愛英,李 嬌

(上海大學(xué) 微電子研究與開發(fā)中心,上海 200444)

近年來,人工智能在日常生活中的應(yīng)用越來越廣泛,卷積神經(jīng)網(wǎng)絡(luò)(Convolution Netural Networks, CNN)成為學(xué)術(shù)界的研究熱點,神經(jīng)網(wǎng)絡(luò)的深度和計算復(fù)雜度也在不斷增加,對運算平臺的計算能力和資源要求越來越高,針對CNN的硬件加速處理器已成為重要的研究方向.針對神經(jīng)網(wǎng)絡(luò)的硬件加速主要有以下方案: 專用集成電路[1](Application Specific Integrated Circuit, ASIC)、圖形處理器(Graphics Processing Unit, GPU)和現(xiàn)場可編程邏輯門陣列[2](Field Programmable Gate Array, FPGA),其中FPGA通過動態(tài)地修改LUT單元和鏈路選擇單元進行計算任務(wù)的配置,通用性和靈活性好,且功耗低、便攜性高,可以在移動端部署,是極具市場潛力的發(fā)展方向.

Zhou等[3]使用高層次綜合(High-Level Synthesis, HLS)在Virtex7 FPGA上實現(xiàn)了MNIST手寫體數(shù)字識別任務(wù),采用11 bit定點數(shù)運算,在150 MHz下達到16.6 GMACS的峰值性能.Li等[4]將卷積神經(jīng)網(wǎng)絡(luò)的所有層都映射在一個芯片上,設(shè)計流水線結(jié)構(gòu)使它們同時工作,提高吞吐率,該方法極大提高了計算速度,代價是消耗大量的硬件資源.Feng等[5]基于Zynq-7000平臺實現(xiàn)高效LeNet-5網(wǎng)絡(luò),通過定點量化、激活函數(shù)逼近、存儲器重組、循環(huán)和任務(wù)流水線和并行化的方式優(yōu)化計算結(jié)構(gòu).仇越等[6]在FPGA上對ZynqNet進行并行優(yōu)化,設(shè)計了64個3×3的卷積計算陣列,所有運算均由該固定尺寸的陣列負(fù)責(zé),易于控制但效率較低.秦華標(biāo)等[7]提出一種輸入輸出通道并行和卷積窗口深度流水的硬件架構(gòu)實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的加速,采用全并行乘加樹(Multiply Adder TREE, MATREE)實現(xiàn)卷積操作,性能達到317.86 GOPS.以上研究屬于對特定網(wǎng)絡(luò)的硬件固化,只實現(xiàn)該網(wǎng)絡(luò)需要用到的算子,并固定地配置好算子的執(zhí)行順序和緩存大小[8],但如果需要新增算子,ASIC已無法改變,只能重新設(shè)計和流片,F(xiàn)PGA也需要重新開發(fā)[1],這需要掌握硬件的操作,對大多數(shù)軟件和算法設(shè)計人員來說要求較高,難以獲得市場推廣.

Chakradhar等[9]提出一種可動態(tài)配置的CNN硬件體系架構(gòu),通過編譯器將網(wǎng)絡(luò)轉(zhuǎn)換為協(xié)處理器映射,自動地配置處理單元和讀取存儲器數(shù)據(jù),在120 MHz下實現(xiàn)了25~30幀的視頻流處理.Qiu等[10]基于動態(tài)精度數(shù)據(jù)量化方法設(shè)計CNN通用加速器,使用特點公式把長的浮點數(shù)轉(zhuǎn)化為短的定點數(shù),降低了數(shù)據(jù)的存儲空間需求,卷積計算使用大的MATREE結(jié)構(gòu),存在效率較低的問題.楊一晨等[11]基于Virtex7 FPGA提出一種由指令集控制的卷積神經(jīng)網(wǎng)絡(luò)協(xié)處理器,采用8組乘累加器(Multiply Accumulator, MAC)實現(xiàn)卷積運算,利用全局移位寄存器同時對8組MAC進行數(shù)據(jù)輸入,對數(shù)據(jù)傳輸帶寬要求較高.Liu等[12]基于FPGA提出了一個包含RISC-V和CNN加速器的異構(gòu)處理器原型設(shè)計,CNN加速器采用MAC陣列設(shè)計,使用自定義宏指令集控制,包括卷積、池化、全連接、導(dǎo)入權(quán)重等10種指令.Lu等[13]利用權(quán)重數(shù)據(jù)的稀疏性進行數(shù)據(jù)壓縮,使用LUT查找表設(shè)計索引模塊,通過索引模塊和預(yù)先規(guī)定的壓縮格式找出與非零權(quán)重相對應(yīng)的特征值,只對該有效權(quán)重進行運算操作,卷積計算采用帶稀疏特征選擇的MAC陣列,什么的性能達到223.4~309.0 GOPS.這些研究基于可配置協(xié)處理器,內(nèi)部包含卷積、池化等多種通用計算單元,按照預(yù)定的指令集進行網(wǎng)絡(luò)層的配置就能實現(xiàn)整個神經(jīng)網(wǎng)絡(luò)的計算[14],這種方式的計算性能會略遜于固化特定算法,但優(yōu)勢是靈活性高,可以部署多種神經(jīng)網(wǎng)絡(luò)模型,基于指令集的方式也便于算法研究人員進行開發(fā).

本文提出一種由32位專用指令控制、具有可切換卷積計算結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)協(xié)處理器.通過對不同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的解析,生成相應(yīng)的控制指令,實現(xiàn)復(fù)雜神經(jīng)網(wǎng)絡(luò)在FPGA上的高效加速計算.卷積計算單元根據(jù)指令自動切換為MAC結(jié)構(gòu)或乘加樹結(jié)構(gòu),協(xié)處理器對多個卷積計算單元進行組合提高了電路的并行性.數(shù)據(jù)存儲采用多級緩存策略,設(shè)計兩級緩沖寄存器進行卷積窗口的移動.最后在ZYNQ XC7Z020 FPGA平臺上進行實驗,驗證本文的方法并進行分析比較.

1 卷積計算分析

1.1 卷積計算的基本原理

一個典型的CNN由多個計算層組成,結(jié)構(gòu)復(fù)雜多樣,不同結(jié)構(gòu)網(wǎng)絡(luò)層的計算量差距較大,計算方式也會不同.通常CNN會包含以下基本的層: 卷積層、激活函數(shù)、池化層、全連接層,其中主要計算集中在卷積層.約定卷積層的參數(shù)如下:H表示輸入特征圖高度;W表示輸入特征圖寬度;N表示輸入特征圖通道個數(shù);K表示卷積核的大??;HO表示輸出特征圖高度,WO表示輸出特征圖寬度;M表示輸出特征圖通道個數(shù);b表示偏置.

當(dāng)步長為1,且無數(shù)據(jù)填充時,卷積輸出特征圖第m個通道第i行j列的數(shù)據(jù)Om,i,j滿足

(1)

由式(1)可知,卷積運算是從輸入特征圖上截取與卷積核相同尺寸的數(shù)據(jù)進行乘累加計算,硬件表現(xiàn)為一定數(shù)量的乘法器、加法器和緩存單元.不同網(wǎng)絡(luò)或同一網(wǎng)絡(luò)不同層的卷積核尺寸和通道可能會不同,但硬件固化后乘法器和加法器的數(shù)量是固定的,因此需要針對不同的網(wǎng)絡(luò)對乘法器和加法器的資源進行配置,以達到最優(yōu)的加速比和硬件資源利用率.

1.2 卷積計算的硬件加速分析

對于多輸出通道卷積的運算,可以使用特征圖共享的策略進行加速.MAC結(jié)構(gòu)是基于此思想,電路結(jié)構(gòu)如圖1所示.設(shè)有A組MAC,則可以并行實現(xiàn)A個輸出通道的卷積運算,其中每個MAC負(fù)責(zé)一個輸出通道的運算.當(dāng)Hk×Wk次乘加計算完成后,將量化后的計算結(jié)果傳輸?shù)捷敵鼍彺?

圖1 卷積計算的MAC結(jié)構(gòu)Fig.1 Multiply-accumulator structure for convolution calculation

MAC結(jié)構(gòu)使用了A個乘法器、A個加法器和2A個寄存器,每個時鐘周期完成A次乘法和加法操作.MAC結(jié)構(gòu)優(yōu)點是能并行計算A個數(shù)據(jù)通道,但當(dāng)M值小于協(xié)處理器內(nèi)部MAC的數(shù)量時,就會出現(xiàn)部分MAC持續(xù)工作,其余器件空閑且輸入數(shù)據(jù)停滯的現(xiàn)象.此外,每個通道并不會因輸出通道數(shù)量的減少而減少.比如VGG16[15]網(wǎng)絡(luò)的特征圖輸出通道數(shù)有64、128、256、512等4種,MobileNet V2[16]網(wǎng)絡(luò)的輸出通道數(shù)有32、64、128、256、512、1 024等6種.如果協(xié)處理器內(nèi)定義128組MAC,256輸出通道可以拆分成2組128通道進行卷積計算,硬件資源利用率為100%.但32輸出通道的硬件資源利用率僅為25%,會造成計算資源的浪費.

MATREE結(jié)構(gòu)可以有效彌補MAC結(jié)構(gòu)資源浪費的問題,圖2是一個[Hk,Wk,M]=[2,2,1]的MATREE電路,使用2n個乘法器計算一個卷積窗口,加法樹完成乘積的加法操作,經(jīng)過量化后輸出.當(dāng)流水?dāng)?shù)據(jù)填滿之后,MATREE結(jié)構(gòu)每個時鐘周期可以完成N個卷積窗口的計算.對于多輸入輸出通道而言,當(dāng)A大于Hk×Wk時,需要同時進行多個通道的計算,否則只能逐個通道進行計算,通道間的并行性差于MAC結(jié)構(gòu).此外,傳統(tǒng)MATREE有2n個節(jié)點,如果計算3×3的卷積,需要用到16個乘法器,其中7個是填充0的冗余乘法器,資源浪費比較多.

圖2 卷積計算的MATREE結(jié)構(gòu)Fig.2 Multiply adder tree structure for convolution calculation

2 協(xié)處理器硬件設(shè)計

基于本協(xié)處理器的卷積神經(jīng)網(wǎng)絡(luò)計算系統(tǒng)的整體結(jié)構(gòu)如圖3所示,包括控制器、DRAM片外存儲和協(xié)處理器.控制器可為ARM或RISC-V處理器,通過AXI總線對協(xié)處理器進行配置及控制,可配置協(xié)處理器的輸入特征分辨率、輸入和輸出通道數(shù)量、卷積核尺寸、卷積電路結(jié)構(gòu)、計算方式等.其中卷積核尺寸支持1×1、3×3、5×5、7×7,卷積電路結(jié)構(gòu)可選MAC結(jié)構(gòu)和MATREE結(jié)構(gòu),計算方式可選卷積、卷積+激活函數(shù)、卷積+池化+激活函數(shù)、全連接計算.協(xié)處理器通過AXI總線訪問片外DRAM來獲取所需的特征圖和模型參數(shù),同時將計算的結(jié)果更新到DRAM.

圖3 協(xié)處理器整體架構(gòu)Fig.3 Coprocessor overall architecture

針對不同運算和不同卷積大小的運算,由指令執(zhí)行器控制各模塊協(xié)同工作.特征數(shù)據(jù)和CNN權(quán)重參數(shù)先從外部傳輸?shù)狡瑑?nèi)數(shù)據(jù)SRAM和權(quán)重SRAM,然后分別到達數(shù)據(jù)寄存器組和參數(shù)寄存器組,再由卷積和池化模塊進行運算處理,最后將每一次的計算結(jié)果寫進輸出SRAM.當(dāng)整個結(jié)果處理完成后,將最終結(jié)果寫回協(xié)處理器外.

2.1 指令及指令執(zhí)行器設(shè)計

為了實現(xiàn)更高的靈活性,本文設(shè)計了32位指令來控制協(xié)處理器,指令的具體格式如表1所示.如果位[31]使能為1,表示啟動協(xié)處理器,指令執(zhí)行器啟動相應(yīng)的配置調(diào)度.輸入數(shù)據(jù)起始地址、權(quán)重數(shù)據(jù)起始地址、輸出數(shù)據(jù)起始地址分別由3個32位寄存器存儲,這些地址都由控制處理器向指令存儲FIFO發(fā)送,協(xié)處理器通過CRC4校驗后確認(rèn)地址有效,才會進行數(shù)據(jù)讀取.輸入數(shù)據(jù)行、列、通道數(shù)和輸出數(shù)據(jù)通道數(shù)由4組12位寄存器存儲.如果DIH、DIW、DIC或DOC解析到“其他”指令,則協(xié)處理器會繼續(xù)接收2次指令存儲FIFO中的數(shù)據(jù),數(shù)據(jù)格式為12 bit-CRC4-12 bit-CRC4,其中2個12 bit為寄存器的數(shù)據(jù),CRC4是對應(yīng)12 bit的校驗位,若校驗無效,協(xié)處理器向外部控制處理器指示重傳.當(dāng)該條指令執(zhí)行完畢后,指令執(zhí)行器讀取指令存儲FIFO中的下一條指令,繼續(xù)進行操作.

表1 指令格式說明

指令由外部控制處理器通過分析神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)生成,先確認(rèn)各層的類型,再提取各層的屬性來生成指令.如卷積層屬性包括卷積核尺寸、權(quán)重起始地址、輸入和輸出特征圖尺寸及起始地址、卷積后是否進行池化、激活函數(shù)和全加操作,這些屬性根據(jù)表1規(guī)則生成指令,再輸入到指令存儲FIFO中,指令執(zhí)行器讀取FIFO進行指令分析,指令有效后執(zhí)行指令并配置相關(guān)寄存器.

指令執(zhí)行器的操作分NOP、SET、PRD、CAL、WOD、ADDR 6個狀態(tài),分別表示空閑、寄存器配置、數(shù)據(jù)預(yù)讀取、開始計算、計算完畢、指令尋址,狀態(tài)跳轉(zhuǎn)流程如圖4所示.

圖4 指令執(zhí)行器狀態(tài)跳轉(zhuǎn)流程Fig.4 Instruction executor state jump process

當(dāng)系統(tǒng)復(fù)位或協(xié)處理器空閑且指令FIFO為空時,進入NOP狀態(tài),這是系統(tǒng)的初始狀態(tài).在NOP狀態(tài)下,若指令FIFO非空且指令使能信號有效,跳轉(zhuǎn)到SET狀態(tài).在SET狀態(tài)下,指令執(zhí)行器進行指令解析,若解析到無效指令,跳轉(zhuǎn)到NOP狀態(tài)并向外部控制器發(fā)送無效指示;若指令解析有效,指令執(zhí)行器配置各個寄存器,設(shè)置卷積電路計算結(jié)構(gòu)和計算方式,配置完成后跳轉(zhuǎn)到PRD狀態(tài).在PRD狀態(tài)下,讀地址控制器根據(jù)地址寄存器中的信息進行特征數(shù)據(jù)和權(quán)重參數(shù)的預(yù)讀取,當(dāng)數(shù)據(jù)讀取到可以進行計算操作時,跳轉(zhuǎn)到CAL狀態(tài).在CAL狀態(tài)下,進行卷積、池化單元的計算,計算結(jié)果保存在輸出SRAM,計算完成后跳轉(zhuǎn)到WOD狀態(tài).在WOD狀態(tài)下,寫地址控制器按照寫地址寄存器完成數(shù)據(jù)的輸出,輸出完畢后跳轉(zhuǎn)到ADDR狀態(tài).在ADDR狀態(tài),指令執(zhí)行器讀取指令存儲FIFO,若SRAM內(nèi)有新的有效指令,則進入SET狀態(tài),否則進入NOP狀態(tài).

2.2 緩沖寄存器組設(shè)計

為了數(shù)據(jù)的有效復(fù)用,本文設(shè)計了數(shù)據(jù)和權(quán)重的寄存器組,如圖5所示.寄存器組由兩級寄存器構(gòu)成,第2級寄存器連接數(shù)據(jù)或權(quán)重SRAM和第1級寄存器R0—R11,用于存放SRAM需要輸入到R0—R11中的數(shù)據(jù)或權(quán)重.第1級寄存器R0—R11由12組寄存器單元構(gòu)成,直連卷積計算單元,R0—R5寄存器單元用于保存特征數(shù)據(jù),R6—R11用于保存權(quán)重數(shù)據(jù),每個3×3卷積計算單元連接一組數(shù)據(jù)寄存器單元和權(quán)重寄存器單元.

圖5 兩級緩沖寄存器組架構(gòu)Fig.5 Two-level buffer register bank architecture

圖6所示為第1級數(shù)據(jù)寄存器單元的結(jié)構(gòu)和不同卷積尺寸的數(shù)據(jù)窗口的移動方式.每個寄存器單元由9個寄存器組成,這9個寄存器輸出到對應(yīng)3×3卷積計算單元的9個乘法器.6個寄存器單元R0—R5首尾相連,構(gòu)成一個大的長條狀寄存器.

圖6 緩沖寄存器組數(shù)據(jù)的移動方式Fig.6 Buffer register group data movement method

計算3×3的卷積時,每個寄存器單元負(fù)責(zé)一個卷積核,當(dāng)初始數(shù)據(jù)填充完畢并開始卷積計算之后,寄存器單元內(nèi)部的第2、5、8號寄存器每個時鐘周期接收來自第2級寄存器的數(shù)據(jù),1、2、4、5、7、8號寄存器在每個時鐘周期向左傳遞數(shù)據(jù),0、3、6號寄存器的數(shù)據(jù)丟棄并被新數(shù)據(jù)覆蓋.計算5×5的卷積時,R0、R1、R2負(fù)責(zé)第1個窗口,R3、R4、R5負(fù)責(zé)第2個窗口,寄存器的數(shù)據(jù)移動方式類似于3×3卷積,一個窗口在每個時鐘周期完成20個移位操作和5個第2級寄存器的數(shù)據(jù)傳遞操作.計算7×7的卷積時,6個寄存器單元負(fù)責(zé)一個窗口,在每個時鐘周期完成42個移位操作和7個第2級寄存器的數(shù)據(jù)傳遞操作.

2.3 卷積計算模塊設(shè)計

為了使協(xié)處理器在計算不同結(jié)構(gòu)的卷積時均能達到更優(yōu)的加速效果,本文提出一種MAC和MATREE自適應(yīng)切換的電路結(jié)構(gòu).如圖7所示,電路由乘法器、加法器、寄存器和選擇器組成,其中乘法器“A”和加法器“a”構(gòu)成第1組MAC,加法器“B”和加法器“b”構(gòu)成第2組.因為MAC結(jié)構(gòu)和MATREE結(jié)構(gòu)的乘法器數(shù)量一樣,MATREE結(jié)構(gòu)少一個加法器,因此只需要額外添加一個加法器,不需要額外的乘法器資源.所有的選擇器由選通信號Se控制,Se由外部指令給出.當(dāng)Se=0時,電路結(jié)構(gòu)選擇器選通0,輸出每組MAC的寄存器值,電路構(gòu)成MAC結(jié)構(gòu).當(dāng)Se=1時,電路結(jié)構(gòu)選擇器選通1,每組寄存器的值都會向后傳遞,構(gòu)成MATREE結(jié)構(gòu).

圖7 自適應(yīng)切換的卷積計算結(jié)構(gòu)Fig.7 Adaptive switching convolution calculation structure

傳統(tǒng)MATREE對2n個節(jié)點進行運算,處理非2n節(jié)點時效率比較低,本文設(shè)計了以MAC/MATREE自適應(yīng)切換的電路結(jié)構(gòu)為基礎(chǔ)的3×3計算單元,如圖8所示,計算單元內(nèi)使用了9個乘法器、9個加法器21個寄存器,采用流水線結(jié)構(gòu)設(shè)計,其中對第9個乘法器的結(jié)果打3拍,在第4級進行加法操作.切換到MAC模式時,乘法器和加法器按對應(yīng)的編號進行組合,乘法器“A”與加法器“a”組合、乘法器“B”與加法器“b”組合,以此類推構(gòu)成9個MAC.

圖8 自適應(yīng)切換的3×3卷積計算單元Fig.8 Adaptive switching 3×3 convolution calculation unit

計算單元按連接方式劃分了第1級、中間級和最后級.第1級最靠近乘法器,特點是內(nèi)部加法器與兩個乘法器的輸出直接相連,將其中一個乘法器配合該加法器構(gòu)成一個MAC,另一個乘法器連接電路結(jié)構(gòu)選擇器,每個MAC只需要1個電路結(jié)構(gòu)選擇器.中間級的加法器在MATREE結(jié)構(gòu)中與前一級加法器相連,每個MAC需要2個電路結(jié)構(gòu)選擇器.最后級的輸出可直接接到輸出緩存.MAC結(jié)構(gòu)的乘法器和加法器分配遵循就近分配和順延策略.

圖9為卷積模塊的頂層結(jié)構(gòu),對于3×3的卷積運算,6組計算結(jié)果由Sum3總線輸出;5×5的卷積將3個3×3計算單元的輸出結(jié)果累加,計算結(jié)果通過Sum5總線輸出;7×7的卷積由2個5×5的卷積計算之和得到,通過Sum7總線輸出.3路總線通過多路選擇器控制.

圖9 卷積計算模塊結(jié)構(gòu)Fig.9 Convolution calculation module structure

3 實驗設(shè)計與結(jié)果分析

3.1 實驗設(shè)計

本文以Xilinx ZYNQ XC7Z020 FPGA為硬件平臺,完成協(xié)處理器的設(shè)計與驗證.FPGA片內(nèi)資源有雙核ARM Cortex-A9處理器、53 200個LUT、220個DSP Slice,片外存儲有16位總線寬度的512 MB DDR3.本文卷積計算的數(shù)據(jù)格式采用16位有符號定點數(shù),權(quán)重的第2級寄存器長度為2 646、位寬為16比特,支持同時存儲54個7×7的權(quán)重數(shù)據(jù).特征數(shù)據(jù)的第2級寄存器長度為1 807、位寬為16 bit,支持同時存儲分辨率為300×300的6行零7個數(shù)據(jù).片內(nèi)權(quán)重和特征SRAM大小為32個深度1 024的BRAM.

3.2 實驗結(jié)果與分析

實驗的第1部分對本文提出的卷積自適應(yīng)結(jié)構(gòu)進行驗證,分析應(yīng)對不同尺寸卷積運算時的計算速度.表2為相比傳統(tǒng)MATREE,本文提升的計算效率對比.

表2 本文計算單元的MATREE與傳統(tǒng)的MATREE對比

圖10為3種卷積電路結(jié)構(gòu)在有54個乘法器的情況下,3×3、5×5和7×7的卷積的計算時間隨輸出通道M的變化曲線.圖中MATREE表示傳統(tǒng)MATREE結(jié)構(gòu),MATREE Ours表示本文提出的6組3×3計算單元的MATREE結(jié)構(gòu).圖中可以看出,對于3×3卷積,本文的MATREE結(jié)構(gòu)保持最優(yōu)效率.對于5×5卷積和7×7卷積,在M<400時本文MATREE結(jié)構(gòu)大部分點是最優(yōu)效率,M>400后MAC保持最優(yōu)效率.

圖10 不同卷積結(jié)構(gòu)的計算時間對比Fig.10 Comparison of calculation time of different convolution structures

實驗的第2部分針對已訓(xùn)練好的網(wǎng)絡(luò)模型,使用協(xié)處理器進行前向推理計算.測試模型選用經(jīng)典LeNet-5[17]和VGG16.表3為LeNet-5和VGG16在MAC、MATREE和本文卷積模塊上的計算時間.可以看出本文的卷積計算模塊在資源使用情況一致的情況下,推理這兩個網(wǎng)絡(luò)的時間最短,有效提高了計算效率.

表3 不同電路結(jié)構(gòu)計算LeNet-5和VGG16的時間表

表4()為協(xié)處理器的硬件資源使用情況,電路工作在100 MHz.讀控制器包含讀地址控制器、數(shù)據(jù)和權(quán)重SRAM,因此占用比較多的BRAM資源.數(shù)據(jù)和權(quán)重的兩級緩沖寄存器采用分布式RAM實現(xiàn),卷積計算單元的乘法部分全部使用DSP實現(xiàn),其他的BRAM用于存儲輸出數(shù)據(jù)和指令.

表4 協(xié)處理器硬件資源使用情況

表5是與其他FPGA實現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)的協(xié)處理器的實驗結(jié)果對比,可以看出本文的協(xié)處理器的DSP資源使用較少,功耗也很低,能效比達到14.59 GOPS/W,是文獻[12]和文獻[6]中的協(xié)處理器的10.8、22.9倍,這得益于本文高效率的卷積計算模塊.文獻[10]和文獻[13]中的協(xié)處理器的性能較高,這是因為使用了更多的DSP和提高了主頻,但是也增加了功耗,本文的能效比均優(yōu)于它們.

表5 與其他文獻的性能對比

5 結(jié) 語

本文提出一種具有可切換卷積計算結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)協(xié)處理器.通過對不同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的解析,生成相應(yīng)的控制指令,實現(xiàn)復(fù)雜神經(jīng)網(wǎng)絡(luò)在FPGA上的高效加速計算.通過探索不同結(jié)構(gòu)卷積電路的資源和性能,設(shè)計了一種可切換的卷積計算單元.對多個卷積計算單元進行組合,實現(xiàn)了高性能的并行計算.設(shè)計了兩級緩存寄存器和長條形緩存寄存器進行多卷積窗口的緩存和移動,提高了存儲效率,節(jié)省了數(shù)據(jù)傳輸帶寬.在Xilinx平臺的實驗結(jié)果表明,本文的設(shè)計可以達到同類產(chǎn)品的主流水平,具有優(yōu)秀的性能功耗比.

猜你喜歡
寄存器指令卷積
基于全卷積神經(jīng)網(wǎng)絡(luò)的豬背膘厚快速準(zhǔn)確測定
一種基于卷積神經(jīng)網(wǎng)絡(luò)的地磁基準(zhǔn)圖構(gòu)建方法
基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
一種并行不對稱空洞卷積模塊①
《單一形狀固定循環(huán)指令G90車外圓仿真》教案設(shè)計
新機研制中總裝裝配指令策劃研究
常用電子測速法在某數(shù)字信號處理器中的應(yīng)用*
關(guān)于ARM+FPGA組建PLC高速指令控制器的研究
飛思卡爾單片機脈寬調(diào)制模塊用法研究
移位寄存器及算術(shù)運算應(yīng)用
济阳县| 两当县| 额敏县| 湾仔区| 齐河县| 桑植县| 迭部县| 廊坊市| 庆元县| 永川市| 大同市| 界首市| 婺源县| 马鞍山市| 平邑县| 耒阳市| 平远县| 息烽县| 岳普湖县| 阿瓦提县| 澳门| 鹤庆县| 千阳县| 城口县| 赤峰市| 福海县| 菏泽市| 新平| 平潭县| 渭南市| 金坛市| 麻城市| 织金县| 门源| 北宁市| 河南省| 宣恩县| 曲阜市| 岳阳县| 湖南省| 鄂托克前旗|