本公開一般地涉及半導體集成電路及其制造技術領域,更具體地,涉及一種可以在阻變器件交叉陣列中通過在陣列中同一行(同一列)的電流求和功能實現(xiàn)對輸入進行卷積計算的設備和方法。
背景技術:
卷積操作在圖像處理中有著廣泛的應用,例如圖像去噪、特征提取、平滑、濾波、邊緣檢測、圖像增強等。特別地,卷積操作在卷積神經(jīng)網(wǎng)絡(CNN)中具有關鍵作用,對輸入圖像的卷積操作是實現(xiàn)卷積神經(jīng)網(wǎng)絡特定功能的基礎。作為目前應用十分廣泛的人工神經(jīng)網(wǎng)絡算法,由于卷積神經(jīng)網(wǎng)絡具有并行性、分布式計算、自學習及自適應能力以及很強的魯棒性和容錯性等特點,在近些年來得到了科學家們廣泛的研究關注。傳統(tǒng)的實現(xiàn)卷積的方法主要是基于CMOS數(shù)字電路,利用圖像處理芯片(GPU)、可編程門陣列(FPGA)等進行軟件實現(xiàn)。這種實現(xiàn)方法需要巨大的硬件開銷以及功耗。在硬件消耗以及功耗的限制下,傳統(tǒng)的卷積實現(xiàn)方法難以完成大規(guī)模的并行卷積運算并且難以計算較大的卷積核的卷積結果;另外,傳統(tǒng)的軟件實現(xiàn)卷積方法基于馮諾依曼體系架構,其中運算部分和存儲部分是分離的,所以需要大量的存儲器件進行輸入信息以及大量不同卷積核信息的存儲。
在當前大數(shù)據(jù)和神經(jīng)網(wǎng)絡算法的快速發(fā)展的背景下,傳統(tǒng)的基于軟件的卷積實現(xiàn)方法在運算速度、能耗以及芯片面積等方面已經(jīng)難以滿足人們?nèi)諠u增長的需要,急需發(fā)展出一個基于硬件的卷積實現(xiàn)方法。為了突破現(xiàn)有的技術限制,提出了一種基于阻變存儲器的硬件實現(xiàn)卷積操作的架構及方法。利用阻變存儲器件的阻值可調特性,該架構將電壓信號作為輸入信號、將阻變存儲器的阻值作為卷積核信號,實現(xiàn)了計算/存儲一體,大幅降低功耗,并且利用阻變存儲器陣列可大規(guī)模集成的特點進行了并行擴展,實現(xiàn)了器件面積的大幅減小以及運算速度的大幅提升。
技術實現(xiàn)要素:
(一)要解決的技術問題
針對上述技術問題,本發(fā)明提供了一種基于阻變器件陣列的對輸入矩陣進行卷積運算的架構,以及基于這種架構的卷積級聯(lián)和具體操作方法。
(二)技術方案
本發(fā)明的目的是提供一種利用阻變器件(包括基于氧化物的阻變存儲器RRAM、基于金屬離子氧化還原的阻變存儲器CBRAM、相變存儲器PCM、磁阻存儲器MRAM等依靠電阻變化進行信息存儲的元器件)通過在阻變器件上的電壓、電導關系硬件實現(xiàn)卷積運算、利用阻變器件陣列實現(xiàn)卷積并行運算的方法以及相應的體系結構。阻變器件的電阻值可以在兩個不同的電阻值之間通過外加電壓進行切換,稱之為編程(program)/擦除(erase)(或者SET/RESET)。編程電壓和擦除電壓極性相反,存儲的兩個電阻值的高低阻態(tài)有明顯的區(qū)別。并且低阻態(tài)在較大范圍內(nèi)具有可連續(xù)取值的特性,可以利用多個短脈沖電壓來調節(jié)其具體阻值直到達到理想設定值。在本發(fā)明的體系架構中,高低不同的電平代表輸入,即待卷積運算的矩陣;阻變存儲器的阻值代表卷積核;輸出電流和或與之成正比的輸出電壓代表矩陣點乘結果,即輸入矩陣中相應元素的卷積結果;利用阻變存儲器陣列實現(xiàn)卷積的并行運算。
根據(jù)本發(fā)明的一個方面,提出了一種基于阻變存儲器件陣列實現(xiàn)并行卷積計算的設備,包括:阻變存儲器件陣列、訓練模塊、輸入模塊、位線控制單元、字線控制單元、輸出模塊以及控制器;
所述阻變存儲器件陣列,包括沿第一方向延伸的多條字線,沿與第一方向交叉的第二方向延伸的多條位線,以及設置于各位線和各字線的交叉點處的多個阻變運算存儲子單元;
所述位線控制單元,其一端連接到位線,另一端連接到輸入模塊以及訓練模塊;
所述字線控制單元,其一端連接到字線,另一端連接輸出模塊或接地;
所述控制器,控制位線一端選通訓練模塊及字線一端選通地線,或控制位線一端選通輸入模塊及字線一端選通輸出模塊,用于控制輸出模塊中得到的不同卷積結果組合,并輸出傳遞到下一級存儲器或運算裝置。
其中,所述的阻變運算存儲子單元包括基于氧化物的阻變存儲器RRAM、基于金屬離子氧化還原的阻變存儲器CBRAM、相變存儲器PCM、磁阻存儲器MRAM中的至少一個,所述阻變運算存儲子單元依賴于電阻變化進行信息存儲和運算。
其中,所述阻變運算存儲子單元是單獨的阻變器件或者是阻變器件和雙向選擇器件串聯(lián)的結構。
其中,訓練模塊是信號發(fā)生器,用于生成一個連續(xù)的正脈沖或負脈沖。
其中,輸入模塊是信號發(fā)生器,用于發(fā)生一系列連續(xù)正電平。
其中,當控制器的觸發(fā)信號為訓練模式時,位線控制單元選通訓練模塊,字線控制單元選通地線,利用訓練模塊產(chǎn)生的脈沖信號對阻變存儲子單元的電阻態(tài)進行訓練,利用不同脈沖個數(shù)調整阻變存儲子單元的電阻態(tài),即電導值,使其正比于待計算的卷積核的值,即實現(xiàn)卷積核中元素的存儲;卷積核中的正元素存儲在阻變存儲陣列的同一字線上,負元素存儲在相鄰的下一字線上,相鄰兩條字線共同實現(xiàn)一個卷積核的存儲。
其中,當控制器的觸發(fā)信號為運算模式時,位線控制單元選通輸入模塊,字線控制單元選通輸出模塊,輸入模塊產(chǎn)生與待進行卷積運算的輸入矩陣成正比的電平信號,相鄰兩字線分別連接到同一輸出模塊的正輸入端和負輸入端,輸出端的電壓或電流信號即代表卷積計算的結果,實現(xiàn)對單個卷積的計算。
其中,在位線及字線方向進行擴展可進行多個卷積的并行計算,擴展方式如下:將待進行卷積運算的矩陣的所有元素均作為輸入通過輸入模塊進行輸入,位線的數(shù)目即等于輸入矩陣所有元素的個數(shù);在訓練模式中,對于同一字線,對與輸入矩陣的一個待卷積計算的區(qū)域相對應的位線交叉點上的阻變存儲設備進行阻值調整,按位對應存儲一個卷積核;對該字線上的其他阻變存儲設備進行置高阻態(tài)操作;每兩條字線輸出一個卷積結果,字線的數(shù)目等于對整個輸入矩陣做卷積計算后輸出矩陣的元素個數(shù)的二倍。
其中,所述的基于阻變存儲器件陣列實現(xiàn)并行卷積計算的設備,還包括對上述卷積運算進行級聯(lián)或重構。
一種基于阻變存儲器件陣列實現(xiàn)并行卷積計算的方法,其特征在于,包括如下步驟:
S101:對阻變存儲器件陣列中阻變存儲子單元的電阻態(tài)進行訓練,利用不同脈沖個數(shù)調整阻變存儲子單元的電阻態(tài),使其正比于待計算的卷積核的值,產(chǎn)生卷積核矩陣;以及產(chǎn)生與待進行卷積運算的輸入矩陣成正比的電平信號,產(chǎn)生輸入矩陣,輸入矩陣面積大于卷積核矩陣;
S102:實現(xiàn)卷積核矩陣的旋轉180°,將旋轉180°后的卷積核首先與輸入矩陣的左上角部分重疊;
S103:計算該重疊部分的對應元素乘積并求和,作為第一個輸出結果;
S104:旋轉后的卷積核向x方向平移一位,繼續(xù)計算重疊部分的乘積和作為下一個輸出結果,直到x方向全部重疊過,則卷積核向y方向平移一位并平移到x方向的起始點進行計算,重復以上過程直至輸入矩陣中的元素全被卷積核覆蓋過。
(三)有益效果
在這種體系結構中,高低不同的電平作為輸入信號,代表待計算卷積的輸入矩陣;電阻值高低不同的電阻態(tài)作為卷積核,利用歐姆定律及陣列的電路結構直接實現(xiàn)矩陣對應位相乘并求和的操作。本發(fā)明中卷積核的存儲與卷積的計算在同一陣列中,實現(xiàn)了計算與存儲的一體化,大幅節(jié)省了硬件開銷;并利用非揮發(fā)存儲器的電壓/電流/電阻關系硬件直接實現(xiàn)了卷積計算,利用陣列結構實現(xiàn)了卷積的并行,相比于傳統(tǒng)的軟件上計算卷積,一方面不需要復雜且重復的CMOS邏輯電路進行數(shù)學運算,大幅減小了功耗;另一方面大幅提高了運算速度,尤其是針對較大的卷積核情況;同時由于阻變存儲器件在陣列結構中的高集成性以及可編程性,該結構非常適合做擴展以及卷積核的擦除及重寫,提高了硬件的利用率。
附圖說明
圖1示出了本發(fā)明適用于的卷積計算的種類,即二維矩陣卷積計算,以及相應的計算流程示意圖;
圖2示出了本發(fā)明各個模塊的組成以及模塊間的相互關系示意圖;
圖3示出了由阻變器件組成的交叉陣列運算存儲模塊示意圖;
圖4示出了本發(fā)明在訓練模式下調用的電路連接示意圖;
圖5示出了本發(fā)明在運算模式下調用的電路連接示意圖,以及優(yōu)選的輸出模塊具體電路;
圖6示出了本發(fā)明具體地利用阻變器件陣列存儲卷積核以完成并行計算的方法;
圖7示出了本發(fā)明基于阻變存儲器件陣列實現(xiàn)并行卷積計算方法的流程圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,以下結合具體實施例,并參照附圖,對本發(fā)明作進一步的詳細說明。
在附圖中示出了根據(jù)本公開實例的各種結構示意圖。這些圖并非是按比例繪制的,其中為了清楚表達的目的,放大了某些細節(jié),并且可能省略了某些細節(jié)。圖中所示出的各種元件的形狀以及它們之間的相對大小、位置關系僅是示例性的,實際中可能由于制造公差或技術限制而有所偏差,并且本領域技術人員根據(jù)實際所需可以另外設計具有不同形狀、大小、相對位置的元件。
本發(fā)明的目的是提供一種利用阻變器件(包括基于氧化物的阻變存儲器RRAM,基于金屬離子氧化還原的阻變存儲器CBRAM、相變存儲器PCM、磁阻存儲器MRAM等依靠電阻變化進行信息存儲的元器件)通過電壓/電流/電阻關系實現(xiàn)二維矩陣的卷積計算操作、利用阻變器件陣列實現(xiàn)卷積的并行運算的方法以及相應的體系結構。阻變器件的電阻值可以在兩個不同的電阻值之間通過外加電壓進行切換,稱之為編程(program)/擦除(erase)(或者置位(SET)/復位(RESET))編程電壓和擦除的電壓極性相反,低于編程電壓和擦除電壓的電壓信號不會改變阻變器件的電阻值。存儲的兩個電阻值的高低阻態(tài)有明顯的區(qū)別,高阻態(tài)與低阻態(tài)的比值可達到104~105,且低阻態(tài)在一定范圍內(nèi)可以連續(xù)取值。在這種體系結構中,輸入電壓作為待卷積計算的輸入矩陣、電阻值高低不同的電阻態(tài)作為計算和存儲的卷積核,輸出電壓(電流)作為計算結果。
附圖1給出了本發(fā)明適用于的卷積計算種類以及計算方法。眾所周知,卷積是一個廣義的積分概念,在數(shù)字信號處理、概率論、圖像處理等領域都有廣泛的應用。本發(fā)明只適用于二維離散卷積的計算,主要應用于二維圖像的處理以及卷積神經(jīng)網(wǎng)絡(CNN)。圖1以一個5x5的輸入矩陣、3x3的卷積核為例進行二維離散卷積計算的步驟說明,本實例只作為舉例,實際應用中輸入及卷積核矩陣可擴展成任意的m×n矩陣,前提是輸入矩陣面積大于卷積核矩陣。在圖1中,輸入矩陣中的元素為x1~x25,卷積核元素為w1~w9,首先將卷積核矩陣旋轉180°,然后將翻轉后的卷積核首先與輸入矩陣的左上角部分重疊,之后計算該重疊部分的對應元素乘積并求和,作為第一個輸出結果,即輸出矩陣中的元素Y1;之后翻轉后的卷積核向x方向平移一位,繼續(xù)計算重疊部分的乘積和作為下一個輸出結果,直到x方向全部重疊過,則卷積核向y方向平移一位并平移到x方向的起始點進行計算,重復以上過程直至輸入矩陣中的元素全被卷積核覆蓋過。在本例中,為防止卷積核溢出,不計算輸入矩陣最右列及最下行的元素的卷積結果,輸入矩陣為5x5,卷積核為3x3,即輸出矩陣為一4x4的矩陣。
附圖2給出了本發(fā)明中各個模塊的組成以及各模塊間的相互關系。本發(fā)明的體系結構中包括:阻變存儲器件陣列、訓練模塊、輸入模塊、控制器、輸入控制單元、輸出控制單元以及輸出模塊。其相互連接、控制關系如下:阻變存儲器件陣列包含沿第一方向延伸的多條字線、沿與第一方向交叉的第二方向延伸的多條位線以及分別設置于各位線和各字線的交叉點處的多個基于阻變存儲器件陣列實現(xiàn)并行卷積計算的子單元。每一條位線連接一個位線控制單元,位線控制單元的第一端連接到位線,而位線控制單元的另一端連接到輸入模塊以及訓練模塊,通過控制器給出的觸發(fā)信號進行輸入模塊或訓練模塊的選通;每一條字線連接一個字線控制單元,字線控制單元的第一端連接到字線,而字線控制單元的另一端連接輸出模塊或地線,通過控制器給出的觸發(fā)信號來選通接地或者接輸出模塊,分別對應著位線控制單元控制的輸入模塊及訓練模塊的連接??刂破魍瑫r與輸入模塊連接,通過觸發(fā)信號控制輸入模塊在運算模式下給出輸入信號。
基于電阻運算和傳遞的原理,阻變器件可以制備如附圖3所示的交叉陣列。在交叉陣列中包含多條互相平行的多條位線、相互平行的多條字線以及位于字線和位線之間的基于阻變存儲器件陣列實現(xiàn)并行卷積計算的子單元;基于阻變存儲器件陣列實現(xiàn)并行卷積計算的子單元可以是單個阻變器件也可以是一個阻變器件和雙向選擇器件串聯(lián)的結構。字線和位線相互垂直,在交叉陣列同一行和同一列的基于阻變存儲器件陣列實現(xiàn)并行卷積計算的子單元可以直接構成運算單元,不同行不同列的子單元可以間接構成運算單元。
在具體應用本發(fā)明時,首先控制器給出信號,控制位線控制單元選通訓練模塊、控制字線控制單元選通接地,如附圖4所示。對每個阻變存儲單元的電阻值進行調整。訓練模塊為一個信號發(fā)生器,產(chǎn)生足夠大的直流電壓或多個電壓脈沖,具體視應用的阻變存儲單元的材料而定。通過不斷的擦除、編程過程對阻變存儲單元的電阻值進行調整直至符合理論設定值。如何得到理論設定值將在后文具體給出。將每個阻變存儲單元的電阻值調整之后,即將卷積核存入阻變存儲陣列后,即可進行運算,即控制器給出信號控制位線控制單元選通輸入模塊、控制字線控制單元選通輸出模塊,如附圖5所示,并且控制器控制輸入模塊產(chǎn)生輸入信號。輸入模塊為電壓信號發(fā)生器,輸入電壓信號的大小與輸入矩陣中元素的大小成正比關系。需要注意的是最大的輸入電壓不能大于阻變存儲單元的編程/擦寫電壓,以防止運算過程改變已存入的卷積核大小。附圖5同時給出了一個優(yōu)選的輸出模塊具體電路結構圖,輸出模塊可由一個輸入端接固定電阻負載的差分放大器組成,該固定電阻的大小要求遠小于阻變存儲器的低阻態(tài)電阻,可取阻變存儲器低阻態(tài)電阻的1/10。差分放大器的輸出可以是電流信號也可以是電壓信號,視級聯(lián)的運算要求而定,差分放大器的放大倍數(shù)視具體應用而定。
附圖6給出利用本發(fā)明進行并行卷積計算的方法以及具體的阻變存儲單元的阻值設定。受篇幅所制,以3x3的輸入矩陣、2x2的卷積核矩陣為例說明,如附圖6a所示,輸入為x1~x9,卷積核為w1~w4,輸入與輸入電壓成正比,即Vi=xi卷積核則與阻變存儲單元電阻成反比,即與其電導成正比,即Rj=1/w4-j(這里Ri對應w4-i是根據(jù)卷積定義,卷積核旋轉所導致的)。根據(jù)歐姆定律有:Ii=Vi/Rj=xiw4-j,即阻變存儲單元上的電流正比于輸入矩陣中元素與旋轉后的卷積核中對應的元素的乘積;利用電流的基爾霍夫定律,同一字線上流過的電流即為乘積和,即卷積和。在計算電阻設定值時,應首先測得阻變器件電阻的變化范圍,尤其是其最低電阻值。令該最小電阻值與卷積核中的最大元素相對應,求出比值,再進行其他元素與電阻值的反比對應。這樣本發(fā)明利用硬件的物理特性直接實現(xiàn)了乘積和的計算,即卷積計算,并且實現(xiàn)了在卷積核的存儲位置直接計算,即存儲計算一體化,相比于基于CMOS電路的軟件計算,極大地減小了功耗及器件消耗。
更普遍地,對于卷積中存在負數(shù)的情況,例如w1,w2<0,可將兩條字線接入一個差分放大器來實現(xiàn)實數(shù)域卷積核的計算,如圖6b所示。具體規(guī)則如下:兩條字線中的一條作為正輸出線,將卷積核中的正元素按位對應寫入該字線的阻變器件中,該字線連入差分放大器的正輸入端;另一條字線作為負輸出線,將卷積核中的負元素按位對應寫入該字線的阻變器件中,該字線連入差分放大器的負輸入端;這樣差分放大器的輸出與正負電流和的差成正比,完成了實數(shù)域的卷積核的計算。需要指出的是如果卷積核中元素均為正或均為負,一條字線即可輸出一個卷積結果,根據(jù)需要的輸出是電壓或電流信號,輸出模塊可以是小電阻負載或電流放大器。
卷積的并行計算方式同時由附圖6b給出示意。由于輸入矩陣一般較卷積核矩陣大,計算一個卷積時輸入矩陣只有一部分與卷積核進行對應位相乘并求和的運算。傳統(tǒng)方法是利用時序信號,將輸入矩陣分若干次輸入,每次輸入輸入矩陣的一部分,是一種串行計算的方法。在本發(fā)明中,所有輸入矩陣的元素同時正比地轉化為電壓信號施加在不同位線上,將參與運算的輸入元素所對應位線與代表該卷積運算的字線的交叉點上的阻變存儲單元進行阻值調整,而不參與這個卷積運算的輸入對應的位線與該卷積運算對應字線的交叉點上的阻變存儲單元則設定為高阻態(tài)。由于阻變存儲器件的高阻態(tài)電阻遠大于低阻態(tài)電阻,即高阻態(tài)單元中流過的電流可忽略不計,不影響電流輸出,即不影響計算結果。具體舉例來說,在附圖6b中,第1,2字線共同協(xié)作得到第一個卷積輸出Y1,從附圖6a可知,Y1=x1w4+x2w3+x4w2+x5w1,即輸入信號中只有x1,x2,x4,x5在此卷積計算中起作用,并且w1,w2<0,則正輸入字線與x1,x2位線交叉點上的阻變存儲單元在訓練模式中被調整到相應阻值R1=1/w4,R2=1/w3;負輸入字線與x4,x5位線交叉點上的阻變存儲單元在訓練中被調整到相應阻值R3=-1/w2,R4=-1/w1;其余不參與此次卷積運算且在此正負字線上的阻變存儲單元均被調整到高阻態(tài),則Y1=(V1/R1+V2/R2)-(V4/R3+V5/R4)=x1w4+x2w3+x4w2+x5w1,得到第一個卷積輸出。Y2,Y3,Y4同理,可分別由位線(3,4),(5,6),(7,8)給出。本實例只作為舉例,實際應用中輸入及卷積核矩陣可擴展成任意的m×n矩陣,前提是輸入矩陣面積大于卷積核矩陣。利用這種方式,同時實現(xiàn)了所有卷積結果的輸出,即實現(xiàn)了卷積的并行計算,極大地加快了運算速度。這種方式對陣列大小的要求是:位線數(shù)目等于輸入矩陣元素個數(shù),字線數(shù)目等于輸出矩陣元素個數(shù)的二倍。
這種體系結構對于輸入矩陣的大小及阻變存儲器件的特性具有一定要求。由于阻變存儲器件的高阻態(tài)實際上是具有一定電阻而非無窮大,所以其上會流過一定的小電流。當輸入矩陣足夠大時,這些小電流匯聚起來不再能忽略,將影響計算的邏輯正確性。一般性考慮,輸入矩陣的元素個數(shù)應不大于所使用的阻變器件的高阻態(tài)與低阻態(tài)電阻比值(高低阻窗口)。這也引出了本發(fā)明的一個局限性:在陣列中取高阻態(tài)的阻變存儲單元實際并不存儲卷積核的信息,屬于冗余器件;當輸入矩陣越大,卷積核越小時,該冗余器件數(shù)目越多;同時考慮到冗余器件上的小電流對計算結果的影響,對阻變存儲器件的特性要求也就越高。
在根據(jù)本發(fā)明的上述基于阻變存儲器件陣列實現(xiàn)并行卷積計算的設備中,利用阻變存儲器存儲卷積核并進行卷積計算,由于阻變存儲器的可擦寫性及非揮發(fā)性,不需要電平維持,并且支持卷積核的重寫,降低了功耗,提高了器件利用率。輸出端可以輸出電壓信號,與輸入端的輸入信號類型相同,即該體系結構可輕易拓展到多層卷積計算,為硬件實現(xiàn)卷積神經(jīng)網(wǎng)絡奠定了基礎。
盡管已經(jīng)參考本發(fā)明的典型實施例,具體示出和描述了本發(fā)明,但本領域普通技術人員應當理解,在不脫離所附權利要求所限定的本發(fā)明的精神和范圍的情況下,可以對這些實施例進行形式和細節(jié)上的多種改變。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。