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