劉必成 顧海峰 陳銘松 谷守珍 陳聞杰
(上海市高可信計(jì)算重點(diǎn)實(shí)驗(yàn)室(華東師范大學(xué)) 上海 200062)
當(dāng)今世界已進(jìn)入大數(shù)據(jù)時(shí)代,各種現(xiàn)代應(yīng)用對(duì)數(shù)據(jù)處理速度的要求越來(lái)越高.然而在傳統(tǒng)的馮·諾依曼架構(gòu)中,數(shù)據(jù)的存儲(chǔ)和處理各自分離,同時(shí)數(shù)據(jù)量與處理速度之間的差距也在逐步拉大,嚴(yán)重制約了系統(tǒng)效率的進(jìn)一步提高.為了克服這個(gè)困難,文獻(xiàn)[1-2]提出了新型存內(nèi)計(jì)算(processing in memory, PIM)架構(gòu),并受到廣泛關(guān)注和研究[3-4].在存內(nèi)計(jì)算架構(gòu)中,存儲(chǔ)單元和計(jì)算單元在內(nèi)存中緊密地結(jié)合在一起,使得數(shù)據(jù)可以直接在內(nèi)存中就地進(jìn)行處理,從而極大地減少了數(shù)據(jù)在內(nèi)存和處理器之間的頻繁移動(dòng)且增加了數(shù)據(jù)處理的并行性.
雖然存內(nèi)計(jì)算架構(gòu)在一定程度上緩解了“數(shù)據(jù)搬運(yùn)”的瓶頸問(wèn)題,然而由于傳統(tǒng)存內(nèi)計(jì)算建立在易失性存儲(chǔ)器介質(zhì)之上,其物理特性限制導(dǎo)致整個(gè)系統(tǒng)泄漏功耗和動(dòng)態(tài)功耗隨著處理數(shù)據(jù)量的增加而急劇增長(zhǎng).近期各種新型非易失性內(nèi)存介質(zhì)(non-volatile memory, NVM)正因其區(qū)別與傳統(tǒng)介質(zhì)的低漏電率、高密度等一系列優(yōu)良的特性而受到廣泛關(guān)注[5-7].典型的包括相變存儲(chǔ)器(phase change memory, PCRAM)、自旋力矩存儲(chǔ)器(spin-transfer torque memory, STT-RAM)、賽道型存儲(chǔ)器(racetrack memory, RM)等.其中RM通過(guò)將多個(gè)比特的數(shù)據(jù)存儲(chǔ)在一條類似磁帶的納米線上,提供了比自旋力矩存儲(chǔ)器更高的存儲(chǔ)密度,比相變存儲(chǔ)器更高的寫(xiě)入壽命,以及接近靜態(tài)隨機(jī)存取存儲(chǔ)器(static random access memory, SRAM)的讀寫(xiě)速度[8-10].
賽道型存儲(chǔ)的本身物理結(jié)構(gòu)決定了其不但適用于存儲(chǔ)數(shù)據(jù),也非常容易組成各種邏輯結(jié)構(gòu)來(lái)進(jìn)行數(shù)據(jù)處理,因此可以用來(lái)作為存內(nèi)計(jì)算的介質(zhì).第1代賽道型存儲(chǔ)器是基于磁疇壁(domain-wall)介質(zhì)的,文獻(xiàn)[11]在此基礎(chǔ)上提出了一種較為通用的存內(nèi)計(jì)算架構(gòu).然而這種基于磁疇壁介質(zhì)的存內(nèi)架構(gòu)依然需要大量的CMOS(complementary metal oxide semiconductor)外圍電路來(lái)進(jìn)行輔助計(jì)算,導(dǎo)致了計(jì)算單元體積和能耗的增加.
最近新型的基于斯格明子介質(zhì)的第2代賽道型存儲(chǔ)器被提出[12-15].相比磁疇壁介質(zhì),斯格明子介質(zhì)具有密度更高、能耗更低、穩(wěn)定性更強(qiáng)以及更少受限于材料等一系列優(yōu)良特性,非常適合作為下一代存內(nèi)計(jì)算的介質(zhì).同樣這種介質(zhì)特性也非常適合使用在嵌入式系統(tǒng)中,甚至可以用來(lái)構(gòu)建基于嵌入式系統(tǒng)的移動(dòng)存內(nèi)計(jì)算框架.然而目前對(duì)于斯格明子介質(zhì)的研究主要集中于硬件存儲(chǔ)功能,缺乏關(guān)于計(jì)算功能的研究,系統(tǒng)層次以及具體應(yīng)用實(shí)現(xiàn)也很少涉及[16].另一方面由于斯格明子-賽道型存儲(chǔ)器特有的條帶狀物理結(jié)構(gòu),使其具有特有的順序讀寫(xiě)特性,如何用其替代現(xiàn)有存內(nèi)計(jì)算架構(gòu)下的存儲(chǔ)單元也是亟待解決的問(wèn)題.
針對(duì)以上問(wèn)題,本文提出了一種基于斯格明子介質(zhì)的存內(nèi)計(jì)算框架,主要貢獻(xiàn)有4點(diǎn):1)結(jié)合斯格明子介質(zhì)本身的物理特性,由斯格明子邏輯門(mén)組成加法器、乘法器等計(jì)算單元并進(jìn)行優(yōu)化,極大地減少了CMOS輔助電路的使用,提高了計(jì)算效率;2)在硬件電路層面上對(duì)于基本存儲(chǔ)單元讀寫(xiě)端口數(shù)等參數(shù)進(jìn)行探討,并通過(guò)實(shí)驗(yàn)優(yōu)化配置;3)在系統(tǒng)層上對(duì)內(nèi)存的地址映射方式進(jìn)行改進(jìn),提高了整個(gè)系統(tǒng)的運(yùn)行效率;4)以通用的圖像銳化程序?yàn)槔敿?xì)說(shuō)明了程序在內(nèi)存框架中的工作流程,同時(shí)將本文提出的基于斯格明子介質(zhì)的內(nèi)存框架與目前最先進(jìn)的基于磁疇壁的存內(nèi)計(jì)算框架進(jìn)行實(shí)驗(yàn)對(duì)比.
基于斯格明子介質(zhì)的存內(nèi)計(jì)算主要包含2部分:基于斯格明子介質(zhì)的存儲(chǔ)單元和計(jì)算單元,其中存儲(chǔ)單元即斯格明子-賽道型存儲(chǔ)器,是整個(gè)框架的基礎(chǔ).
斯格明子-賽道型存儲(chǔ)器[12-13],區(qū)別于磁疇壁-賽道型存儲(chǔ)器,是一種基于斯格明子編碼的非易失性存儲(chǔ)器.如圖1所示,數(shù)據(jù)通過(guò)斯格明子編碼之后存儲(chǔ)在一條單一的鐵磁納米線(nanowire)器件上.納米線上的斯格明子由電壓控制的磁各向異性(voltage-controlled magnetic anisotropy, VCMA)門(mén)所隔離,每2個(gè)門(mén)之間存儲(chǔ)一位數(shù)據(jù).如果此區(qū)間內(nèi)存在斯格明子則代表數(shù)據(jù)1,如果不存在斯格明子則代表數(shù)據(jù)0.斯格明子-賽道型存儲(chǔ)器件有3項(xiàng)基本操作:移位、讀和寫(xiě),其中具有移位操作是其最重要的特性.
Fig. 1 Skyrmion based nanowire device圖1 斯格明子-賽道型存儲(chǔ)器件結(jié)構(gòu)圖
斯格明子-賽道型存儲(chǔ)器件的移位操作,是指在磁各向異性門(mén)打開(kāi)時(shí)納米線上的斯格明子可以通過(guò)在存儲(chǔ)器兩端移位端口(shift port)施加電流來(lái)進(jìn)行向左或向右移動(dòng).為了保證移位操作之后記錄在納米線上的數(shù)據(jù)不丟失,在納米線兩端應(yīng)當(dāng)有冗余的存儲(chǔ)位供位移操作使用.整體來(lái)說(shuō)所有比特?cái)?shù)據(jù)的移位都類似于磁帶操作,和移位寄存器類似.
斯格明子-賽道型存儲(chǔ)器件讀、寫(xiě)操作的基本原理類似.在存儲(chǔ)器器件中有讀寫(xiě)端口(write/read port),即沿著納米線方向放置的一個(gè)強(qiáng)磁化鐵磁層,但是其和納米線之間由較薄的絕緣層隔開(kāi).這樣的三明治結(jié)構(gòu)形成了磁隧道結(jié)(magnetic tunnel junctions, MTJs).通過(guò)向?qū)懚丝诘腗TJ結(jié)構(gòu)中注入自旋極化電流(spin-transfer current)就可以在納米線上產(chǎn)生一個(gè)斯格明子.同樣讀端口也是一個(gè)MTJ結(jié)構(gòu),通過(guò)檢測(cè)讀端口MTJ隧穿電導(dǎo)(tunneling conductance)的變化就可以得知納米線上當(dāng)前位置是否存在斯格明子,即數(shù)據(jù)是0還是1.需要注意的是,由于寫(xiě)和讀操作只能在固定的MTJ端口處進(jìn)行,因此納米線上比特位數(shù)據(jù)的操作需要移動(dòng)到與MTJ固定層對(duì)齊的位置才能進(jìn)行,而移位操作的方向和速度取決于控制電流的方向和幅度.
傳統(tǒng)上所有的數(shù)據(jù)都是保存在和處理器分離的主存中,二者通過(guò)總線相連接.因此在程序執(zhí)行過(guò)程中所有的數(shù)據(jù)都需要遷移到處理器中,并在處理完成之后再次寫(xiě)回.對(duì)于以數(shù)據(jù)為導(dǎo)向的應(yīng)用,這將產(chǎn)生嚴(yán)重的通信堵塞,從而大大降低總體性能.此外在傳統(tǒng)的內(nèi)存中保存大量的數(shù)據(jù)也將產(chǎn)生明顯的待機(jī)能耗.
為了克服上述2個(gè)問(wèn)題,我們使用基于非易失性內(nèi)存的計(jì)算架構(gòu).首先存內(nèi)計(jì)算架構(gòu)在一定程度上解決了數(shù)據(jù)傳輸瓶頸的問(wèn)題,也減少了數(shù)據(jù)傳輸?shù)哪芎?;其次非易失性?nèi)存在極大地減少待機(jī)功耗的同時(shí)也降低了內(nèi)存的動(dòng)態(tài)功耗.基于斯格明子-賽道型存儲(chǔ)器的存內(nèi)計(jì)算平臺(tái)整體結(jié)構(gòu)如圖2所示,其中存內(nèi)計(jì)算單元與存儲(chǔ)單元以分布式的方式組合成存儲(chǔ)-計(jì)算單元組,這樣許多頻繁處理數(shù)據(jù)的操作可以在內(nèi)存內(nèi)部完成而無(wú)需與外部處理器進(jìn)行通信,從而極大地節(jié)省了時(shí)間與能耗的開(kāi)銷.同時(shí)分布式的內(nèi)存處理單元也可以提供巨大的線程級(jí)并行性,從而極大地提高系統(tǒng)吞吐量.
Fig. 2 The structure of PIM platform圖2 存內(nèi)計(jì)算架構(gòu)
在本文提出的基于斯格明子的存內(nèi)計(jì)算框架中,內(nèi)存存儲(chǔ)單元由基于斯格明子的賽道型存儲(chǔ)器構(gòu)成,從而受益于其低漏電功耗、非易失性以及穩(wěn)健性等優(yōu)點(diǎn).同時(shí)存內(nèi)計(jì)算單元純粹由基于斯格明子邏輯門(mén)的加法器、乘法器等組成,只需要極少的CMOS電路輔助,因此總體漏電功耗和處理數(shù)據(jù)所需的動(dòng)態(tài)功耗和時(shí)間消耗都極大地減少.在本文提出的存內(nèi)計(jì)算框架中,存儲(chǔ)-計(jì)算單元組之間通過(guò)H型內(nèi)部數(shù)據(jù)通路相連接,這樣單元組與單元組之間的數(shù)據(jù)可以隨時(shí)根據(jù)需要進(jìn)行傳輸,而外部處理器(即CPU)主要負(fù)責(zé)將控制指令傳輸給內(nèi)存內(nèi)部的控制單元,由內(nèi)部控制單元負(fù)責(zé)內(nèi)存中存儲(chǔ)與計(jì)算單元具體數(shù)據(jù)的調(diào)度處理.由于斯格明子既具有計(jì)算功能又具有存儲(chǔ)功能,因此在本文提出的存內(nèi)計(jì)算框架中,計(jì)算單元得到的結(jié)果將直接寫(xiě)入存儲(chǔ)單元中,即存儲(chǔ)單元本身完成了類似寄存器的時(shí)序邏輯功能.
本節(jié)首先從硬件層面考慮,提出基于斯格明子邏輯門(mén)的加法邏輯單元和進(jìn)位邏輯單元設(shè)計(jì),再進(jìn)一步提出整個(gè)全加器的設(shè)計(jì),最后在全加器設(shè)計(jì)的基礎(chǔ)上提出了基于斯格明子邏輯門(mén)乘法器的設(shè)計(jì),并進(jìn)一步對(duì)加法器進(jìn)行了優(yōu)化.
典型的邏輯和運(yùn)算由2個(gè)異或門(mén)組成,然而異或邏輯門(mén)無(wú)法直接使用斯格明子器件實(shí)現(xiàn).這個(gè)問(wèn)題可以通過(guò)斯格明子邏輯門(mén)組合來(lái)實(shí)現(xiàn)[14-15].其中文獻(xiàn)[14]實(shí)現(xiàn)了基于斯格明子的邏輯與門(mén)和邏輯或門(mén),同時(shí)包含基于斯格明子的復(fù)制(duplication)邏輯,而文獻(xiàn)[15]中實(shí)現(xiàn)了基于斯格明子的邏輯與非門(mén)和邏輯或非門(mén).在此基礎(chǔ)上本文構(gòu)建了基于斯格明子的異或邏輯門(mén).如圖3(b)所示,基于斯格明子的異或邏輯門(mén)由1個(gè)或門(mén),1個(gè)與非門(mén)以及1個(gè)與門(mén)組成.需要注意的是,圖3(b)中OR2-Gate是與非門(mén)NAND-Gate的一部分,輸入部分An和Bn分別代表數(shù)據(jù)A和B的第n位.正如圖3(a)所示,A和B是一個(gè)存儲(chǔ)在斯格明子納米線上8 b的數(shù)據(jù).在斯格明子納米線上,如果某個(gè)位置存在有斯格明子,它就代表數(shù)值1;如果沒(méi)有斯格明子,它就表示數(shù)值0.因此圖3(a)以二進(jìn)制形式表示A=10111001,B=10101110.
Fig. 3 Skyrmion nanowire-based XOR-logic圖3 基于斯格明子的異或邏輯單元
當(dāng)n=1時(shí)異或邏輯單元工作步驟有3個(gè):
1) 操作數(shù)A1和B1同時(shí)進(jìn)入邏輯門(mén)OR1和NAND.由于A1=1,B1=0也即有一個(gè)斯格明子進(jìn)入邏輯門(mén)OR1,一個(gè)斯格明子進(jìn)入邏輯門(mén)NAND.
2) 代表A1的斯格明子分別通過(guò)邏輯門(mén)OR1和NAND并保持不變.
3) 從邏輯門(mén)OR1和NAND出來(lái)的2個(gè)斯格明子同時(shí)進(jìn)入邏輯門(mén)AND,最終合并成一個(gè)斯格明子,從而可以得到A1⊕B1=1.
通過(guò)基于斯格明子納米線器件的異或邏輯單元我們可以實(shí)現(xiàn)帶進(jìn)位的加法邏輯單元(SUM=An⊕Bn⊕Cin,其中Cin為進(jìn)位).即通過(guò)組合2個(gè)異或邏輯單元:第1個(gè)異或邏輯單元輸入是An和Bn,輸出是An⊕Bn;第2異或邏輯單元輸入是An⊕Bn和Cin,而輸出是當(dāng)前位的進(jìn)位和SUM.
一個(gè)典型的進(jìn)位邏輯由3個(gè)與門(mén)和2個(gè)或門(mén)組成.圖4顯示了基于斯格明子邏輯門(mén)的進(jìn)位邏輯單元具體設(shè)計(jì)細(xì)節(jié).
Fig. 4 Skyrmion nanowire-based carry-logic圖4 基于斯格明子的進(jìn)位邏輯門(mén)
如圖4所示,進(jìn)位邏輯單元有3組輸入:An和Bn,An和Cin,Bn和Cin,以及一個(gè)輸出:Cout.其中輸入Cin為第n-1位的進(jìn)位,輸出Cout為第n位的進(jìn)位.進(jìn)位邏輯單元具體實(shí)現(xiàn)細(xì)節(jié)有4點(diǎn):
1) 代表上述3組輸入第n位數(shù)值的斯格明子粒子分別進(jìn)入了3個(gè)與門(mén),即AND1~AND3.
2) 第1個(gè)與門(mén)AND1的輸出和第2個(gè)與門(mén)AND2的輸出將同時(shí)進(jìn)入第1個(gè)或門(mén)OR1.第3個(gè)與門(mén)AND3的輸出將在進(jìn)入第2個(gè)或門(mén)OR2之前等待OR1的輸出.
3) 第1個(gè)或門(mén)OR1的輸出與第3個(gè)與門(mén)AND3的輸出同時(shí)進(jìn)入第2個(gè)或門(mén)OR1.
4) 第2個(gè)或門(mén)的輸出即進(jìn)位的值Cout.
Fig. 5 Skyrmion nanowire-based full adder圖5 基于斯格明子邏輯門(mén)的全加器
基于斯格明子邏輯門(mén)的全加器如圖5所示,此全加器由3個(gè)主要部分構(gòu)成:第1部分(PART1)是和運(yùn)算部分,由第1個(gè)異或邏輯組成,它的輸入是An和Bn,輸出是An⊕Bn.同時(shí)第1部分還有一個(gè)復(fù)制邏輯(duplication)以便為第3部分(PART3)提供輸入.第2部分(PART2)是進(jìn)位邏輯,其輸入是An-1,Bn-1,Cn-1,而輸出是Cn即n-1位的進(jìn)位.同時(shí)Cn會(huì)復(fù)制4份,其中2份作為第3部分(PART3)的輸入,另外2份作為下一位加法的輸入.第3部分(PART3)由第2個(gè)異或邏輯構(gòu)成,其輸入是An⊕Bn和Cn,即第1部分和第2部分的輸出,而輸出就是全加器的最終結(jié)果:SUM=An⊕Bn⊕Cn.
圖5中的針孔形狀部分代表一種能量勢(shì)壘(energy barrier)[15],這種能量勢(shì)壘在電壓為正的時(shí)候可以阻止斯格明子通過(guò),而在電壓為0的時(shí)候允許斯格明子通過(guò),從而起到類似開(kāi)關(guān)的作用.通過(guò)能量勢(shì)壘的開(kāi)關(guān)可以使得斯格明子同步進(jìn)入邏輯門(mén)的2個(gè)輸入端以保證邏輯門(mén)的正常工作.注意,當(dāng)n=1時(shí),An代表數(shù)據(jù)A的第1位,此時(shí)An-1不存在即無(wú)任何輸入,Bn-1與Cn也相同.
不同斯格明子邏輯門(mén)的傳播時(shí)延已在文獻(xiàn)[14-15]中給出.基于已知的各種邏輯門(mén)的工作時(shí)間,當(dāng)整個(gè)系統(tǒng)的工作頻率為1 000 MHz時(shí),通過(guò)計(jì)算得知全加器進(jìn)行1位的加法需要11個(gè)時(shí)鐘周期.考慮到能量勢(shì)壘開(kāi)關(guān)在使邏輯門(mén)輸入同步的同時(shí)也使得各個(gè)邏輯門(mén)之間相互隔離,因此當(dāng)進(jìn)行多個(gè)位的加法時(shí)可以利用此特性對(duì)全加器的工作流程進(jìn)一步優(yōu)化.受CPU流水線優(yōu)化技術(shù)啟發(fā),我們對(duì)全加器進(jìn)行了優(yōu)化:在1位加法計(jì)算完成之前就允許下一位的數(shù)據(jù)進(jìn)入全加器,從而極大地提高了整體工作效率.
經(jīng)過(guò)優(yōu)化后的全加器電路時(shí)序圖如圖6所示.其中橫坐標(biāo)的數(shù)字1~19分別代表19個(gè)時(shí)鐘周期,每個(gè)時(shí)鐘周期為1 ns;縱坐標(biāo)的Gate 1~13分別對(duì)應(yīng)圖6所示全加器中對(duì)應(yīng)的13個(gè)邏輯門(mén)的控制電壓,即每個(gè)邏輯門(mén)輸入端口處能量勢(shì)壘開(kāi)關(guān)的電壓.經(jīng)過(guò)優(yōu)化后的全加器主要時(shí)序邏輯為
Fig. 6 Timing diagram of 8-bit full adder圖6 全加器電壓控制時(shí)序圖
1) 第1個(gè)時(shí)鐘周期.Gate1~2,Gate5~7對(duì)應(yīng)的控制電壓為低電壓,因此對(duì)應(yīng)輸入 端口的斯格明子(也即An,Bn,An-1,Bn-1,Cn-1)可以進(jìn)入OR-Gate1,NAND-Gate2和AND-Gate5.為了保證輸入同步,Gate3~4,Gate8~9和Gate11對(duì)應(yīng)的控制電壓為高電壓.其他邏輯門(mén)對(duì)應(yīng)的控制電壓均保持低電壓,因?yàn)檫@些邏輯門(mén)還未被使用.
2) 第2個(gè)時(shí)鐘周期.Gate1~2,Gate5~7對(duì)應(yīng)的控制電壓變?yōu)楦唠妷阂宰柚顾垢衩髯舆M(jìn)入對(duì)應(yīng)邏輯門(mén),同時(shí)Gate3~4,Gate9和Gate11的控制電壓繼續(xù)保持高電壓以完成邏輯門(mén)同步功能.Gate8的控制電壓從高電壓轉(zhuǎn)為低電壓從而使得斯格明子進(jìn)入OR-Gate8,其他邏輯門(mén)的對(duì)應(yīng)控制電壓依然保持不變.
3) 第3個(gè)時(shí)鐘周期.Gate9的控制電壓轉(zhuǎn)為低電壓以便斯格明子進(jìn)入OR-Gate9,同時(shí)后續(xù)Gate10的控制電壓轉(zhuǎn)變?yōu)楦唠妷阂酝瓿赏焦δ埽渌壿嬮T(mén)的控制電壓保持不變.
4) 第6個(gè)時(shí)鐘周期.Gate4的控制電壓從高電壓變?yōu)榈碗妷阂员闼垢衩髯舆M(jìn)入AND-Gate4;同時(shí) Gate2的控制電壓變?yōu)榈碗妷阂员阍试S下個(gè)比特的數(shù)據(jù)進(jìn)入NAND-Gate2,后續(xù)Gate3依然保持高電壓.
5) 第8個(gè)時(shí)鐘周期.Gate10~11的控制電壓轉(zhuǎn)為低電壓從而An⊕Bn和Cn對(duì)應(yīng)的斯格明子可以進(jìn)入 OR-Gate10和NAND-Gate11.Gate12~13的控制電壓為了保持同步應(yīng)變?yōu)楦唠妷籂顟B(tài).同時(shí)Gate5~7的控住電壓轉(zhuǎn)為高電壓,而Gate8的控制電壓轉(zhuǎn)為低電壓.
6) 第13個(gè)時(shí)鐘周期.Gate5~7的控制電壓轉(zhuǎn)為高電壓以阻止斯格明子進(jìn)入邏輯門(mén),同時(shí)Gate8,Gate10,Gate11,Gate13的控制電壓轉(zhuǎn)為低電壓.
7) 第14個(gè)時(shí)鐘周期.可以通過(guò)輸出端口是否有斯格明子判斷SUM的值是0還是1,從而得到求和運(yùn)算的第1個(gè)位數(shù)值.
8) 第15個(gè)時(shí)鐘周期及以后.不斷重復(fù)第10~14個(gè)時(shí)鐘周期的狀態(tài),每隔5個(gè)時(shí)鐘周期就可以讀出和的下一位數(shù)值.
如圖6所示,經(jīng)過(guò)計(jì)算可以得知第1位的加法需要14個(gè)時(shí)鐘周期(每個(gè)時(shí)鐘周期1 ns),而從第2位開(kāi)始每5個(gè)時(shí)鐘周期全加器就可以完成一個(gè)位的加法.這是由于經(jīng)過(guò)優(yōu)化后全加器內(nèi)部各個(gè)邏輯門(mén)之間相互獨(dú)立運(yùn)行,從而可以獲得類似流水線的優(yōu)化效果,考慮到在進(jìn)行大量數(shù)據(jù)處理時(shí)或者隨著運(yùn)行頻率的進(jìn)一步提高優(yōu)化效果依然可以進(jìn)一步提高.對(duì)于常用的8 b的加法,本文提出的基于斯格明子介質(zhì)的全加器經(jīng)過(guò)優(yōu)化后只需要49個(gè)時(shí)鐘周期即49 ns,相比基于磁疇壁的第1代賽道存儲(chǔ)內(nèi)存加法器 (8位加法需要108 ns)[1]快了2.2倍.
通常來(lái)說(shuō)乘法可以分解為多次移位操作和加法操作,而本文提出的存內(nèi)計(jì)算框架中全加器可以通過(guò)純粹的基于斯格明子邏輯門(mén)實(shí)現(xiàn),移位操作又是斯格明子納米線器件自帶的能力,因此本文提出如圖7所示基于斯格明子邏輯門(mén)的8位乘法器.
在圖7中,An代表當(dāng)對(duì)應(yīng)操作數(shù)B的第n位為1時(shí),需要將操作數(shù)A左移n-1位.例如當(dāng)操作數(shù)A和B的二進(jìn)制形式分別為1101和111時(shí),有A0=1101,A1=11010,A2=110100,此時(shí)A乘以B就等于A0+A1+A2.由于操作數(shù)A存儲(chǔ)在斯格明子納米線上,而納米線器件本身就支持移位操作,因此An可以通過(guò)將操作數(shù)A左移n位得到,再直接輸入全加器中得到乘法結(jié)果.因此基于斯格明子的乘法器可以通過(guò)重復(fù)利用已有的斯格明子全加器和本身的移位來(lái)實(shí)現(xiàn),因此大大減少了計(jì)算邏輯單元所需的空間以及時(shí)間,同時(shí)也減少了實(shí)現(xiàn)存內(nèi)計(jì)算框架的復(fù)雜程度.
Fig. 7 8-bit Skyrmion nanowire-based multiplier圖7 基于斯格明子的8位乘法器
在存內(nèi)計(jì)算框架中存儲(chǔ)單元與計(jì)算單元一同對(duì)整個(gè)系統(tǒng)的性能起著至關(guān)重要的作用.而斯格明子-賽道型存儲(chǔ)器本身的物理特性決定其與傳統(tǒng)的DRAM存儲(chǔ)器隨機(jī)讀寫(xiě)的方式并不相同,斯格明子-賽道型存儲(chǔ)器具有順序讀寫(xiě)的特性.因此我們無(wú)法簡(jiǎn)單地用斯格明子存儲(chǔ)單元直接替代DRAM存儲(chǔ)單元.為了進(jìn)一步提高斯格明子存內(nèi)計(jì)算框架的效率,我們需要根據(jù)斯格明子-賽道型存儲(chǔ)器的本身物理特性來(lái)從底層硬件及系統(tǒng)軟件2個(gè)層面考慮存內(nèi)計(jì)算框架中存儲(chǔ)單元的設(shè)計(jì).
Fig. 8 Skyrmion based memory cell 圖8 基于斯格明子介質(zhì)的存儲(chǔ)單元
基于斯格明子的基本存儲(chǔ)單元具體結(jié)構(gòu)如圖8所示.其中存儲(chǔ)部分由RT0到RT3共4條基本賽道組成.每條賽道上可能有n個(gè)讀寫(xiě)端口(圖8中圓形部分),這樣每個(gè)單元可以一次讀寫(xiě)4n(單位為b).典型的賽道型存儲(chǔ)器具有3個(gè)基本操作即讀、寫(xiě)以及移位.由于其中移動(dòng)數(shù)據(jù)的移位操作占據(jù)絕大部分的時(shí)間和能耗,所以如何在不影響系統(tǒng)性能的情況下盡量減少數(shù)據(jù)的移位操作是亟待解決的問(wèn)題.
在圖8所示結(jié)構(gòu)中,減少移位最直觀有效的方法是增加讀寫(xiě)端口的數(shù)量.但是由于讀寫(xiě)端口本身會(huì)占用大量的空間,因此增加讀寫(xiě)端口會(huì)相應(yīng)降低存儲(chǔ)的密度,同時(shí)會(huì)帶來(lái)讀寫(xiě)延時(shí)、能耗的增加以及實(shí)現(xiàn)工藝的復(fù)雜化,因此需要在增加讀寫(xiě)端口與減少數(shù)據(jù)移位之間尋找一個(gè)平衡點(diǎn).同時(shí)每個(gè)基本存儲(chǔ)單元由幾條賽道組成,以及每條賽道的長(zhǎng)度(即可以存儲(chǔ)的數(shù)據(jù)量)是多少,都對(duì)整個(gè)讀寫(xiě)單元的性能有著至關(guān)重要的影響.文獻(xiàn)[10,13]經(jīng)過(guò)大量實(shí)驗(yàn)分析得知在多數(shù)應(yīng)用中,每個(gè)基本存儲(chǔ)單元中由4個(gè)條帶組成,每個(gè)條帶存儲(chǔ)64 b數(shù)據(jù)能取得較好性能.這時(shí)如果每條賽道的讀寫(xiě)端口大于16,單個(gè)存儲(chǔ)單元占用面積以及讀寫(xiě)時(shí)延以及功耗都會(huì)急劇增加;而當(dāng)讀寫(xiě)端口數(shù)小于16時(shí),單個(gè)存儲(chǔ)單元占用面積隨著端口數(shù)減少反而會(huì)增加,因?yàn)榇藭r(shí)條帶兩端需要為移位操作預(yù)留的空間也越來(lái)越大.同時(shí)在后續(xù)的實(shí)驗(yàn)部分中,本文也分析了在本文提出的基于斯格明子的存內(nèi)計(jì)算框架下讀寫(xiě)端口的數(shù)量與移位操作數(shù)的相應(yīng)變化,綜合考慮我們選擇讀寫(xiě)端口為16.
由于斯格明子-賽道型存儲(chǔ)器不同于傳統(tǒng)的DRAM存儲(chǔ)器具有順序讀寫(xiě)的特性,因此傳統(tǒng)的為隨機(jī)讀寫(xiě)存儲(chǔ)器設(shè)計(jì)的系統(tǒng)地址映射方式并不適用于這種新型的非易失性存儲(chǔ)器.圖9(a)所示為傳統(tǒng)的DRAM的地址映射方式RBC(row bank column),這種存儲(chǔ)系統(tǒng)通常使用一種典型的開(kāi)放式頁(yè)面地址映射策略,將所有相鄰列的同一行映射到一個(gè)連續(xù)的區(qū)域,使空間局部性最大化.同時(shí),它通過(guò)行列交織的方式來(lái)管理流水線式的內(nèi)存請(qǐng)求.
對(duì)于斯格明子-賽道型存儲(chǔ)器來(lái)說(shuō),關(guān)鍵問(wèn)題是傳統(tǒng)地址映射方式將每個(gè)行作為一個(gè)連續(xù)區(qū)域而不考慮移位的問(wèn)題,也不考慮這些行可能橫跨了許多不同內(nèi)存存儲(chǔ)單元,因此可能會(huì)帶來(lái)非常嚴(yán)重的負(fù)面效應(yīng).如圖10所示,256行依次分布在第1存儲(chǔ)單元MC1到第64存儲(chǔ)單元MC64,為了簡(jiǎn)化討論,假設(shè)內(nèi)存中有64個(gè)基本存儲(chǔ)單元,每個(gè)存儲(chǔ)單元只有1條存儲(chǔ)賽道,每條賽道只能存儲(chǔ)4 b數(shù)據(jù)且只有1個(gè)讀寫(xiě)端口.在傳統(tǒng)的地址映射方式下由于內(nèi)存訪問(wèn)都具有很高的空間局部性,導(dǎo)致內(nèi)存訪問(wèn)可能在不同存儲(chǔ)單元之間以及存儲(chǔ)單元內(nèi)部頻繁切換.在圖10的例子中,應(yīng)用程序的內(nèi)存訪問(wèn)序列為R4→R8→R1→R4→R6.這些請(qǐng)求只映射到2個(gè)相關(guān)存儲(chǔ)單元(MC1,MC2),從而導(dǎo)致了多次移位操作(總移位為14次).考慮到基于斯格明子的存儲(chǔ)器存儲(chǔ)密度極大化以及內(nèi)存訪問(wèn)的局部性,再結(jié)合存內(nèi)計(jì)算的具體應(yīng)用場(chǎng)景,本文提出了一種新的地址映射方式,即基于斯格明子介質(zhì)的地址映射方式(address mapping based on Skyrmion, AMBS).
Fig. 10 An example of using AMBS圖10 使用賽道型地址映射的優(yōu)勢(shì)1例
我們首先解釋這種地址映射方案如何具體實(shí)現(xiàn).AMBS將地址位(第16 b到第31 b)分為3部分:SN,PN,MN,見(jiàn)圖9(b).其中SN(shift number)表示初始行和其對(duì)應(yīng)訪問(wèn)端口的距離,即初始數(shù)據(jù)需要移位多少次才能夠被訪問(wèn).PN(port number)表示的是訪問(wèn)數(shù)據(jù)對(duì)應(yīng)的端口序列號(hào),即通過(guò)第幾個(gè)端口去訪問(wèn)數(shù)據(jù).MN(memory cell number)表示基本存儲(chǔ)單元的編號(hào).具體地說(shuō),如果每個(gè)x位數(shù)據(jù)共享一個(gè)端口,即要將內(nèi)存中所有的行地址按照SN的數(shù)值劃分為x組,并將地址相鄰的行劃為同一組. AMBS策略優(yōu)先在組內(nèi)進(jìn)行數(shù)據(jù)分配,只有組內(nèi)整個(gè)空間分配完之后,才將后續(xù)數(shù)據(jù)分配給下一組.
通過(guò)這種賽道型內(nèi)存地址映射方式可以極大地減少移位操作,原因主要有2方面:1)在組間來(lái)說(shuō),假設(shè)內(nèi)存的總?cè)萘繛? GB,每32 b數(shù)據(jù)共享一個(gè)端口,此時(shí)每組的大小為256 MB(8 GB/32),此時(shí)由于內(nèi)存讀取的局部性,內(nèi)存訪問(wèn)序列有極大可能屬于某一組,因此可以減少由于較小區(qū)域的空間局部性導(dǎo)致的頻繁移位操作.2)在組內(nèi)來(lái)說(shuō),由于延遲和能耗主要來(lái)自于移位操作,特別是長(zhǎng)距離的移位操作,因此減少移位的距離也能提高系統(tǒng)性能.而賽道型內(nèi)存地址映射能將大部分內(nèi)存讀寫(xiě)的移位操作距離減少至1,這是因?yàn)橥淮鎯?chǔ)單元中相鄰2行的地址差距非常大(256 MB).
結(jié)合上述說(shuō)明,我們以圖10為例來(lái)說(shuō)明AMBS是如何工作的.內(nèi)存訪問(wèn)序列為R4→R8→R1→R4→R6,在傳統(tǒng)的內(nèi)存映射方式下,需要14次移位操作才能夠讀取完這些數(shù)據(jù),而在基于賽道內(nèi)存的操作下不需要進(jìn)行任何移位任何操作就能完成內(nèi)存數(shù)據(jù)的讀取,節(jié)省了大量時(shí)間和能耗的開(kāi)銷.而賽道型內(nèi)存地址映射方式的實(shí)現(xiàn)方式,可以通過(guò)在操作系統(tǒng)中使用一個(gè)統(tǒng)一的分系統(tǒng)管理物理頁(yè),并形成了一個(gè)層次結(jié)構(gòu)基于Shift和Port的可用頁(yè)面列表,類似于頁(yè)面著色技術(shù)[17],根據(jù)應(yīng)用程序需要的不同存儲(chǔ)容量,盡可能地分配一個(gè)連續(xù)的區(qū)域.因此最簡(jiǎn)單的方式,可以使用一個(gè)靜態(tài)的物理地址的映射系統(tǒng),在內(nèi)存控制器中或斯格明子-賽道型存儲(chǔ)器芯片內(nèi)部實(shí)現(xiàn).這樣就可以在不改變現(xiàn)有操作系統(tǒng)的存儲(chǔ)器體系接口下實(shí)現(xiàn),因此帶來(lái)的額外開(kāi)銷也基本可以忽略.
本節(jié)分別從硬件層和系統(tǒng)層對(duì)基于斯格明子介質(zhì)的存內(nèi)計(jì)算單元進(jìn)行性能評(píng)估.首先對(duì)于硬件層面,探討了基于斯格明子邏輯門(mén)的存內(nèi)計(jì)算單元的性能,其次在系統(tǒng)層面上通過(guò)通用的圖像銳化程序?qū)τ趦?nèi)存存儲(chǔ)單元的讀寫(xiě)端口個(gè)數(shù)與數(shù)據(jù)移位操作數(shù)的關(guān)系,以及整個(gè)存內(nèi)計(jì)算系統(tǒng)的時(shí)間及能耗效率進(jìn)行了評(píng)估.
斯格明子邏輯門(mén)組成的基本運(yùn)算單元作為存內(nèi)計(jì)算框架的基礎(chǔ),首先我們需要對(duì)其性能進(jìn)行評(píng)估.本實(shí)驗(yàn)中所用的斯格明子器件的讀寫(xiě)時(shí)間與能耗數(shù)據(jù)來(lái)自于文獻(xiàn)[18],同時(shí)移位操作的能耗可以通過(guò)斯格明子納米線的熱耗散數(shù)據(jù)計(jì)算得出,移位操作的時(shí)間可以通過(guò)斯格明子在納米線上的移動(dòng)速度計(jì)算得出.需要注意的是當(dāng)斯格明子邏輯門(mén)的工作狀態(tài)即輸入不同時(shí),納米線上的驅(qū)動(dòng)電流密度也會(huì)隨之變化[14-15].例如當(dāng)邏輯與門(mén)的輸入為0和1時(shí)(即只有一個(gè)斯格明子進(jìn)入與門(mén)),電流密度為7×1012A/m-2;當(dāng)邏輯與門(mén)的輸入為1和1時(shí)(即有2個(gè)斯格明子同時(shí)進(jìn)入與門(mén)),電路密度為4×1012Am-2,因此在計(jì)算整個(gè)計(jì)算單元的功耗時(shí)我們只能取其平均值.在斯格明子邏輯門(mén)中使用的納米線長(zhǎng)約為600 nm,寬度約為100 nm[14],由此我們可以計(jì)算出計(jì)算單元占用的面積.基于斯格明子計(jì)算單元對(duì)比基于磁疇壁計(jì)算單元極大地減少了額外COMS電路的使用,不僅使得性能上有所提高,也極大地減少了實(shí)現(xiàn)工藝所需的復(fù)雜度.
表1中對(duì)比了基于斯格明子計(jì)算單元和基于磁疇壁計(jì)算單元在時(shí)間、能耗和面積上的區(qū)別.可以看出,本文提出的基于斯格明子的存內(nèi)計(jì)算單元相比目前最先進(jìn)的基于磁疇壁的存內(nèi)計(jì)算單元節(jié)省了54.6%的時(shí)間、42.9%的能耗以及23.1%的占用面積.這主要?dú)w功于斯格明子介質(zhì)優(yōu)異的物理性質(zhì):加法計(jì)算單元進(jìn)行的優(yōu)化,以及乘法計(jì)算單元對(duì)于加法器的復(fù)用.同時(shí)相比基于磁疇壁計(jì)算單元,大大減少了外圍輔助電路的需求,簡(jiǎn)化了電路設(shè)計(jì),使得基于斯格明子計(jì)算單元更容易被實(shí)現(xiàn).
Table 1 Performance Comparison of TwoComputing Units
4.2.1 實(shí)驗(yàn)環(huán)境配置
為了更準(zhǔn)確評(píng)估基于斯格明子的存內(nèi)計(jì)算框架的總體性能,本文采用調(diào)整過(guò)的基于磁疇壁的存內(nèi)計(jì)算框架[1]來(lái)作為比較對(duì)象.為了模擬應(yīng)用程序在存內(nèi)計(jì)算框架中的具體執(zhí)行過(guò)程,我們修改了體系結(jié)構(gòu)模擬器Gem5[19]中內(nèi)存部分,同時(shí)為了獲得具體時(shí)間和能耗數(shù)據(jù),我們結(jié)合了功耗和時(shí)序建模工具M(jìn)cPAT[20]建立了整個(gè)實(shí)驗(yàn)平臺(tái).
表2列出了實(shí)驗(yàn)中的主要參數(shù)配置.其中存內(nèi)計(jì)算框架中主存儲(chǔ)單元均被設(shè)置為1 000 MHz,與計(jì)算單元保持同步.對(duì)于基于磁疇壁的存內(nèi)計(jì)算框架,時(shí)間和能耗參數(shù)可以從擴(kuò)展的NVSim[21]中獲取.由于本文提出的內(nèi)存框架具有加法器和乘法器組成的計(jì)算單元,因此理論上任何程序中的加法和乘法操作均可以在此內(nèi)存框架中完成.特別地,本文選取了主要操作均由加法和乘法組成的圖像銳化程序作為實(shí)驗(yàn)測(cè)試程序,并在4.2.2節(jié)中介紹了圖像銳化程序的具體執(zhí)行過(guò)程.
Table 2 Configuration Parameters of Experiment表2 實(shí)驗(yàn)環(huán)境中關(guān)鍵參數(shù)配置
4.2.2 基于存內(nèi)計(jì)算框架的圖像銳化程序?qū)嵗?/p>
為了詳細(xì)說(shuō)明程序是如何在基于斯格明子的存內(nèi)計(jì)算框架中執(zhí)行的,以及存內(nèi)計(jì)算帶來(lái)的優(yōu)勢(shì),本節(jié)以圖像銳化處理為例詳細(xì)描述程序執(zhí)行過(guò)程.
Fig. 11 The working process of image sharpening in PIM architecture圖11 圖像銳化程序在存內(nèi)計(jì)算框架中具體執(zhí)行過(guò)程
圖像銳化即加強(qiáng)圖像中重要信息,使得圖像更清晰、更易于處理,在圖像處理識(shí)別等各個(gè)領(lǐng)域都起著非常重要的作用.由于其處理的對(duì)象是以矩陣的形式將對(duì)應(yīng)像素點(diǎn)信息存儲(chǔ)于內(nèi)存中的數(shù)字化圖片,涉及到大量的矩陣操作,特別適合于用PIM進(jìn)行并行處理.其本質(zhì)是利用微分等運(yùn)算加強(qiáng)圖像中包含邊緣信息的高頻部分,代表性算法為拉普拉斯算子.拉普拉斯算子是一種二階微分算子,一個(gè)連續(xù)的二元函數(shù)f(x,y)其拉普拉斯運(yùn)算定義為
(1)
對(duì)圖像處理來(lái)說(shuō),可以將拉普拉斯算子簡(jiǎn)化為
g(i,j)=4f(i,j)-f(i+1,j)-f(i-1,j)-
f(i,j+1)-f(i,j-1).
(2)
在數(shù)字圖像處理中即表示將某個(gè)點(diǎn)對(duì)應(yīng)像素的數(shù)值乘以4再減去其上下左右相鄰像素對(duì)應(yīng)的數(shù)值.在圖像銳化處理的過(guò)程中,拉普拉斯算子可以直接通過(guò)模板操作來(lái)實(shí)現(xiàn),即用拉普拉斯模板與圖像中對(duì)應(yīng)像素?cái)?shù)值矩陣進(jìn)行點(diǎn)乘來(lái)得到銳化后的圖像數(shù)值.如圖11所示,其中常用的模板為
(3)
圖11以使用拉普拉斯算子模板進(jìn)行圖像銳化的程序?yàn)槔f(shuō)明通用程序在基于斯格明子介質(zhì)的存內(nèi)計(jì)算框架中執(zhí)行過(guò)程.如圖11所示,基于斯格明子的存內(nèi)計(jì)算框架主要包含存儲(chǔ)單元和計(jì)算單元2部分.
其中存儲(chǔ)單元部分由斯格明子-賽道型存儲(chǔ)器組成,如圖11上半部分所示,灰色部分表示讀寫(xiě)端口所在位置.在未使用AMBS策略之前讀取2個(gè)矩陣的數(shù)據(jù)需要進(jìn)行多次移位操作,而在使用AMBS策略之后數(shù)據(jù)均存儲(chǔ)在讀寫(xiě)端口的位置,讀取這些數(shù)據(jù)不需要再進(jìn)行任何移位操作.圖11中計(jì)算單元部分由基于斯格明子的乘法器(S-MUL)和加法器(S-ADDER)等邏輯運(yùn)算單元構(gòu)成.同時(shí)存內(nèi)計(jì)算框架不同于傳統(tǒng)的使用外部處理器的計(jì)算框架,在內(nèi)存中還應(yīng)設(shè)有專門(mén)的控制器來(lái)控制程序的執(zhí)行過(guò)程.如圖11下半部分所示,圖像銳化程序的執(zhí)行過(guò)程可被分解為4個(gè)主要步驟:
步驟1. 指令輸入.此時(shí)控制指令由外部處理器輸入到內(nèi)部的控制器.包含需要處理的數(shù)據(jù)地址、需要進(jìn)行的數(shù)據(jù)處理操作等.在如圖11所示例子中即包含存儲(chǔ)圖片對(duì)應(yīng)像素信息的3×3矩陣的地址、存儲(chǔ)拉普拉斯模板矩陣的地址以及需要進(jìn)行的對(duì)應(yīng)矩陣元素的加分和乘法操作.
步驟2. 取數(shù)據(jù).內(nèi)部控制器根據(jù)指令從存儲(chǔ)單元對(duì)應(yīng)地址處取出數(shù)據(jù),在圖11中為一個(gè)保存圖像像素信息的3×3矩陣以及一個(gè)存儲(chǔ)拉普拉斯算子模板信息的3×3矩陣.
步驟3. 數(shù)據(jù)處理.控制器將相應(yīng)數(shù)據(jù)分配至各個(gè)邏輯運(yùn)算單元進(jìn)行數(shù)據(jù)處理,直至得到需要的結(jié)果.圖11中進(jìn)行的是像素與模板的乘法,即2個(gè)矩陣的點(diǎn)乘運(yùn)算.首先將對(duì)應(yīng)矩陣按行、列進(jìn)行分解,如圖11中分解成(5,21,8)與(0,-1,0);再將對(duì)應(yīng)數(shù)值輸入相應(yīng)的基于斯格明子的乘法器分別得到(0,-21,0);最后將結(jié)果通過(guò)基于斯格明子的加法器多次相加得到最終結(jié)果(2).
步驟4. 數(shù)據(jù)寫(xiě)回.最后將處理的結(jié)果(2)再寫(xiě)回到存儲(chǔ)單元中.
上述過(guò)程不斷重復(fù),直至將整個(gè)圖像的數(shù)據(jù)進(jìn)行類似的卷積操作之后,就可以得到銳化后的圖像.在這個(gè)過(guò)程中,圖像數(shù)據(jù)均不需要傳輸?shù)酵獠刻幚砥鬟M(jìn)行處理,從而節(jié)省了大量的時(shí)間和能耗.
4.2.3 實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)主要分為2部分:第1部分主要分析讀寫(xiě)端口數(shù)與移位次數(shù)之間的關(guān)系,以確定在斯格明子-賽道型存儲(chǔ)器中基本存儲(chǔ)單元讀寫(xiě)端口數(shù);第2部分將本文提出的基于斯格明子的存內(nèi)計(jì)算框架與目前最先進(jìn)的基于磁疇壁的存內(nèi)計(jì)算框架進(jìn)行對(duì)比.
如圖12所示,我們首先研究了存儲(chǔ)單元讀寫(xiě)端口對(duì)程序執(zhí)行過(guò)程中賽道型內(nèi)存總移位數(shù)的影響.為了便于比較,將總移位以Base-16為基準(zhǔn)進(jìn)行規(guī)格化.其中Base-X代表不使用AMBS內(nèi)存映射策略且每個(gè)內(nèi)存單元具有X個(gè)讀寫(xiě)端口的情況,AMBS-X指的是使用AMBS映射策略且每個(gè)內(nèi)存單元具有X個(gè)讀寫(xiě)端口的情況.可以看出,使用AMBS內(nèi)存映射策略之后移位操作次數(shù)極大減少.這主要是由于:1)AMBS映射策略使得同一張圖片的數(shù)據(jù)均被存儲(chǔ)在同一組具有相同SN的內(nèi)存中,因此圖片銳化程序讀取1張圖片數(shù)據(jù)時(shí)就不再需要進(jìn)任何移位操作;2)AMBS映射策略使得相鄰圖片的數(shù)據(jù)存儲(chǔ)在同一組或者相鄰組內(nèi)存中,在這種情況下讀取相鄰圖片數(shù)據(jù)的圖片也最多需要進(jìn)行一次移位操作.同時(shí)我們還可以從圖12中看出,AMBS-16與AMBS-32差距較小,而與AMBS-8差距較大.這是由于AMBS-16位移操作次數(shù)已經(jīng)較少,再增加端口數(shù)也無(wú)法大幅減少位移操作次數(shù),但是減少端口數(shù)會(huì)顯著增減位移操作的次數(shù).綜上所述,結(jié)合占用面積、讀寫(xiě)延時(shí)等情況考慮,單個(gè)基本存儲(chǔ)單元讀寫(xiě)端口為16時(shí)能取得較好性能.
Fig. 12 The impact of the read/write ports on the shift operation compared with Base-16圖12 與Base-16對(duì)比讀寫(xiě)端口對(duì)移位操作數(shù)影響
在實(shí)驗(yàn)的第2部分,我們使用通用的圖像銳化程序作為實(shí)驗(yàn)程序,同時(shí)為了使得實(shí)驗(yàn)結(jié)果更具有通用性,我們使用一系列不同分辨率的圖片集作為實(shí)驗(yàn)比較對(duì)象.
圖13對(duì)比了在不使用AMBS策略(Without AMBS)與使用AMBS策略(With AMBS)的情況下,基于斯格明子的存內(nèi)計(jì)算框架與基準(zhǔn)性能(基于磁疇壁的存內(nèi)計(jì)算框架)的比較.可以計(jì)算得出,使用AMBS策略與不使用AMBS策略相比,存內(nèi)計(jì)算框架平均能節(jié)省4.5%的時(shí)間和8.7%的能耗.容易觀察到,系統(tǒng)整體性能的差距要比圖12中位移次數(shù)的差距小得多.這主要是因?yàn)樵诨谒垢衩髯拥拇鎯?nèi)計(jì)算框架中計(jì)算單元占據(jù)了大部分的時(shí)間和能耗.同時(shí)我們也注意到當(dāng)測(cè)試圖片逐步增大時(shí),時(shí)間和能耗的減少比例也逐步擴(kuò)大并趨近一個(gè)極限值.這是由于隨著數(shù)據(jù)量的不斷增加,斯格明子內(nèi)存框架內(nèi)程序運(yùn)行的并行程度也在不斷提高并接近其極限.因此在一定范圍內(nèi),斯格明子存內(nèi)計(jì)算框架中程序處理的數(shù)據(jù)量越大越能獲得更多優(yōu)勢(shì).
Fig. 13 Performance evaluation of PIM architecture based on Skyrmion圖13 基于斯格明子的存內(nèi)計(jì)算框架性能評(píng)估
從總體上來(lái)說(shuō),實(shí)驗(yàn)結(jié)果表明:在不使用AMBS映射策略下,本文提出的基于斯格明子的存內(nèi)計(jì)算框架相比目前最先進(jìn)的基于磁疇壁的存內(nèi)計(jì)算單元在時(shí)間上平均節(jié)省了43.6%,在能耗上平均節(jié)省了34.2%.在使用了AMBS映射策略之后,平均節(jié)約時(shí)間上升至48.1%,同時(shí)平均節(jié)約能耗42.9%.
本文提出了基于斯格明子邏輯門(mén)的加法和乘法計(jì)算單元,探討了斯格明子基本存儲(chǔ)單元的設(shè)計(jì)方式,優(yōu)化了斯格明子存儲(chǔ)單元的地址映射方式,并最終在此基礎(chǔ)上建立了基于斯格明子介質(zhì)的存內(nèi)計(jì)算框架.本文提出的存內(nèi)計(jì)算框架在獲得基于斯格明子-賽道型內(nèi)存的非易失性存儲(chǔ)單元優(yōu)勢(shì)的同時(shí)又獲得了基于斯格明子邏輯計(jì)算單元的優(yōu)勢(shì).在存儲(chǔ)單元方面,本文首先從硬件層面探討了斯格明子-賽道型存儲(chǔ)單元的讀寫(xiě)參數(shù)優(yōu)化等問(wèn)題,再?gòu)南到y(tǒng)層面提出了基于斯格明子-賽道型存儲(chǔ)單元專用內(nèi)存映射策略,從而在總體上改善了存內(nèi)計(jì)算單元的性能.在計(jì)算單元方面,本文提出的基于斯格明子的全加器和乘法器不僅受益于斯格明子本身優(yōu)異的物理特性,同時(shí)計(jì)算單元的并行優(yōu)化設(shè)計(jì)以及電路的復(fù)用也極大地提高了系統(tǒng)整體性能,降低了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度.實(shí)驗(yàn)表明:本文提出的存內(nèi)計(jì)算框架與目前最先進(jìn)的基于磁疇壁的存內(nèi)計(jì)算框架相比,在時(shí)間上平均節(jié)省了48.1%,在能耗上平均節(jié)省了42.9%.