劉維祎,孫亞男,何衛(wèi)鋒
(上海交通大學 電子信息與電氣工程學院,上海 200240)
隨著計算數(shù)據(jù)爆發(fā)式增長,傳統(tǒng)的馮諾依曼架構開始面臨存儲墻的問題,即存儲器與處理器之間大量數(shù)據(jù)搬運消耗了系統(tǒng)中大部分功耗并增加了系統(tǒng)延時[1-10]。傳統(tǒng)的數(shù)字處理系統(tǒng)是二值的,邏輯值通過兩個離散的電壓表示。在處理大量數(shù)據(jù)時,二值系統(tǒng)的速度更加緩慢。此外,隨著半導體器件特征尺寸的縮小,傳統(tǒng)基于CMOS硅工藝的半導體器件亞閾值漏電流急劇增加[11-14],基于CMOS的邏輯電路開始遇到物理瓶頸。因此,急需一種在解決存儲墻問題的同時可以更高效地執(zhí)行邏輯和算術運算的高性能計算范式,以應對未來數(shù)據(jù)密集型任務。
新型非易失存儲器,例如阻變存儲器(Resistive Random-Access Memory,RRAM)具有數(shù)據(jù)多值存儲的能力[3],同時也可用于邏輯計算[4-10]。如圖1(a)所示,RRAM是一種由金屬層、氧化物層和金屬層組成的三明治結構器件。通過導電細絲的生長與破壞,RRAM可實現(xiàn)電阻大小的變化。如圖1(b)所示,RRAM的阻值變化通過復位和置位過程實現(xiàn)。對于傳統(tǒng)的單值RRAM而言,只存在高阻和低阻兩種狀態(tài),而多值RRAM具有兩個以上的阻值狀態(tài)。在RRAM兩端施加復位電壓(負極電平高于正極),導電細絲被破壞,RRAM阻值由低阻變?yōu)楦咦?。在RRAM兩端施加置位電壓(正極電平高于負極),導電細絲生長,RRAM阻值由高阻變?yōu)榈妥琛?/p>
圖1 RRAM器件原理(a)RRAM的三明治結構圖 (b)單值RRAM與多值RRAM示意圖Figure 1. The device principle of RRAM(a)The sandwich structure of RRAM(b)Single level cell RRAM and multi-level cell RRAM
邏輯計算可以在高密度集成的RRAM交叉陣列中實現(xiàn),即存內(nèi)邏輯電路。存內(nèi)邏輯電路可以消除傳統(tǒng)馮諾依曼架構中因數(shù)據(jù)搬運導致的功耗和延時開銷。目前基于RRAM存內(nèi)邏輯電路的設計,例如IMPLY(Material Implication)[4-7]和MAGIC(Memristor Aided Logic)[8-10],只實現(xiàn)了二值邏輯操作,邏輯電路的輸入和輸出均通過交叉陣列中單值RRAM阻值表示。IMPLY和MAGIC僅支持一種基本二值邏輯操作,同時為了確保邏輯操作的正確性,無法提供多個扇入或扇出。另外,在RRAM交叉陣列中實現(xiàn)IMPLY和MAGIC邏輯電路時,邏輯電路的輸入與輸出需要在同一個交叉陣列的同一行或同一列上。在將任意二值邏輯函數(shù)映射到交叉陣列中時,基于IMPLY和MAGIC的映射方法[4-10]需要更多的拷貝操作來完成邏輯操作輸入與輸出的對齊。因此在傳統(tǒng)的IMPLY和MAGIC二值存內(nèi)邏輯電路中實現(xiàn)一個復雜的邏輯函數(shù)往往需要較多的操作步數(shù)以及較大的延時。
相比于二值邏輯系統(tǒng),三值邏輯系統(tǒng)可以減少算術運算所需要的位數(shù),從而減少邏輯操作數(shù)目并降低計算復雜度。新型的納米技術如碳納米晶體管(Carbon Nanotube MOSFET,CN-MOSFET)具有較低的漏電流以及可變的器件大小[11-14]。通過調(diào)節(jié)平帶電壓實現(xiàn)的多閾值CN-MOSFET可以用來實現(xiàn)三值邏輯電路[14]。然而,以往的三值邏輯電路設計多基于傳統(tǒng)的馮諾依曼系統(tǒng)。三值存內(nèi)邏輯電路的實現(xiàn)仍是一個很大的挑戰(zhàn)。
本文提出了一種新型的基于RRAM雙交叉陣列結構的三值存內(nèi)邏輯電路設計。在該設計中,邏輯電路的輸入和輸出均通過多值RRAM的阻值表示。CN-MOSFET與RRAM可以通過三維的方式進行異質(zhì)集成[11]。為了構建高密度集成且低能耗的三值存內(nèi)邏輯電路系統(tǒng),外圍電路由CN-MOSFET實現(xiàn)。本文提出的電路結構支持兩種可具有多個扇入和扇出的三值邏輯門以及一種Material Implication邏輯門?;谝陨系膬煞N三值邏輯門和一種Material Implication邏輯門,任意三值邏輯函數(shù)可以快速地映射到交叉陣列結構中。本文將基于不同存內(nèi)邏輯電路設計的多位行波進位加法器進行了實現(xiàn)。實驗結果表明,相比于傳統(tǒng)二值存內(nèi)邏輯電路設計,三值存內(nèi)邏輯電路加法器可以減少68.84%的操作步數(shù)。相比于傳統(tǒng)IMPLY電路設計,三值存內(nèi)邏輯電路加法器可以降低33.05%的能耗。
圖2為RRAM雙交叉陣列結構。在三值存內(nèi)邏輯電路中,RRAM的高阻狀態(tài)表示邏輯“0”;中間阻值狀態(tài)表示邏輯“1”;低阻狀態(tài)表示邏輯“2”。圖2所示的電路結構支持兩種三值邏輯門(MAX以及NMAX),以上兩種邏輯門可支持多個扇入和扇出。此外,該電路結構還支持NIMP邏輯門[7]。
根據(jù)多值邏輯代數(shù)學,三值邏輯門MAX、NMAX以及一些一元運算符可以組成三值邏輯函數(shù)的全集[15]。一元運算符根據(jù)文獻[13]通過外圍CN-MOSFET邏輯電路實現(xiàn),三值邏輯門MAX與NMAX則通過RRAM雙交叉陣列結構實現(xiàn)。MAX與NMAX的真值表如圖3所示。MAX與NMAX邏輯門電路如圖4所示。MAX與NMAX邏輯門可以直接映射到圖2所示的RRAM雙交叉陣列結構中。在將MAX與NMAX邏輯門映射到雙交叉陣列結構中時,邏輯門的輸入在一個交叉陣列的同一列,邏輯門的輸出在另一個交叉陣列中。
圖2 RRAM雙交叉陣列結構Figure 2. The proposed RRAM dual-crossbar structure
圖3 MAX與NMAX邏輯門真值表Figure 3. The truth table of MAX and NMAX gates
下面以MAX邏輯門為例說明三值存內(nèi)邏輯電路的工作原理。三值邏輯門的輸入值以阻值的形式存儲在輸入RRAM(A和B)中,輸出RRAM在操作前先初始化為高阻狀態(tài)。通過施加外圍電壓Vcond和VWR,電路開始進行邏輯計算。輸入RRAM和參考電阻(RT)形成分壓結構并驅(qū)動后一級的標準反相器(Standard Ternary Inverter,STI)電路。考慮到CN-MOSFET的高驅(qū)動強度以及較小的面積,STI電路通過CN-MOSFET實現(xiàn),以便最大限度保留RRAM交叉陣列結構的高速翻轉和高密度集成特性。
STI電路如圖5所示。通過調(diào)整CN-MOSFET的平帶電壓(Vfb),STI電路可輸出3種離散的電壓值(Vso)。如圖4所示,Vso驅(qū)動1T1R結構中P型CN-MOSFET的柵極。不同的Vso電壓值可以調(diào)節(jié)流過1T1R結構的限制電流。根據(jù)不同的輸入情況,輸出RRAM或者維持在高阻狀態(tài),或者翻轉到的中間阻值狀態(tài)或低阻狀態(tài)。
圖4 MAX與NMAX邏輯門電路圖(a)MAX邏輯門電路圖 (b)NMAX邏輯門電路圖Figure 4. The circuit schematic of MAX and NMAX(a)The circuit schematic of MAX gate (b)The circuit schematic of NMAX gate
圖5 STI電路圖Figure 5. The circuit schematic of STI
MAX邏輯門的仿真波形如圖6所示。HSPICE的仿真基于Verilog-A RRAM模型[16]和16nm Stanford University Virtual Source GAA-CN-MOSFET模型[17-18]。CN-MOSFET電路供電電壓為0.7 V。RRAM的高阻狀態(tài)的阻值為1 MΩ,低阻狀態(tài)阻值為5 kΩ[16]。Vcond電壓為0.7 V,1T1R結構中的VWR電壓為1.3 V。在存在工藝偏差時,為了保證在不同輸入情況下輸出RRAM仍可以正確地翻轉到希望阻值狀態(tài),參考電阻RT選取阻值為35 kΩ,RRAM中間阻值狀態(tài)選取阻值為60 kΩ。當兩個輸入RRAM均處于高阻狀態(tài)(邏輯“0”)時,輸出RRAM維持在高阻狀態(tài)(邏輯“0”),如圖6(a)所示。當輸入RRAM有一個為低阻狀態(tài)(邏輯“2”)時,輸出RRAM翻轉到低阻狀態(tài)(邏輯“2”),如圖6(b)所示。其余情況下,輸出RRAM翻轉到中間阻值狀態(tài)(邏輯“1”),如圖6(c)所示。
圖6 MAX邏輯門仿真波形(a)輸入RRAM均為高阻狀態(tài)時的仿真波形(b)輸入RRAM有一個為低阻狀態(tài)時的仿真波形(c)輸入RRAM分別為高阻狀態(tài)和中間阻值狀態(tài)時的仿真波形Figure 6. The simulation waveform of MAX gate(a)The simulation waveform when the inputs are in high resistance state (b)The simulation waveform when one of the inputs is in low resistance state (c)The simulation waveform when the inputs are in high resistance state and medium resistance, respectively
在三值存內(nèi)邏輯電路設計中,當多個MAX或NMAX邏輯門的輸入位于一個交叉陣列的不同列且對齊時,多個MAX或NMAX邏輯門可以并行執(zhí)行,多個邏輯門的輸出位于另一個交叉陣列的同一列中。另外,通過將MAX與NMAX邏輯門的輸入RRAM和輸出RRAM分離在不同的交叉陣列中,本文提出的MAX與NMAX邏輯門可支持多個扇入和扇出。通過調(diào)整Vcond電壓值的大小可以實現(xiàn)多個扇入,通過調(diào)節(jié)VWR電壓值的大小可以實現(xiàn)多個扇出。因此,三值存內(nèi)邏輯電路設計避免了以往二值存內(nèi)邏輯電路設計中由于拷貝操作過多造成的延時開銷。在將任意一個邏輯函數(shù)映射到交叉陣列結構時,基于三值存內(nèi)邏輯電路結構的實現(xiàn)方式具有更快的計算速度。
除了章節(jié)1.1中討論的三值MAX和NMAX邏輯門外,本文提出的電路結構支持一種Material Implication邏輯門,稱為NIMP[7]。NIMP門的輸入RRAM與輸出RRAM均位于同一個交叉陣列中。NIMP門的真值表如圖7(a)所示。NIMP門可以在雙交叉陣列結構的任一交叉陣列中實現(xiàn)。NIMP門包含兩個RRAM器件(p和q)以及一個參考電阻RB。原始輸入以阻值的形式存儲在RRAM器件p和q中。施加Vcond+和Vcond-后電路開始工作,邏輯門輸出值以阻值的形式存儲到RRAM器件q中。
圖7 NIMP門的實現(xiàn) (a)NIMP門真值表 (b)輸入位于同一列的NIMP門電路 (c)輸入位于同一行的NIMP門電路Figure 7. NIMP gate implementation (a)The truth table of NIMP gate (b)The circuit of NIMP gate when the inputs are in the same column of crossbar (c)The circuit of NIMP gate when the inputs are in the same row of crossbar
本文將基于不同存內(nèi)邏輯電路設計的多位行波進位加法器進行了實現(xiàn)?;谖墨I[10]中的compact mapping方法與文獻[6]中的semi-parallel方法分別實現(xiàn)了64位二值行波進位加法器。為了公平地比較,三值行波進位加法器的位數(shù)進行了相應的調(diào)整以保證和二值行波進位加法器的和的范圍相近。由于41位三值行波進位加法器與64位二值行波進位加法器的和的范圍相近,因此其被選作比較對象。
表1中對不同加法器設計的操作步數(shù)以及能耗進行了比較。二值行波進位加法器的位數(shù)表示為Nb。在基于MAGIC的Compact Mapping方法中[10], MAGIC邏輯電路設計只支持NOR2門以及NOT門。所有的原始輸入被映射到交叉陣列的同一列中,之后將NOT門與NOR2門映射到交叉陣列中。為了將邏輯門的輸入對齊在交叉陣列的同一行或同一列中,Compact Mapping法需要很多的拷貝操作。對于Nb位的二值行波進位加法器,Compact Mapping方法共需要(13Nb+4)步操作。
表1 存內(nèi)邏輯電路實現(xiàn)加法器的對比Table 1. Comparison of logic-in-memory adders
在基于IMPLY的semi-parallel加法器設計中,不同全加器之間的操作需要串行執(zhí)行,每一個全加器可以在交叉陣列的兩行中并行執(zhí)行[6]。由于在基于Semi-parallel的加法器設計中,大部分操作仍然是串行執(zhí)行的,因此其相比于MAGIC設計具有更多的操作步數(shù)。對于Nb位的二值行波進位加法器,Semi-parallel方法共需要17Nb步操作。
三值存內(nèi)邏輯電路加法器設計如下所示:首先構建三值全加器,A、B和Cin是三值全加器的輸入。S和Cout是三值全加器的輸出。A、B和S的取值范圍為{0, 1, 2}。Cin和Cout的取值范圍為{0, 2}。計算S和Cout所需的一元運算符的真值表如表2所示。
表2 一元運算符真值表Table 2. The truth table of unary operators
(1)
(2)
根據(jù)式(1)及式(2)以及本文電路結構所支持的MAX、NMAX和NIMP邏輯門可以構建三值全加器多層邏輯網(wǎng)絡圖,如圖8所示,實現(xiàn)Nt位加法器的步數(shù)已在圖上標出。三值行波進位加法器的位數(shù)表示為Nt。在將Nt位三值行波進位加法器映射到RRAM雙交叉陣列結構中時,首先將由CN-MOSFET外圍電路[13]產(chǎn)生的一元運算符邏輯值寫入到Plane-1和Plane-2相應的RRAM中。兩個交叉陣列中的一元運算符需要對齊以最大化NIMP操作的并行度。生成所有Nt位的NIMP邏輯門結果一共需要7步。NIMP邏輯門的結果需要在同一列中以便進行MAX操作,產(chǎn)生所有Nt位的G1~G5結果一共需要2Nt步。通過G1~G4與Cin做NIMP操作得到每一個三值全加器的H1~H5;通過G5與H5做MAX操作得到每一個三值全加器的Cout。產(chǎn)生Nt位加法器最后進位結果需要(5Nt+2)步。產(chǎn)生最后的和的結果需要(Nt+2)步。因此完成Nt位加法器的映射一共需要(8Nt+11)步。
圖8 三值全加器多層邏輯網(wǎng)絡圖Figure 8. The multi-level logic network for implementing a ternary full adder
如表1所示,相比于64位MAGIC二值存內(nèi)邏輯電路加法器,41位三值存內(nèi)邏輯電路加法器可以減少59.45%操作步數(shù)。相比于64位IMPLY二值存內(nèi)邏輯電路加法器,41位三值存內(nèi)邏輯電路加法器可以減少68.84%操作步數(shù)。相比于二值邏輯,三值邏輯具有更少的位數(shù)以及更少的邏輯操作數(shù)目,因此三值存內(nèi)邏輯電路加法器具有最快的計算速度。
三值存內(nèi)邏輯電路加法器速度提升的代價為其能耗相比于MAGIC二值存內(nèi)邏輯電路設計多出了27.41%。相比于IMPLY二值存內(nèi)邏輯電路設計,三值存內(nèi)邏輯電路加法器能耗降低了33.05%。
本文提出了一種新型的基于RRAM雙交叉陣列結構的三值存內(nèi)邏輯電路設計。在三值存內(nèi)邏輯電路設計中,邏輯函數(shù)的輸入與輸出值均通過多值RRAM的阻值狀態(tài)表示。該電路結構支持兩種可具有多個扇入和扇出的三值邏輯門以及一種Material Implication邏輯門。本文將基于不同存內(nèi)邏輯電路設計的多位行波進位加法器進行了實現(xiàn)。實驗結果顯示,相比于傳統(tǒng)二值存內(nèi)邏輯電路設計,三值存內(nèi)邏輯電路加法器可以提升高達68.84%的計算速度。相比于傳統(tǒng)IMPLY邏輯電路設計,三值存內(nèi)邏輯電路加法器可以降低33.05%能耗。