吳彩霞,鄭志強(qiáng),唐慧琴,胡 煒,王少昊
(福州大學(xué)晉江微電子研究院,福建 晉江 362200)
當(dāng)前主流的馮?諾依曼處理架構(gòu)依賴總線進(jìn)行處理器和存儲(chǔ)器之間的通信,難以應(yīng)對(duì)新出現(xiàn)的數(shù)據(jù)密集型應(yīng)用,面臨“內(nèi)存墻”性能瓶頸[1]。近數(shù)據(jù)計(jì)算(Near Data Computing,NDC)和存算一體(Processing in-memory,PIM)的處理[2]改進(jìn)了計(jì)算架構(gòu),可顯著提升處理器和存儲(chǔ)器之間的數(shù)據(jù)吞吐效率,在人工智能、圖像處理、物聯(lián)網(wǎng)計(jì)算等領(lǐng)域已顯現(xiàn)出良好的應(yīng)用前景,有望解決上述“內(nèi)存墻”問(wèn)題[3]。近年來(lái)出現(xiàn)的非易失性存儲(chǔ)器(Non-Volatile Memory,NVM)具有斷電保存、高算力、低功耗、低成本等優(yōu)勢(shì),較以靜態(tài)隨機(jī)存儲(chǔ)器(Static Random Access Memory,SRAM)、動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Dynamic Random Access Memory,DRAM)為代表的傳統(tǒng)易失性存儲(chǔ)器更適用于PIM方案[4]。
新型NVM主要包括電阻性隨機(jī)存儲(chǔ)器(Resistive Random Access Memory,RRAM)、相變存儲(chǔ)器(Phase Change Memory,PCM)、磁性隨機(jī)存儲(chǔ)器(Magnetic Random Access Memory,MRAM)等,其中,MRAM具有體積小、功耗低、訪問(wèn)速度快、近無(wú)限次讀/寫(xiě)操作和抗輻射能力強(qiáng)等優(yōu)點(diǎn),具有廣闊的產(chǎn)業(yè)化前景[1]?;贛RAM的通用型PIM架構(gòu)可在執(zhí)行位邏輯運(yùn)算的同時(shí)兼顧常規(guī)存儲(chǔ)功能。
與/或位邏輯運(yùn)算操作是上述基于MRAM的通用型PIM架構(gòu)的核心功能,根據(jù)其執(zhí)行位置是否位于存儲(chǔ)陣列將PIM架構(gòu)分為全后置式和部分前置式兩類,按照兩種運(yùn)算的執(zhí)行順序不同亦可區(qū)分為并行與串行兩類計(jì)算模式。在與/或運(yùn)算的基礎(chǔ)上可進(jìn)一步實(shí)現(xiàn)其他布爾邏輯運(yùn)算和一位全加器功能。其運(yùn)算方式取決于PIM架構(gòu)所選用的存儲(chǔ)單元結(jié)構(gòu),常見(jiàn)的有1T1MTJ、2T2MTJ和2T1MTJ等[1,4-6]。1T1MTJ方案需要較大的存取晶體管尺寸保證寫(xiě)可靠性,導(dǎo)致在對(duì)MTJ器件進(jìn)行讀操作時(shí)存在較大的讀電流干擾。2T2MTJ[6]方案采用互補(bǔ)位單元結(jié)構(gòu),可提升位邏輯運(yùn)算操作的正確率,但顯著增加了陣列面積與寫(xiě)操作難度[6]。此外,2T1MT[4]方案雖提出采用2T1MTJ單元結(jié)構(gòu)重構(gòu)實(shí)現(xiàn)多位的加法計(jì)算[4],但該方案中的外圍控制電路設(shè)計(jì)較為復(fù)雜,且進(jìn)行邏輯計(jì)算需要電壓脈沖,增加了設(shè)計(jì)難度。
本文基于2T1MTJ單元結(jié)構(gòu),提出一種通用型PIM宏架構(gòu)。在不顯著增加存儲(chǔ)陣列面積的同時(shí),可通過(guò)配置實(shí)現(xiàn)常規(guī)MRAM存儲(chǔ)、并行PIM與串行PIM工作。該P(yáng)IM方案除了采用2T1MTJ單元結(jié)構(gòu)將與/或位運(yùn)算控制前置于存儲(chǔ)陣列,結(jié)合讀取電路后端還可實(shí)現(xiàn)邏輯非(NOT)、與(AND)、與非(NAND)、或(OR)、或非(NOR)、異或(XOR)、一位全加器(ADD)和移位/循環(huán)(SHIFT/ROTATE)操作,并且對(duì)提出的PIM宏架構(gòu)設(shè)計(jì)進(jìn)行了存算功能驗(yàn)證與性能分析。
自旋轉(zhuǎn)移磁矩MRAM(Spin Transfer Torque MRAM,STT-MRAM)的數(shù)據(jù)存儲(chǔ)功能是通過(guò)其存儲(chǔ)單元中的磁隧道結(jié)(Magnetic Tunnel Junctions,MTJ)器件實(shí)現(xiàn)的。MTJ器件是由釘扎層、隧道勢(shì)壘層和自由層組成的雙端器件,如圖1(a)所示。當(dāng)自由層的磁矩方向與釘扎層一致時(shí),MTJ器件呈現(xiàn)低阻態(tài)(平行態(tài))RP,常將其定義為二進(jìn)制符號(hào)“0”;當(dāng)自由層的磁矩方向與釘扎層相反時(shí),MTJ器件轉(zhuǎn)變?yōu)楦咦钁B(tài)(反平行態(tài))RAP,可定義為符號(hào)“1”。高低阻態(tài)之間的隧道磁阻比(Tunnel Magnetoresistnce Ratio,TMR)定義為T(mén)MR=(RAP-RP)/RP,根據(jù)材料和溫度的不同,TMR的范圍在10%與400%之間不等[1]。過(guò)低的TMR將導(dǎo)致讀取或位邏輯運(yùn)算的錯(cuò)誤率上升。
STT-MRAM中典型的存儲(chǔ)單元結(jié)構(gòu)為1T1MTJ結(jié)構(gòu),即由一個(gè)MTJ器件和一個(gè)選擇晶體管組成??赏ㄟ^(guò)驅(qū)動(dòng)電路控制位線(Bit Line,BL)、字線(Word Line,WL)和源極線(Source Line,SL)的電壓實(shí)現(xiàn)對(duì)單元中MTJ器件寫(xiě)入和讀取操作。在把二進(jìn)制數(shù)據(jù)寫(xiě)入MTJ存儲(chǔ)單元時(shí),只需改變流經(jīng)MTJ器件的電流方向即可更改其自由層的磁矩方向,實(shí)現(xiàn)對(duì)磁阻態(tài)的控制,具體電流方向如圖1(b)所示。
本文提出的通用型PIM宏架構(gòu)由2T1MTJ存儲(chǔ)陣列、陣列控制電路和邏輯運(yùn)算電路三部分構(gòu)成,如圖1(c)所示。在2T1MTJ存儲(chǔ)陣列中,每個(gè)存儲(chǔ)單元由兩個(gè)控制晶體管和一個(gè)MTJ器件構(gòu)成,其中控制晶體管分別由兩行字線(WL與CWL)控制實(shí)現(xiàn)部分前置式與、或位邏輯運(yùn)算。單元的MTJ一端連接一列BL,另一端則由每?jī)蓚€(gè)臨近2T1MTJ單元共用一列SL。
本文提出的PIM架構(gòu)中,位邏輯運(yùn)算與常規(guī)MRAM功能擁有相同陣列控制電路,主要包括行譯碼器、列譯碼器、字線驅(qū)動(dòng)電路和讀寫(xiě)驅(qū)動(dòng)電路。其中行解碼器、列解碼器以及字線驅(qū)動(dòng)電路用于地址總線的控制,陣列電路外圍還添加了邏輯電路和控制電路模塊輔助實(shí)現(xiàn)位邏輯運(yùn)算功能??刂齐娐坟?fù)責(zé)實(shí)現(xiàn)PIM架構(gòu)的模式控制,邏輯電路模塊實(shí)現(xiàn)在PIM模式下的位邏輯運(yùn)算、一位全加器和移位/循環(huán)功能。
圖1 MTJ特性
控制電路的系統(tǒng)結(jié)構(gòu)框架如圖2所示。電路根據(jù)輸入操作數(shù)(命令和地址信號(hào))輸出相應(yīng)的控制信號(hào),主要分為3個(gè)子模塊:mram_ctrl、mram_work和mram_pim。mram_ctrl模塊負(fù)責(zé)完成系統(tǒng)的上電穩(wěn)定、初始化配置、命令解析以及指令狀態(tài)控制;mram_work模塊根據(jù)相應(yīng)的工作模式控制地址信號(hào);mram_pim模塊根據(jù)具體的工作狀態(tài)控制預(yù)充電電流型靈敏放大器(Pre-charge Current Sensing Amplifier,PCSA)、讀寫(xiě)驅(qū)動(dòng)電路以及邏輯電路。
圖2 MRAM的控制電路架構(gòu)
基于2T1MTJ單元的PIM宏架構(gòu)可在常規(guī)存儲(chǔ)和串行PIM、并行PIM模式下工作。相應(yīng)地,需要在架構(gòu)的每個(gè)子陣列中均分別配置獨(dú)立的讀取參考單元和獨(dú)立的邏輯運(yùn)算參考單元。
在常規(guī)存儲(chǔ)模式下,對(duì)2T1MTJ存儲(chǔ)單元的讀寫(xiě)操作均為單值操作。在執(zhí)行寫(xiě)操作時(shí),需要同時(shí)選通WL和CWL,保證為MTJ器件提供足夠的寫(xiě)入電流,讀寫(xiě)驅(qū)動(dòng)電路則負(fù)責(zé)控制寫(xiě)入電流的方向,實(shí)現(xiàn)邏輯寫(xiě)“1”和“0”的功能。在執(zhí)行讀取操作時(shí),只需選通WL打開(kāi)單個(gè)存取晶體管以實(shí)現(xiàn)低讀取電流。在讀取電路部分,SA將從BL輸入的讀電流和從讀取參考流入的參考電流進(jìn)行比較,在輸出端OUT-(或OUT+)輸出高(或低)電平,如圖1(c)所示。自此完成了常規(guī)存儲(chǔ)模式下邏輯“1”或邏輯“0”的讀取操作。
PIM模式寫(xiě)操作與常規(guī)存儲(chǔ)模式下完全相同。本文提出的PIM宏架構(gòu)能夠?qū)Υ鎯?chǔ)陣列中同一列的兩個(gè)操作數(shù)[(如圖1(c)中的MTJA和MTJB)]實(shí)現(xiàn)位布爾邏輯運(yùn)算和一位全加器計(jì)算,如表1所示(省略了NOR、NAND和XNOR運(yùn)算),其中設(shè)定進(jìn)位輸入CIN=1。邏輯運(yùn)算電路可分3個(gè)模塊實(shí)現(xiàn)上述功能:讀取電路模塊、組合邏輯模塊和全加器邏輯模塊。
讀取電路模塊可實(shí)現(xiàn)NOT、OR/NOR和AND/NAND的功能。除NOT運(yùn)算結(jié)果直接在讀取操作時(shí)SA的OUT+端口得出外(OUT-為讀出的MTJ數(shù)據(jù))。提出的PIM架構(gòu)將OR/AND位運(yùn)算操作前置于2T1MTJ存儲(chǔ)陣列中,具體配置方式為:同時(shí)打開(kāi)同一列BL中的MTJA和MTJB單元,流經(jīng)兩個(gè)單元的總電流Ib1將沿著B(niǎo)L流入SA的一端。此時(shí)需調(diào)用相應(yīng)的邏輯運(yùn)算參考單元,SA會(huì)將Ib1與從邏輯運(yùn)算參考單元流入的電流Iref進(jìn)行比較,進(jìn)而得出位邏輯運(yùn)算結(jié)果。按執(zhí)行OR/AND位邏輯運(yùn)算的執(zhí)行順序不同,這里將讀取電路分為并行PIM和串行PIM兩種計(jì)算模式,如圖3(a)、圖3(b)所示。布爾邏輯運(yùn)算與全加器功能真值表,如表1所示。
表1 布爾邏輯運(yùn)算與全加器功能真值表
(1)并行PIM采用全后置模式,讀取電路需并行配置一對(duì)SA用于分別執(zhí)行OR和AND位邏輯運(yùn)算,如圖3(a)所示。相應(yīng)地,需要為該SA配置一對(duì)邏輯運(yùn)算參考單元,分別提供不同的參考電流(Iref1和Iref2)。值得注意的是,由于Ib1需要同時(shí)輸入一對(duì)SA來(lái)實(shí)現(xiàn)并行運(yùn)算,因此需要加入電流鏡以提升電路穩(wěn)定性。
(2)串行PIM模式下,OR/AND位邏輯運(yùn)算可部分前置于存儲(chǔ)陣列中,即先同時(shí)選通MTJA和MTJB單元的WL和CWL實(shí)現(xiàn)AND運(yùn)算,再單獨(dú)選通WL實(shí)現(xiàn)OR運(yùn)算。如圖3(b)所示,讀取電路先將AND結(jié)果通過(guò)鎖存器保存,再連同在第二次計(jì)算中得到的NOR結(jié)果一起輸入下一級(jí)模塊。因此,串行PIM模式下讀取電路僅需配置一個(gè)SA和一個(gè)固定的邏輯運(yùn)算參考單元,SA和參考單元數(shù)量較并行PIM方案減半。
組合邏輯模塊可由NOR和AND的運(yùn)算結(jié)果得到XOR與XNOR的位邏輯運(yùn)算結(jié)果。
全加器邏輯模塊可以實(shí)現(xiàn)一位全加器的計(jì)算功能,即輸入XOR、AND和CIN,得到A、B相加的和(SUM)與進(jìn)位輸出(COUT)。
本文以32×128存儲(chǔ)陣列對(duì)PIM架構(gòu)進(jìn)行性能評(píng)估,該陣列被劃分為8個(gè)32×16大小的子陣列。子陣列共享地址總線,即一個(gè)地址同時(shí)選中8個(gè)子列陣中對(duì)應(yīng)的單元,因此使用5~32的行譯碼器和4~16的列譯碼器。并且每個(gè)子陣列均擁有獨(dú)立的SA、參考單元和讀寫(xiě)驅(qū)動(dòng)電路,因此上述32×128陣列除可以實(shí)現(xiàn)對(duì)8位數(shù)據(jù)的并行讀寫(xiě)操作與邏輯運(yùn)算,還可以在SA輸出端實(shí)現(xiàn)對(duì)該組8位數(shù)據(jù)的SHIFT和ROTATE操作。如圖4(a)所示,主要考慮向右的操作,Di(i=0,…,7)為數(shù)據(jù)輸入,Qi為相應(yīng)輸出,由Si控制實(shí)現(xiàn)移位/循環(huán)i+1位的操作,Ei控制實(shí)現(xiàn)SHIFT和ROTATE兩種邏輯操作。圖4(b)顯示了這兩種邏輯功能的具體操作,在向右移位時(shí)最高位補(bǔ)“0”。
本文結(jié)合中芯國(guó)際55 nm工藝、數(shù)字標(biāo)準(zhǔn)工藝庫(kù)與p-MTJ緊湊模型[7]對(duì)上述模擬和數(shù)字設(shè)計(jì)進(jìn)行了混合仿真,并通過(guò)對(duì)硬件描述語(yǔ)言代碼的綜合分析評(píng)估了提出的PIM宏架構(gòu)系統(tǒng)性能。本文采用的p-MTJ緊湊模型默認(rèn)設(shè)置溫度T=300 K,TMR=150%。綜合考慮p-MTJ模型和PCSA的充放電特性[8],再將邏輯控制電路時(shí)鐘頻率設(shè)定在100 MHz,通過(guò)設(shè)置可令提出的PIM宏架構(gòu)在接到操作命令后的3個(gè)時(shí)鐘周期內(nèi)正確實(shí)施寫(xiě)操作、常規(guī)讀取、AND/OR位邏輯運(yùn)算功能。
圖4 右移位/循環(huán)操作
工作在常規(guī)存儲(chǔ)模式下,2T1MTJ PIM架構(gòu)讀寫(xiě)操作的仿真結(jié)果如圖5(a)所示。當(dāng)放大器使能信號(hào)SA_EN為高電平時(shí),存儲(chǔ)器執(zhí)行讀取操作,其中SA的預(yù)充電動(dòng)作在讀時(shí)間的第一個(gè)時(shí)鐘周期內(nèi)完成。在第1次進(jìn)行讀操作時(shí),假定對(duì)象2T1MTJ單元中的MTJ器件為高阻態(tài)(對(duì)應(yīng)二進(jìn)制符號(hào)SMTJ=1),則OUT-輸出端VOUT_為高電平。當(dāng)寫(xiě)入使能信號(hào)WR_ENB為低電平時(shí),存儲(chǔ)器可執(zhí)行寫(xiě)入操作。由于指令為寫(xiě)入“0”,電路對(duì)2T1MTJ單元施加反向電流,令MTJ器件成功轉(zhuǎn)變?yōu)榈妥钁B(tài)(SMTJ=0)即完成寫(xiě)“0”操作。隨后,再對(duì)該2T1MTJ單元執(zhí)行一次讀操作,得到輸出VOUT_為低電平。最后,對(duì)該2T1MTJ單元執(zhí)行一次寫(xiě)“1”操作和一次讀取操作。由圖可知,在100 MHz系統(tǒng)的時(shí)鐘頻率下,本設(shè)計(jì)可在接到操作命令后的3個(gè)周期內(nèi)完成上述常規(guī)存儲(chǔ)模式的讀寫(xiě)功能。
位邏輯計(jì)算是執(zhí)行同一列BL中任意兩個(gè)操作數(shù)(二進(jìn)制符號(hào)記為SA和SB)之間按位邏輯計(jì)算。圖5(b)展示了串行PIM方案對(duì)不同的輸入操作數(shù)執(zhí)行OR、AND和ADD運(yùn)算的仿真結(jié)果。用于驗(yàn)證的輸入操作數(shù)按輸入順序依次為(SA=1,SB=1),(SA=1,SB=0)和(SA=0,SB=0)。以輸入操作數(shù)(SA=1,SB=1)為例,在執(zhí)行位OR運(yùn)算時(shí),輸出VOR/AND為高電平,在執(zhí)行位AND運(yùn)算時(shí),輸出VOR/AND也為高電平。隨后,讀取電路模塊將OR和AND運(yùn)算結(jié)果輸出至組合邏輯模塊得到XOR運(yùn)算輸出VXOR為低電平。最后,當(dāng)ADD計(jì)算設(shè)置進(jìn)位輸入為高電平(CIN=1)時(shí),在全加器邏輯模塊SUM的輸出VSUM和VOUT輸出VC均為高電平。上述結(jié)果表明,在100 MHz時(shí)鐘頻率下,本設(shè)計(jì)可在接到操作命令后的3個(gè)周期內(nèi)完成對(duì)兩個(gè)輸入操作數(shù)的OR、AND位邏輯運(yùn)算,串行方案在第二次計(jì)算時(shí)完成一位全加器運(yùn)算。
表2比較了基于1T1MTJ[1,5]、2T2MTJ[6]單元和本文提出的基于2T1MTJ單元的PIM架構(gòu)。
上述PIM架構(gòu)方案的陣列版圖面積主要由MTJ器件所需寫(xiě)操作電流決定。假設(shè)存儲(chǔ)陣列中的MTJ器件完全相同,考慮到寫(xiě)電流的要求,2T2MTJ方案和1T1MTJ方案中的單元存取晶體管尺寸應(yīng)相當(dāng)。因此2T2MTJ單元面積應(yīng)為1T1MTJ單元的2倍。2T1MTJ方案在執(zhí)行寫(xiě)操作時(shí)同時(shí)開(kāi)啟兩個(gè)存取晶體管,因此可認(rèn)為雙管尺寸與兩指結(jié)構(gòu)1T1MTJ單管尺寸相當(dāng)。
本文仿真比較了基于上述三種單元的PIM架構(gòu)的寫(xiě)性能。由于2T2MTJ方案在寫(xiě)入時(shí)需要操作兩個(gè)MTJ,因此在相同的寫(xiě)入電壓和寫(xiě)入時(shí)間下存儲(chǔ)單元內(nèi)的寫(xiě)能耗是1T1MTJ和2T1MTJ方案的兩倍,且寫(xiě)入正確率最低。此外,由于2T1MTJ方案拆分存取管減小了寄生電阻電容,提高了響應(yīng)速度和電流,因此寫(xiě)入正確率略高于版圖面積相同的1T1MTJ方案。
圖5 功能實(shí)現(xiàn)
表2 基于1T1MTJ、2T2MTJ和2T1MTJ單元的PIM架構(gòu)比較
讀取操作時(shí),在1T1MTJ方案和2T1MTJ方案的電路結(jié)構(gòu)中,SA需配置參考單元(等效電阻Req)對(duì)經(jīng)BL流入的讀電流進(jìn)行讀取或位邏輯運(yùn)算。采用互補(bǔ)結(jié)構(gòu)的2T2MTJ方案在讀取時(shí)無(wú)須配置參考單元,但需要根據(jù)互補(bǔ)的兩組單元進(jìn)行讀取。因此,在常規(guī)存儲(chǔ)讀操作過(guò)程中,1T1MTJ和2T1MTJ方案在實(shí)際讀操作中開(kāi)啟晶體管和讀取MTJ的數(shù)量與2T2MTJ方案相當(dāng)。相較而言,2T1MTJ方案僅需開(kāi)啟單管且單管面積為1T1MTJ方案單管面積的一半,因此可有效減小讀電流干擾及避免誤寫(xiě)操作。
在串行位邏輯運(yùn)算模式下,3種結(jié)構(gòu)除需要操作擬讀取的存儲(chǔ)單元外,1T1MTJ和2T1MTJ方案還需操作運(yùn)算參考單元,2T2MTJ方案還需操作存儲(chǔ)陣列中的邏輯控制位。因此,1T1MTJ所需開(kāi)啟晶體管和讀取MTJ的數(shù)量均為2T2MTJ方案的一半。2T1MTJ方案由于采用部分前置AND/OR運(yùn)算模式,晶體管和讀取MTJ的數(shù)量介于1T1MTJ和2T2MTJ方案之間。在并行位邏輯運(yùn)算模式下,2T1MTJ方案的工作模式與1T1MTJ方案相同且具有與常規(guī)存儲(chǔ)模式相同的陣列讀寫(xiě)優(yōu)勢(shì)。由于2T2MTJ無(wú)法實(shí)現(xiàn)并行計(jì)算,因此本文不在表2中做對(duì)比。
本文提出了一種基于新型2T1MTJ存儲(chǔ)單元結(jié)構(gòu)的通用型PIM宏架構(gòu),可在常規(guī)存儲(chǔ)模式、并行PIM模式與串行PIM模式下工作,在PIM模式下可實(shí)現(xiàn)布爾邏輯運(yùn)算、全加器、移位/循環(huán)操作等功能,有助于解決“內(nèi)存墻”問(wèn)題,實(shí)現(xiàn)存內(nèi)計(jì)算在人工智能和邊緣計(jì)算等領(lǐng)域的應(yīng)用。數(shù)?;旌戏抡娼Y(jié)果表明,該方案在100 MHz時(shí)鐘頻率下執(zhí)行一組位寫(xiě)入操作或者與/或位邏輯計(jì)算操作的時(shí)間均為3個(gè)周期。較基于1T1MTJ單元的PIM方案而言,該架構(gòu)不僅不增加陣列面積,還可顯著提升寫(xiě)操作可靠性和位邏輯運(yùn)算正確率。此外,該架構(gòu)的寫(xiě)入功耗、寫(xiě)入正確率和版圖面積均優(yōu)于基于2T2MTJ單元的PIM方案,是實(shí)現(xiàn)基于MRAM的高密度、低功耗、高可靠性的PIM方案的可行技術(shù)路線。