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