張 震,付印金,胡谷雨
(1.陸軍工程大學(xué)指揮信息系統(tǒng)學(xué)院,江蘇 南京 210007;2.73610部隊,江蘇 南京 210000)
大數(shù)據(jù)背景下數(shù)據(jù)分析的應(yīng)用以及處理器的多核化對存儲系統(tǒng)的容量、處理速度以及能耗開銷都提出了極高的要求,現(xiàn)有的內(nèi)存—磁盤傳統(tǒng)訪問模式已經(jīng)不能滿足現(xiàn)代計算機發(fā)展趨勢。以相變存儲器PCM(Phase Change Memory)為代表的新型非易失性存儲設(shè)備的出現(xiàn)為擴展計算機存儲性能提供了新的契機[1]。相比于DRAM、磁盤等傳統(tǒng)不同層次的存儲器件,新型非易失性存儲介質(zhì)具有集成度高、功耗低、讀寫訪問速度快、非易失、體積小和抗震等優(yōu)良特性,有望從根本上改變傳統(tǒng)的存儲體系結(jié)構(gòu),并進一步縮小不同存儲層級之間的性能差異。
PCM存在寫壽命有限的缺點,每個單元只能承受107~109次的寫操作[2],特別是在連續(xù)寫的情況下,存儲單元的耐受性將受到嚴(yán)重制約。提升PCM的寫壽命最直接的方式就是減少對存儲單元的寫操作次數(shù);此外,磨損均衡處理(Wear-Leveling)策略是延長存儲器使用壽命的重要方法,它能夠?qū)崿F(xiàn)數(shù)據(jù)更新在存儲設(shè)備上的均勻分布以及存儲單元讀寫壽命的有效提高;混合存儲架構(gòu)中的數(shù)據(jù)遷移策略將寫熱度較高的頁面保存在DRAM中,將讀熱度高或者靜態(tài)數(shù)據(jù)存儲在PCM中,保護PCM寫耐受性的同時提升存儲系統(tǒng)的I/O性能。
本文首先介紹相變存儲器,隨后闡述提升PCM在存儲系統(tǒng)中使用壽命的各種解決辦法。第3節(jié)介紹減少相變存儲器寫操作數(shù)量的方法;第4節(jié)分析磨損均衡技術(shù)在PCM中的應(yīng)用;第5節(jié)闡述在混合存儲架構(gòu)中數(shù)據(jù)遷移對提升PCM壽命的影響;最后,給出未來進一步提升PCM壽命的研究展望。
在現(xiàn)有的存儲系統(tǒng)中,DRAM—磁盤架構(gòu)的發(fā)展遇到了瓶頸:首先,DRAM的訪問速度提升有限,CPU的計算性能和主存訪問性能之間的差距越拉越大,緩存和預(yù)取技術(shù)難以從根本上解決這一問題;其次,傳統(tǒng)磁盤的機械尋道特性成為導(dǎo)致主存—磁盤之間的I/O性能差距的重要因素;再次,數(shù)據(jù)中心的能耗問題日益突出,主存和磁盤能耗開銷已經(jīng)達到整個系統(tǒng)的20%~40%[3]。因此,探索新型存儲技術(shù)來提升計算機整體性能具有十分重要的意義。
非易失性存儲器NVM(Non-Volatile Memory)的出現(xiàn)為解決這些問題提供了契機。目前,常見的非易失性存儲器包括相變存儲器PCM、鐵電介質(zhì)存儲器FeRAM(Ferroelectric Random Access Memory)、磁介質(zhì)存儲器MRAM(Magmetic Random Access Memory)、自旋矩傳輸磁存儲器STT-RAM(Shared Transistor Technology Random Access Memory)和阻變存儲器RRAM(Resistive Random Access Memory)等。表1列舉了主流的新型存儲器件的關(guān)鍵特征參數(shù)。
相變存儲器是一種由硫族化合物材料構(gòu)成的新型非易失存儲器,它利用材料可逆轉(zhuǎn)的物理狀態(tài)變化來存儲信息,通過非晶體狀態(tài)和晶體狀態(tài)呈現(xiàn)出不同的電阻特性和光學(xué)特性來表示0和1。相比于其他NVM,PCM在持久性、功耗和容量等方面更為優(yōu)秀,研究相對更加成熟,產(chǎn)業(yè)化程度更高,在45 nm工藝制程下已經(jīng)有Gb級別產(chǎn)品問世,且部分產(chǎn)品已經(jīng)成熟應(yīng)用于智能電表、移動終端等設(shè)備中。
PCM具有如下特征[4]:
(1)非易失性:相比傳統(tǒng)存儲器件,PCM具有非易失性的特點,即使系統(tǒng)掉電,保存的數(shù)據(jù)也不會丟失;
(2)字節(jié)可尋址:PCM具備按位讀寫的特性,不需要額外的擦除操作來改變字節(jié),有助于節(jié)約寫入時間;
(3)高存儲密度:硫系化合物材料體積的縮小推動PCM的制造工藝達到22 nm的水平;
(4)讀寫不對稱:PCM的隨機讀的速度往往大于隨機寫的速度,寫1的速度要慢于寫0的速度;
Table 1 Performance comparison of nonvolatile memories表1 各種新型非易失性存儲器性能對比
(5)壽命有限:PCM存儲單元的寫壽命也在107~109左右,耐受性的限制成為制約PCM單獨作為主存的重要因素;
(6)低功耗:PCM是基于微型存儲單元的相變特性存儲數(shù)據(jù),沒有機械轉(zhuǎn)動裝置并具有低電壓的特性,且保存數(shù)據(jù)無需刷新操作。
PCM在計算機存儲系統(tǒng)領(lǐng)域的研究主要分為兩類:一方面作為類似于SSD(Solid State Drives)和HHD(Hybrid Hard Drive)的二級存儲設(shè)備;另一方面,由于其出色的I/O性能,PCM在存儲系統(tǒng)中的位置可以更加靠近CPU,單獨作為主存或者與DRAM構(gòu)成混合內(nèi)存。PCM的快速發(fā)展對傳統(tǒng)的計算機系統(tǒng)架構(gòu)產(chǎn)生了重要影響,研究者也從延長器件使用壽命、降低系統(tǒng)功耗、提升讀寫性能以及強化存儲系統(tǒng)安全性等方面對PCM性能優(yōu)化技術(shù)展開深入研究。PCM有望成為下一代主流存儲設(shè)備。
PCM在存儲系統(tǒng)中的應(yīng)用面臨兩大障礙,一方面PCM的寫速度以及寫功耗開銷比DRAM差,另一方面PCM的寫壽命有限。目前針對PCM作為主存或者外存的應(yīng)用改進主要集中在如何延長其使用壽命方面。為了充分發(fā)揮PCM在存儲系統(tǒng)中低功耗和非易失的優(yōu)勢,研究者們從減少冗余寫技術(shù)以及DRAM緩存技術(shù)等方面,通過減少PCM存儲單元寫操作次數(shù)的方法來克服PCM寫操作耐久性的不足。
數(shù)據(jù)流中存在大量的重復(fù)冗余數(shù)據(jù),對于主存的冗余寫操作數(shù)量達到了整個寫入數(shù)據(jù)的85%[5]。這些數(shù)據(jù)在寫入存儲設(shè)備時既需要I/O開銷,又對存儲器件造成不可逆的損害。通過減少冗余寫的方式對PCM進行寫優(yōu)化能夠有效減少存儲單元的寫操作數(shù)量。預(yù)讀取、臟數(shù)據(jù)跟蹤、數(shù)據(jù)位翻轉(zhuǎn)技術(shù)都是實現(xiàn)減少PCM冗余寫的重要方式。表2列舉了減少PCM冗余寫的相關(guān)研究。
Yang等人[6]提出DCW(Data Comparison Write)策略,通過數(shù)據(jù)比較實現(xiàn)寫數(shù)據(jù)量的減少。該算法在執(zhí)行寫操作之前讀取目標(biāo)地址下的數(shù)據(jù),只有當(dāng)新寫入的數(shù)據(jù)與原先存儲的數(shù)據(jù)不同時才執(zhí)行寫入操作;Lee等人[7]提出緩沖區(qū)重組和部分寫策略,一方面通過合并寫操作的方式減少PCM陣列寫操作次數(shù),另一方面跟蹤數(shù)據(jù)的修改只將有修改的cache line或者word寫入到PCM陣列,從而減少寫操作數(shù)量;Zhou等人[5]通過實驗論證了在SLC(Single-Level Cell)和MLC(Multi-Level Cell)兩種策略下冗余bit寫占所有寫操作的高比例,然后基于bit細(xì)粒度提出一種去除冗余的bit寫策略,在更新數(shù)據(jù)時比較數(shù)據(jù)流的各個bit位是否相同,避免相同的bit被重復(fù)寫入;Ferreira等人[8]在PCM作為主存的架構(gòu)上設(shè)計了頁面分割技術(shù)和RWR(Read-Write-Read)策略,前者將頁面分割成若干個子頁面,只有當(dāng)子頁面有臟位時才將子頁面寫回,避免干凈的子頁面執(zhí)行過多的寫回操作。后者通過寫前讀的方式比對數(shù)據(jù)以避免不必要的寫,同時通過寫后讀的方式進行差錯檢測。該方案中子頁面的粒度選取、分割子頁面操作和統(tǒng)計寫操作頻率都會影響系統(tǒng)性能和空間開銷的大?。籆ho等人[9]提出Flip-N-Write算法,當(dāng)更新數(shù)據(jù)與原始數(shù)據(jù)的差異bit數(shù)量不超過1/2時直接將新數(shù)據(jù)寫入存儲單元,如果超過1/2,對新寫入數(shù)據(jù)的bit位進行翻轉(zhuǎn),并設(shè)置flip標(biāo)志位來跟蹤數(shù)據(jù)的bit位是否被取反。這一做法能夠始終確保實際寫入的數(shù)據(jù)量不超過要寫入數(shù)據(jù)的1/2,延長了存儲單元的使用壽命,但是額外的數(shù)據(jù)比較時間以及位翻轉(zhuǎn)時間增加了硬件設(shè)計的復(fù)雜度和讀寫時延。Qureshi等人[10]在line粒度下設(shè)計了LLWB(Line Level WriteBack)策略,在DRAM緩存中為每一個cache line設(shè)置一個臟數(shù)據(jù)標(biāo)記位,更新page中數(shù)據(jù)時只對修改過的line進行寫回操作。臟位判斷以及比較操作會帶來一定的性能開銷。Joo等人[11]在PCM作為L2 cache的基礎(chǔ)上,采用“寫前讀”策略,在寫之前通過預(yù)讀取操作比較存儲單元當(dāng)前數(shù)據(jù)和要寫入的數(shù)據(jù),當(dāng)比較值不同時才進行數(shù)據(jù)更新。在此基礎(chǔ)上,又通過計算當(dāng)前值和寫入值的漢明距離HD(Hamming Distance)來進一步減少數(shù)據(jù)位寫操作,當(dāng)漢明距離的大小超過緩存塊大小的1/2時,翻轉(zhuǎn)要寫入的數(shù)據(jù),以確保新寫入的bit數(shù)量不超過總數(shù)的一半。此外,為了提高數(shù)據(jù)翻轉(zhuǎn)的效率,將一個緩存塊劃分成若干個子塊,并以這些子塊作為位翻轉(zhuǎn)的基本操作單位。該方案在節(jié)省能耗、提升壽命的情況下,仍然不能忽略漢明距離計算帶來的額外開銷對系統(tǒng)性能的影響。Baek等人[12]提出一種雙階段數(shù)據(jù)壓縮策略來降低PCM的訪問次數(shù),第一階段是粗略的字粒度的壓縮過程,時延低、開銷小;第二階段采用bit粒度的壓縮算法,壓縮效果明顯但是性能受到限制。該方案實現(xiàn)復(fù)雜度較高,在犧牲時延的基礎(chǔ)上提高了PCM的使用壽命。
Table 2 Related research of reducing redundant write operations in PCM表2 減少PCM冗余寫操作的相關(guān)研究
這些算法能夠有效減少PCM上的寫操作數(shù)量,但是,無論是在寫操作執(zhí)行前通過數(shù)據(jù)預(yù)讀取的方式來避免冗余寫,還是通過位翻轉(zhuǎn)方式減少bit位的寫入,都需要進行寫入數(shù)據(jù)與原始數(shù)據(jù)的比較,這往往會帶來額外的時間開銷,而臟數(shù)據(jù)跟蹤技術(shù)同樣需要額外的空間開銷來避免多余的寫。
DRAM作為PCM緩沖的二級主存系統(tǒng)模型,是混合主存研究的另一個重要方向,這種架構(gòu)如圖1a所示,一方面為系統(tǒng)提供大容量的存儲空間,另一方面可以解決由PCM本身讀寫延遲以及寫壽命缺陷帶來的系統(tǒng)性能下降問題。使用DRAM作為PCM緩存的方式能夠?qū)⑿薷念l繁的數(shù)據(jù)保存在DRAM中,減少主存寫操作數(shù)量的同時,掩蓋PCM寫性能的不足。表3列舉了使用DRAM作為緩存來減少PCM寫操作的相關(guān)研究。
Figure 1 Two hybrid architectures of PCM and DRAM圖1 兩種常見的PCM與DRAM混合架構(gòu)
Park等人[13]在第一次對存儲系統(tǒng)訪問時繞開DRAM,直接從PCM讀取數(shù)據(jù),當(dāng)再次訪問時才將數(shù)據(jù)寫到DRAM,同時提出臟數(shù)據(jù)保持策略,將臟數(shù)據(jù)在DRAM中保留更長的時間。作者通過上述兩種策略將熱數(shù)據(jù)以及臟數(shù)據(jù)都保存在DRAM中,也意味著將更有可能發(fā)生寫操作的數(shù)據(jù)保留在了DRAM,避免了PCM過多執(zhí)行寫操作。Qureshi等人[10]以DRAM作為緩存,提出Lazy-Write的寫操作策略,當(dāng)發(fā)生缺頁時,從磁盤中讀取數(shù)據(jù)并直接寫到DRAM中,而當(dāng)頁面被逐出DRAM且該頁被修改過時才寫入PCM。該策略一方面能夠隱藏DRAM和PCM之間的延遲差距;另一方面避免了PCM被過多執(zhí)行寫操作。Ferreira等人[9]針對PCM讀寫不均衡的特性,設(shè)計了CLP(CLean Preferred)和N-Chance多優(yōu)先級緩存替換策略,通過對頁面設(shè)定優(yōu)先級的方式來選取修改較少的“干凈”頁面作為替換對象,把低功耗和低時延的讀操作集中的頁面寫回到PCM來減少主存的寫數(shù)量。同時,結(jié)合了頁面劃分以及RWR策略,進一步減少了不必要的寫操作。該方案大大延長了PCM的使用壽命,但對于優(yōu)先級N的設(shè)定以及數(shù)據(jù)比較都會造成額外的性能開銷。Park等人[14]從緩存替換算法和替換粒度兩方面考慮了DRAM作為buffer來減少PCM寫操作的效果。作者基于line粒度提出了一種改進的LRU策略減少PCM的寫操作數(shù)量,并通過臟數(shù)據(jù)位來標(biāo)記line是否被修改過,在此基礎(chǔ)上通過hash表減少緩存管理帶來的開銷。Mladenov等人[15]根據(jù)空間局部性原理以及改進的Lazy Write算法,在DRAM buffer有空間時將更新的數(shù)據(jù)直接寫至DRAM,若被填滿,則通過FIFO策略先將DRAM中最早處理過的請求的數(shù)據(jù)寫回PCM,再將新數(shù)據(jù)寫入DRAM中。同時,當(dāng)內(nèi)存空閑時會通過LRU策略定期地將buffer中的一部分?jǐn)?shù)據(jù)刷回到PCM,以保證DRAM有足夠的空間處理寫請求。該方案能夠充分利用有限的DRAM大小響應(yīng)盡可能多的寫請求,但是對于弱時間局部性的應(yīng)用場景,該策略會造成DRAM和PCM之間頻繁的交互。DRAM緩存技術(shù)能夠有效地減少PCM上的寫操作,不同算法在緩存大小的設(shè)置、何時將數(shù)據(jù)寫回到PCM、替換頁的選擇等方面不盡相同,這些問題也將影響PCM耐久性提升的效果。
Table 3 Related research on DRAM buffer technology表3 關(guān)于DRAM緩存技術(shù)的相關(guān)研究
PCM的物理特性導(dǎo)致了其高讀寫時延和有限的使用壽命,研究者從預(yù)取技術(shù)、bit位翻轉(zhuǎn)技術(shù)等方面有效地避免冗余數(shù)據(jù)被重復(fù)寫入存儲單元,而write buffer的加入能夠隱藏主存的訪問時延[16],延長PCM壽命的同時提升了主存的I/O性能。
由于大多數(shù)程序的寫操作都呈現(xiàn)出明顯的局部性和不均衡性,寫操作集中的單元會比其他單元更早地達到壽命極限,失去改變相態(tài)的能力,從而造成數(shù)據(jù)錯誤以及器件壽命的縮短。將寫操作均勻分布在整個存儲空間上的磨損均衡算法能夠有效延長PCM的壽命?,F(xiàn)有的均勻化寫操作方法在改變地址映射的基礎(chǔ)上可以分為數(shù)據(jù)交換(Swapping)和數(shù)據(jù)移位(Shifting)兩大類,如圖2[17]所示。
Figure 2 Swapping and shifting圖2 交換和移位技術(shù)
數(shù)據(jù)交換技術(shù)通過周期性地交換寫頻繁頁面和寫操作次數(shù)較少頁面中的數(shù)據(jù)來達到磨損均衡的目的。表4列舉了應(yīng)用數(shù)據(jù)交換技術(shù)的相關(guān)磨損均衡的研究。Dhiman等人[18]設(shè)計了一種軟硬件結(jié)合的混合內(nèi)存系統(tǒng)—PDRAM,通過記賬(Book Keeping)硬件技術(shù)來存儲PCM頁面粒度的寫操作頻率,同時利用軟件手段維護PCM的寫訪問次數(shù)表。一旦寫操作次數(shù)超過一定的閾值,就產(chǎn)生中斷執(zhí)行磨損均衡操作。該算法通過三個鏈表對具有不同寫次數(shù)的頁面進行升降級操作,使得每一個頁面都獲得同樣多的寫操作。硬件可以在很小的開銷下維持和追蹤頁面的訪問,而軟件的管理策略可以提高PCM壽命,但是記錄頁面的寫操作次數(shù)將耗費一定的空間開銷。Park等人[19]提出一種基于段(Segment)的數(shù)據(jù)交換策略PFFS(Proposed Flash File System),一旦寫操作次數(shù)最大的分塊與最少的分塊之間的寫次數(shù)差距超過一定的閾值就執(zhí)行數(shù)據(jù)交換操作。這種方案需要監(jiān)控每一個分段的寫操作次數(shù),會帶來一定的空間開銷。Zhou等人[5]以段為粒度,通過限制數(shù)據(jù)段被頻繁選中進行數(shù)據(jù)交換來避免某一個段被過多寫訪問。同時,在寫入過程中,定期互換內(nèi)存段的高部與低部,以進一步達到磨損均衡,提高PCM的壽命的目的。不過,段交換的實現(xiàn)需要在硬件電路上增加移位寄存器和偏移器,這樣增加了實現(xiàn)的成本。Park等人[14]提出采用多級數(shù)據(jù)交換技術(shù)動態(tài)地平衡不同頁面之間的寫次數(shù)。該方法記錄頁面中每一個line的寫次數(shù),并且根據(jù)寫次數(shù)最大的line來定義所在頁面的寫次數(shù),當(dāng)頁面的寫次數(shù)超過閾值時就進行數(shù)據(jù)交換。這種通過line寫次數(shù)判斷全局寫次數(shù)的方式不能準(zhǔn)確反映一個頁面的寫操作情況,磨損均衡的過程較為粗略。Dong等人[20]通過監(jiān)測寫數(shù)據(jù)流量以及存儲單元承受寫操作的情況來控制損耗均衡的力度,當(dāng)數(shù)據(jù)更新分布較為均勻時提高數(shù)據(jù)交換的門檻,當(dāng)寫請求訪問集中在少數(shù)存儲塊時降低數(shù)據(jù)交換的條件來觸發(fā)更多的損耗均衡操作。Yun等人[21]提出基于Bloom Filter的磨損均衡算法。該算法利用Bloom Filter的特性判斷數(shù)據(jù)塊的冷熱情況,如果數(shù)據(jù)塊對應(yīng)的Bloom Filter值均超過一定的閾值,那么判定該數(shù)據(jù)塊為熱數(shù)據(jù)塊,并與冷數(shù)據(jù)塊進行數(shù)據(jù)交換。算法維護一個熱數(shù)據(jù)表和冷數(shù)據(jù)表,當(dāng)一個請求到達時,首先在冷熱數(shù)據(jù)表中尋找,如果命中則訪問冷熱數(shù)據(jù)交換后的地址,否則就直接訪問請求本身的地址。該算法能夠均衡冷熱數(shù)據(jù)塊上的寫訪問次數(shù),但是利用Bloom Filter進行冷熱數(shù)據(jù)的判斷依然會存在一定的誤差。
Table 4 Related research on data swapping technology in wear-leveling表4 磨損均衡中應(yīng)用數(shù)據(jù)交換技術(shù)的相關(guān)研究
數(shù)據(jù)交換能夠?qū)崿F(xiàn)寫操作過于集中的數(shù)據(jù)塊與冷數(shù)據(jù)塊進行地址映射的改變,但是監(jiān)測數(shù)據(jù)塊寫操作數(shù)量需要消耗一定的存儲空間,同時對于動態(tài)變化的數(shù)據(jù)流,通過特定閾值觸發(fā)交換操作的靜態(tài)方式會導(dǎo)致不必要的數(shù)據(jù)交換。
數(shù)據(jù)交換技術(shù)實現(xiàn)了頁面(或者是分塊)之間的磨損均衡,而數(shù)據(jù)移位技術(shù)能夠?qū)崿F(xiàn)同一頁面下不同line的寫操作均勻分布。表5列舉了關(guān)于數(shù)據(jù)移位的相關(guān)磨損均衡的研究。Qureshi等人[22]提出Start-Gap算法,該算法周期性地將每個行的數(shù)據(jù)轉(zhuǎn)移到鄰近的地址,而不考慮每行寫請求多少的區(qū)別,以此實現(xiàn)數(shù)據(jù)重映射。算法通過2個寄存器來分別記錄Start和Gap指針,Gap始終指向稱為GapLine的地址空間,每經(jīng)過n次寫操作就將Gap指針向前移動一個位置,也就是將上一個GapLine地址下的內(nèi)容復(fù)制到當(dāng)前GapLine中。Start-Gap算法的地址映射邏輯可以通過簡單的硬件來實現(xiàn),能夠在較小的存儲開銷和計算開銷下?lián)碛休^好的磨損均衡效果,但同時固定不變的映射機制也容易遭受惡意攻擊。Park等人[19]提出line粒度的移位策略來避免同一line承受過多的寫操作。當(dāng)頁面從DRAM buffer寫回到PCM時,需要檢查寫次數(shù)來確定是否觸發(fā)移位操作,并且通過將寫操作均勻分布到頁面中每一個line來降低整個頁面的寫操作次數(shù),而不是集中在少數(shù)line。該算法能夠有效處理一個頁面中寫操作分布不均勻的情況,但是對于空間局部性較強的應(yīng)用,不能很好地平衡不同頁面之間的寫操作分布。Zhou等人[5]定期進行移位操作,每經(jīng)過256次寫操作就執(zhí)行1字節(jié)的移位,同時把對于一個row的寫操作,分散到每一個cell以實現(xiàn)磨損均衡。該方案并不是對每一次寫操作都進行移位操作,避免了由于移位帶來的冗余寫。但是,周期性的移位方案對于寫分布不均勻的應(yīng)用程序而言并不是很可靠。Joo等人[11]利用Bit-line偏移的方式,當(dāng)某個line的寫次數(shù)到達閾值之后,就更改當(dāng)前寫的偏移值,把新寫的數(shù)據(jù)移向其他line。
Table 5 Related research on data shifting technology in wear-leveling表5 磨損均衡中應(yīng)用數(shù)據(jù)移位技術(shù)的相關(guān)研究
移位技術(shù)往往通過硬件來完成,對于執(zhí)行移位的間隔、移位的粒度以及范圍還需要進一步考量,同時,設(shè)計移位策略時必須考慮到時間、空間局部性對磨損均衡效果的影響。此外,以固定映射邏輯通過移位實現(xiàn)的磨損均衡容易遭受惡意寫攻擊,導(dǎo)致存儲單元迅速損壞。
除了上述磨損均衡的方法之外,研究者還通過減少緩存組間和組內(nèi)的寫波動、訪問感知策略來延長NVM的使用壽命[23 - 25]。緩存不均衡通常可以在位級別、行級別和塊級別等層級上實現(xiàn),不同粒度上的磨損均衡算法有不同的針對性、開銷、效率和安全性,觸發(fā)均衡操作的時機也千差萬別,實現(xiàn)磨損均衡時需要考慮存儲規(guī)模、應(yīng)用場景和特定的環(huán)境,在器件壽命和效率之間找到平衡點[26]。
PCM存在寫延遲長、寫功耗大、壽命短等缺陷,同時相比于DRAM,PCM的讀寫性能仍有一定差距。因此,在系統(tǒng)架構(gòu)中相變存儲器還不能完全取代DRAM作為主存,基于DRAM/PCM的混合內(nèi)存模型成為當(dāng)下的研究熱點[27]。目前,基于DRAM/PCM的混合內(nèi)存大致可分為兩種不同的結(jié)構(gòu):將DRAM作為PCM高速緩存的DRAM buffer模型[10]和DRAM和PCM共同作為主存的混合架構(gòu)[18],如圖1所示。前者作為減少PCM寫操作的重要途徑,后者使用同一地址空間由操作系統(tǒng)統(tǒng)一管理兩種存儲介質(zhì),在發(fā)揮各自優(yōu)點的同時,也需要克服DRAM高能耗和PCM寫性能不足、寫壽命有限的缺陷。高效的混合內(nèi)存頁面調(diào)度機制能夠針對這些缺陷,實現(xiàn)數(shù)據(jù)按照讀寫訪問頻率分別存放在不同的存儲介質(zhì)上,減少PCM磨損的同時降低系統(tǒng)能耗。表6列舉了關(guān)于混合內(nèi)存環(huán)境下頁面遷移的相關(guān)研究。
被動式頁面遷移策略在主存未命中時將請求數(shù)據(jù)直接寫到DRAM中,而當(dāng)DRAM寫滿時便會觸發(fā)遷移操作,再將訪問頻率低的冷頁面或者讀寫傾向性不明確的頁面遷移到PCM。Lee等人[28]提出的CLOCK-DWF(CLOCK with Dirty bits and Write Frequency)混合主存置換算法,在主存不命中時將寫請求數(shù)據(jù)寫到DRAM,讀請求數(shù)據(jù)存儲到PCM,同時當(dāng)寫請求不命中或者在PCM上命中時,數(shù)據(jù)將被載入到DRAM。如果DRAM被寫滿,將會把DRAM中的冷頁面替換到PCM中,始終保持PCM中的頁面處于低訪問頻率。Chen等人[29]提出的MHR-LRU(Maintain-Hit-Ratio LRU)算法,通過一個總的LRU鏈表管理整個內(nèi)存中的頁面以及一個LRU寫操作鏈表管理DRAM頁面。只有當(dāng)DRAM寫訪問命中時才改變DRAM寫鏈表中頁面的位置,并且當(dāng)鏈表被填滿時觸發(fā)遷移操作,選擇該鏈表LRU位置的頁面遷移到PCM。該方法能夠保證遷移到PCM中的頁面并不是近期被頻繁寫訪問的,但是仍然受限于測試程序的局部性。Qureshi等人[10]探討的Lazy-Write組織方法,在頁面被逐出DRAM且該頁被修改過時寫入PCM中,該方法能夠充分利用DRAM的I/O優(yōu)勢來掩蓋PCM的讀寫性能不足,但是對于PCM的寫操作減少作用有限。
被動遷移方式能夠充分利用DRAM高讀寫帶寬的特點,將盡可能多的寫操作集中在DRAM,達到增加PCM壽命的目標(biāo)。但是,這種被動式遷移策略,缺乏從PCM到DRAM的寫頻繁頁面遷移,讀寫預(yù)測機制的不足導(dǎo)致PCM寫次數(shù)減少程度有限。
Table 6 Related research on page migration in hybrid memory表6 混合內(nèi)存頁面遷移技術(shù)的相關(guān)研究
主動式頁面遷移策略通過訪問頻率和訪問間隔定義數(shù)據(jù)頁的冷熱,選擇合適的數(shù)據(jù)結(jié)構(gòu)開發(fā)時間局部性和空間局部性,并判斷頁面的讀寫傾向性進行相應(yīng)的頁遷移,保證DRAM存放寫傾向數(shù)據(jù)頁,而PCM存放讀傾向數(shù)據(jù)頁。RaPP(Rank-based Page Placement)[30]采用一種基于改進的多隊列置換算法MQ(Malti-queue)的頁面管理方法,對于降級的DRAM頁面和升級的PCM頁面將會進行置換。具體做法是:若DRAM頁面連續(xù)兩次降級且期間沒有被訪問,則被移出隊列并成為頁面交換的候選目標(biāo);若PCM頁面所屬隊列級別達到一定閾值,則觸發(fā)遷移操作。Seok等人[31]提出通過4個LRU鏈表分別管理DRAM和PCM中的讀寫頁面的方法。該方法監(jiān)測每個頁面的讀寫情況,并計算權(quán)值判斷頁面的讀寫傾向性。當(dāng)PCM中寫傾向頁面的權(quán)值超過一定閾值時則將其遷移到DRAM上,若DRAM空間被填滿,則從DRAM讀傾向隊列末尾選擇頁面換出,DRAM向PCM讀傾向性頁面的遷移操作與上述過程相似。此外,算法還維護一個LRU鏈表管理整個混合內(nèi)存的頁面,用于頁面替換算法中選擇被替換的頁面。該算法本質(zhì)是基于LRU改進的,不適用于弱局部性的應(yīng)用場景,同時當(dāng)遷移目的地被寫滿時需要選擇頁面替換出主存,會造成一定程度的命中率降低。APP-LRU(Access-Pattern-Prediction-based LRU)算法[32]根據(jù)數(shù)據(jù)頁在磁盤中的歷史讀寫訪問比例信息判斷該頁面被寫回主存后的讀寫傾向性,并且為讀傾向性的頁面分配PCM存儲空間,為寫傾向性的頁面分配DRAM存儲空間。當(dāng)存儲空間中數(shù)據(jù)的讀寫傾向性與存儲介質(zhì)的特性不匹配時,需要觸發(fā)DRAM和PCM之間的頁面遷移操作來創(chuàng)新分配與讀寫傾向性一致的內(nèi)存空間。Zhang等人[33]同樣通過MQ算法對頁面寫訪問進行計數(shù),根據(jù)頁修改的頻度來指導(dǎo)遷移。該算法通過16個LRU隊列管理頁面的訪問頻繁程度,把修改頻繁的頁面保存在DRAM中,將之前在DRAM但是具有較少寫次數(shù)的頁面遷移到PCM,但是對每個頁面進行寫訪問次數(shù)統(tǒng)計以及MQ算法本身的復(fù)發(fā)度都會對系統(tǒng)的性能造成一定影響。
這些方法能夠有效預(yù)測頁面的讀寫熱度,在頁面表現(xiàn)出讀寫傾向時執(zhí)行遷移操作,但是需要較大的空間開銷來記錄讀寫訪問頻率和局部訪問熱度,并且各算法預(yù)測結(jié)果也存在較大差異。
基于混合內(nèi)存架構(gòu)的頁面遷移策略能夠?qū)崿F(xiàn)將更新頻繁的頁面保存在DRAM中,將讀訪問頻繁的或者靜態(tài)的數(shù)據(jù)存放在PCM中,通過預(yù)測頁面的讀寫訪問熱度對數(shù)據(jù)進行遷移操作,達到減少PCM寫數(shù)量的目的,延長PCM使用壽命的同時降低了系統(tǒng)能耗開銷。
目前PCM在存儲體系結(jié)構(gòu)中的應(yīng)用研究還處于實驗階段,在上述延長PCM使用壽命的幾項技術(shù)基礎(chǔ)上,仍存在許多挑戰(zhàn)未能解決。展望未來,針對PCM在替換存儲架構(gòu)中各個層次傳統(tǒng)器件所面臨的問題,以下幾個方面值得進一步探索和研究。
Flash和PCM都面臨著寫次數(shù)受限的問題,已有的一種解決方案是通過混合存儲技術(shù)實現(xiàn)非易失性存儲設(shè)備使用壽命的延長。在主存中,PCM通常與DRAM結(jié)合使用,而在二級存儲層級中,基于閃存的SSD常常與HHD一起構(gòu)建混合存儲設(shè)備。在混合存儲架構(gòu)中,需要有改進的緩存算法、頁面替換算法以及頁面調(diào)度機制來發(fā)揮不同存儲介質(zhì)的性能優(yōu)勢。結(jié)合磨損均衡策略,能夠在保證使用壽命的前提下保證存儲系統(tǒng)的高性能。
芯片在生產(chǎn)的過程中由于工藝的問題,不能保證每個比特的可承受寫入次數(shù)都達到預(yù)期。對內(nèi)存使用較為貪婪的用戶或者一個了解磨損均衡算法的攻擊者可以很容易持續(xù)對存儲單元進行寫操作,造成這部分存儲單元快速達到耐久性極限,從而在很短時間內(nèi)失效。為了防止PCM中某些位可承受寫次數(shù)因為工藝問題過小,而導(dǎo)致整個設(shè)備短時間內(nèi)損壞的問題,必須要引入硬件糾錯機制?,F(xiàn)有的糾錯算法需要較大的額外存儲開銷,并且沒有特別區(qū)分SLC和MLC,因此在通過磨損均衡技術(shù)保證存儲單元使用壽命的同時,如何更好地引入糾錯機制仍需要進一步探索。
通過磨損均衡策略可以實現(xiàn)寫操作在存儲單元中的均勻分布,也可以通過減少寫操作次數(shù),以及在混合存儲架構(gòu)中的數(shù)據(jù)遷移技術(shù)實現(xiàn)讀寫熱度不同的數(shù)據(jù)按存儲介質(zhì)分別存放,達到損耗均衡的目的。為提升混合內(nèi)存資源的空間利用率,需要利用前沿數(shù)據(jù)縮減技術(shù),以較低的元數(shù)據(jù)開銷,發(fā)現(xiàn)并消除盡可能多的數(shù)據(jù)冗余。在損耗均衡的基礎(chǔ)上,通過重復(fù)數(shù)據(jù)技術(shù)[34]實現(xiàn)存儲空間利用率的進一步提高。
PCM的研究與發(fā)展為打破現(xiàn)有的計算機存儲體系提供了新的契機,工業(yè)界尚未完全攻克PCM寫性能與使用壽命的缺陷,研究者們針對如何提高PCM使用壽命展開了廣泛而深入的研究。無論是廣泛采用的減少寫操作數(shù)量、均勻化寫操作的磨損均衡策略,還是運用于混合內(nèi)存的頁面遷移技術(shù),都能夠減緩因程序局部性帶來的寫分布不均衡、冗余寫過多等問題,有效地延長PCM寫壽命。