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

一種低功耗高效率CNN 加速器設計和實現

2019-10-15 07:17:50廖裕民
現代計算機 2019年24期

廖裕民

(福州瑞芯微電子有限公司,福州350003)

0 引言

隨著深度學習的快速發展與應用[1-2],卷積神經網絡(Convolutional Neural Network,CNN)正在被越來越廣泛的使用,特別是在圖像識別和分類場景中獲得了巨大的突破性進展。CNN 由于擁有多層的神經網絡結構,其自身有很強的學習和并行處理特點[3],是一種擁有多層感知,局部連接和權值共享的網絡結構[4],所以最終可以達到較低的網絡模型復雜性和較少的網絡連接權值個數,因此近年來,越來越多的CNN 正在被圖像內容分析[5-6]、內容識別[7-8]等領域得到了廣泛的應用。但是隨著CNN 的逐步廣泛應用,其海量的運算能力需求與當前硬件運算能力的矛盾越來越突出。在現階段實現卷積神經網絡主要還是使用消費級的通用處理器CPU 或者GPU 來實現,其運算效率較低且能耗非常高,因此這還遠遠不能滿足卷積神經網絡運算對速度和低能耗的需求。

同時,由于便攜電子設備的普及,神經網絡運算對便攜化的需求也非常強烈,但是便攜設備對功耗和工作效率要求非常高[9-10],所以我們提出了這個通用低功耗高效率的CNN 加速電路結構,對可重構和工作效率和功耗都做了針對性的優化設計,以到達到便攜設備的要求。

本文提出的加速電路具備以下特點:

(1)通過可重構性設計方法,讓電路可以兼容多種神經網絡結構和算法,使得這套電路不僅可以完全實現前面提到的多種神經網絡圖像算法,還可以對將來的算法升級有良好的適應性。

(2)通過雙配置寄存器組設計,減少模塊的空閑時間,從而提高模塊的利用率。

(3)通過利用圖像卷積運算中數據稀疏性的特點做了針對性的低功耗設計,使得該加速電路可以運行在較低功耗水平,以適應移動手持設備的需求。

1 總體電路結構

整體的電路結構由以下幾個部分構成:主存儲器、CPU、取數控制模塊、卷積運算模塊、激活運算模塊、池化運算模塊、寫數控制模塊,以及每個運算模塊都帶有一個直通單元和寄存器通路選擇單元。

圖1 電路總結構

神經網絡運算加速電路的連接結構和工作流程如下:

運算加速電路由于采用可重構性的設計結構,將神經網絡電路算法拆分為多個小的運算加速模塊單元,通過通路配置使其可以適配各種不同的網絡結構。因此該運算加速芯片可以完成各種深度學習神經網絡處理中所需的圖像邊沿分割和內容分類等多個算法加速運算。

神經網絡運算加速電路包括:主存儲器、CPU、取數控制模塊、卷積運算模塊、激活運算模塊、池化運算模塊、寫數控制模塊,以及每個運算模塊都帶有一個直通單元和寄存器通路選擇單元的設計。

其中,除了讀寫控制兩個模塊之外,中間的每個模塊都有一個直通單元,直通單元負責根據配置將數據流跳過對應模塊直接到達下一個運算模塊,以實現不同的網絡結構。

在電路的工作前需要先完成算法的神經網絡結構訓練以產生完整的網絡結構和所有的網絡參數,然后將網絡結構和網絡參數存入主存儲器中,以便運算加速芯片進行加速運算。當所有網絡結果和參數存入主存儲器后,整個電路可以開始正常工作。

主存儲器存儲了網絡結構和網絡參數,包括網絡層數量,每層網絡卷積核個數、寬度、高度、通道數、卷積步長、PADDING 大小、卷積核數值、激活函數類型、池化大小參數等。同時主存儲器還負責存儲網絡層間的中間運算結果。

CPU 在電路開始工作后,從主存儲器中讀取出網絡結構參數對各個模塊的配置寄存器進行配置控制,根據網絡結構選擇需要的模塊,將不需要的模塊通過配置該模塊的直通單元有效而使其被繞過。

在CPU 配置完成后,取數控制單元,根據配置寄存器信息對存儲器進行特征數據和卷積核數據的讀取操作,并把讀取數據送往卷積運算模塊。

卷積運算模塊:對特征數據和卷積核進行神經網絡的卷積運算和反卷積運算,該電路在設計時充分考慮了圖像卷積運算中數據稀疏性的特點做了針對性的低功耗設計,使得該加速電路可以運行在較低功耗水平。具體結構后面有詳述。

激活運算模塊:可以進行神經網絡的激活函數運算,支持ReLU、PReLU、sigmoid 激活函數。

反池化模塊:可以進行反卷積運算,將結果送往池化運算模塊。

池化運算模塊:可以完成神經網絡的池化運算,將池化運算結果送往寫數控制模塊。

2 雙寄存器組配置結構

為了提高整個神經網絡加速運算的工作效率,減少網絡層之間的運算時間間隔,我們設計了一種雙寄存器組結構,該結構為每個運算模塊都設計了AB 兩組配置寄存器和一個寄存器選通控制單元,分別可以存儲兩層網絡的配置。

圖2 正常NN 加速電路工作流程

圖2 是正常情況下的神經網絡加速運算流程,下一層的運算依賴于前一層運算的全部結束,可以看到每個模塊實際工作中都會存在大量的空閑。

為了解決這個問題,提升加速電路的工作效率,減少電路的空閑時間,我們為每個運算模塊都設計了AB兩組配置寄存器和一個寄存器選通控制單元,使得各個模塊工作時不再依賴于前一網絡層運算完畢,而是自己模塊完成當前層的運算后可以立即切換到下一層的運算,達到圖3 中的工作效果。

雙寄存器組的具體工作方式:

(1)在加速電路開始工作前,CPU 先將前兩層網絡的配置分別配置到每個模塊的配置寄存器A 和配置寄存器B。然后加速電路可以開始工作,工作開始后首先使用配置寄存器A 中的配置進行第一層網絡的工作。

(2)當第一個模塊完成當前層的工作后,將本層工作完成信號送往本模塊的寄存器選通控制單元和CPU,然后本模塊的寄存器選通控制單元立刻將該模塊的寄存器改為寄存器B 也就是下一個網絡層的配置,該模塊可以立刻進入下一層的工作處理。同時,CPU 在收到該模塊的本層工作完成信號后,對寄存器A 中的配置進行配置更新,更新為第三層網絡的配置。

(3)當模塊完成第二層網絡的運算工作后,同樣的將本層工作完成信號送往本模塊的寄存器選通控制單元和CPU,然后本模塊的寄存器選通控制單元立刻將該模塊的寄存器改為寄存器A 也就是第三層網絡的配置,該模塊可以立刻進入第三層的工作處理。同時,CPU 在收到該模塊的本層工作完成信號后,對寄存器B 中的配置進行配置更新,更新為第四層網絡的配置。

(4)每個模塊都遵照上面所述的順序進行工作,不依賴于整層網絡運算結束后整體切換到下一層進行工作,實現了完全流水作業,大幅減少了各模塊的空閑狀態時間,從而提升了的電路工作效率。

圖3 雙寄存器組電路工作流程

3 低功耗卷積運算電路結構

由于大量的神經網絡運算圖像具有稀疏性的特點。因此我們針對待運算圖像中出現的數據稀疏性矩陣運算特點,設計了針對性的功耗優化和運算電路。該電路可以有效地降低卷積神經網絡電路運算過程中的運算數量和運算過程中消耗的功耗。

卷積層是所有神經網絡運算中最重要也隨耗費硬件資源和功耗的部分,卷積運算的計算公式如下:

Fi=σ(Wc(i)*Fi-1+bi).

其中,Fi表示第i 卷積層的卷積結果,Fi-1表示第i-1 卷積層的卷積結果,Wc(i)表示第i 卷積層的權值,符號“*”表示卷積運算,bi表示第i 卷積層的偏置,σ表示激活函數運算。

針對圖像的稀疏性,本文提出的針對性優化的卷積運算電路結構如圖4。

在乘加陣列的設計上,將32 個乘加器劃分為4 個時鐘組,每個時鐘組包含相同數量的8 個乘加器單元。然后通過對待運算的特征數據和卷積核數據進行非零判斷,如果特征數據或者卷積核數據值任意一個為零則表示該次運算的結果必然為零,因此只對該次運算的位置進行標記而不做乘加運算,當完成整個待運算矩陣的非零判斷后,根據剩下的非零運算的數量來判斷需要打開多少個時鐘組的乘加單元,而不需要用到的時鐘組在此次運算中時鐘始終處于關閉狀態,最后在運算完成后,根據前面非零判斷時對零數據的位置進行恢復后完成后累加,從而實現了低功耗的卷積運算處理。

乘加陣列單元的具體工作過程:

(1)兩個非零判斷單元分別負責對特征數據和卷積核中的數據進行非零判斷,如果數據為零,則輸出高有效信號到邏輯“或”電路。

(2)邏輯“或”電路負責對兩個非零判斷單元的判斷結果進行邏輯“或”操作,將運算結果送往非零統計單元和通路開關和分配單元。因為零乘以任何數都為零,所以只要待相乘的兩個數中任何一個為零則運算結果必然為零,所以在此使用了或操作。

(3)非零統計單元負責對邏輯“或”電路輸出的特征數據和卷積核數據都非零的操作數進行統計,并將統計數據送往門控時鐘單元。

(4)通路開關負責根邏輯“或”電路輸出的判斷結果,在特征數據和卷積核數據都非零時將數據送往分配單元。在有零時,不將數據送往分配單元。

(5)分配單元根據通路開關送來的數據,依次送往每個乘加陣列組,例如先送組1 的8 個乘加器,然后再是組2 的8 個乘加器,直到送滿整個乘加陣列。同時并將該非零數據在特征數據流中的序號送往非零數據序號存儲單元。而從實現了將整個序列中的非零數據重新整齊排列到規整緩存單元中,并將這些非零數據的序號送往累加緩存單元以方便累加時還原矩陣位置。

圖4 卷積運算電路結構

(6)門控時時鐘判斷單元根據非零數據個數和乘加陣列的每個門控時鐘控制的乘加器組中乘加器的個數,來決定打開幾個乘加器組的時鐘。

(7)乘加器單元負責對特征數據和卷積核數據進行乘加運算操作,并將乘加結果送往累加緩存單元。

(8)累加緩存單元在乘加器單元完成乘加運算后,從非零數據序號存儲單元讀取本次乘加運算結果對應的矩陣位置點,完成后對乘加結果的累加操作。

(9)直到整個卷積核的全部channel 完成累加,此時的累加結果作為最終卷積結果輸出。

4 實驗結果

通過以上提出的神經網絡加速電路,可以快速完成各種神經網絡算法加速處理。

為了測試本文提出的電路結構,我們采用LeNet網絡結構進行實驗,如圖5 所示,網絡包含卷積、激活、池化等運算,對應于硬件的卷積運算模塊、激活運算模塊、池化運算模塊,同時可分為4 層運算。作為硬件運算結果的對比參考值,本文使用TensorFlow 對網絡進行網絡搭建和參數訓練,將權重等參數載入主存儲器,通過C 代碼控制CPU 配置神經網絡運算加速芯片,最終得到運算結果。

然后,根據本文提出的結構,使用硬件描述語言Verilog 完成了電路的設計實現,在VCS 仿真工具下進行功能仿真正確后,經過Quartus 綜合,將網表下載到FPGA 器件Stratix IV EP4SE820 中,具體實驗流程如下:

開始的準備工作:

首先,準備好待處理圖像數據,和電路實現的算法對應的TensorFlow 算法模型;

然后,將待處理圖像數據經過TensorFlow 算法模型的計算得到參考正確結果。此時,準備工作結束。

正式試驗流程:

首先,將待處理圖像數據和網絡參數初始化到RAM 中;

然后,打開神經網絡加速電路使其開始工作,加速電路讀取RAM 中的待處理圖像和網絡參數進行神經網絡層運算處理后將該層的數據結果寫回RAM 的另一段地址。然后開始讀入下一層的網絡參數和上一層的運算結果開始下一層的運算,如此循環直到所有網絡層完成運算和結果導出。

最后,將經過神經網絡加速電路處理后的RAM 中的結果數據導出,并且和之前準備的參考正確結果進行比對,則可以判斷電路是否可以正確工作。

實驗結果表明本文設計的神經網絡加速電路在FPGA 上對100 幅測試圖像進行測試,測試精度為95%,與算法運算結果完全一致。

5 結語

本文提出了一套通用低功耗高效率的CNN 加速電路結構。該結構具有可重構、工作效率高、低功耗的特點,可以快速完成各種神經網絡算法的圖像處理,同時可以滿足便攜設備的功耗和性能需求。

圖5 LeNet網絡結構

主站蜘蛛池模板: 无码国内精品人妻少妇蜜桃视频| 久久人人97超碰人人澡爱香蕉| 亚洲日韩在线满18点击进入| 国产自在线拍| 婷婷六月激情综合一区| 久久精品视频亚洲| 免费看av在线网站网址| 最新亚洲av女人的天堂| 超碰91免费人妻| 国产精品亚洲五月天高清| 国产第八页| 乱人伦视频中文字幕在线| 欧美在线免费| 午夜天堂视频| 九九免费观看全部免费视频| 国产对白刺激真实精品91| 天天综合网色| 国产在线精品香蕉麻豆| 国产成人精品一区二区三在线观看| yjizz视频最新网站在线| 一级成人a毛片免费播放| 日韩成人在线网站| 国产视频自拍一区| 色综合日本| 亚洲精品午夜无码电影网| 波多野结衣一区二区三区AV| 色爽网免费视频| 国产永久在线观看| 午夜精品福利影院| 福利片91| 国产在线精品网址你懂的| 狠狠色香婷婷久久亚洲精品| 国产91在线|日本| 午夜国产大片免费观看| 亚洲免费福利视频| 亚洲视频黄| 亚洲天堂首页| 精品福利视频网| 亚洲,国产,日韩,综合一区| 亚洲色无码专线精品观看| 亚洲中文字幕97久久精品少妇 | 亚洲人成网站日本片| 国产人成网线在线播放va| 国产精品尤物铁牛tv | 野花国产精品入口| 国产91小视频在线观看| 99精品视频播放| 久久国产V一级毛多内射| 国产成人一区| 午夜老司机永久免费看片| 亚洲大尺码专区影院| 亚洲天堂网2014| 国产成人做受免费视频| 久久综合五月| 自拍偷拍欧美日韩| 老色鬼久久亚洲AV综合| 超薄丝袜足j国产在线视频| 亚洲精品国产乱码不卡| 一级毛片在线播放| 欧美日韩在线成人| 国产激情在线视频| 福利在线一区| 精品自窥自偷在线看| 日本高清视频在线www色| lhav亚洲精品| 在线观看亚洲成人| 中文字幕在线播放不卡| 成·人免费午夜无码视频在线观看 | 毛片网站免费在线观看| 国产精品久久久久久久久| 免费人成视网站在线不卡| 97精品久久久大香线焦| 亚洲最黄视频| 欧美国产日韩在线观看| 成人午夜免费观看| 永久在线播放| 亚洲欧美一级一级a| 黑人巨大精品欧美一区二区区| 黄色网在线| 国国产a国产片免费麻豆| 日韩在线第三页| 亚洲成人高清无码|