李楚曦 樊曉椏,2 趙昌和 張盛兵,2 王黨輝,2 安建峰,2 張 萌,2
1(西北工業大學計算機學院 西安 710129)2(嵌入式系統集成教育部工程研究中心(西北工業大學) 西安 710129)
基于憶阻器的PIM結構實現深度卷積神經網絡近似計算
李楚曦1樊曉椏1,2趙昌和1張盛兵1,2王黨輝1,2安建峰1,2張 萌1,2
1(西北工業大學計算機學院 西安 710129)2(嵌入式系統集成教育部工程研究中心(西北工業大學) 西安 710129)
(lichuxi@mail.nwpu.edu.cn)
憶阻器(memristor)能夠將存儲和計算的特性融合,可用于構建存儲計算一體化的PIM(processing-in-memory)結構.但是,由于計算陣列以及結構映射方法的限制,基于憶阻器陣列的深度神經網絡計算需要頻繁的AD/DA轉換以及大量的中間存儲,導致了顯著的能量和面積開銷.提出了一種新型的基于憶阻器的深度卷積神經網絡近似計算PIM結構,利用模擬憶阻器大大增加數據密度,并將卷積過程分解到不同形式的憶阻器陣列中分別計算,增加了數據并行性,減少了數據轉換次數并消除了中間存儲,從而實現了加速和節能.針對該結構中可能存在的精度損失,給出了相應的優化策略.對不同規模和深度的神經網絡計算進行仿真實驗評估,結果表明,在相同計算精度下,該結構可以最多降低90%以上的能耗,同時計算性能提升約90%.
憶阻器;PIM;卷積神經網絡;近似計算;模擬存儲
新型器件憶阻器(memristor)具有能夠將計算和存儲功能相融合的特殊性質,因此,以憶阻器及其基本單元構造的PIM(processing-in-memory)結構被認為是訪存瓶頸的有效解決途徑[1].同時,由于歐姆定律和神經網絡矩陣乘法運算的高度契合,并且憶阻器的高存儲密度也能滿足神經網絡的巨大數據量,因此基于憶阻器交叉陣列的PIM結構極其適合于實現神經網絡近似計算[2].
此前的一些相關研究結果顯示,以憶阻器交叉陣列為基礎的神經網絡計算結構能夠有效克服訪存瓶頸,并取得良好的加速效果[2-5].然而,數據在交換過程中需要不斷經過轉換器進行數模/模數轉化以及大量的多位中間存儲,造成了顯著的面積和能量消耗.
因此,本文提出了新型的PIM結構實現基于憶阻器的深度卷積神經網絡近似計算,在不降低神經網絡計算準確度的前提下,取得了能耗更低、面積更優、執行時間更短的效果.
本文的主要貢獻如下:
1) 提出了將卷積過程分解到不同形式的憶阻器陣列中分別計算的計算方案,取得了顯著性能提升,最高達到87%;
2) 設計了新型的基于憶阻器的深度卷積神經網絡近似計算PIM結構,能夠減少數據轉換次數,消除中間存儲,最高可降低95%的能耗;
3) 針對所提出的結構中可能存在的精度損失,提出了相應的優化策略,提高了系統精度,保證系統精度在95%左右.
1.1 憶阻器陣列的CNN計算特征
卷積神經網絡(convolutional neural network, CNN)是神經網絡架構中常見的一種,由生物學自然視覺認知機制啟發而來.典型的卷積神經網絡具有輸入層、卷積層、降采樣層、全連接層和輸出層.一般地,一個卷積層之后配置一個降采樣層,2個層構成一組.一個完整的卷積神經網絡由一個輸出層、多組卷積/降采樣層、多個全連接層以及一個輸出層按照從輸入到輸出的順序構成,如圖1所示[6].深度神經網絡突出的特征學習能力使其在大數據應用中有突出的表現,特別是語音識別、圖像識別等基于分類的識別問題[7].

Fig. 1 The structure of LeNet-5 CNN圖1 LeNet-5卷積神經網絡結構示意圖
卷積神經網絡的核心是乘累加運算,所有類型的層的算法都可以抽象成乘累加運算.參與乘累加的元素可以分成2類:權值和待處理的信號值.卷積神經網絡中所有的運算過程,都可視為權值和待處理的信號值對應相乘之后再累加,其后加上偏置,最后通過激活函數(sigmoid函數),得到計算結果的過程.即:
(1)
其中,mij為輸入,kij為權值,oij為輸出.
憶阻器是阻性器件,其電路特性滿足阻性器件串并列規則.根據歐姆定律,假設若干憶阻器的一端連接在水平位線WL上,另一端連接在豎直字線BL上,構成憶阻器交叉陣列[8],第i行第j列憶阻器的阻值為Mij,電導值為gij=1Mij,施加在其WL的電壓值為Ui,不考慮外加激勵導致的憶阻器阻值變化,則第j條BL的總電流Itotal,j為
(2)
并行地完成多次乘累加運算,如圖2所示.所有乘累加有一個元素完全相同,為輸入電壓Ui;另一個元素不同,為不同列憶阻器的電導值.這與卷積神經網絡運算形式的需求一致,如果配置好憶阻器的阻值,將其作為權值,將待處理的信號值編碼成輸入電壓,就可以完成權值和待處理信號值的乘累加[9].

Fig. 2 Circuit structure of the memristor array圖2 憶阻器陣列的電路結構
乘累加的計算結果形式為電流值,需要經BL輸出到外部,以穩定的形式存放在存儲單元中.如果神經網絡的規?;蛏疃瘸^單個憶阻器陣列的計算能力,則可分離出一部分憶阻器陣列作為緩存,用于存儲中間結果,減少與外部的數據交換.
1.2 相關工作分析
文獻[10-12]研究了基于非易失性存儲器的PIM結構,證明了該結構在加速和降低能耗2方面都有顯著優勢.文獻[3]提出了一種新型的PIM結構,利用憶阻器交叉陣列和CMOS輔助電路實現了CNN,并將憶阻器交叉陣列劃分為2種不同功能的模塊:1)只用于存儲;2)兼用于存儲和計算.該電路結構取得了明顯的加速效果,計算精度也較高.然而,其計算過程中產生的中間結果近似于模擬值,而憶阻器單元使用的是數字憶阻器,數據無法緩存,需要不斷地進行數模/模數轉化以及大量多位的中間存儲,造成了額外的面積開銷和能量消耗.
如果使用模擬憶阻器,即阻值連續可變的憶阻器,則可以保證中間結果能夠緩存在憶阻器陣列中,消除數據轉換帶來的額外消耗.并且將讀寫次數由多位讀寫壓縮至一次讀寫,大大提高數據密度,降低讀寫消耗.雖然理論上模擬憶阻器存儲時擁有無窮高的精度,但是在實際應用中,由于相鄰存儲單元之間的漏流干擾和讀寫誤差等原因,模擬憶阻器的精度會受到影響.同時,數字憶阻器存儲多位數據時也存在截斷誤差,因此不能簡單地判定二者的精度大小.如果能夠通過合理的措施保證模擬憶阻器的精度,就能夠利用其顯著提高數據密度,大大降低計算電路的復雜性.
文獻[8]提出了一種基于模擬憶阻器的非線性神經網絡計算方案并驗證了其可靠性,結果表明其平均誤差在5%左右.
基于以上分析,本文采用模擬憶阻器構建深度CNN近似計算結構,通過分析卷積神經網絡的計算特征,將計算過程分解成利于并行的2部分,將中間結果緩存在部分憶阻器陣列中,消除數據轉換.同時,給出提高精度的措施保證系統的可靠性.
2.1 面向高效并行的計算方案
考慮到卷積層是卷積神經網絡中復雜度最高、最具有普遍意義的類型,降采樣層和全連接層都可以看作是卷積的特殊形式,只要能夠實現卷積層,采用類似的方法也能實現降采樣層和全連接層.因此以下重點討論卷積層的實現方法.
假設卷積層的輸入圖尺寸是n×n,卷積核尺寸是k×k,滑步長度是l,則該層的輸出特征圖尺寸為(n-k+l)l×(n-k+l)l.以MNIST手寫體識別[13]的第1層卷積層計算為例,輸入圖大小是28×28,卷積核的大小是5×5,滑步是1,得到的特征圖大小是24×24.
單次卷積運算由一個k×k的卷積核和一個k×k的卷積計算窗口參與.具體到MNIST手寫體識別的第1層卷積層中,單次卷積運算是5×5的卷積核和5×5的卷積計算窗口.把計算過程進行分解,可視為6次乘累加運算.其中前5次是并列的,每次由卷積核中的一行和卷積窗口中的一行進行乘累加;最后一次是在前5次計算的中間結果得出后,將5個中間結果全部累加.這樣拆解的原因是:在憶阻器陣列電路中,批量讀取數據往往是以行為單位,在同一行的數據可以在一個周期內同時讀出,同時參與運算;而不在同一行的數據,需要在另外一個周期才能被讀出.通過此拆解方法,將單次卷積運算分成了二維方向的2種類型運算:1)橫向k次乘累加;2)縱向1次累加.
圖3給出了一個卷積運算拆解的例子,原本的四次乘法、一次加法被拆分成了2組三次乘累加.

Fig. 3 An assembly example of 2×2 convolutional computation圖3 一個2×2卷積運算的拆解示例
本文將拆解后的2種運算分到2個憶阻器陣列子電路模塊中分別計算,能夠減少讀取次數、提高效率并保證數據大規模并行.用于計算橫向乘累加的模塊命名為權重子陣列(weight sub-array, WSA),因為權重的存儲和參與運算都在這部分中;用于計算縱向累加的模塊命名為累加子陣列(accumulate sub-array, ASA),因為它一方面起到緩存卷積中間結果的作用,一方面將這些中間結果進行累加得到卷積值.
2.2 WSA模塊
WSA模塊的作用是完成橫向乘累加,即卷積核中的每一行與卷積窗口中的每一行的乘累加運算.為了消除潛通路徑(sneak path)的影響,其結構是1S1R的憶阻器單元構成的陣列[14](為簡化電路結構圖,便于閱讀,以下模塊結構圖中省略了與憶阻器串聯的選擇管).
傳統的策略是將卷積核(即權值)數據和卷積窗口數據編碼為憶阻值,以矩陣排列方式分別存儲在2個陣列中.計算時將卷積窗口數據讀出,轉換為電壓形式,再作為輸入傳遞給權值數據所在的陣列,最后在這其中將二者相乘并疊加.每采集一次卷積窗口數據需要進行一次讀操作讀取一行,進行一次k×k大小的卷積需要進行k次讀操作才能采集完全部輸入數據.進行完本次乘累加運算后,則滑步一次進行下一次卷積運算.由于前一次的讀取結果不能以電壓形式被緩存,此時需要再次讀取同樣的k行.當滑步進行到一行的末尾,則回到起始位置并向下滑步一次進行下一次卷積運算.此時需要讀取的數據中只有一行不重復,其他k-1行都與前一次卷積讀取的行相同.
由于卷積層算法中每個卷積窗口都存在重疊,以及陣列按行讀取數據的特點,大量的時間和能耗消耗在了對重復數據的多次讀取上.要避免重復讀取,首先要觀測每次讀取的數據參與的運算次數.下文繼續以MNIST手寫體識別的第1層卷積層計算為例,輸入圖大小是28×28、卷積核的大小是5×5,滑步是1,得到的特征圖大小是24×24.將輸入圖的第i行命名為Li,將卷積核按照從左到右、從上到下的順序命名為w1~w25.
以輸入圖為觀測對象,逐行考查:
對第1行L1,只有卷積核覆蓋在L1~L5上做卷積時參與運算,所涉及到的運算為24次乘累加.從L1最左邊開始,每次取5個連續數與w1~w5分別相乘并累加,然后右移一個單位繼續取數,直到取到最右邊的5個數,共24次乘累加.
對第2行L2,卷積核覆蓋在L1~L5或者L2~L5上做卷積時都要參與運算,所涉及到的運算為24×2次乘累加.從L2最左邊開始,每次取5個連續數,不僅要與w1~w5相乘并累加,還要與w6~w10進行相同的操作.
對第3行L3,卷積核覆蓋在L1~L5,L2~L5或者L3~L4上做卷積時都要參與運算,所涉及到的運算為24×3次乘累加.從L2最左邊開始,每次取5個連續數,不僅要與w1~w5相乘并累加,還要與w6~w10,w11~w16進行相同的操作.
以此類推,L4要與w1~w5,w6~w10,w11~w15,w16~w20進行24×4次乘累加,而L5~L24要與w1~w5,w6~w10,w11~w15,w16~w20,w21~w25這5組數進行24×5次乘累加.
最后5行的規律與前5行對稱,L25與w6~w10,w11~w15,w16~w20和w21~w25進行24×4次乘累加,L26與w11~w15,w16~w20和w21~w25進行24×3次乘累加,L27與w16~w20和w21~w25進行24×2次乘累加,L28與w21~w25進行24次乘累加.
至此,輸入圖每一行參與運算的情況分析完畢,其對稱性和規律性有利于在電路中進行優化.由于計算的總次數是固定的,或者擴大陣列面積,在一個時間周期內并行地進行多次計算;或者復用陣列,在每個時間周期進行一次計算,因此計算時間和面積相互制約.由于憶阻器的納米級尺寸和高密度集成,其面積明顯小于CMOS電路,陣列面積的增加并不是電路的主要制約因素,因此將時間作為主要優化參數.WSA的設計目標是:增加并行性,在每次讀操作之后,將讀出的一行所涉及到的所有乘累加運算在一個周期內全部完成.
根據以上分析,將權重分為w1~w5,w6~w10,w11~w15,w16~w20,w21~w25五組,構建5個陣列分別存放.在每個陣列內,不再按照傳統的數據存放方式,而是將5個數據擴展成一個28×24的陣列,每一列由前一列的數據向下移位一次構成.以w1~w5所在的陣列為例,排列方式如圖4所示,第1列為w1~w5從上到下排列,第2列為第1列向下移位一個單位,以此類推,直到填滿第24列.

Fig. 4 Structure of the first array of 28×24 WSA圖4 28輸入24輸出的WSA中第1個陣列的結構圖

Fig. 5 The data transmission relationship between the rows of input map and the WSA圖5 輸入圖的行數與WSA陣列的數據傳輸關系
每個周期內讀出一行輸入圖的值,按照圖5所示傳遞給與之相關的陣列.對于每一個陣列,輸入為一行的28個數據,以電壓形式從28條WL同時并行輸入.輸出為24個乘累加的計算結果,以電流形式從24條BL同時輸出.
假設一個周期內5個陣列的輸入為ai,j,輸出分別為bi,n,ci,n,di,n,ei,n,fi,n,其中ai,j表示第i行第j列的輸入數據,每個周期輸入一行,在此周期內i不變,j從0到最大值遍歷一次.bi,n~fi,n分別表示5個陣列中當輸入數據為第i行時的第n條BL上的輸出數據(1≤i,j≤28,1≤n≤24).
以w1~w5所在的第1個陣列為例,BL1從上到下存放w1~w5,則BL1的輸出為ai,1~ai,5與w1~w5的按序乘累加.BL2是BL1的數據下移一位,則BL1的輸出為ai,2~ai,6與w1~w5的按序乘累加.可以得到:
bi,n=ai,n×w1+ai,n+1×w2+ai,n+2×w3+
ai,n+3×w4+ai,n+4×w5.
(3)
其他4個WSA陣列以相同的形式分別將w6~w10,w11~w15,w16~w20,w21~w25錯位展開存放.同理可得:
ci,n=ai,n×w6+ai,n+1×w7+ai,n+2×w8+
ai,n+3×w9+ai,n+4×w10,
(4)
di,n=ai,n×w11+ai,n+1×w12+ai,n+2×
w13+ai,n+3×w14+ai,n+4×w15,
(5)
ei,n=ai,n×w16+ai,n+1×w17+ai,n+2×
w18+ai,n+3×w19+ai,n+4×w20,
(6)
fi,n=ai,n×w21+ai,n+1×w22+ai,n+2×
w23+ai,n+3×w24+ai,n+4×w25,
(7)
對一幅輸入圖,28行被分成28個周期按序輸入,在第k個周期可以得到bk,n,ck,n,dk,n,ek,n,fk,n.每一個卷積運算分成的5次乘累加在5個周期內完成,例如輸出圖的第一個卷積結果k1,1:
(8)
即
k1,1=b1,1+c2,1+d3,1+e4,1+f5,1.
(9)
5次乘累加被分在第1個到第5個周期完成.同時,與k1,1同在一行的第1行24個數據都是在第5個周期將5次乘累加全部計算完.而第2行的24個數據在第6個周期能將5次乘累加全部計算完.第28個周期結束后,全部輸出數據都被計算完畢,共24×24×5個.每個周期結束后,這些中間結果值需要被緩存進行下一步累加,這部分工作傳遞給ASA,由ASA完成.將WSA中完成橫向乘累加輸出的中間結果命名為部分和.
在以上示例中,整個WSA需要28×24×5個憶阻器單元.更一般地,若輸入圖大小是n×n、卷積核的大小是k×k,滑步是l,則需要n×(n-k+l)×k個憶阻器單元.
對于降采樣層,可將其視為特殊的卷積層,其特殊之處在于:1)卷積窗口沒有重疊;2)所有權值都是相同的(取均值算法).除此之外,乘累加的順序和方法均無改變.在降采樣層的計算初始時,將滑步設置為與卷積核寬度同樣的大小k,將權值設置為同一個固定的數,則采用的計算電路和卷積層可統一成同種形式.對于全連接層,與前2種層不同,只有1次乘累加過程,而沒有部分和.這是由于全連接層的輸入數據只有1行,不需要進行縱向疊加.因此,全連接層可以直接映射到WSA,在1個周期內計算完成,而不需要傳輸給ASA再做疊加.
該設計可以避免電路的特殊化,同樣的硬件電路通過配置可以任意改變為卷積層、降采樣層或全連接層,保證了電路的可配置性.
2.3 ASA模塊
ASA模塊的作用是完成縱向乘累加,即接收由WSA計算得出的部分和,完成進一步疊加,從而完成卷積運算.疊加過程沒有加權,直接將所有值相加.其結構是若干模擬憶阻器緩存單元構成的陣列,每個緩存單元由1個憶阻器和1個雙向選擇管構成,如圖6所示,圓形虛線框內為1個單元.

Fig. 6 The structure of ASA圖6 ASA的結構
ASA的輸入信號分為2部分:1)控制器以高/低電平形式輸入到雙向選擇管的控制信號ES(extra selector);2)從WL以電壓形式輸入的部分和數據.
雙向選擇管有2個作用:1)充當憶阻單元選擇管,消除Sneak Path;2)將WL擴展成2個不同的輸入端WL1和WL2,在不同情況下為其對應的憶阻器選擇合適的輸入信號.當ES信號為高電平1時,憶阻器緩存單元中的NMOS晶體管導通,PMOS晶體管關斷,信號從WL1輸入;當ES信號為低電平0時,PMOS晶體管導通,NMOS晶體管關斷,信號從另外一條擴展字線WL2輸入.
根據WSA模塊的設計,需要在同一個ASA中疊加的k個部分和數據,即一個卷積運算的所有部分和數據將會在連續的k個周期內產生,以模擬電壓信號的方式輸出.部分和電壓信號輸入給ASA,由電壓的幅值大小決定對ASA中的憶阻器的寫入值.寫電路驅動電壓的幅值與寫入的電阻值一一對應,理想條件下,二者呈線性關系.ASA中所有憶阻器的阻值在初始化過程中都被寫入為最小阻值,可以視為0.隨著WSA不斷輸出部分和,ASA也不斷地被連續寫入阻值,在每個單元內積累寫入值,從而完成對部分和的累加,1個計算周期結束后憶阻器的阻值對應著卷積結果.
繼續以MNIST手寫體識別的第1層卷積層計算為例,輸入圖大小是28×28、卷積核的大小是5×5.在每個周期內,WSA電路的5個陣列各輸出24個部分和.從第1個運算周期開始,每5個周期視為一個循環,同一周期內輸出的所有部分和不存在需要疊加的關系,需要疊加的是第i個周期WSA的第i個陣列內同一編號的BL上輸出的結果(1≤i≤5).每一個卷積運算的最終結果都是由5個部分和疊加而來的,以下集中討論輸入圖前5行與卷積核進行卷積的計算結果,將這一部分輸入圖的第j行與卷積核的第j行乘累加產生的部分和稱為部分和j(partial sumj).
卷積運算開始的第1個周期,WSA的第1個陣列輸出的是輸入圖第1行的每5個元素與w1~w5分組相乘累加的24個結果,即部分和1,其他4個陣列沒有輸出結果.將這24個結果通過WL1k同時傳輸到ASA的第1列上,以阻值形式緩存.
第2個周期,WSA的第1個陣列輸出的是輸入圖第2行的每5個元素與w1~w5分組相乘累加的24個結果,第2個陣列輸出的是輸入圖第2行的每5個元素與w6~w10分組相乘累加的24個結果,即部分和2,其他3個陣列沒有輸出結果.根據卷積神經網絡的算法,部分和1應該與部分和2相疊加.那么,將第1個陣列輸出的結果通過WL1k傳輸到ASA的第2列上緩存,而將部分和2通過WL21再次傳輸給ASA的第1列,給憶阻器寫入疊加值,疊加在部分和1上.
同樣地,在第3和第4個周期,每個周期利用WL1k緩存一列數據,利用WL2k疊加一次部分和.
第5個周期結束時,ASA的前5列中存有緩存數據,第1列上已經完成了5個部分和的累加,即卷積結果圖中第1行的24個數據.為了節省面積開銷,計算完畢的數據可以馬上輸出到外部或者下一個層,將第1行的憶阻器單元回復初始狀態,即最小阻值狀態,可以在下個周期緩存新的數據.
需要注意的是,此時ASA的第2列上已經完成了卷積窗口下移一個單位時,即輸入圖的第2行到第6行與卷積核做運算的前4個部分和的疊加,只要第6個周期結束,這部分卷積運算,即卷積結果圖中第2行的24個數據就計算完成,也可立即輸出到外部,重置第2列的憶阻器單元.
通過這樣流水的方式,完成全部卷積運算的周期數被大大縮減,只需28個讀周期結束,WSA計算出所有部分和后,ASA就能立即輸出所有的卷積結果.整個計算過程中每個周期的輸出如表1所示,表1中的LINEi表示輸入圖中的第i行,Ok,n表示輸出卷積結果的第k行中所有元素.

Table 1 The Input and Output of WSA and ASA in Each Cycle
此外,由于WSA中憶阻器的乘累加計算依賴于歐姆定律,當電壓激勵給出后,電流響應的延遲時間極短;ASA中的疊加依賴于憶阻器的連續寫入,由于憶阻器的讀寫速度快,ASA延遲時間也極小.因此整個計算結構無論在周期數還是電路延遲時間上都體現出顯著的速度優勢,對加速卷積神經網絡有著極大提升.
整個ASA需要28×24×5個憶阻器單元,包含1個憶阻器和2個互補MOS晶體管.更一般地,若輸入圖大小是n×n,卷積核的大小是k×k,滑步是l,則需要n×(n-k+l)×k個憶阻器單元.
3.1 PIM系統結構
本文設計了一種基于憶阻器陣列的可配置CNN近似計算PIM結構(如圖7所示).系統包括16個分塊(bank),被劃分為7種模塊,分別為:全局控制器(global controller, GC)、數模(模數)轉換器(DAC/ADC)、三輸入多路選擇器(multiplexer, MUX)、讀寫模塊(write and read, WR)及其尋址模塊(addressing, AD)、開關模塊(switch, SW)、WSA和ASA.
1) 全局控制器.①在系統開始工作之前,根據不同深度和規模的卷積神經網絡應用,從bank和bank內的模塊2個層面來進行配置和調度.在bank層面,當所需求的CNN應用的深度和規模超過一個bank的運算范圍時,全局控制器將配置多個bank協同運算,把需要運算的數據分解到各個bank中并行計算,每個bank運算后的數據會按照層的順序輸出給下一個bank作為輸入.在陣列層面,全局控制器將根據所需規模調用適合大小的陣列進行計算,剩余不被調用的部分不參與計算,保持在存儲模式.②在系統工作過程中,通過控制信號控制整個系統的工作流程.全局控制器中配有計數器和時鐘產生模塊,在每個周期給WR,WSA,ASA等模塊發送控制信號,使其正常工作.

Fig. 7 Configurable PIM structure for CNN approximate computation圖7 可配置卷積神經網絡近似計算PIM結構圖
2) 數模(模數)轉換器.將外部輸入的數字信號轉換為模擬電壓信號,作為bank的輸入信號參與CNN運算.運算完成后,再將輸出到外部的模擬信號轉換為數字信號.為了降低功耗和面積開銷,一組數模(模數)轉換器可以由多個bank共享,分時使用.本設計中采用4個bank共享一組數模(模數)轉換器的方案,即一個系統中含有4組數模(模數)轉換器.
3) 三輸入多路選擇器.在不同階段為bank選擇合適的輸入信號.輸入信號來自于不同來源:①初始化過程中來自全局控制器的配置信號;②外部輸入信號經過數模轉換后產生的模擬信號;③前一層的輸出信號.
4) 讀寫模塊.為陣列中的憶阻器寫入值,寫入包括2個過程:①初始化階段.根據線下訓練的結果為WSA寫入權重矩陣對應的阻值,為ASA寫入最小阻值RON.②計算階段.根據WSA輸出的驅動電壓為ASA實時地連續寫入阻值.每個讀寫模塊附帶一組尋址模塊(AD).
5) 開關模塊.為WSA選擇輸出計算結果到外部或繼續緩存數據.開關模塊的開斷情況收到全局控制器的控制.
3.2 PIM系統控制流程
WSA可以被配置計算或存儲2種模式,而ASA只能在計算模式工作.在沒有計算請求時,WSA全部保持存儲模式(memory mode).當一個CNN應用的計算請求命令到來,系統將進入計算模式(computing mode),整個過程分為初始化(initial phase)、計算求值(valuing phase)2個階段:
1) 初始化階段
① 輸入神經網絡配置參數并進行配置
分析應用需求,給全局控制器輸入神經網絡的參數,包括:網絡的層數、各個層的種類、每層的輸入和輸出數量等.根據參數對陣列進行配置,分配好參與計算的bank,劃分出bank中參與計算的單元,按照順序配置成不同的層.對于卷積層或降采樣層,配置一個WSA和一個ASA結合;對于全連接層,只配置一個WSA,沒有ASA.設置好數據接口,令不參與計算的單元保持在存儲模式.
② 初始化所有陣列的憶阻值
對于卷積層和全連接層的WSA,通過MUX的選擇,從外部經過數模轉換輸入線下訓練的權值給讀寫模塊,然后按照錯位展開的方式排列,通過WR將阻值寫入到對應WSA的各個單元中.
對于降采樣層的WSA,寫入值為固定的某常數,這里設定為憶阻值最大值和最小值的中位數,即(RON+ROFF)/2.對于卷積層和降采樣層的ASA,寫入值為憶阻值的最小值,即RON.
2) 計算求值階段
① 從外部輸入計算數據,經過DAC轉換成模擬值,再通過MUX的選擇輸入給第1層對應的WSA.根據神經網絡應用的不同,第1層有可能是卷積層,也有可能是降采樣層.在第1層的WSA中計算出所有部分和,實時地通過BL輸出給第1層的ASA的寫電路,寫電路對ASA進行改寫,完成部分和的疊加.最后將計算結果通過ASA的BL輸出.
② 第1層計算完畢之后,將輸出數據通過MUX傳輸給下一層,進行下一步計算.自此計算流程與第1步相同,直到所有卷積層和降采樣層計算完成.在計算電路中流動的數據全部為模擬電流或電壓值,不需要經過數模/模數轉換.
③ 所有卷積層和降采樣層計算完成之后,數據傳輸給全連接層.全連接層沒有ASA,在WSA中進行乘累加即可得出計算結果.將計算結果經過ADC傳輸到外部,標志著整個計算過程完成.
④ 計算完成之后,全局控制器將WSA恢復為存儲模式,將ASA中緩存的所有值釋放.
模擬憶阻器的噪聲敏感度遠遠高于數字憶阻器,噪聲干擾會影響系統的準確性和靈敏性.經過分析,本系統噪聲來自于若干并列的噪聲來源,可以表示為由這4個主要元素構成的表達式,如式(10)所示:
Noise=E{θl,θm,θw,θo},
(10)
其中θl表示來自于漏電流(leakage)的噪聲,包括Sneak Path和MOS器件漏電等;θm表示來自于從權值到非線性憶阻值(memristance)的映射誤差;θw表示來自于寫入過程(writing)的誤差;θo代表其他來源(other)的噪聲,包括但不限于器件噪聲和過程噪聲等.
θl和θw可以在電路設計過程中采取措施來消除對電路的干擾影響.對于θl,本文中使用給憶阻器串聯選擇管構成憶阻單元的方法加以消除,對于θm,θw和θo,分別采用權值映射的修正函數、讀寫模塊的精度提升和噪聲感知的訓練方法來消除.
4.1 權值映射的修正函數
θm來自于從權值到非線性憶阻值的映射誤差.在神經網絡計算的初始化階段,要完成從訓練好的權值到WSA中憶阻值的一一映射,并將其寫入相應的憶阻器中.一般采用的映射函數是線性函數,也就是說,2個權值w1,w2的差值和與之對應的2個憶阻值M1,M2成正比關系,即ΔMΔw是恒定常數.然而,憶阻器物理器件是一個非線性器件,憶阻值M和流經的電荷量Q呈非線性關系,2個憶阻值M1,M2的差值和與之對應的2個電荷量Q1,Q2不成正比關系,即ΔMΔw不是恒定常數.也就是說,在不同的初始條件下流過相同的電荷量時,憶阻值的變化量不恒定.本文所用的憶阻器模型仿真曲線如圖8所示,其中圖8(a)是I-V曲線;圖8(b)是M-Q曲線,即憶阻器阻值和電荷量的關系曲線.

Fig. 8 The memristor model simulation curve圖8 憶阻器模型仿真曲線
如果采用傳統的線性映射方法,憶阻器器件的非線性成分就會導致在計算值累積的過程中產生誤差.實驗表明,在一層輸入為28×28、卷積核大小為5×5、滑步為1的卷積層計算情況下,線性映射方法會造成的輸出值相對誤差大約為10%.在多層卷積神經網絡中,這個誤差將會進一步累積,如果不采取優化措施,有可能會直接導致計算結果錯誤.
為了解決這一問題,本文提出了一種新的修正映射方法.假設訓練好的權值位于[Bl,Bh]之間,其中Bl表示權值的下邊界,是所有權值中的最小值;而Bh表示權值的上邊界,是所有權值中的最大值.確定好范圍之后,將其與位于[RON,ROFF]之間的憶阻值通過修正的映射函數進行映射.

Fig. 9 Mapping function correction curve圖9 修正映射函數曲線
修正映射函數是通過將原本的線性映射函數和非線性的M-Q曲線相除,再利用Matlab進行多項式擬合得到.經過試驗,當多項式的次數為9時,能夠在[RON,ROFF]取值范圍內對本文所使用的憶阻器模型取得較貼近的擬合效果.該修正映射函數為
(11)
其中,M為自變量,代表憶阻值;f(M)為因變量,代表修正映射函數;p0~p9為10個常數,是通過Matlab擬合得到的系數.修正映射函數的曲線圖如圖9所示:
采用這個修正擬合函數,可以消除非線性因素帶來的誤差,將識別準確度提高7%左右.
4.2 讀寫模塊的精度提升
在憶阻器陣列中,大量的導線WL/BL平行放置,會造成寄生電容的引入.寄生電容在憶阻器的寫入過程中會被寫驅動充電,發生電荷共享,消耗一部分寫驅動電荷,造成寫干擾.由于大規模陣列中的連接線長度大、數量多,寄生電容的值較大,造成的干擾也更加嚴重.根據文獻[15]中的分析,寫干擾的程度與位線寄生電容CBL成正比,與寫電流ISET成反比,如式(12)所示.也就是說,陣列尺寸的增大或者寫電流的減小都會增大寫干擾,這與高密度、低功耗的目標相悖.

(12)
本文通過對寄生電容進行預充電的策略消除寄生電容的影響.帶預充電電路的寫電路如圖10所示,在文獻[16]的寫電路基礎上增加了預充電單元.圖10中Spre是預充電控制開關,Ipre是預充電電流源.在寫操作前添加預充電階段,將開關Spre接Port1,給寄生電容施加一個短時間的預充電電流.預充電電流的持續時間和幅值選擇基于陣列的大小和寫入電壓的值.預充電完成后,將開關Spre接Port2進行憶阻器的脈沖寫操作.

Fig. 10 The write circuit with feedback and precharge circuit圖10 帶反饋回路和預充電電路的寫電路
圖11所示的是使用預充電策略的寫電路仿真結果,其相對誤差為1.36%.

Fig. 11 The write process simulation results圖11 寫入過程仿真結果
4.3 噪聲感知的訓練方法
θo是來自其他來源的噪聲,包括但不限于器件電子噪聲和過程噪聲等.器件電子噪聲來自于電路器件本身,包括熱噪聲和閃爍噪聲等;過程噪聲來自于電路工作中的各種隨機變化.θo成分都是隨機過程量,通常用統計模型來表示,并且,成分難以通過優化電路設計的方法來抑制消除.
本文提出了一種噪聲感知的訓練方法,能夠將這部分無法靠優化電路消除的噪聲成分在線下訓練時抵消掉.文獻[17]中提供了MOS晶體管的噪聲模型,文獻[18]中提供了憶阻器的噪聲模型,過程噪聲可以使用正態分布來建立模型.確立了噪聲的統計模型之后,需要將每一個權重經過的電路路徑上的所有噪聲分量進行疊加,詳細的公式推導請參閱參考文獻[17-18].在進行線下訓練時,根據神經網絡應用的規模和深度確定模型參數,將這些噪聲分量模型注入到原本的訓練過程中,使得權值得到調整.通過這種方式,能夠將識別準確率提高3%左右.
5.1 仿真平臺與配置
電路的仿真平臺為HSPICE,使用到的基本電路元件有:電阻、電容、NMOS晶體管、PMOS晶體管和模擬憶阻器等.
電阻和電容使用HSPICE基本元件庫中的模型;NMOS晶體管和PMOS晶體管使用文獻[19]中的0.13um工藝模型,該工藝庫中有2種規格的MOS管,分別為驅動電壓1.5 V和驅動電壓3.3 V,本文選擇3.3 V規格.
憶阻器使用文獻[20]的Spice模型,將其參數按照表2設置.其中,ROFF代表最大阻值,RON代表最小阻值,RINT代表初始阻值,D代表憶阻器薄膜厚度,μv代表遷移速度,p代表窗口函數的參數.

Table 2 Memristor Parameter Setting表2 憶阻器參數設置
5.2 仿真基準的選擇
本文選擇了3類6種基準,包括2種不同規模的28×28輸入卷積神經網絡、3種不同規模的多層感知器(MLP)和1種VGG-19網絡,前2類被廣泛運用于MNIST手寫體識別,VGG-19運用于RGB圖像識別.表3~表5分別給出了仿真基準的所有參數[21].
多層感知器是神經網絡中較簡單的一種,含有一個輸入層、一個輸出層和若干個隱藏層.隱藏層進行的是乘累加運算,比起卷積神經網絡往往深度和復雜度較低.事實上,卷積神經網絡是多層感知器的一種特殊化,是將多層感知器中的隱藏層特定為卷積和降采樣操作的結果.VGG-19網絡是一種規模較大的多通道神經網絡.神經網絡的規模大小和深度會直接影響本文所設計的電路結構的加速和節省能耗的效果.因此這里選擇多種不同規模和深度的神經網絡,以便分析各項性能與神經網絡尺寸和深度的關系.

Table 3 Two Kinds of CNN Benchmarks Parameters表3 2種卷積神經網絡仿真基準參數

Table 4 Three Kinds of MLP Benchmarks Parameters表4 3種多層感知器仿真基準參數

Table 5 VGG-19 Benchmarks Parameters表5 VGG-19網絡仿真基準參數
5.3 仿真結果與評估分析
文獻[3]中提出了一種基于數字憶阻器的神經網絡PIM結構,與本文相比主要有以下3點不同:
1) 使用的憶阻器模型不同.文獻[3]中的所有憶阻器都采用數字憶阻器模型,這對數模/模數轉換器提出了更高要求,引入了大量轉換單元,進而造成大量的功耗和面積消耗.而本文中的設計采用模擬憶阻器模型,只在bank的輸入輸出接口需要使用數模/模數轉換單元,可以節省數模/模數轉換帶來的額外消耗.同時,數字憶阻器的數據密度低于模擬憶阻器,文獻[3]中使用8個憶阻器存儲一個權重數據,每讀寫一次數據需要對8個憶阻單元進行讀寫,而本文的設計使用1個憶阻器存儲一個權重數據,節省了7/8的存儲面積消耗和讀寫功耗.
2) 從卷積神經網絡到陣列的映射方法不同.本文提出的設計將一次卷積運算拆解為橫向和縱向2個方向,在2個陣列中分別計算,并且將權重陣列展開錯位放置,使得計算得以加速.
3) 噪聲敏感度不同.文獻[3]中的數字憶阻器對噪聲敏感度較低,噪聲需要積累一定量才會使得憶阻器的狀態發生錯誤改變.而本文中的設計采用模擬憶阻器,對噪聲敏感度高,少量的噪聲積累就可能發生錯誤的結果,因此第4節中提出了一些適應于模擬電路的噪聲消除方法.
下面將利用HSPICE平臺,根據6種不同的Benchmark分別搭建電路系統,從圖像識別準確率、能耗和性能這3個方面分別對以上本文和文獻[3]中的設計進行仿真并比較和分析仿真結果.
圖12為圖像識別準確率的仿真結果.5組柱狀圖中的每一組代表一種神經網絡仿真基準,假設使用Matlab進行浮點運算所得的該神經網絡識別準確率為單位1.每組的柱體1(Before Adjust)代表使用本文設計的系統,但不采用任何噪聲消除措施的準確率;柱體2(After Adjust)代表使用本文設計的系統,采用第4節所有噪聲消除措施的準確率;柱體3(Design of Ref[3])代表文獻[3]中的數字憶阻器系統的準確率.折線上的點(Accuracy Improvement)代表經過噪聲消除措施后準確率的提高量.

Fig. 12 Simulation results of recognition accuracy圖12 圖像識別準確率仿真結果
由圖12的仿真結果可以看出:
1) 文獻[3]中的數字憶阻器系統的準確率在95%左右,文本所設計的模擬系統如果不使用任何噪聲消除措施,將會比數字系統降低8%左右的準確率,這是由于模擬電路對噪聲的高度敏感性.而采用了第4節介紹的所有噪聲消除措施之后,準確率可以比噪聲消除前提高10%左右,比數字系統的準確度略高一些,是可以接受的識別準確率.
2) 每組測試基準中,本文設計的系統與數字系統的準確率差異相差不大,與測試基準的規模、深度并沒有明顯的關系.
圖13為能耗節省量的仿真結果.6組柱狀圖中的每一組代表1種神經網絡仿真基準,每組中柱體1(Design of Ref[3])代表文獻[3]中的數字憶阻器系統的能耗;柱體2(Proposed Design)代表本文設計的系統的能耗.折線上的點(Energy Saving)代表本文設計的系統相對于數字系統的能耗節省比.

Fig. 13 Simulation results of energy saving圖13 能耗優化仿真結果
正如1.2節所分析的,本文設計的系統擁有比數字系統更低的能耗,節省的能耗主要包括:1)在數模/模數轉換模塊上的額外功耗;2)在進行多位讀寫時消耗的額外能耗.
從圖13的仿真結果可以看出:
1) 對于6層的CNN,如CNN-1和CNN-2,本文設計的系統能夠節省超過95%的能耗.
2) 對于MLP,本文設計的系統能夠節省超過24%的能耗.
3)對于VGG-19,本文設計的系統能夠節省40%的能耗.
4) 綜合上面3條結論,可以發現當神經網絡的規模和深度增加時,能耗的節省量也隨之增加.這是因為在大型網絡中具有更多數模/模數轉換模塊,也需要更多次數的多位讀寫,能夠被優化的能耗占比隨著規模和深度增加而快速增長.而VGG-19的網絡結構較為特殊,多個卷積層相連,而降采樣層數量少,因此取得的效果低于CNN.

Fig. 14 Simulation results of performance improvement圖14 性能提升仿真結果
圖14為性能提升量的仿真結果.5組柱狀圖中的每一組代表一種神經網絡仿真基準.每組中的柱體1(Design of Ref[3])代表文獻[3]中的數字憶阻器系統的執行時間;柱體2(Proposed Design)代表本文設計的電路的執行時間.折線上的點(Speedup)代表本文設計的系統相對于數字系統的性能提升比.
性能提升主要得益于WSA中將權值展開錯位放置的策略.假設輸入圖大小是n×n,卷積核的大小是k×k,滑步是l,該策略能夠將原本需要(n-k+l)l×k個周期的一層卷積層運算縮減到n個周期內.
從圖14的仿真結果可以看出:
1) 對于6層的CNN,如CNN-1和CNN-2,本文設計的系統能夠節省超過90%的運行時間.
2) 對于MLP,本文設計的系統能夠節省22%~47%的運行時間.
3) 對于VGG-19,本文設計的系統能夠節省超過98%的運行時間.
4) 綜合上面3條結論,可以發現當神經網絡的規模和深度增加時,運行時間的節省量也隨之增加.這是因為當層的規模越大時,每層節省的周期數占比越大;同時,當層的數量越多時,節省的周期數累積占比越多.
此前,基于憶阻器的神經形態近似計算的PIM結構中存在面積和能耗浪費,本文設計了新型的基于憶阻器的PIM結構實現深度卷積神經網絡近似計算,選擇模擬憶阻器來減少數模/模數轉換次數,改變憶阻器陣列的組織方式來增加數據并行性,并針對該結構中可能存在的精度損失給出了相應的優化策略.本文選取6種不同規模和深度的神經網絡,在HSPICE平臺上進行了仿真.實驗結果表明,本文所設計的結構在準確度不下降的前提下,在能耗和執行時間上都有明顯優勢.
[1]Hamdioui S, Xie L, Nguyen H A D, et al. Memristor based computation-in-memory architecture for data-intensive applications[C] //Proc of the 2015 Design, Automation & Test in Europe Conf & Exhibition (DATE’15). Piscataway, NJ: IEEE, 2015: 1718-1725
[2]Jo S H, Chang T, Ebong I, et al. Nanoscale memristor device as synapse in neuromorphic systems[J]. Nano Letters, 2010, 10(4): 1297-1301
[3]Chi Ping, Li Shuangchen, Xu Cong, et al. PRIME: A novel processing-in-memory architecture for neural network computation in ReRAM-based main memory[C] //Proc of the 43rd Int Symp on Computer Architecture. Piscataway, NJ: IEEE, 2016: 27-39
[4]Liu Chenchen, Yan Bonan, Yang Chaofei, et al. A spiking neuromorphic design with resistive crossbar[C] //Proc of the 52nd ACM/EDAC/IEEE Design Automation Conf. New York: ACM, 2015: 1-6. Article No.14, DOI:10.1145/2744769.2744783
[5]Duan Shukai, Hu Xiaofang, Dong Zhekang, et al. Memristor-based cellular nonlinear/neural network: Design, analysis, and applications[J]. IEEE Trans on Neural Networks & Learning Systems, 2015, 26(6): 1202-1213
[6]Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C] //Proc of the 25th Int Conf on Neural Information Processing Systems. New York: Curran Associates Inc, 2012: 1097-1105
[7]Zhang Lei, Zhang Yi. Big data analysis by infinite deep neural networks[J]. Journal of Computer Research and Development, 2016, 53(1): 68-79 (in Chinese)
(張蕾, 章毅. 大數據分析的無限深度神經網絡方法[J]. 計算機研究與發展, 2016, 53(1): 68-79)
[8]Williams R S. How we found the missing memristor[J]. IEEE Spectrum, 2008, 45(12): 28-35
[9]Tang Tianqi, Xia Lixue, Li Boxun, et al. Spiking neural network with RRAM: Can we use it for real-world application?[C] //Proc of 2015 Design, Automation & Test in Europe Conf & Exhibition. Piscataway, NJ: IEEE, 2015: 860-865
[10]Wang Ying, Zhang Lei, Han Yinhe, et al. ProPRAM: Exploiting the transparent logic resources in non-volatile memory for near data computing[C] //Proc of the 52nd IEEE/ACM Design, Automation Conf. Piscataway, NJ: IEEE, 2015: 1-6. Article No.47, DOI: 10.1145/2744769.2744897
[11]Wang Ying, Xu Jie, Han Yinhe, et al. Deep Burning: Automatic generation of FPGA-based learning accelerators for the neural network family[C] //Proc of the 53rd IEEE/ACM Design, Automation Conf. Piscataway, NJ: IEEE, 2016: 1-6. Article No.110, DOI: 10.1145/2897937.2898002
[12]Wang Ying, Li Huawei, Li Xiaowei, Rearchitecting the on-chip memory subsystem of machine learning accelerator for embedded devices[C] //Proc of 2016 IEEE/ACM Int Conf on Computer Aided Design. Piscataway, NJ: IEEE, 2016: 1-6. Article No.13, DOI: 10.1145/2966986.2967068
[13]Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324
[14]Manem H, Rose G, He Xiaoli, et al. Design considerations for variation tolerant multilevel CMOS/NANO memristor memory[C] //Proc of ACM Great Lakes Symp on VlSI 2009. New York: ACM, 2010: 287-292
[15]Byeon D S, Yoon C W, Park H K, et al. Disturbance-suppressed ReRAM write algorithm for high-capacity and high-performance memory[C] //Proc of the 14th Non-Volatile Memory Technology Symp. Piscataway, NJ: IEEE, 2014: 1-4. DOI: 10.1109/NVMTS.2014.7060837
[16]Huang G M, Ho Yenpo, Li Peng. Memristor system properties and its design applications to circuits such as nonvolatile memristor memories[C] //Proc of 2010 Int Conf on Communications, Circuits and Systems. Piscataway, NJ: IEEE, 2010: 805-810
[17]Archanaa M, Balamurugan K. Analysis of thermal noise and noise reduction in CMOS device[C] //Proc of 2014 Int Conf on Green Computing Communication and Electrical Engineering. Piscataway, NJ: IEEE, 2014: 1-5. DOI: 10.1109/ICGCCEE.2014.6922246
[18]Georgiou P S, Koymen I, Drakakis E M. Noise properties of ideal memristors[C] //Proc of 2015 IEEE Int Symp on Circuits and Systems. Piscataway, NJ: IEEE, 2015: 1146-1149
[19]Yang M T, Ho P P C, Lin C K, et al. BSIM4 high-frequency model verification for 0. 13 μm RF-CMOS technology[C] //Proc of 2004 IEEE MTT-S Int Microwave Symp Digest. Piscataway, NJ: IEEE, 2004: 1049-1052
[20]Biolek Z, Biolek D, Biolkova V. SPICE model of memristor with nonlinear dopant drift[J]. Radioengineering, 2009, 18(2): 210-214
[21]Kussul E M, Baidyk T N, Nd W D, et al. Permutation coding technique for image recognition systems[J]. IEEE Trans on Neural Networks, 2006, 17(6): 1566-1579

Li Chuxi, born in 1991. PhD candidate of Northwestern Polytechnical University. Student member of CCF. Her main research interests include computer architecture and neuromorphic architecture.

Fan Xiaoya, born in 1963. PhD, professor, PhD supervisor. Senior member of CCF. His main research interests include computer architecture, machine learning, neuromorphic architecture and very large scale integrated circuit design (VLSI).

Zhao Changhe, born in 1994. Master candidate of Northwestern Polytechnical University. His main research interests include computer architecture and neuromorphic architecture.

Zhang Shengbing, born in 1968. PhD, professor, PhD supervisor. Senior member of CCF. His main research interests include computer architecture, machine learning, neuromorphic architecture and microelectronic circuit design.

Wang Danghui, born in 1975. PhD, associate professor. Member of CCF. His main research interests include computer architecture, emerging memory, neuro-morphic architecture and very large scale integrated circuit design (VLSI).

An Jianfeng, born in 1977. PhD, associate professor. Member of CCF. His main research interests include computer architecture, advanced micro architecture and reconfigurable computing.

Zhang Meng, born in 1978. PhD, assistant professor. Member of CCF. His main research interests include computer archi-tecture, machine learning, neuromorphic architecture and very large scale integrated circuit design (VLSI).
A Memristor-Based Processing -in -Memory Architecture for Deep Convolutional Neural Networks Approximate Computation
Li Chuxi1, Fan Xiaoya1,2, Zhao Changhe1, Zhang Shengbing1,2, Wang Danghui1,2, An Jianfeng1,2, and Zhang Meng1,2
1(SchoolofComputerScience,NorthwesternPolytechnicalUniversity,Xi’an710129)2(EngineeringandResearchCenterofEmbeddedSystemsIntegration(NorthwesternPolytechnicalUniversity),MinistryofEducation,Xi’an710129)
Memristor is one of the most promising candidates to build processing-in-memory (PIM) structures. The memristor-based PIM with digital or multi-level memristors has been proposed for neuromorphic computing. The essential frequent AD/DA converting and intermediate memory in these structures leads to significant energy and area overhead. To address this issue, a memristor-based PIM architecture for deep convolutional neural network (CNN) is proposed in this work. It exploits the analog architecture to eliminate data converting in neuron layer banks, each of which consists of two special modules named weight sub-arrays (WSAs) and accumulate sub-arrays (ASAs). The partial sums of neuron inputs are generated in WSAs concurrently and are written into ASAs continuously, in which the results are computed finally. The noise in proposed analog style architecture is analyzed quantitatively in both model and circuit levels, and a synthetic solution is presented to suppress the noise, which calibrates the non-linear distortion of weight with a corrective function, pre-charges the write module to reduce the parasitic effects, and eliminates noise with a modified noise-aware training. The proposed design has been evaluated by varying neural network benchmarks, in which the results show that the energy efficiency and performance can both be improved about 90% in specific neural network without accuracy losses compared with digital solutions.
memristor; processing-in-memory (PIM); convolutional neural network (CNN); approximate computation; analog memory
2017-02-27;
2017-04-14
國家自然科學基金項目(61472322);中央高校基本科研業務費專項資金項目(3102015BJ(Ⅱ)ZS018) This work was supported by the National Natural Science Foundation of China (61472322), the Fundamental Research Funds for the Central Universities (3102015BJ(Ⅱ)ZS018).
王黨輝(wangdh@nwpu.edu.cn)
TP303