張格毅,陳小剛,郭繼鵬,3,宋志棠,陳邦明
1.中國科學院 上海微系統(tǒng)與信息技術(shù)研究所 信息功能材料國家重點實驗室,上海200050
2.上??萍即髮W 信息科學與技術(shù)學院,上海201210
3.中國科學院大學,北京100049
相變存儲器PCM(Phase Change Memory)是目前公認最有發(fā)展?jié)摿Φ男滦痛鎯ζ髦?。對PCM的首次研究可追溯至Ovshinsky 于1968 年開始的相變材料的相關(guān)研究工作,然而PCM 在20 世紀受制于半導(dǎo)體技術(shù)而發(fā)展緩慢,直至20 世紀末,才取得突破性進展[1]。目前PCM的應(yīng)用有很大潛力,針對PCM特點的相關(guān)優(yōu)化技術(shù)還有待發(fā)掘。PCM是利用相變材料在晶態(tài)和非晶態(tài)時的電阻率差來存儲信息的非易失性存儲器,其寫1(set)、擦0(reset)與讀取的工作原理如下:set時通過一長約100 ns~1μs的弱的電流脈沖,讓相變材料轉(zhuǎn)換為晶態(tài),而reset 時通過一個短的強電流將材料轉(zhuǎn)變?yōu)榉蔷B(tài)。讀取時給材料施加一短且弱的電流脈沖,根據(jù)材料的阻值讀出存儲的信息。如圖1所示,set的時間為reset的數(shù)倍,這一特性即PCM的擦寫不對稱性。
圖1 相變材料在不同操作下溫度示意圖
PCM 是一種非易失性存儲器,具有字節(jié)可尋址和可以原地更新的性質(zhì),相比目前主要的非易失性半導(dǎo)體存儲器FLASH,其在訪問速度和使用壽命方面具有明顯優(yōu)勢。而在存儲密度、功耗、成本等方面,PCM與目前主流的內(nèi)存DRAM(Dynamic Random Access Memory)相比也具有明顯優(yōu)勢[2]。這些性質(zhì)使得PCM 具有替代DRAM 成為非易失性內(nèi)存的潛力。但在用作內(nèi)存時,PCM 也同樣面對了諸多挑戰(zhàn),比如主存的訪問方式與硬盤不同,訪問的頻率和集中度更大,PCM的設(shè)計者必須考慮提出新的優(yōu)化技術(shù)以增加寫入壽命。PCM雖然讀取延時一般在100 ns以內(nèi),達到了與DRAM同一數(shù)量級。但寫入延時方面,與PCM 的需要數(shù)百ns 甚至接近1 μs,而DRAM 只需20~50 ns,相差了一個數(shù)量級[3],面對內(nèi)存的訪問需求仍有一定的差距。并且隨著業(yè)界對PCM 的研究和開發(fā)越發(fā)深入,PCM 的定位從最初的SSD 越來越向內(nèi)存靠攏,面對這些未來的發(fā)展方向,如何增加寫入壽命和減少寫入延時,使PCM 的性能滿足內(nèi)存的需要已然是目前需要考慮的重要研究課題。
針對上述PCM 面對的挑戰(zhàn),提出了RSIW(Reset and Set Independently Write)方案,傳統(tǒng)的寫入操作每一次寫入時都同時包含set 與reset 兩個操作,根據(jù)寫入數(shù)據(jù)對每一位進行寫1或擦0,在RSIW方案中利用轉(zhuǎn)換層的技術(shù)進行映射使得這兩種操作相互獨立,并不局限于都在一個寫入周期內(nèi)執(zhí)行,收到寫入指令時只執(zhí)行快速的reset 操作,set 操作則在存儲器空閑時預(yù)先執(zhí)行。目前已有的根據(jù)PCM不對稱性進行優(yōu)化的方案中多為根據(jù)其寫入策略調(diào)整set 與reset 的順序等操作,不能像RSIW針對不對稱性進行最大化的利用。同時為了進一步解決地址映射耗時長的問題,本研究提出了包括動態(tài)PCM 轉(zhuǎn)換層(Dynamic PCM Translation Layer,DPTL)和地址指針模塊等可以快速完成地址映射的設(shè)計。
為了解決PCM 寫入延時和使用壽命方面的問題,相關(guān)研究人員已經(jīng)做了大量的工作比如改進材料、工藝,除了從器件本身進行改進之外,也有諸多在使用帶DRAM 的混合存儲系統(tǒng)的架構(gòu)[4]和其他方面的改進。比如在文件系統(tǒng)方面Lee 等人提出專門針對PCM 設(shè)計的文件系統(tǒng)shotcut-JFS,通過避免日志數(shù)據(jù)的復(fù)制,減少大量寫操作,相比傳統(tǒng)的ext3文件系統(tǒng)提高了40%的整體性能[5]。Zhou等人提出部分寫的機制,在寫入前先讀出該地址上的數(shù)據(jù),與即將存入的數(shù)據(jù)進行對比,只修改部分有差異的位[6]。在降低寫延時方面,Cho 等人提出Flip-N-Write(FNW)的方法,該方案通過增加一個翻轉(zhuǎn)位,寫入時先讀出該地址上的數(shù)據(jù)進行對比,確定數(shù)據(jù)中需要修改的位的數(shù)量,即新舊數(shù)據(jù)之間的漢明距離,如果小于總數(shù)據(jù)的一半則直接寫入,反之將數(shù)據(jù)取反后再寫入,并用翻轉(zhuǎn)來記錄此處的數(shù)據(jù)讀出時是否需要取反,從而可以將實際需要寫入的數(shù)據(jù)位數(shù)始終保持在總的數(shù)據(jù)位數(shù)的一半以下,從而有效地提高寫入速度[7]。部分寫入FNW 的方案都是通過減少寫入次數(shù)而提高寫入速度的方法,同時由于寫入次數(shù)減少,PCM的使用壽命也會增加。
除了上述優(yōu)化方案外,近年也有人提出利用PCM的擦寫不對稱性進行優(yōu)化的方案,例如Qureshi 等人在2012 年提出了一種preset 的方式,利用內(nèi)存的工作特性,在緩存行內(nèi)的數(shù)據(jù)被修改時,生成一條preset請求,在數(shù)據(jù)被寫回前提前將該行對應(yīng)的數(shù)據(jù)全部進行set,待寫回時只需要進行reset 操作,從而提高PCM 整體性能[8]。隨后Yue等人提出了Two-Stage-Write(2SW)與優(yōu)化的Two-Stage-Write-Inv(2SWI)方案,這一方案將寫入過程拆分為兩個階段,第一階段進行高速reset,第二階段增強并行寫入的機制進行set。2SWI 在第二階段的可與FNW技術(shù)結(jié)合,使得寫入的時間減少為2SW方案中的一半,并在Cho 等人的研究結(jié)果上進行了優(yōu)化,減少了原FNW方案預(yù)讀操作的時間[9]。進一步的,Li等人提出了three-stage-write(3SW)的方案[10],該方案第一階段讀取預(yù)寫入地址中的原數(shù)據(jù),第二階段進行快速的reset,第三階段進行set,第三個階段與2SWI方案類似,但Li 的團隊在第二階段中結(jié)合了FNW 的技術(shù),使得reset的時間能有效降低。上述的2SW、2SWI和3SW都是利用PCM 的擦寫不對稱的特性來提高PCM 整體性能的方法,但這些方法都是在寫入時,提前進行reset,寫入時還是會受到set 高延時的影響,基于上述特點本文提出了RSIW 的方法,旨在讓set 和reset 兩種操作相互分離,寫入時只執(zhí)行reset 操作,set 則在空閑時進行,使其能獨立執(zhí)行,故稱其為擦寫?yīng)毩⒌膶懭敕桨?。同時,RSIW需要對每一次PCM寫入進行重新映射,在這一步驟中加入了動態(tài)磨損均衡的方案,在極大地減少寫入延時的同時增加PCM整體的使用壽命。
在提升PCM 使用壽命方面,除了上述提到的改進器件性能,和各種減少寫入次數(shù)的方法外,磨損均衡也是本領(lǐng)域的常見手段。存儲器整體的使用壽命受到存儲器內(nèi)各個存儲單元的短板效應(yīng)限制,磨損均衡通過平衡內(nèi)部各個存儲單元的寫入頻率,避免了由于短板效應(yīng)而導(dǎo)致整體使用壽命過低[11-13]。磨損均衡的算法可以分為靜態(tài)磨損均衡與動態(tài)磨損均衡,其中靜態(tài)磨損均衡是在存儲器設(shè)備觸發(fā)某一條件時,例如使用了一段時間或?qū)懭脒_到一定次數(shù)等,根據(jù)一定的算法來移動各個塊的數(shù)據(jù),動態(tài)的磨損均衡則是在寫入時觸發(fā),根據(jù)其磨損均衡算法將數(shù)據(jù)寫入至其他塊上。RSIW方法本身就具備了磨損均衡的特征,運行時能夠獲得動態(tài)磨損均衡的效果,這一點是目前所有同類優(yōu)化方案中都不具備的。
RSIW是一種利用相變存儲器set與reset不對稱性,對存儲器進行優(yōu)化的一種解決方案。其基本思想是將每一次寫入操作都映射到一個干凈的地址上,即該地址上的所有位都已經(jīng)被預(yù)先set 過的地址。RSIW 最大的創(chuàng)新處在于將在同一個寫入周期內(nèi)的set與reset操作分離,將其視為兩個相互獨立的操作,可以不受干擾的在不同時間段執(zhí)行。目前利用PCM的擦寫不對稱性進行優(yōu)化的方案中,均是通過調(diào)整set 和reset 的順序和方式來進行優(yōu)化的,實際上每次操作都需要進行set 和reset操作,而RSIW方案則通過DPTL實現(xiàn)了set與reset的獨立,從而更好地利用擦寫不對稱性來優(yōu)化寫入過程。
RSIW寫入時基本流程的偽代碼如下所示:
每次寫入時,通過DPTL 獲得一個干凈的地址,隨后立即將數(shù)據(jù)寫入干凈的地址內(nèi),寫入的同時建立新的地址映射。寫入過程中,結(jié)合了FNW技術(shù),通過翻轉(zhuǎn)位將寫入的位數(shù)控制在總位數(shù)的一半以下(N/2)。由于寫入的地址已知全部為1,相比同類方法省去了預(yù)讀數(shù)據(jù)的步驟或增加額外的位來記錄該地址內(nèi)1 或0 的位數(shù),運行效率進一步地提升。在寫入的同時,PCM的控制器并行地完成對地址的映射,預(yù)備下一個干凈地址和回收(set)空閑芯片上的臟地址,臟地址主要指存儲了無用數(shù)據(jù)的地址,來源于內(nèi)存的釋放或同一數(shù)據(jù)重復(fù)命中時被映射至新的地址上。此處的并行處理并非并行計算,是因為被訪問的存儲單元在寫入時與控制器回收臟地址之間的工作不沖突,可以在同一時間內(nèi)進行,這一機制在下文中詳細介紹。
RSIW是針對PCM應(yīng)用于非易失性內(nèi)存而提出的,由于內(nèi)存的訪問模式不同于外存,受塊和頁的限制,且要求反映延時更低,目前已有的硬盤管理技術(shù)不能很好地適應(yīng)內(nèi)存的訪問需求,但如果使用內(nèi)存的管理技術(shù),存儲的控制器算力低下,會造成不可忽略的性能損耗。為了解決上述問題,本研究提出了如圖2 所示的設(shè)計,在內(nèi)存管理的基礎(chǔ)上加以改進,以滿足RSIW能正常執(zhí)行。該設(shè)計主要包括一個動態(tài)PCM 轉(zhuǎn)換層(Dynamic PCM Translation Layer,DPTL)和地址指針模塊(Addr pointer),其中DPTL 主要負責對地址進行管理和映射,增設(shè)的地址指針模塊負責快速提供干凈地址,地址指針中含有一個塊指針和多個塊內(nèi)指針,塊內(nèi)指針用于判別該塊內(nèi)干凈的地址段,塊指針提供下一個要寫入的塊。結(jié)合偽代碼與結(jié)構(gòu)圖,RSIW方法在寫入時,首先通過地址指針模塊獲得一個干凈的地址段,然后將數(shù)據(jù)寫在相應(yīng)的PCM 存儲陣列中。在PCM 寫入時,DPTL 更新映射,地址指針模塊更新指針,提供的數(shù)據(jù)更新其中的地址映射。讀取時則首先通過DPTL 獲得相應(yīng)地址的映射后讀出所請求的數(shù)據(jù)。
圖2 RSIW的結(jié)構(gòu)示意圖
動態(tài)轉(zhuǎn)換層(DPTL)的主要功能是地址映射管理,將輸入的邏輯地址與實際的物理地址之間建立映射。DPTL 不同已有的PTL(PCM Translation Layer)轉(zhuǎn)換層技術(shù),它需要面對的是碎片化的地址管理,并且內(nèi)存會有釋放舊內(nèi)存,建立新內(nèi)存等問題,地址管理比普通的以塊和頁進行管理的PTL 更復(fù)雜,更靈活,其中的地址映射表的大小也會根據(jù)使用情況而變化,具有動態(tài)的特點。由于本研究的重點不是如何設(shè)計一個完整的存儲器控制器,所以只討論DPTL中的地址管理和磨損均衡的功能,其他PTL共有的基礎(chǔ)功能不進行贅述。
由于本研究中將RSIW 預(yù)設(shè)在了內(nèi)存的應(yīng)用場景下,所以訪問的地址大小更靈活,不受塊與頁的限制,不能照搬PTL 中的傳統(tǒng)管理方案。而內(nèi)存的地址管理方面比較成功算法是平衡二叉樹和伙伴算法,其中平衡二叉樹的時間復(fù)雜度為O(lbn),隨著存儲器容量的增加,需要的時間也會逐漸增加,PCM 本身就是大容量的存儲器,并且PCM 控制器的時鐘頻率遠不及CPU 的時間頻率,進一步地加劇了管理地址時的時間損耗,所以此處提出一種基于哈希算法的映射進行管理方案,哈希查找法的時間復(fù)雜度為O(1),且不會隨數(shù)據(jù)量的增加而增加,而哈希查找法本身也是一種犧牲空間來換取速度的算法,能夠與PCM 存儲空間大的特點相結(jié)合。使用哈希表時如何解決沖突也是一個無法避免的重要問題,本課題采用鏈地址表的方法,即嘗試沖突時連接到另一個表中,在該表中進行查詢。使用鏈地址也更便于地址的拆分與合并,并且易于使用硬件加速提高查找效率。
RSIW方案中提出了增設(shè)地址指針模塊的方案以存儲各個塊內(nèi)干凈地址段的邊界地址。地址指針模塊中包括一指向塊的塊指針(圖中的block_pointer)和一組記錄了各個塊內(nèi)連續(xù)的干凈地址段邊界的塊內(nèi)指針(inblockp),塊內(nèi)指針的數(shù)量可以有多組,其結(jié)構(gòu)如圖3。PCM 最初未使用時所有地址均為干凈地址,在使用中根據(jù)寫入情況調(diào)整塊內(nèi)指針的指向范圍。收到寫入的指令時,通過塊指針找到預(yù)寫的塊,然后根據(jù)塊內(nèi)指針獲得塊內(nèi)干凈地址段的邊界,通過邊界即可獲得干凈地址。在空閑時會回收臟地址并整理碎片,釋放出干凈地址并重新調(diào)整塊內(nèi)指針。
圖3 指針模塊示意圖
磨損均衡是RSIW方法中必有的功能,此處提出了一種定向地址偏移的方法進行磨損均衡,該方法更易于將干凈地址集中在一段連續(xù)的地址內(nèi),利于塊內(nèi)指針進行地址管理,除了這一種算法外其他算法也可以與RSIW相結(jié)合,但相關(guān)算法并非本研究主要討論的問題,對此不深入討論,僅提出這一種結(jié)合RSIW其他特性的可行的方法。該磨損均衡的算法的偽代碼如下所示:
在空閑時根據(jù)上一次的寫入情況將塊指針指向下一個可寫塊(具有足夠干凈地址的塊),塊的選擇根據(jù)預(yù)定的方向依次進行偏移,若偏移到末位塊后則跳回至第一塊。完整的地址在獲得可寫塊后,根據(jù)該塊對應(yīng)的塊內(nèi)指針所指的干凈地址邊界獲得所需的干凈地址,并存儲該地址,寫入時可直接使用。所述的在空閑時間所指的是在存儲器接收到寫入指令之間的空余時間,這段時間內(nèi)完成指針模塊的更新。這一算法的性能會在本文的實驗部分通過實驗和數(shù)據(jù)進行具體說明。
地址指針模塊的功能也很容易使用電路實現(xiàn),從而可以使用硬件加速進一步地提升其速度,此處結(jié)合相應(yīng)的電路波形仿真進行說明,仿真實驗中通過邏輯電路設(shè)計了該指針模塊并使其工作在500 MHz的時鐘下,其中blockp 即地址指針,inblockp1 和inblockp2 為塊內(nèi)指針,ctl 和write_en 為控制信號。其實驗結(jié)果如圖4,塊內(nèi)指針根據(jù)磨損均衡和垃圾回收算法可以設(shè)置多組以記錄多個干凈地址段,本實驗中使用的算法只需要兩個指針便可滿足需求。從實驗結(jié)果中可看出,塊指針如上述算法所描述的,塊內(nèi)指針在控制信號的控制下每次向后移動一個塊,tadr_out 輸出了該塊內(nèi)的一個干凈地址。該電路每隔幾納秒便可向DPTL 提供一個干凈地址作為映射的物理地址使用,遠超存儲器控制器的運行速度,同時此操作可分配在空閑時間完成,配合其他模塊快速完成地址映射,以滿足RSIW低延時的需要。
圖4 指針模塊仿真實驗波形結(jié)果
臟地址的回收也是伴隨著動態(tài)磨損均衡和內(nèi)存的使用所需解決的重要問題,臟地址的回收是否及時也關(guān)系到存儲器能否有足夠的使用空間。臟地址的回收如圖5所示,目前的內(nèi)存條結(jié)構(gòu)基本都由多個存儲芯片組成,每個芯片內(nèi)部有Bank 組,每個組中含有多個Bank,每次訪問時只會選中其中的一個Bank,如圖5中選擇了其中的Bank3,則其余的Bank則處于本方案中的空閑狀態(tài)。采用這種機制可以有效地提高臟地址的回收效率,set 的平均時間會遠低于一次reset 的時間??臻eBank并行回收的策略雖然效率高但也帶來了回收與正常讀寫指令沖突的問題,所以此處可以引入寫取消的策略,來自上位機的讀寫指令優(yōu)先于臟地址回收,當某一正在set 臟地址的Bank 被選中后立即停止set 而執(zhí)行上位機的讀寫命令。
圖5 RSIW方案中臟地址回收示意圖
為了進一步驗證RSIW方法的創(chuàng)新性與優(yōu)勢,本文中將這種方法與經(jīng)典的FNW方案和與本方案最相近的2SW、2SWI和3SW方案進行對比說明。如圖6所示,圖中列舉了各個方案寫入時消耗的最大時間,其中一個大方塊代表無優(yōu)化的情況下寫入一個單元花費的時間,白色方塊表示一次讀取花費的時間。FNW的基本思想是在接收到寫的命令后首先在T0至T1時刻讀取出欲寫入地址處中的數(shù)據(jù),隨后對比原數(shù)據(jù)與需要寫入的數(shù)據(jù),如果寫入的數(shù)據(jù)與原數(shù)據(jù)的漢明距離Δ超過寫入數(shù)據(jù)長度的一半(N/2)(包括修改翻轉(zhuǎn)位的影響)則標記翻轉(zhuǎn)位,寫入取反后的數(shù)據(jù)。其中漢明距離的計算如公式(1)所示。由于FNW 的實際寫入的位數(shù)始終能保持在N/2 以內(nèi),如圖6所示,最大寫入時間為T7。通過簡單的分析,F(xiàn)NW 方案的最大寫入時間如公式(2)[7,10]所示,每次寫入的時間開銷為一次讀取時間加上M/2 次寫入的時間,M為完成一次緩存行內(nèi)數(shù)據(jù)的寫入需要寫入的次數(shù),F(xiàn)NW方案中每次寫入的時間與set的時間相同,故使用Tset來表示一次寫入的時間。
圖6 RSIW方案與其他接近方案對比圖
同樣的,2SW 和2SWI 的寫入最大時間如公式(3)和公式(4)[9-10]和圖6所示,這兩種方案類似,第一階段的reset均在T4時完成,所有reset消耗的時間與一次set的時間接近,第二階段2SWI方案中結(jié)合了FNW的技術(shù)方案,在set 階段可以進一步地優(yōu)化寫入時間,2SW 在T8時完成寫入,而2SWI 由于set 時間降低為原來的一半,在T6時寫入完成。公式(3)、(4)中的L為一次增強并行寫入可同時操作的單元數(shù)量,本文沿用了參考文獻中使用的參數(shù)L=2[10]。
3SW 方案消耗的最大時間如公式(5)和圖6 所示,第一階段為讀取階段,在T1時刻完成,第二階段reset相比上述的方案結(jié)合了FNW技術(shù),耗時更短,第三階段同2SWI方案的第二階段相同,最終在T5時完成寫入。
RSIW方案消耗的最大時間如公式(6)和圖6所示,RSIW方案只需進行reset便能完成寫入,所以消耗的時間是最短的。基于內(nèi)存的工作原理,只有被選中的bank在進行寫入,而相較于被選中的bank和存儲器控制器,在T0到T1都處于空閑狀態(tài),可以執(zhí)行set操作和地址映射。
除了從圖6中進行形象的對比外,通過公式計算也能更具體地對比各個方式的優(yōu)劣,此處使用上海微系統(tǒng)與信息技術(shù)研究所信息功能材料實驗室的PCM項目組生產(chǎn)的一款64 MB的PCM芯片的工作和性能參數(shù)進行計算。其中,Tread約等于Treset,set 的時間約為reset 的六倍。公式中的M和L使用Li 等人論文中的數(shù)據(jù),L=2[10]。代入上述參數(shù)后可得TFNW=25Treset、T2SW=32Treset、T2SWI=20Treset、T3SW=17Treset和TRSIW=4Treset。結(jié)果如圖7所示,RSIW方案速度最快,相比上述方案中讀寫周期最短的3SW減少了76.5%,相比FNW、2SW和2SWI分別減少了84%、87.5%和80%。
圖7 各方案寫入延時對比圖
本實驗選擇了gem5[14]仿真器作為主要的實驗平臺,該仿真器平臺示意如圖8,gem5 是一款受眾多研究者青睞的事件驅(qū)動全系統(tǒng)仿真模擬器,由多所大學和公司聯(lián)合開發(fā),包括AMD、ARM、HP、MIPS、普林斯頓大學、麻省理工學院以及密歇根州大學等多家機構(gòu),其仿真結(jié)果真實可信,具有靈活,可用性強,可協(xié)作性高的特點,廣泛應(yīng)用于學術(shù)界中的眾多研究中[15]。由于PCM芯片成熟的產(chǎn)品較少,芯片設(shè)計流片的時間和經(jīng)濟成本一般的研究團隊都難以承受,因此使用仿真器來進行實驗驗證也是大部分相關(guān)研究人員的首選。
圖8 仿真平臺示意圖
仿真模型中系統(tǒng)的架構(gòu)具有兩層緩存,第一層cache的容量為16 KB,第二層cache的容量為64 KB,使用32 GB的PCM作為主存。CPU選擇了2 GHz的Timingsimple X86架構(gòu)。仿真器中PCM的性能參數(shù)選用了上海微系統(tǒng)與信息技術(shù)研究所信息功能材料實驗室的PCM 項目組生產(chǎn)的64 MB 的PCM 芯片的工作參數(shù),和其他根據(jù)該芯片獲得的實驗參數(shù)進行設(shè)置,其中主要參數(shù)設(shè)置如下:100 ns的reset延時,600 ns的set延時,100 ns的讀取延時,所有實驗中的PCM 器件模型的參數(shù)保持一致,保證實驗結(jié)果不受物理材料和器件影響。仿真使用的testbench 為SPEC2006[16]測試集中的八個測試程序,SPEC2006 為SPEC(Standard Performance Evaluation Corporation)公司發(fā)布的一款用于評估計算機系系統(tǒng)性能的標準測試集,由兩個整數(shù)測試和浮點測試的子測試集組成,被廣泛地應(yīng)用于各種計算機方面的研究中。為了能客觀準確地驗證各個技術(shù)方案的優(yōu)劣選擇了perlbench、bzip2、gcc、mcf、milc、leslie3d、sjeng、lbm 這八個testbench 進行測量,其中前四個為整數(shù)測試,后四個為浮點測試。
哈希函數(shù)的不同直接會導(dǎo)致產(chǎn)生沖突的次數(shù)不同,進而對RSIW 的性能產(chǎn)生重要的影響。本研究對比了常用的用于查找的哈希函數(shù)中選擇了取余法、折疊法和平方取中法。其中折疊法有兩種,折疊法1在原數(shù)據(jù)的基礎(chǔ)上進行折疊,折疊法2先將原數(shù)據(jù)以哈希表的長度作為進制進行了換算后再進行折疊,提高其裝填因子。實驗中為了能更好地進行對比,將哈希表的長度設(shè)置得比較小,各組實驗的裝填因子均在0.9 以上。各個方案中產(chǎn)生沖突的次數(shù)如圖9所示,其中產(chǎn)生沖突最少分別是折疊法2 與取余法,產(chǎn)生沖突最多的為平方取中法。平方取中法選取的是中間的幾位,與折疊法2 同樣,哈希值不能均勻分布在哈希表中,效果明顯劣于其他算法。根據(jù)實驗用的內(nèi)存訪問trace 的分析,邏輯地址本身的分布就比較均勻,所以在使用取余法時也能獲得很好的效果,改進后的折疊法2的效果與取余法接近。綜合考慮了各方面因素,取余法計算簡單,且計算出的哈希值與輸入的數(shù)據(jù)相關(guān)性比較好,所以選擇取余法作為DPTL中的哈希函數(shù)。
圖9 沖突產(chǎn)生次數(shù)對比
磨損均衡是應(yīng)用于PCM 中的一項重要技術(shù),在實驗中,由于提出新的動態(tài)磨損均衡算法并不是本文的主要研究方向,RSIW 也可以與其他動態(tài)磨損均衡算法兼容,且其他同類的優(yōu)化方案中也不具有磨損均衡的功能,故這組實驗中僅使用無優(yōu)化的寫入標準差與采用了RSIW 方案的寫入標準差進行對照,以表明RSIW 具有磨損均衡的功能。實驗中以使用了定向地址偏移的方法進行動態(tài)磨損均衡,并對比了各組testbench下的寫入標準差。寫入標準差能有效衡量各個塊之間寫入次數(shù)差異,也是對比磨損均衡算法時常用的指標。實驗結(jié)果如圖10,通過與對照組的對比,可看出RSIW 使用的定向地址偏移法能有效均衡數(shù)據(jù)在各個塊之間的寫入差異,寫入標準差均能降到1 以下,相較未進行均衡的對照組表現(xiàn)突出。
圖10 寫入標準差優(yōu)化對比
RSIW對性能的提升也是用于衡量其優(yōu)劣性最重要的指標,通過gem5 的仿真得到了在不同testbench 下計算機性能優(yōu)化效果對比如圖11,其中的縱坐標為每秒指令數(shù)(Instructions Per Second,IPS),該指標能有效衡量計算機的運行效率,是對比計算機系統(tǒng)性能的常用指標,橫坐標則是在不同的testbench 和不同的技術(shù)方案。圖中的數(shù)據(jù)均以性能最差的2SW方案為基準進行了歸一化,以便直觀地看出各個方案系統(tǒng)性的優(yōu)化效果。從圖中可以看出,實驗結(jié)果受到不同testbench 而影響,RSIW 方案可以明顯地提高系統(tǒng)的運行效率,相比2SW、FNW、2SWI 和3SW 技術(shù)RSIW 將系統(tǒng)的運行效率平均提高了69.1%、54.6%、44.4%和37.1%。其中提升效果最好的為mcf 組,相較2WS 方案IPS 提升了近一倍,相較3SW 也有64.4%的提升,提升效果最不明顯的是leslie3d組,相較2WS方案提升了50.2%,與性能最好的3SW相比提升了35.8%,其中整數(shù)類型的測試集效果差別比較大,優(yōu)化的效果優(yōu)于浮點類型的測試集。由于gem5 中的實驗仿真中系統(tǒng)處理主存外,還設(shè)置了兩層SRAM的緩存,緩存的存在減弱了主存的性能對計算機整體性能的影響,所以實際的實驗結(jié)果與之前第3章中的計算結(jié)果有一定差異,但也更接近真實的優(yōu)化效果。
圖11 instructions rate提升對比
為了解決PCM 應(yīng)用于非易失性內(nèi)存時寫入延時,寫入次數(shù)不能滿足需要的問題,本研究利用PCM reset與set 操作時間不對稱的特點提出了RSIW 方案來優(yōu)化PCM的寫入速度,提高使用壽命。RSIW通過轉(zhuǎn)換層建立映射,將PCM 的set 與reset 操作分離,相比現(xiàn)有的技術(shù)方案性能獲得了顯著的提升。針對存儲器控制器運行速度低的特點,提出了相應(yīng)的優(yōu)化方案,提出DPTL,地址指針模塊等手段來提高RSIW的運行速度,并通過實驗對其內(nèi)部的實施細節(jié),例如地址管理的算法,進行討論。同時,使用了定向地址偏移的動態(tài)磨損均衡算法進行實驗,實驗結(jié)果證明了RSIW可以與動態(tài)磨損均衡算法相結(jié)合,顯著地降低各個塊之間的寫入標準差。文中還將RSIW 與FNW、2SW、2SWI 和3SW 方法進行對比,根據(jù)數(shù)理推導(dǎo),相比上述方法一次讀寫周期的時間分別減少了84%、87.5%、80%和76.5%。最后的實驗中,使用了gem5 仿真器和SPEC2006 測試集中幾個具有代表性的測試基準進行實驗,并與多種同類的技術(shù)方案在同架構(gòu)和配置下對比了其IPS。通過實驗結(jié)果證明了RSIW 可以有效地改善系統(tǒng)性能,相對其中性能最差的對比技術(shù)方案2WS平均IPS提高了50%,相比對照組中性能提高最好的3SW方案也有35.8%。通過上述的論證與實驗有效地證明了RSIW相比同類的技術(shù)方案能更有效地優(yōu)化其寫入速度,并且可以提供有效的磨損均衡。