AI晶元 指令集架構處理器Diannao分析

2021-10-25 13:57:36 字數 3723 閱讀 7902

diannao: a small-footprint high-throughput accelerator for ubiquitous machine-learning

如圖1所示,asic晶元最早的設計思路是將神經元和突觸直接平鋪到硬體晶元上,神經元對映為邏輯單元,突觸對映為鎖存器或者ram。這種設計方法最早可以追溯到1900s的intel etann晶元(淺層神經網路硬體處理器)。這種神經形態架構可以在保持低功耗和緊湊尺寸的基礎上,實現乙個類腦架構,使得asic晶元可以應用於計算密集型,實時性要求高的實際任務。類腦架構與傳統的馮諾依曼結構相比,能夠將計算(神經元)和儲存(突觸)緊耦合在一起。這使得晶元能夠以自然並行和事件驅動的方式實現高效的扇出(通訊),從而達到超低功耗。

目前小規模的網路可以採用上述直接對映的方法,能夠實現高速低功耗的目標。但是如果採用上述方法實現大規模網路,是不可接受的。如圖2所示,當並行乘法單元為16*16時,晶元面積小於0.71mm2;當並行乘法單元為32*32時,晶元面積為2.66mm2。如果按照上述方法實現乙個並行乘法單元為1024*1024的硬體單元時,會使得能耗,晶元面積大幅提公升。這對於實際應用來說是不可接受的。

為了能夠實現大規模深度學習網路的專用硬體執行。2023年,diannao架構被提出了。diannao這篇文章是率先探索機器學習加速設計的先驅文章之一,開創了專用處理器實現深度學習的先河。diannnao這篇文章在65nm工藝,0.98ghz的頻率,面積為3.02mm2的asic晶元上針對機器學習演算法(dnn,cnn)實現了乙個高效能的diannao處理器架構,相比於128bit 2ghz的4發射simd處理器,達到了117.87x的加速比,21.08x能耗比。

diannao架構主要包含控制、計算和儲存三部分。與上面直接對映的方法不同,diannao架構中控制、計算和儲存都是彼此分離的模組,模組化設計思想,可以從圖4清楚的看到這一點。diannao架構的設計很大程度上參考了cpu的設計思想,都是採用指令集控制執行的。目前深度學習網路參數量非常大,如果想要一次性將整個網路全部對映到整個晶元上執行,是不現實的。由此,diannao架構採用了分時復用硬體單元的方法,每次執行網路一部分。

下面我們列舉分析一下diannao這篇文章的設計細節:

(1)網路層訪存特性:文章主要分析了計算密集型的卷積層和通訊密集型的全連線層優化的迴圈展開方法。對於控制流的專用處理器來說,這裡是非常有重要的。片上快取區一般大小為100kb~300kb之間,無法將整個網路引數全部放入。由此盡可能的復用片上快取區的資料,減少片外訪存消耗是很有意義的。

(2)nfu計算單元:nfu計算單元劃分為3個階段,nfu-1是16x16的並行乘法單元;nfu-2是大小為16x15的加法樹以及用於池化層的移位器;nfu-3是啟用函式處理,用線性函式擬合實現的。不同網路層的執行會進入不同階段,例如:卷積層會進入nfu1,2,3三個階段,池化層只需要進入nfu-2階段執行。nfu的3個階段在實際排程執行時,會被繼續拆分為8段,以流水線形式執行,使得最終其時鐘週期為1.02ns,頻率為0.98ghz。

(3)專用儲存設計

a利用scratchpad儲存替代cache儲存,減少了訪問衝突和複雜的匹配查詢過程;

b輸入儲存(nbin),權值儲存(sb),輸出儲存(nbout)各自單獨實現,方便設定獨有的資料傳輸寬度,減少訪存衝突。

c針對輸出資料,配備了的專用暫存器和臨時快取用於儲存產生的臨時資料。

(4)資料預取:每個儲存單元配備有乙個dma和乙個指令快取fifo。這使得計算過程和資料傳輸過程解耦。這裡的資料預期是指只要前一條指令使用完了傳輸的資料,後一條指令即可開啟資料傳輸,不需要等待前一條指令的計算完成,從而達到資料預取的效果。

(5)16bit定點數(6 for integer+10 for fractional):保證網路精度的同時,降低硬體單元消耗。

(6)指令集:這裡指令集粒度與cpu的指令集粒度相當,是load,store,mul,add粒度的。

實驗分析

1.加速比

作者選取了4發射超標量128bit的simd處理器作為對比,該處理器理論上每個週期能執行8次16bit的定點數運算。diannao架構每週期可以執行496次(16x16+16x15=496)16bit的定點數操作。僅僅從運算次數角度來看,diannao相比simd,有496/8=62x的加速比,但實際測量時能夠達到117.87x的加速比。也就是說實際加速比高於理論運算元加速比,作者將其歸結於兩個原因:(1)預取和重用—從大小網路層加速比實驗結果分析可知,大網路層預取和重用更好。 (2)排程開銷。 總結來說快取結構設計對於diannao效能起到了重要的作用。

2.能耗

在能耗上,diannao相比於simd處理器,節省了21.08x。雖然前面一些研究中能耗比可以節省達到500x,974x,這是因為它們沒有考慮訪存的能耗,僅考慮了運算單元上的能耗,間接說明片外訪存能耗影響達到10x(圖5是在45nm cmos上測量的不同操作的能耗,可以看出片外訪存能耗遠高於運算和片上訪存)。這也給未來的研究指出了乙個方向。比如說在dadiannao中,取消了片外dram訪存過程,而是將資料全部儲存在多核片上的edram快取中;在shidiannao中,通過將處理器放置於感知採集裝置附近,取消了dram訪存過程。

如圖1所示,asic晶元最早的設計思路是將神經元和突觸直接平鋪到硬體晶元上,神經元對映為邏輯單元,突觸對映為鎖存器或者ram。這種設計方法最早可以追溯到1900s的intel etann晶元(淺層神經網路硬體處理器)。這種神經形態架構可以在保持低功耗和緊湊尺寸的基礎上,實現乙個類腦架構,使得asic晶元可以應用於計算密集型,實時性要求高的實際任務。類腦架構與傳統的馮諾依曼結構相比,能夠將計算(神經元)和儲存(突觸)緊耦合在一起。這使得晶元能夠以自然並行和事件驅動的方式實現高效的扇出(通訊),從而達到超低功耗。

目前小規模的網路可以採用上述直接對映的方法,能夠實現高速低功耗的目標。但是如果採用上述方法實現大規模網路,是不可接受的。如圖2所示,當並行乘法單元為16*16時,晶元面積小於0.71mm2;當並行乘法單元為32*32時,晶元面積為2.66mm2。如果按照上述方法實現乙個並行乘法單元為1024*1024的硬體單元時,會使得能耗,晶元面積大幅提公升。這對於實際應用來說是不可接受的。

ARM指令集 協處理器指令

arm 微處理器可支援多達 16 個協處理器,用於各種協處理操作,在程式執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略 arm 處理器和其他協處理器的指令。arm 的協處理器指令主要用於 arm 處理器初始化 arm 協處理器的資料處理操作,以及在arm 處理器的暫存器和協處理器的暫存器...

架構 處理器 指令集與組合語言

常見的處理器架構 x86 arm power pc mips。x86是基於複雜指令集 cisc 的處理器架構。arm power pc mips是基於精簡指令集 risc 的處理器架構。所以,x86 arm power pc mips既有指令集,也有相應的處理器架構。86處理器 arm處理器 pow...

ARM微處理器的指令集

跳轉指令 資料處理指令 程式狀態暫存器 psr 處理器 載入 儲存指令 協處理器指令 異常產生指令 adc 帶進製加法指令 add 加法指令 and 邏輯與指令 b 跳轉指令 bic 位清零指令 bl 帶返回的跳轉指令 blx 返回和狀態跳轉指令 bx 帶狀態切換的跳轉指令 cdp 協處理器資料操作...