最近ISSCC2017大會剛剛舉行,看了關於Deep Learning處理器的Session 14,有一些不錯的東西,在這裏記錄一下。編程
A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systemsmarkdown
單位:STMicroelectronics(意法半導體)
這是一篇很綜合芯片SOC設計,整體架構以下:
本文采用的DSP簇做爲加速陣列,包含8個DSP簇,每簇內含2個32位的DSP,4通道16KB的I-Cache,64KB的本地RAM和64KB的共享RAM;提供面向DCNN的ISA擴展;採用2D-DMA。DSP內部結構以下:session
採用層次化存儲結構:4MB共享RAM(4x16x64KB),每一個64KB的單元均可以單獨控制是否啓用。共享存儲經過64位的bus進行數據傳輸。L2 Cache經過編程可控,用於存儲特徵圖及參數(feature maps and parameters),每一層memory的能效對好比下圖。架構
硬件加速子系統:8個卷積加速器+16個CDNN定製流數據DMA、支持數據流可重配置的計算、專用IP(H264/MJPEG/2圖像修剪單元/邊緣檢測單元/4色度卷積/…)框架
本設計是典型的CNN專用加速引擎+DSP通用處理的思路(業界不少這樣相似的設計)——卷積在專用加速器裏作,其餘的(ReLU/Pooling/FC/LRN等)在DSP作。下面是Alexnet爲例的運行切分;這樣設計有一個很大也很容易想到的優點,就是專用陣列和DSP能夠同時運行。electron
The DSPs can operate in parallel with CAs and data transfers, synchronizing by way of interrupts and mailboxes for concurrent execution.ide
下面是專用加速引擎比較有表明性的一個設計,就是每一個kernel和data都是分batch作的,每一個batch的臨時結果再累加到一塊兒。(這裏batch是指channel的一批,和多張圖像批處理的batch不一樣意思)性能
可是有8個CA,是否是簡單的全並行處理呢(指每一個CA處理一個Kernel的所有計算,分別輸出)?並非。論文中設計了並行,鏈式,以及混合式三種執行方法。
設計
DCNN專用加速單元CA:核心計算部件爲36個16×16的MAC計算單元+13輸入的屬性加法單元。經過ACCUM進行迭代以累加完成卷積運算;對參數,是進行8bit壓縮存儲的,計算前恢復到16bit(有損)計算;文中說的壓縮其實是一個非線性量化計算,而非傳統的壓縮。圖片
論文中描寫CA:
Various kernel sizes (up to 12×12), batch sizes (up to 16), and parallel kernels (up to 4) can be handled by a single CA instance
若是支持各類變化呢?看下圖右半部分:對每個窗口,先進行列的累加,再把列累加結果累加起來;CA支持一個最大一次讀12個words的line-buffer(最大支持12*12的卷積,也就是一列的大小)(在卷積計算中,stride=1狀況時,簡單的line-buffer確實很匹配卷積的計算過程,每次窗口只須要更新一列,剩餘的列均可以reuse,能夠說是數據在兩個窗口間最大化重用,減小了從RAM裏面讀數據的次數,下降了功耗),放了36個MAC,就能夠在一些其餘變化中作到靈活改變kernel的數量。
若是作12 * 12的卷積,那就只能作1個kernel;
若是是圖中3 *3的狀況,對一個kernel計算而言,每次只須要進3個新數據,加上舊數據6個總共9個數據,這樣就能夠作4個獨立的kernel並行,共享這9個數據,所以須要36個MAC並行計算;
Batch size的大小也能夠調整,只要buffer中存的下,能夠根據每一層的狀況,切分到不一樣的CA,或者一個CA計算更多的batch size,影響輸入輸出的bandwidth。
下面是整芯片的數據:
以及幾頁關於跑alexnet的數據:
總體來看,性能至關高——應該是利用率很高(buffer大,帶寬小,基本全在計算),因此即便只有36*8個MAC也跑的效果很好。因而可知,不少時候咱們更應該想辦法把利用率作上去,而不是一味增長MAC單元。不過本篇的RAM有4MB,也確實很大。
總結:極低功耗的DCNN加速SoC,用於嵌入式及IoT場景[1]
一、基於數據流可重配置的硬件加速框架
二、面向DCNN中大型卷積運算加速的參數化硬件加速單元
三、針對不一樣方向進行數據等並行化發掘
四、DSP的ISA具備可擴展性
五、FD-SOI28工藝下的超寬電壓閾DVFS實現
六、ALexNet峯值能效達2.9TOPS/W
最後還有兩頁不是很懂,懂了再寫:關於低功耗設計的
[1] https://reconfigdeeplearning.com/2017/02/08/isscc-2017-session-14-slides14-1/5 [2] A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systems