1. 程式人生 > 實用技巧 >論文閱讀筆記5-An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture

論文閱讀筆記5-An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture

一、Title

An Asynchronous Energy-Efficient CNN Accelerator
with Reconfigurable Architecture

二、Abstract & Introduction

why?

卷積神經網路在計算機視覺領域被廣泛使用,並且展示了它在影象分類、目標檢測以及視訊監控等方面的巨大優勢。傳統上 ,卷積神經網路的推斷過程在CPU和GPU上完成,但是,CPU計算資源有限,並行度不夠,而GPU雖然在計算方面強於CPU,但是GPU有著極高的功耗,ASIC能獲得最大的能效,但是ASIC靈活性不夠,一旦流片無法更改,因此需要在靈活性和能效上做一個權衡。

how?

FPGA顯然是一個很好的兼顧靈活性和能效的工具,且FPGA具有可重構的特性,能適應日新月異變化的深度學習演算法。
本文中,作者提出了一個基於FPGA的可重構可配置加速器,它採用非同步電路,包含6個計算核,每個核由5x5個PE構成,在這個加速器中,作者採用了一種叫做convolution-and-pooling-integrated的計算模式,大大降低了對片外DRAM的訪問,顯著降低了系統的功耗。

result?

作者在Xilinx VC707上實現了該加速器,並用LeNet-5進行了測試,實驗發現,非同步計算核的動態功耗比同步的降低了84%,加速器的效率達到了30.03GOPS/W,是前人工作的2.1倍。

三、Methods

A.Design of the CNN Accelerator

1.Architecture of the accelerator

在這裡插入圖片描述
如圖1是加速器的總體架構,輸入資料存在片外DRAM中,來自控制模組的配置資訊會被髮送到computing array,這樣,啟用函式、池化運算、以及資料流動的方向就會被確定。computing array主要負責卷積和池化運算,運算結果則被寫回DRAM。

2.Design of the computing core

在這裡插入圖片描述
如圖所示,這是Computation core的結構,每個核由5x5個PE單元組成,每個PE,包括一個暫存器和一個乘法器,因此它同時具有乘法運算和資料快取的功能,此外,每一個PE都能接收來自周圍PE的資料(上,下,左,右),這就使得資料重用成為了可能。每個PE的資料大小和資料路徑都能由配置資訊配置,各個PE之間既能一起工作,也能獨立工作,在本文的設計中,作者採用非同步電路,通過握手協議來進行各個PE之間的協調,這種“事件驅動"的非同步握手協議,使得當一個PE完成自己的工作並沒有繼續收到request訊號時,可以完全關閉,從而降低了系統的動態功耗。當所有PE計算都完成時,這些結果就被相加求和,作為輸出送入下一個池化層。

3.Design of the PE.

在這裡插入圖片描述
如圖4(a),本文采用的是兩相非同步握手協議,圖4(b)和4©分別是兩相握手協議和四相握手協議的示意圖,兩相握手協議中,一個跳變沿就表示一個事件,而四相握手協議中,高電平才表示一次req訊號,因此握手完成後還需要將Req和Ack訊號拉低,因而可以知道,兩相握手協議在速度和功耗上都比四相握手協議更具優勢,這也是本文采取兩相握手協議的原因。
在這裡插入圖片描述
圖3是Click element的示意圖,每當有一個request訊號到達時,Click element都會產生一個高電平的fire訊號,用來使能FF或者Latch.
在這裡插入圖片描述
圖5是具體的電路圖,三個序列連線的Click形成了一個三階段的非同步流水線。若沒有request訊號,那麼整個電路都是關閉的,沒有任何動態功耗。當一個request訊號到來時,配置資訊會在fire1為高時被寫入DFF1,當fire2訊號為高時,輸入資料(來自上下左右或者local_in)會被寫入DFF2,並且同時將該資料送入乘法器和權重相乘,最後,當fire3為高時,輸入資料會被寫入DFF3以供之後相鄰的PE重用,而乘法結果也被相應的暫存器寄存。

4.Design of the pooling unit (PU)

在這裡插入圖片描述
如圖6,是池化層的計算單元電路圖。卷積電路的所有PE的req輸出訊號都被連線到Muller C,以用來檢測卷積計算是否完成。啟用函式、池化方式和池化大小都能動態配置,對於啟用函式,ReLU很容易實現,但是對於Sigmoid和Tanh這種複雜函式,本文通過查詢表來實現,這也加快了啟用函式的計算速度。

B.The Convolution-and-Pooling-Inter grated Computing and Data Reuse Met hods

對於CNN加速器來說,對片外DRAM的頻繁訪問已經成為了加速器能耗優化方面的一個瓶頸。因此,本文提出了一種叫做Convolution-and-Pooling-Inter grated Computing的方法,並且進行了資料的複用,這些措施使得對片外DRAM的訪問減少了88%,大大降低了加速器的功耗。

1.The convolution-and-pooling-intergrated computing

在這裡插入圖片描述
如圖8所示,這裡卷積核大小為2,池化視窗大小也是2。在傳統的卷積計算中,四次卷積之後,我們得到的應該是A,B,C,D這四個輸出神經元,但是池化運算所需要的是ABHG,因此,AB必須一直被儲存直到HG也被計算完畢,但是在圖8(b)的convolution-and-pooing-integrated computing中,由於卷積運算的順序作了改變,ABHG是可以同時得到的,因此就省去了中間資料的儲存。

2.The input data reuse

在這裡插入圖片描述
以圖9為例,同樣是2x2的卷積,卷積步長為1,那麼可以發現,相鄰的卷積視窗之間是存在資料重疊的,因此可以進行資料複用。
在這個加速器中,四個權重是分散在4個PE上,每個PE上的權重和相應的輸入神經元相乘,最後四個PE的結果相加,便能得到一個輸出神經元的部分和或者最終結果,即採用的是weight-stationary方式。

四、Experiments & Results

五、Conclusion