隨著大數(shù)據(jù)的出現(xiàn)及大數(shù)據(jù)分析技術(shù)的發(fā)展,大數(shù)據(jù)應(yīng)用受到越來(lái)越廣泛的關(guān)注。大數(shù)據(jù)具有數(shù)據(jù)量巨大、數(shù)據(jù)種類(lèi)繁多、數(shù)據(jù)價(jià)值密度低以及處理數(shù)據(jù)時(shí)效性要求高等特點(diǎn)[1]。大數(shù)據(jù)應(yīng)用需要執(zhí)行大量計(jì)算工作,同時(shí)對(duì)大數(shù)據(jù)的處理與存儲(chǔ)也有著低時(shí)延、低開(kāi)銷(xiāo)、高效率等需求?,F(xiàn)在無(wú)論是數(shù)據(jù)中心里的超級(jí)計(jì)算機(jī)還是個(gè)人計(jì)算機(jī)都利用以動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dynamic random access memory, DRAM)為核心構(gòu)成的內(nèi)存架構(gòu)來(lái)管理和存儲(chǔ)大數(shù)據(jù),DRAM的可擴(kuò)展性受限會(huì)增加大數(shù)據(jù)分析的操作時(shí)間,從而降低吞吐量,無(wú)法高效地對(duì)大數(shù)據(jù)進(jìn)行存儲(chǔ)和分析。雖然工業(yè)界和學(xué)術(shù)界一直都在軟件方面研究并嘗試解決這一系列的問(wèn)題,并在一定程度上緩解了現(xiàn)有存儲(chǔ)架構(gòu)的缺陷,但卻很難獲得本質(zhì)上的突破。
新型非易失性存儲(chǔ)器(non-volatile memory,NVM)的出現(xiàn),給傳統(tǒng)的以DRAM為主體構(gòu)成的內(nèi)存系統(tǒng)帶來(lái)了挑戰(zhàn),也為優(yōu)化大數(shù)據(jù)應(yīng)用提供了契機(jī)。其中,相變寄存器(phase change memory,PCM)被認(rèn)為是目前有可能取代DRAM作為內(nèi)存構(gòu)成的選擇之一。與DRAM相比,PCM具有非易失性、高存儲(chǔ)密度和良好擴(kuò)展性等合乎大數(shù)據(jù)存儲(chǔ)技術(shù)需求的特征。但是,非易失性存儲(chǔ)器還存在以下問(wèn)題。
● PCM讀寫(xiě)不對(duì)稱。在性能方面,寫(xiě)時(shí)延相對(duì)DRAM較長(zhǎng),會(huì)導(dǎo)致訪問(wèn)內(nèi)存的時(shí)間延長(zhǎng),降低系統(tǒng)的性能;在能耗方面,對(duì)PCM進(jìn)行寫(xiě)操作比讀操作的能耗要高,會(huì)導(dǎo)致更多的能源消耗。
● PCM的耐寫(xiě)度有限。數(shù)據(jù)在PCM內(nèi)存架構(gòu)上的寫(xiě)操作分布不均勻會(huì)縮短PCM的壽命,也會(huì)對(duì)存儲(chǔ)在PCM上的數(shù)據(jù)的安全性造成影響。
由此可見(jiàn),如果用PCM完全取代DRAM作為構(gòu)成計(jì)算系統(tǒng)的內(nèi)存,會(huì)對(duì)計(jì)算系統(tǒng)的壽命、性能、能耗和安全性等造成一定的影響。因此,必須有效解決上述問(wèn)題,才能發(fā)揮PCM在優(yōu)化大數(shù)據(jù)應(yīng)用方面的效用,而采用基于PCM和DRAM的混合內(nèi)存架構(gòu)是當(dāng)前的主要方式。
本文從分析大數(shù)據(jù)應(yīng)用和NVM的特征入手,旨在分析PCM/DRAM混合存儲(chǔ)架構(gòu)在優(yōu)化大數(shù)據(jù)應(yīng)用方面的可行性及優(yōu)化方向。通過(guò)研究比較DRAM與PCM不同的組成方案和管理策略,從混合存儲(chǔ)架構(gòu)的性能優(yōu)化和能耗優(yōu)化兩方面分析主要的優(yōu)化算法和相關(guān)的故障處理,并討論未來(lái)的優(yōu)化方向,以達(dá)到最大限度地利用DRAM和PCM優(yōu)勢(shì)的目的,為全面利用PCM/DRAM混合內(nèi)存架構(gòu)開(kāi)展大數(shù)據(jù)應(yīng)用調(diào)度優(yōu)化提供基礎(chǔ)。
2、 大數(shù)據(jù)應(yīng)用及NVM的特征
2.1 典型應(yīng)用場(chǎng)景下大數(shù)據(jù)應(yīng)用特征
隨著大數(shù)據(jù)概念的出現(xiàn),學(xué)術(shù)界和工業(yè)界都利用大數(shù)據(jù)分析技術(shù)的優(yōu)勢(shì)開(kāi)展應(yīng)用,以提升服務(wù)或應(yīng)用效率,現(xiàn)今大數(shù)據(jù)典型應(yīng)用場(chǎng)景有:企業(yè)內(nèi)部大數(shù)據(jù)應(yīng)用、物聯(lián)網(wǎng)大數(shù)據(jù)應(yīng)用、面向在線社交網(wǎng)絡(luò)大數(shù)據(jù)的應(yīng)用、醫(yī)療健康大數(shù)據(jù)應(yīng)用、群智感知和智能發(fā)電等[2]。這些應(yīng)用體現(xiàn)了大數(shù)據(jù)的數(shù)字化、全球化、超海量、實(shí)時(shí)性、價(jià)值密度低等特點(diǎn)[3,4]。大數(shù)據(jù)的應(yīng)用特征表現(xiàn)在以下兩個(gè)方面。
(1)數(shù)據(jù)處理時(shí)效性要求高,處理速度問(wèn)題突出
許多嵌入式的系統(tǒng)都會(huì)產(chǎn)生大量的物理數(shù)據(jù),需要?jiǎng)討B(tài)地處理分析這些數(shù)據(jù)。企業(yè)大數(shù)據(jù)應(yīng)用也需要實(shí)時(shí)地對(duì)數(shù)據(jù)的變化做出應(yīng)對(duì)和決策。數(shù)據(jù)處理的響應(yīng)時(shí)間也從批處理響應(yīng)時(shí)間逐漸轉(zhuǎn)變?yōu)閷?shí)時(shí)的流數(shù)據(jù)處理響應(yīng)時(shí)間[5]。根據(jù)國(guó)際數(shù)據(jù)公司(International Data Corporation)發(fā)布的名為《大數(shù)據(jù),更大的數(shù)字身影,最大增長(zhǎng)在遠(yuǎn)東》的研究報(bào)告,預(yù)計(jì)到2020年,數(shù)字宇宙規(guī)模將達(dá)到40 ZB[6]。這些均表明大數(shù)據(jù)時(shí)代對(duì)數(shù)據(jù)處理效率有著迫切的需求。
(2)數(shù)據(jù)精確性要求高
數(shù)據(jù)來(lái)源的多元化降低了數(shù)據(jù)的可靠度和質(zhì)量,但是面向大數(shù)據(jù)的計(jì)算系統(tǒng)需要追求高并發(fā)、高性能讀寫(xiě)訪問(wèn)、低功耗等特性,其精確需求難以很好地滿足。
2.2 大數(shù)據(jù)應(yīng)用在傳統(tǒng)存儲(chǔ)架構(gòu)下的瓶頸
大數(shù)據(jù)應(yīng)用的特征使大數(shù)據(jù)處理存在很多困難,在傳統(tǒng)存儲(chǔ)架構(gòu)下,計(jì)算機(jī)內(nèi)存容量有限、輸入/輸出壓力大等缺陷使大數(shù)據(jù)處理效率低、能耗高。大數(shù)據(jù)應(yīng)用面臨操作(分析、查詢等)時(shí)延長(zhǎng)、能源消耗大和存儲(chǔ)容量有限這3個(gè)瓶頸。
(1)操作時(shí)延長(zhǎng)
在傳統(tǒng)的馮·諾伊曼結(jié)構(gòu)中,CPU的處理速率遠(yuǎn)快于內(nèi)存的處理速率,當(dāng)CPU需要在大量的資源或數(shù)據(jù)上執(zhí)行一些簡(jiǎn)單的指令時(shí),由于I/O流量與CPU的工作效率相差太大,計(jì)算機(jī)運(yùn)行的整體效率受到嚴(yán)重的限制?,F(xiàn)實(shí)中,處理器和內(nèi)存的性能一直在提升但卻具有不同的提升速率,兩者之間的帶寬差距也在增加。大數(shù)據(jù)繼承了互聯(lián)網(wǎng)的數(shù)字化表示,傳統(tǒng)的內(nèi)存器件DRAM用電容的充放電來(lái)表示“0”和“1”,為了防止電容因漏電而導(dǎo)致信息丟失,需要周期性地刷新DRAM以保存DRAM中的數(shù)據(jù),這就帶來(lái)了計(jì)算系統(tǒng)的額外時(shí)間開(kāi)銷(xiāo),導(dǎo)致大數(shù)據(jù)的實(shí)時(shí)性需求得不到滿足。
(2)能源消耗大
能源消耗是現(xiàn)代計(jì)算系統(tǒng)設(shè)計(jì)的一個(gè)重要考慮因素。近年來(lái),能源管理的研究大多集中在中央處理器的動(dòng)態(tài)管理上,研究人認(rèn)為它是能源消耗的最主要因素。然而,最近的研究表明,在現(xiàn)代計(jì)算系統(tǒng)中,內(nèi)存已經(jīng)成為最顯著的能源消耗部件,占據(jù)能源總消耗的30%~50%[7-11]。
DRAM內(nèi)存被組織為一個(gè)包含行和列的網(wǎng)格,每一位數(shù)據(jù)都以小電容充電的形式存儲(chǔ)在這個(gè)網(wǎng)格中。漏電和頻繁的訪問(wèn)會(huì)導(dǎo)致電荷耗盡,DRAM需要一個(gè)持續(xù)的刷新操作來(lái)維持它的數(shù)據(jù),因此,進(jìn)行刷新操作的電源就會(huì)導(dǎo)致持續(xù)的能源消耗。同時(shí)DRAM設(shè)置行和列給物理地址訪問(wèn)時(shí)要消耗能源。當(dāng)其他行需要訪問(wèn)時(shí), DRAM關(guān)閉一行也需要額外的能源開(kāi)銷(xiāo)。此外,在進(jìn)行實(shí)際的讀寫(xiě)操作時(shí),因?yàn)槁╇姾椭芷谛缘墓?yīng),持續(xù)的備用電源都會(huì)造成能源的損耗。
雖然關(guān)鍵的大數(shù)據(jù)技術(shù)仍處在初步階段[2],但是學(xué)術(shù)界和工業(yè)界對(duì)大數(shù)據(jù)的應(yīng)用已經(jīng)越來(lái)越廣泛,這些應(yīng)用更多地轉(zhuǎn)移到包含大量信息和通信技術(shù)的大數(shù)據(jù)中心,呈現(xiàn)大數(shù)據(jù)中心化的特征。目前大數(shù)據(jù)中心包括數(shù)以萬(wàn)計(jì)的服務(wù)器,其能源消耗量甚至可以超過(guò)一座小型城鎮(zhèn)的能源消耗量[12]。與此同時(shí),這些服務(wù)器在日常工作中約有30%的時(shí)間是不承擔(dān)任何任務(wù)的,閑置的服務(wù)器只消耗能源,不產(chǎn)生價(jià)值,大數(shù)據(jù)中心的能源利用率普遍只有5%~10%[12]。
(3)存儲(chǔ)容量有限
當(dāng)前需要存儲(chǔ)和處理的大數(shù)據(jù)達(dá)到了PB量級(jí),因此存儲(chǔ)器的存儲(chǔ)容量和存儲(chǔ)密度也是一個(gè)亟須解決的問(wèn)題。由于磁盤(pán)的I/O速度比計(jì)算系統(tǒng)其他部分慢5個(gè)數(shù)量級(jí)[13],如果擴(kuò)大磁盤(pán)容量,尋址時(shí)間會(huì)隨磁盤(pán)容量的擴(kuò)大而增加,進(jìn)而增加操作的時(shí)延,從而降低I/O的吞吐量。由于DRAM存儲(chǔ)密度較小、價(jià)格較高,如果擴(kuò)大DRAM內(nèi)存容量,則會(huì)導(dǎo)致能源消耗進(jìn)一步加劇,并顯著增加計(jì)算系統(tǒng)的成本。
學(xué)術(shù)界與工業(yè)界都嘗試在軟件方面對(duì)現(xiàn)有的存儲(chǔ)機(jī)構(gòu)進(jìn)行改進(jìn),解決大數(shù)據(jù)存儲(chǔ)的問(wèn)題,其中包括以Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)[14]和以非關(guān)系型數(shù)據(jù)庫(kù)(not only SQL,NoSQL)為代表的大規(guī)模分布式數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)、基于以DRAM為核心的內(nèi)存數(shù)據(jù)庫(kù)技術(shù)等。然而,這些軟件或軟硬件結(jié)合的方案都是從傳統(tǒng)的DRAM內(nèi)存架構(gòu)考慮的,沒(méi)有實(shí)質(zhì)上的突破。在大數(shù)據(jù)應(yīng)用的環(huán)境下,內(nèi)存與外存之間的處理速率仍然相差很大,需要從硬件的角度考慮才能更好地滿足大數(shù)據(jù)應(yīng)用的需求。
2.3 新型非易失性存儲(chǔ)器
由前文可知,以DRAM為核心構(gòu)成內(nèi)存的傳統(tǒng)架構(gòu)已經(jīng)不能滿足大數(shù)據(jù)的應(yīng)用需求。隨著新型的非易失性存儲(chǔ)器阻變式存儲(chǔ)器(resistive random access memory,RRAM)、鐵電存儲(chǔ)器(ferroelectric random access memory, FRAM)、磁阻內(nèi)存(magnetic random access memory,MRAM)、相變存儲(chǔ)器(phase change memory,PCM)以及閃存(flash memory)走出實(shí)驗(yàn)室,NVM成本降低并實(shí)現(xiàn)了產(chǎn)品化,為研究適合高效率、低能耗的大數(shù)據(jù)存儲(chǔ)和管理的新型存儲(chǔ)架構(gòu)帶來(lái)了新的機(jī)遇。
閃存技術(shù)的快速發(fā)展給數(shù)據(jù)管理研究帶來(lái)了巨大沖擊,但是受按頁(yè)存取的方式和存取性能等因素限制,閃存較適合作為二級(jí)存儲(chǔ)器[15]?;陂W存的數(shù)據(jù)存儲(chǔ)與管理技術(shù)只是優(yōu)化了磁盤(pán)級(jí)別的I/O時(shí)延[16],對(duì)傳統(tǒng)存儲(chǔ)架構(gòu)的變革沒(méi)有太大的影響。
其他新型的非易失性存儲(chǔ)器還存在以下缺點(diǎn)。
● MRAM工作原理依賴磁性,磁性材料在200°C左右的溫度環(huán)境下會(huì)喪失磁性,而在制造和集成工藝的過(guò)程中,溫度通常會(huì)達(dá)到400°C;并且MRAM品質(zhì)不容易控制,如果磁性薄膜系統(tǒng)沒(méi)有良好的均勻性,會(huì)導(dǎo)致寫(xiě)入或讀取發(fā)生錯(cuò)誤。
● FeRAM隨工藝縮小的能力比較差,存儲(chǔ)密度不夠高,在高密度非揮發(fā)型存儲(chǔ)器領(lǐng)域尚且不能和閃存競(jìng)爭(zhēng)[17]。
● 雖然RRAM具有可縮小性好、操作電流低、讀寫(xiě)速度快、阻態(tài)保持特性好等特點(diǎn)[18],但其仍處于開(kāi)發(fā)的初級(jí)階段,其開(kāi)關(guān)阻變機(jī)理不夠清晰。
目前研究較成熟的PCM被認(rèn)為是最有可能取代DRAM的非易失性存儲(chǔ)器。PCM以硫系化合物GST材料為存儲(chǔ)介質(zhì),利用納米尺寸的相變材料在晶態(tài)(材料成低阻狀態(tài))與非晶態(tài)(高阻狀態(tài))時(shí)呈現(xiàn)出的阻值差異實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)[19],通過(guò)給上下級(jí)加一定的電壓,使相變材料在晶態(tài)和非晶態(tài)之間轉(zhuǎn)變。高阻下非晶態(tài)表示二進(jìn)制“0”,低阻下晶態(tài)表示二進(jìn)制“1”,從而能夠?qū)憽?”或“1”。綜合而言,PCM具有如下特征[15,20]。
(1)高存儲(chǔ)密度
NOR flash和NAND flash結(jié)構(gòu)中,門(mén)電路厚度固定,需要高于10 V的電源供電,導(dǎo)致其存儲(chǔ)器體積很難縮小,而CMOS邏輯門(mén)只要1 V或者更少電源即可。根據(jù)摩爾定律,存儲(chǔ)器縮小一代,密集程度將提高一倍[21]。PCM可以將不同的電阻區(qū)組合在一個(gè)存儲(chǔ)單元內(nèi),存儲(chǔ)一個(gè)或以上的字節(jié)。其存儲(chǔ)單元小,相變材料體積小,具有很強(qiáng)的縮放性,從而存儲(chǔ)密度提升,內(nèi)存容量擴(kuò)大。
(2)非易失性
PCM利用相變材料(如硫系化合物合金材料Ge2Sb2Te5)的電阻值來(lái)保存數(shù)據(jù),不需要像DRAM一樣通過(guò)電容的充放電來(lái)表示數(shù)據(jù),也不需要通過(guò)周期性的刷新操作來(lái)維持存儲(chǔ)單元內(nèi)的數(shù)據(jù)。掉電后數(shù)據(jù)存儲(chǔ)期限可達(dá)10年之久。
(3)按位尋址
PCM具有按位存儲(chǔ)的特性,其單元值可直接由“0”變?yōu)椤?”或由“1”變?yōu)椤?”,不需要單獨(dú)的擦除操作,可以降低能耗,節(jié)省時(shí)間。這與傳統(tǒng)的DRAM按字節(jié)尋址略有不同,只需更改少許內(nèi)存管理策略。
(4)低能耗
PCM芯片是由相變材料構(gòu)成的,漏電能耗極少,幾乎可以忽略不計(jì),也不需要DRAM周期性地刷新電流。PCM最大的特點(diǎn)是,在大數(shù)據(jù)應(yīng)用的環(huán)境中,相對(duì)于DRAM,能節(jié)約海量的能源消耗。
2.4 PCM的缺陷及大數(shù)據(jù)應(yīng)用的需求
雖然PCM是最理想的內(nèi)存選擇之一,但是PCM在讀操作和耐寫(xiě)度兩方面存在明顯缺陷。一是讀寫(xiě)不對(duì)稱。PCM讀取時(shí)延約為200~300 ns,具有與DRAM相近的讀取帶寬。但是PCM的寫(xiě)速度較慢,是DRAM的1/10[22],雖然PCM的寫(xiě)速度比閃存快,但在大數(shù)據(jù)應(yīng)用要求低延時(shí)的背景下需要考慮如何減少PCM上的寫(xiě)操作以提升系統(tǒng)性能。二是耐寫(xiě)度有限。過(guò)多的寫(xiě)操作(106~108次)會(huì)導(dǎo)致PCM器件單元失效。這意味著,在最理想的情況下,一塊16 GB的PCM芯片的壽命為10年左右[22],但由于寫(xiě)操作的速率不同或者寫(xiě)操作的分布不均勻,PCM芯片的壽命會(huì)進(jìn)一步地縮短。
鑒于此,在大數(shù)據(jù)應(yīng)用環(huán)境下,還需要對(duì)PCM進(jìn)行以下兩方面的提升及優(yōu)化,以更好地滿足大數(shù)據(jù)應(yīng)用的需求。
(1)減少PCM上的寫(xiě)操作
在實(shí)際應(yīng)用中,從系統(tǒng)的性能考慮,對(duì)內(nèi)存的讀寫(xiě)速度有迫切的需求。然而PCM存在讀寫(xiě)性能不對(duì)稱的問(wèn)題,寫(xiě)請(qǐng)求會(huì)導(dǎo)致讀時(shí)延延長(zhǎng)2.3倍[23]。
當(dāng)有許多寫(xiě)操作發(fā)生時(shí),一個(gè)較高的寫(xiě)時(shí)延能夠通過(guò)緩沖區(qū)和智能調(diào)度來(lái)解決。但是,當(dāng)一個(gè)寫(xiě)請(qǐng)求被調(diào)度到一個(gè)PCM塊上時(shí),如果這個(gè)塊在寫(xiě)操作完成之前發(fā)出讀請(qǐng)求,那么這個(gè)讀請(qǐng)求就需要等待,因此,寫(xiě)請(qǐng)求會(huì)引起讀請(qǐng)求時(shí)延的延長(zhǎng)。和寫(xiě)訪問(wèn)請(qǐng)求不同的是,讀訪問(wèn)請(qǐng)求是系統(tǒng)時(shí)延的關(guān)鍵,讀操作的延緩會(huì)對(duì)系統(tǒng)的性能造成顯著的影響。參考文獻(xiàn)[23]中的基準(zhǔn)系統(tǒng)的讀時(shí)延為2 290個(gè)周期,是讀寫(xiě)競(jìng)爭(zhēng)較少的系統(tǒng)(1 000個(gè)周期)的3倍。如果寫(xiě)時(shí)延縮減到1 000個(gè)周期,則讀時(shí)延會(huì)縮減到1 159個(gè)周期,這表明競(jìng)爭(zhēng)主要是由寫(xiě)請(qǐng)求引起的,并且是導(dǎo)致讀操作效率降低的主要因素[23]。所以,減少發(fā)生在PCM上的寫(xiě)操作可以減少操作時(shí)延,提升系統(tǒng)性能。
(2)降低PCM的寫(xiě)能耗
PCM不僅存在讀寫(xiě)性能不對(duì)稱的問(wèn)題,還存在讀寫(xiě)能耗不對(duì)稱的問(wèn)題。PCM使用的相變材料通過(guò)熱量的應(yīng)用來(lái)轉(zhuǎn)換存儲(chǔ)單元內(nèi)“0”和“1”的狀態(tài)。例如相變材料Ge2Sb2Te5(GST),當(dāng)其溫度超過(guò)其結(jié)晶溫度(300°C左右)但在其熔化溫度(600°C左右)之下時(shí),就會(huì)進(jìn)入結(jié)晶狀態(tài)來(lái)表示邏輯上的“1”;當(dāng)熱度超過(guò)熔化溫度,GST就會(huì)進(jìn)入非結(jié)晶狀態(tài)來(lái)表示邏輯“0”(亦即reset狀態(tài))[24]。因此當(dāng)對(duì)一個(gè)PCM存儲(chǔ)單元進(jìn)行寫(xiě)操作(set和reset操作)時(shí),在位線①上需要不同的電流和電壓,并且需要不同的完成時(shí)間。reset操作需要最高水平的電壓在短時(shí)間內(nèi)熔融相變材料,使PCM單元變成非結(jié)晶的狀態(tài)。set操作通過(guò)長(zhǎng)時(shí)間的低電壓使存儲(chǔ)單元結(jié)晶化。因此對(duì)PCM的讀寫(xiě)操作所需要的能耗存在較大的差異,讀操作的能耗與DRAM相近,寫(xiě)操作的能耗卻比DRAM大[15]。
由于在PCM上進(jìn)行寫(xiě)操作會(huì)消耗大量的能源,如果不降低PCM寫(xiě)能耗,在一定的寫(xiě)次數(shù)之后,PCM內(nèi)的存儲(chǔ)單元就會(huì)被損壞,從而引發(fā)如下兩個(gè)方面的問(wèn)題。
● 影響PCM的壽命。應(yīng)用通常會(huì)有對(duì)內(nèi)存系統(tǒng)進(jìn)行分布不均勻的寫(xiě)操作,這會(huì)導(dǎo)致系統(tǒng)的壽命急劇下降,比在理想狀態(tài)下完全均勻地分布在PCM上的寫(xiě)操作的系統(tǒng)壽命縮短1/20左右。在大數(shù)據(jù)應(yīng)用和分析的全球化特征下,計(jì)算系統(tǒng)要承受更多的或者分布更不均勻的寫(xiě)操作,如果不對(duì)這些寫(xiě)操作進(jìn)行處理和恰當(dāng)?shù)牟渴?,那么?jì)算系統(tǒng)就會(huì)過(guò)早地?fù)p毀,造成不可估量的成本開(kāi)銷(xiāo)。
● 影響PCM安全性。PCM某些單元損壞后可能會(huì)使原本存儲(chǔ)在這些單元的數(shù)據(jù)丟失。一個(gè)惡意的攻擊程序可以使PCM內(nèi)存在其指定的某一行或小范圍內(nèi)的某些行進(jìn)行反復(fù)寫(xiě)操作,致使PCM的存儲(chǔ)單元在一分鐘內(nèi)出現(xiàn)故障甚至損壞[25,26]。此外,如果操作系統(tǒng)被攻擊者攻破,那么虛擬地址到物理地址的映射就會(huì)很容易被識(shí)破,攻擊者就可以做一個(gè)簡(jiǎn)單的程序,通過(guò)將大量數(shù)據(jù)寫(xiě)到精心挑選的緩存行,使緩存不斷刷新其數(shù)據(jù)。
運(yùn)用合理的策略優(yōu)化PCM的缺陷所帶來(lái)的問(wèn)題,成為當(dāng)前研究的熱點(diǎn)之一。
3、 PCM/DRAM混合存儲(chǔ)架構(gòu)及優(yōu)化策略
3.1 PCM/DRAM混合存儲(chǔ)架構(gòu)的優(yōu)勢(shì)
PCM存在高存儲(chǔ)密度、非易失性、低能耗等優(yōu)點(diǎn),而DRAM具有讀寫(xiě)操作速度快的優(yōu)勢(shì),兩者結(jié)合,則可能既規(guī)避PCM讀寫(xiě)不對(duì)稱等劣勢(shì),又彌補(bǔ)DRAM低存儲(chǔ)容量、易丟失的缺陷,從而出現(xiàn)了PCM/DRAM混合存儲(chǔ)架構(gòu)。
PCM/DRAM混合存儲(chǔ)架構(gòu)就是用PCM芯片和DRAM芯片共同構(gòu)成內(nèi)存系統(tǒng),以往對(duì)該架構(gòu)的研究主要分成PCM/DRAM同級(jí)混合存儲(chǔ)系統(tǒng)和DRAM作為PCM緩存的內(nèi)存系統(tǒng)。本節(jié)主要討論P(yáng)CM/DRAM混合存儲(chǔ)架構(gòu)在性能和能耗方面與傳統(tǒng)DRAM內(nèi)存系統(tǒng)相比存在的優(yōu)勢(shì)。
(1)性能
大數(shù)據(jù)應(yīng)用在傳統(tǒng)的DRAM內(nèi)存架構(gòu)下運(yùn)行,由于DRAM通過(guò)充放電來(lái)表示數(shù)據(jù)的特性,所以應(yīng)用需要等待多個(gè)周期才能存取數(shù)據(jù)進(jìn)行讀寫(xiě)操作。而在PCM/DRAM混合存儲(chǔ)架構(gòu)中,影響系統(tǒng)性能的主要因素是發(fā)生在PCM上的寫(xiě)操作所帶來(lái)的時(shí)延以及內(nèi)存發(fā)生缺頁(yè)錯(cuò)誤時(shí)需要等待的周期時(shí)長(zhǎng)。IBM公司的研究提出了基于PCM和DRAM的混合存儲(chǔ)架構(gòu)[22],使用PCM能最大限度地?cái)U(kuò)充內(nèi)存的容量,將快速的DRAM放在PCM內(nèi)存和處理器之間,作為內(nèi)存中的緩存區(qū),提升系統(tǒng)性能。通過(guò)用更大的PCM內(nèi)存和3%PCM內(nèi)存塊大小的DRAM構(gòu)成混合存儲(chǔ)架構(gòu)來(lái)打破DRAM和PCM在時(shí)延方面的差距。研究中還提出了延遲寫(xiě)管理(lazywrite organization)作為混合內(nèi)存架構(gòu)的管理機(jī)制,通過(guò)減少對(duì)PCM的寫(xiě)操作來(lái)克服PCM寫(xiě)速度較慢的缺點(diǎn)。同時(shí)還采取了行級(jí)回寫(xiě)(line-level write back)、細(xì)粒度磨損均衡(fine-grained wearleveling)、頁(yè)級(jí)分流(page level bypass)等機(jī)制區(qū)分?jǐn)?shù)據(jù)塊的訪問(wèn)頻繁性,減少PCM中的寫(xiě)操作。實(shí)驗(yàn)結(jié)果表明這些策略能顯著減少缺頁(yè)錯(cuò)誤的發(fā)生,系統(tǒng)性能與傳統(tǒng)存儲(chǔ)架構(gòu)相比提速3倍。
(2)能耗
能耗是計(jì)算系統(tǒng)在處理大數(shù)據(jù)應(yīng)用時(shí)主要考慮的因素之一。DRAM內(nèi)存系統(tǒng)的漏電效應(yīng)導(dǎo)致處理大數(shù)據(jù)時(shí)會(huì)引起很高的能耗,如何平衡能源效率和系統(tǒng)性能是目前PCM/DRAM混合存儲(chǔ)系統(tǒng)的熱門(mén)研究方向。在計(jì)算系統(tǒng)中,圖形處理器(graphics processing unit,GPU)用于在通用內(nèi)存中處理大規(guī)模的并行計(jì)算,這些并行計(jì)算會(huì)引起很多寫(xiě)操作,由于PCM的讀寫(xiě)不對(duì)稱,寫(xiě)操作會(huì)引起更多的能耗(354%)[27],Wang B利用PCM/DRAM混合存儲(chǔ)架構(gòu),通過(guò)硬件和編譯器優(yōu)化GPU大規(guī)模并行計(jì)算環(huán)境下的能源效率。該方案通過(guò)調(diào)整硬件的構(gòu)成和編譯器的功能,利用一個(gè)基于并行處理的數(shù)據(jù)遷移框架完成數(shù)據(jù)遷移,并利用編譯器抉擇數(shù)據(jù)遷移和數(shù)據(jù)部署的計(jì)劃,避免引起額外的讀寫(xiě)操作,消耗大量能源。最終與只有DRAM構(gòu)成和只有PCM構(gòu)成的并行計(jì)算內(nèi)存系統(tǒng)相比,在系統(tǒng)性能損失不到2%的情況下,能源效率分別提升了6%和49%[27]。
3.2 混合存儲(chǔ)架構(gòu)的優(yōu)化策略
基于以上論證,PCM/DRAM混合存儲(chǔ)架構(gòu)在能耗和性能方面能對(duì)大數(shù)據(jù)應(yīng)用進(jìn)行優(yōu)化,但是PCM讀寫(xiě)不對(duì)稱和耐久度有限的缺陷會(huì)使混合存儲(chǔ)架構(gòu)在大數(shù)據(jù)應(yīng)用時(shí)出現(xiàn)時(shí)延高、壽命短等問(wèn)題,下文將針對(duì)能耗和性能這兩方面討論優(yōu)化策略和算法。
3.2.1 減少PCM上的寫(xiě)操作
由于PCM的讀寫(xiě)性能和能耗不對(duì)稱,過(guò)多的PCM寫(xiě)操作會(huì)引起額外的系統(tǒng)的內(nèi)存訪問(wèn)開(kāi)銷(xiāo)和能源開(kāi)銷(xiāo),減少部署在PCM上的寫(xiě)操作不僅可以延長(zhǎng)PCM的壽命,也可以提升PCM內(nèi)存系統(tǒng)在應(yīng)用環(huán)境下的性能,減少應(yīng)用中的能耗開(kāi)銷(xiāo),達(dá)到更好的能耗優(yōu)化效果。目前,減少PCM上的寫(xiě)操作主要分為兩個(gè)方面:冷熱數(shù)據(jù)劃分和讀寫(xiě)傾向劃分[15]。
(1)冷熱數(shù)據(jù)劃分
根據(jù)數(shù)據(jù)被訪問(wèn)的頻率和讀寫(xiě)操作的次數(shù)可以將數(shù)據(jù)劃分為冷數(shù)據(jù)和熱數(shù)據(jù),將冷數(shù)據(jù)存放在PCM上,將熱數(shù)據(jù)存放在DRAM上,就可以將寫(xiě)操作次數(shù)更多、訪問(wèn)更頻繁的數(shù)據(jù)從PCM遷移到DRAM上,同時(shí)也就將寫(xiě)操作遷移到DRAM上,減少PCM上的寫(xiě)操作。
為了提升PCM系統(tǒng)性能,延長(zhǎng)PCM系統(tǒng)的壽命,Lee S等人[28]提出了基于臟數(shù)據(jù)位和寫(xiě)頻繁度的時(shí)鐘算法 (CLOCK with dirty bits and write frequency,CLOCKDWF)。算法利用PCM和DRAM同級(jí)混合存儲(chǔ)架構(gòu),將讀請(qǐng)求和干凈頁(yè)面(clean page)部署在PCM上,將寫(xiě)請(qǐng)求和臟頁(yè)面部署在DRAM上。當(dāng)一個(gè)寫(xiě)操作發(fā)生在PCM時(shí),這個(gè)頁(yè)面就會(huì)被標(biāo)記為臟頁(yè)面, CLOCK-DWF算法就將這個(gè)頁(yè)面從PCM遷移到DRAM上。如果此時(shí)DRAM為滿,那么就會(huì)選中一個(gè)頁(yè)面遷移到PCM上。算法通過(guò)統(tǒng)計(jì)頁(yè)面的寫(xiě)頻繁度區(qū)分頁(yè)面是熱還是冷,并通過(guò)臟數(shù)據(jù)位統(tǒng)計(jì)頁(yè)面的寫(xiě)頻繁度。如果一個(gè)候選頁(yè)面的臟數(shù)據(jù)位為“1”,那么算法就會(huì)將這個(gè)頁(yè)面標(biāo)記為干凈頁(yè)面但在寫(xiě)頻繁度上加1,如果候選頁(yè)面的臟數(shù)據(jù)位為“0”,那么算法就會(huì)檢查這個(gè)頁(yè)面是熱還是冷,如果為冷就遷移到PCM上。實(shí)驗(yàn)結(jié)果表明,與DRAM作為PCM緩存的混合存儲(chǔ)架構(gòu)相比,算法平均能減少35.4%的寫(xiě)操作,與傳統(tǒng)的CLOCK算法相比,平均減少14%的寫(xiě)操作。
為了避免冷熱數(shù)據(jù)劃分帶來(lái)的遷移導(dǎo)致過(guò)多的寫(xiě)操作,Lee M等人[29]提出了遷移優(yōu)化的頁(yè)面替換時(shí)鐘(migrationoptimized CLOCK,M-CLOCK)算法。為了有效地區(qū)分DRAM上寫(xiě)頻繁頁(yè)面和讀頻繁頁(yè)面,M-CLOCK算法利用了兩個(gè)時(shí)鐘指針:D指針和C指針。D指針負(fù)責(zé)管理熱臟頁(yè)面,C指針負(fù)責(zé)管理短期內(nèi)不具有寫(xiě)傾向的頁(yè)面。當(dāng)一個(gè)候選頁(yè)面被寫(xiě)操作重新訪問(wèn)時(shí),M-CLOCK算法就會(huì)通過(guò)寫(xiě)傾向位和臟數(shù)據(jù)位確定這個(gè)頁(yè)面是否為熱臟頁(yè)面。當(dāng)DRAM為滿,D指針就會(huì)在臟熱頁(yè)面里選擇一個(gè)具有最低寫(xiě)頻繁度的頁(yè)面,如果頁(yè)面寫(xiě)傾向位為“1”,那么這個(gè)頁(yè)面就會(huì)被選為候選頁(yè)面,否則就將頁(yè)面寫(xiě)傾向位設(shè)置為“0”,然后指向下一個(gè)頁(yè)面。如果D指針找不到最低寫(xiě)頻繁度的頁(yè)面(寫(xiě)傾向位為“0”),那么就會(huì)由C指針在干凈頁(yè)面內(nèi)選擇候選頁(yè)面。M-CLOCK通過(guò)這樣的遷移方法,將DRAM中的讀冷頁(yè)面遷移到PCM上,與過(guò)往的算法相比,能減少最多98%的寫(xiě)操作,最高提升34%的系統(tǒng)訪問(wèn)時(shí)間。
為了在盡量小的性能代價(jià)下,優(yōu)化混合存儲(chǔ)系統(tǒng)在應(yīng)用環(huán)境下的能耗,避免不必要的DRAM到PCM頁(yè)面遷移所引起的寫(xiě)操作,Shin D J等人[30]提出了自適應(yīng)的頁(yè)面組管理(adaptive page grouping,APG)。算法認(rèn)為物理距離相近的頁(yè)面具有相似的訪問(wèn)請(qǐng)求次數(shù),于是根據(jù)頁(yè)面的物理距離,統(tǒng)計(jì)頁(yè)表中各個(gè)頁(yè)面中讀寫(xiě)請(qǐng)求的次數(shù),從而決定訪問(wèn)熱度,將訪問(wèn)熱度相近的頁(yè)面聚類(lèi)在一個(gè)分組,如果組的平均熱度超過(guò)熱度閾值,則將組設(shè)定為熱組;如果低于冷度閾值,就設(shè)定為冷組;熱度閾值和冷度閾值之間的頁(yè)面為暖組(warm group)。算法將熱組部署在DRAM上,冷組部署在PCM上,暖組不發(fā)生遷移操作。實(shí)驗(yàn)結(jié)果表明,算法能有效地減少PCM寫(xiě)操作,且與DRAM系統(tǒng)相比,減少36%的能源消耗,與低時(shí)延的PRAM相比,內(nèi)存訪問(wèn)效率增加了80%。
CLOCK-DWF算法通過(guò)數(shù)據(jù)被訪問(wèn)的頻繁度與寫(xiě)訪問(wèn)請(qǐng)求的歷史記錄,準(zhǔn)確地估計(jì)數(shù)據(jù)未來(lái)的冷熱度,并利用DRAM吸收更多的寫(xiě)操作,但當(dāng)寫(xiě)請(qǐng)求訪問(wèn)PCM上的一個(gè)頁(yè)面時(shí),就會(huì)將這個(gè)頁(yè)面遷移到DRAM上,如果此時(shí)DRAM已滿,則需從DRAM里面選取冷頁(yè)面與PCM交換,如果后面這個(gè)頁(yè)面被寫(xiě)請(qǐng)求訪問(wèn),那么又要將頁(yè)面換回到DRAM,引起大量的額外讀寫(xiě)操作。而且當(dāng)發(fā)生缺頁(yè)錯(cuò)誤時(shí),CLOCK-DWF將大部分的錯(cuò)誤頁(yè)面部署到了PCM上,這也會(huì)引起額外的PCM的寫(xiě)操作。
M-CLOCK算法根據(jù)數(shù)據(jù)的訪問(wèn)熱度和是否為臟數(shù)據(jù)來(lái)決定數(shù)據(jù)是否需要遷移,還利用了一個(gè)懶惰遷移(lazy migration)來(lái)延緩PCM到DRAM的頁(yè)面遷移,解決CLOCK-DWF的遷移顛簸問(wèn)題。
APG算法通過(guò)將熱度相近的頁(yè)面聚類(lèi)在一起,并設(shè)置閾值,將頁(yè)面組劃分為冷熱組,但APG不能區(qū)分空間相鄰的頁(yè)面的訪問(wèn)頻繁度,可能會(huì)造成冷頁(yè)面的遷移,導(dǎo)致額外的內(nèi)存訪問(wèn)時(shí)延。
(2)讀寫(xiě)傾向劃分
讀寫(xiě)傾向的劃分主要是根據(jù)數(shù)據(jù)的寫(xiě)操作次數(shù)將數(shù)據(jù)劃分為具有讀傾向還是具有寫(xiě)傾向,將具有讀傾向的數(shù)據(jù)存放在PCM上,將具有寫(xiě)傾向的數(shù)據(jù)存放在DRAM上,可以減少部署在PCM上引起寫(xiě)操作的數(shù)據(jù),達(dá)到減少PCM上寫(xiě)操作的目的。
以往的研究發(fā)現(xiàn),大多數(shù)高速緩存中的未命中是由于被訪問(wèn)的數(shù)據(jù)塊同時(shí)被重疊地映射到相同的緩存組,而在DRAM作為PCM的緩存的混合存儲(chǔ)架構(gòu)中,緩存的未命中會(huì)導(dǎo)致數(shù)據(jù)寫(xiě)回到PCM上?;诖?,Khouzani H A等人[31]提出了基于沖突的頁(yè)面分配算法(conflict-aware proactive page allocation algorithm),利用虛擬頁(yè)面映射到物理頁(yè)的靈活性,根據(jù)頁(yè)面分段信息和DRAM中的未命中,通過(guò)設(shè)置不同的DRAM組,重新分布DRAM中有很高寫(xiě)傾向的頁(yè)面。該算法由兩個(gè)部分組成。首先,內(nèi)存控制器(MC)負(fù)責(zé)記錄DRAM上未命中的頁(yè)面沖突。其次,當(dāng)內(nèi)存發(fā)生頁(yè)面錯(cuò)誤時(shí),操作系統(tǒng)負(fù)責(zé)比較DRAM中的內(nèi)存塊并選出具有更少頁(yè)面沖突的內(nèi)存塊。這個(gè)部分能決定硬件的構(gòu)成并展示在硬件成本和算法復(fù)雜度方面如何最大限度地發(fā)揮算法的效率。當(dāng)一個(gè)訪問(wèn)請(qǐng)求在DRAM上未能命中,而在PCM上命中了,這意味著,DRAM的大小或者相關(guān)性提高,就可以避免這次未命中并將其記作一個(gè)未命中的沖突。該算法為了記錄DRAM內(nèi)存塊上的這些不同數(shù)量的未命中的沖突,在每個(gè)內(nèi)存塊上設(shè)置了一個(gè)基于硬件的計(jì)數(shù)器。由于這些沖突數(shù)量可能會(huì)非常大,基于存儲(chǔ)開(kāi)銷(xiāo)和訪問(wèn)時(shí)間的考慮,該算法只在DRAM內(nèi)存塊添加了一個(gè)2位飽和計(jì)數(shù)器用于區(qū)分更高沖突性和更低沖突性的內(nèi)存塊。內(nèi)存管理器負(fù)責(zé)管理DRAM和PCM之間的通信,也負(fù)責(zé)管理內(nèi)存塊中的計(jì)數(shù)器。當(dāng)發(fā)生更高優(yōu)先級(jí)沖突時(shí)(即DRAM未命中而引起的寫(xiě)回),計(jì)數(shù)器的值就增加2;如果是常規(guī)沖突,計(jì)數(shù)器的值增加1。當(dāng)發(fā)生頁(yè)面錯(cuò)誤時(shí),如果請(qǐng)求的頁(yè)面不屬于文本段,則將分配給該頁(yè)一個(gè)更低沖突性的內(nèi)存塊。由于該算法只使用了一個(gè)低開(kāi)銷(xiāo)的2位飽和計(jì)數(shù)器,直接比較所有計(jì)數(shù)器來(lái)找出最小沖突塊的代價(jià)是昂貴和不必要的,因此該算法還利用了經(jīng)典的時(shí)鐘算法來(lái)找出最低沖突性的內(nèi)存塊。當(dāng)發(fā)生缺頁(yè)錯(cuò)誤時(shí),時(shí)鐘指針以循環(huán)的方式逐個(gè)掃描DRAM內(nèi)存塊中的計(jì)數(shù)器。如果計(jì)數(shù)器的值不為零,則計(jì)數(shù)器的值減1;當(dāng)時(shí)鐘指針指向計(jì)數(shù)器值為零的內(nèi)存塊時(shí),這個(gè)內(nèi)存塊就會(huì)被選中,并作為候選的具有更低沖突性的內(nèi)存塊,保存發(fā)生錯(cuò)誤的頁(yè)面。在記錄驅(qū)動(dòng)的實(shí)驗(yàn)中證實(shí)了該算法能有效地減少PCM上的寫(xiě)操作(25%)和提高DRAM中的命中率(減少27%的未命中),因此,同時(shí)也能提高DRAM/PCM混合內(nèi)存的性能和壽命。
為了減少PCM上的寫(xiě)操作并且保持穩(wěn)定的系統(tǒng)應(yīng)用性能,Wu Z L等人[32]提出了基于訪問(wèn)形式預(yù)測(cè)的LRU(accesspattern-prediction-based LRU,APPLRU)算法(②LRU 是 least recently used 的縮寫(xiě),即最近最少使用。LRU算法是內(nèi)存管理的一種頁(yè)面置換算法)。APP-LRU算法中包含3個(gè)鏈表:LRU鏈表、PCM鏈表和DRAM鏈表。LRU鏈表用于管理PCM和DRAM,當(dāng)一個(gè)頁(yè)面被訪問(wèn)時(shí),就會(huì)將其放置在LRU鏈表中最近最頻繁使用的一段。PCM鏈表和DRAM鏈表中所有的頁(yè)面都會(huì)被分成若干含有一定數(shù)量頁(yè)面的組。PCM鏈表中的同一組內(nèi)所有的頁(yè)面都具有相等的寫(xiě)次數(shù),而DRAM鏈表中的同一組內(nèi)頁(yè)面具有相等的讀次數(shù)。PCM鏈表(DRAM鏈表)頭部的組的頁(yè)面具有最大的寫(xiě)(讀)操作次數(shù),當(dāng)一個(gè)頁(yè)面從磁盤(pán)里讀出來(lái)或從DRAM遷移到PCM(或從PCM遷移到DRAM)時(shí),這個(gè)頁(yè)面就會(huì)被放置到鏈表的尾部。當(dāng)讀取或更新DRAM中的頁(yè)面時(shí),該頁(yè)面將會(huì)從屬于PCM鏈表中的組遷移到屬于DRAM鏈中的組。APP-LRU就是通過(guò)這樣的遷移方法來(lái)減少PCM上的寫(xiě)操作的,在有效地減少PCM上寫(xiě)操作的前提下,與CLOCK-DWF算法和LRU算法相比,其遷移操作是傳統(tǒng)算法的1/6左右。
為了在減少PCM上的寫(xiě)操作的同時(shí)保證系統(tǒng)的命中率,確保系統(tǒng)在應(yīng)用中的性能,Chen K等人[33]提出了保持命中率的LRU (maintain-hit-ratio LRU,MHRLRU) 替換算法。算法使用LRU鏈表管理混合內(nèi)存架構(gòu)中的內(nèi)存頁(yè)面,所有頁(yè)面根據(jù)其最近的使用時(shí)間排列在內(nèi)存中。當(dāng)出現(xiàn)缺頁(yè)錯(cuò)誤時(shí),在最近最少使用位置的頁(yè)面就會(huì)被選中。在DRAM里,算法使用了一個(gè)基于DRAM寫(xiě)數(shù)據(jù)的LRU鏈表(DRAM write-aware LRU list,DWL),DRAM上的頁(yè)面根據(jù)最近的寫(xiě)傾向時(shí)間排列在這個(gè)鏈表中。當(dāng)發(fā)生頁(yè)面錯(cuò)誤并選中一個(gè)候選頁(yè)面時(shí),MHR-LRU就會(huì)檢測(cè)頁(yè)面的訪問(wèn)是讀還是寫(xiě),并找出候選頁(yè)面的位置,如果頁(yè)面的訪問(wèn)模式為寫(xiě)并且部署在PCM上,那么算法實(shí)行頁(yè)面的遷移,釋放PCM中的候選頁(yè)面,并且將DWL鏈表中在最近最少使用位置的頁(yè)面遷移到PCM上,那么這個(gè)提出寫(xiě)訪問(wèn)請(qǐng)求的頁(yè)面就會(huì)被部署到DRAM上。實(shí)驗(yàn)結(jié)果表明,與其他算法相比,MHR-LRU算法在保證命中率的情況下平均減少6.48%的PCM上的寫(xiě)操作。
將具有寫(xiě)傾向的頁(yè)面從PCM上遷移到DRAM上可以有效地減少PCM,基于沖突的頁(yè)面分配算法利用DRAM作為緩存,吸收了具有寫(xiě)傾向的頁(yè)面,減少了PCM上的寫(xiě)操作。在此前提下,還減少了由于緩存的未命中引起的對(duì)PCM的寫(xiě)操作,最終延長(zhǎng)了系統(tǒng)的壽命,同時(shí)也提升了系統(tǒng)的性能。但是對(duì)于利用DRAM作為PCM的緩存的混合內(nèi)存架構(gòu),由于DRAM只作為系統(tǒng)的緩存,在后續(xù)的應(yīng)用運(yùn)行中,如果PCM上的頁(yè)面發(fā)生讀寫(xiě)傾向的改變,那么就無(wú)法將PCM上的頁(yè)面遷移到DRAM上。
APP-LRU和MHR-LRU算法都利用了PCM/DRAM同級(jí)混合內(nèi)存架構(gòu),APPLRU算法通過(guò)元數(shù)據(jù)表記錄頁(yè)面的訪問(wèn)歷史區(qū)分頁(yè)面的讀寫(xiě)傾向,MHR-LRU算法通過(guò)LRU鏈表管理讀寫(xiě)傾向劃分后按照使用時(shí)間排序的頁(yè)面。APP-LRU由于沒(méi)有考慮頁(yè)面的使用頻繁度,所以可能會(huì)遷移最近使用比較少的頁(yè)面,降低系統(tǒng)的命中率,增加額外的時(shí)間開(kāi)銷(xiāo);MHR-LRU算法通過(guò)使用頻繁度的排序,保證了系統(tǒng)的命中率,但是僅能將DRAM上讀傾向使用不頻繁的頁(yè)面遷移到PCM上,不能將PCM上寫(xiě)傾向使用頻繁的頁(yè)面遷移到DRAM上,不能更有效地減少PCM上的寫(xiě)操作。
3.2.2 磨損均衡
在很多大數(shù)據(jù)應(yīng)用場(chǎng)景中,寫(xiě)操作會(huì)集中在內(nèi)存的某一行或某一頁(yè),承受過(guò)多寫(xiě)操作的區(qū)域由于耐久度有限會(huì)更早地?fù)p壞,從而縮短PCM的整體壽命。磨損均衡(wear leveling)就是研究如何使PCM上的寫(xiě)操作均勻分布,以延長(zhǎng)計(jì)算系統(tǒng)壽命的算法?,F(xiàn)有的具有代表性的工作有以下幾個(gè)。
(1)Start-gap磨損均衡
由于現(xiàn)有的磨損均衡算法需要一個(gè)很大的表來(lái)追蹤發(fā)生在PCM上寫(xiě)操作的次數(shù),Qureshi M K等人[25]提出了Start-gap磨損均衡算法,利用一個(gè)簡(jiǎn)單的物理機(jī)構(gòu),既避免了已有的磨損均衡算法所需的存儲(chǔ)空間和操作時(shí)延,同時(shí)也盡可能地達(dá)到了理想磨損均衡算法下PCM的壽命。算法利用了兩個(gè)物理寄存器Start和gap,還用了一個(gè)空隔行(gap line),每發(fā)生100次寫(xiě)操作就移動(dòng)一次gap指針和空隔行,同時(shí)gap寄存器中的數(shù)值減1(gap寄存器初始值為當(dāng)前總行數(shù)減1),每次寫(xiě)操作都從Start指針開(kāi)始,其基本過(guò)程如圖1所示。當(dāng)gap指針指向0時(shí),Start指針和寄存器加1。Start-gap磨損均衡算法就是通過(guò)在連續(xù)不斷的PCM空間上不停地移動(dòng)空隔行(不進(jìn)行寫(xiě)操作)達(dá)到磨損均衡效果的。但由于寫(xiě)操作通常聚集在相鄰的行,實(shí)驗(yàn)過(guò)程中,只能達(dá)到理想情況53%的效果,所以需要隨機(jī)地分配地址,將寫(xiě)操作均勻地分布在不同的區(qū)域。Start-gap磨損均衡算法在此基礎(chǔ)上還分別引入了密碼學(xué)技術(shù)Feistel網(wǎng)絡(luò)和一個(gè)隨機(jī)可逆的二維矩陣,達(dá)到邏輯地址對(duì)物理地址的隨機(jī)代數(shù)式映射。最終,在采取了隨機(jī)地址映射的方法后, Start-gap磨損均衡算法能達(dá)到超過(guò)97%的理想狀況下PCM壽命的效果。

圖1 Start-gap磨損均衡算法
(2)軟件實(shí)現(xiàn)的磨損均衡算法
軟件實(shí)現(xiàn)的磨損均衡算法主要考慮的問(wèn)題是,通過(guò)程序或者編譯器均勻分配PCM上的寫(xiě)操作,并考慮內(nèi)存訪問(wèn)的時(shí)間。Hu J等人[34]提出的基于嵌入式系統(tǒng)的軟件實(shí)現(xiàn)磨損均衡,在數(shù)據(jù)已經(jīng)被部署在混合存儲(chǔ)系統(tǒng)中,并且已經(jīng)知道每個(gè)數(shù)據(jù)將會(huì)引起多少寫(xiě)操作的前提下,利用程序?qū)崿F(xiàn)均勻分配PCM上的寫(xiě)操作。循環(huán)的開(kāi)始和結(jié)束將程序劃分為不同的區(qū)域。首先用最優(yōu)數(shù)據(jù)分配(optimal data allocation,ODA)算法(③該算法無(wú)差別對(duì)待PCM的地址,總是將PCM上第一個(gè)可用的空間分配給變量配置數(shù)據(jù)的分布,以獲得分配在PCM上的變量)。然后利用一個(gè)數(shù)組W記錄PCM上每個(gè)地址的寫(xiě)操作次數(shù)。然后軟件實(shí)現(xiàn)的磨損均衡算法將PCM按照地址的前后分為兩個(gè)組。對(duì)于第一個(gè)組的數(shù)據(jù)Dj,程序先通過(guò)數(shù)組W獲得地址addrj的寫(xiě)次數(shù),然后對(duì)地址addrj的寫(xiě)次數(shù)和數(shù)據(jù)Dj的寫(xiě)次數(shù)進(jìn)行求和,再與閾值進(jìn)行比較,如果寫(xiě)次數(shù)的和小于或等于閾值,那么數(shù)據(jù)Dj將會(huì)留在原地址;否則,就從W里面找出寫(xiě)次數(shù)最少的地址,并計(jì)算該地址的寫(xiě)次數(shù)與數(shù)據(jù)Dj寫(xiě)次數(shù)的和值,如果未超過(guò)閾值,則將數(shù)據(jù)Dj遷移到這個(gè)地址上,若超過(guò)閾值,則要重新設(shè)置閾值。對(duì)于第二組的數(shù)據(jù)Dk,程序直接從W找出寫(xiě)次數(shù)最少的地址,并計(jì)算該地址的寫(xiě)次數(shù)與數(shù)據(jù)Dk寫(xiě)次數(shù)的和,如果未超過(guò)閾值,則將數(shù)據(jù)Dj遷移到這個(gè)地址上,若超過(guò)閾值,則要重新設(shè)置閾值。最后實(shí)驗(yàn)中,軟件實(shí)現(xiàn)的磨損均衡算法在先利用ODA算法進(jìn)行數(shù)據(jù)部署、在可接受的額外的應(yīng)用時(shí)間開(kāi)銷(xiāo)(5.46%)的前提下,使PCM的壽命時(shí)間平均延長(zhǎng)了3.13倍。
(3)自適應(yīng)磨損均衡算法
為了減少和均勻分配PCM上的寫(xiě)操作,Park S K等人[35]提出了自適應(yīng)磨損均衡算法(adaptive wear-leveling algorithm)。由于臟數(shù)據(jù)的清除會(huì)引起PCM上的寫(xiě)回(write back),增加應(yīng)用過(guò)程PCM上的寫(xiě)操作,因此首先將DRAM (3%)作為PCM的緩存并將DRAM緩存分為兩層,分別處理臟數(shù)據(jù)(dirty data)與干凈數(shù)據(jù)(clean data)。第一層利用傳統(tǒng)的LRU算法決定臟數(shù)據(jù)和干凈數(shù)據(jù)的替換順序,第二層通過(guò)統(tǒng)計(jì)臟數(shù)據(jù)的寫(xiě)操作次數(shù),將寫(xiě)操作次數(shù)最少的臟數(shù)據(jù)替換出去。基于操作時(shí)間與一次所要交換的頁(yè)面數(shù)量的考慮,自適應(yīng)磨損均衡算法第二步提供了一個(gè)自適應(yīng)的多數(shù)據(jù)交換和移動(dòng)的框架以實(shí)現(xiàn)磨損均衡。通過(guò)周期性地檢測(cè)最大寫(xiě)入數(shù)的增量,查詢寫(xiě)入訪問(wèn)是否傾向某一行或某一頁(yè),以此動(dòng)態(tài)地調(diào)整頁(yè)面交換的負(fù)載模式。自適應(yīng)磨損均衡算法的最后,在頁(yè)面或行交換的時(shí)候,將頁(yè)面或行內(nèi)所包含的臟數(shù)據(jù)也先替換出緩存,并寫(xiě)回到PCM上,避免了頁(yè)面或行交換和臟數(shù)據(jù)的重復(fù)寫(xiě)操作。通過(guò)這3個(gè)步驟,自適應(yīng)磨損均衡算法能將以往的磨損均衡算法下的PCM壽命從0.68年提升到5.32年。
(4)基于行的映射和循環(huán)利用磨損算法
已有的錯(cuò)誤修改指針(error correcting pointers,ECP)算法在出現(xiàn)了不可修復(fù)的錯(cuò)誤行的時(shí)候就將其標(biāo)記為不可用,這樣就會(huì)造成PCM上的空間不連續(xù),不能與Start-gap磨損均衡算法組合起來(lái), Jiang L[36]提出了基于行的映射和循環(huán)利用(line-level mapping and salvaging,LLS)磨損均衡算法。首先將PCM上一定的空間分為28個(gè)數(shù)據(jù)塊作為主空間,其余的作為備用的PCM空間。用已有的循環(huán)利用算法ECP對(duì)出現(xiàn)錯(cuò)誤的行進(jìn)行修復(fù),當(dāng)出現(xiàn)第一個(gè)ECP無(wú)法修復(fù)的錯(cuò)誤行時(shí),就啟用LLS,LLS將主空間的錯(cuò)誤行部署到備用的PCM的空間,這樣錯(cuò)誤行就能被標(biāo)記并且重映射到一個(gè)健康的行中。當(dāng)PCM主空間里損壞的行比備用PCM空間里還未損壞的行多時(shí),就會(huì)激活PCM的大小調(diào)整,以提供PCM上連續(xù)的地址空間。LLS磨損均衡算法比ECP算法下PCM壽命平均延長(zhǎng)了24%。
(5)基于桶和基于數(shù)組的磨損均衡算法
基于時(shí)間和空間復(fù)雜度的考慮, Chen C H等人[37]提出了基于桶和基于數(shù)組的磨損均衡算法?;谕暗哪p均衡算法如圖2所示。先將PCM內(nèi)的頁(yè)面以桶的形式按照頁(yè)面的磨損程度聚類(lèi),在桶內(nèi)的頁(yè)面按照寫(xiě)次數(shù)的多少排列,再將這些桶分為兩個(gè)鏈表,即空閑鏈表和正在被占用的鏈表。當(dāng)需要調(diào)用頁(yè)面時(shí),先調(diào)用空閑鏈表中磨損程度最低的頁(yè)面,如這個(gè)桶為空,則將正在被占用鏈表的基桶(磨損程度最低)頁(yè)面的數(shù)據(jù)寫(xiě)入寫(xiě)次數(shù)最多的空閑頁(yè)面,然后再調(diào)用這個(gè)頁(yè)面?;跀?shù)組的磨損均衡算法如圖3所示。在物理頁(yè)面上添加了兩個(gè)物理計(jì)數(shù)器b、m和一個(gè)指針,當(dāng)頁(yè)面的磨損程度超過(guò)了初始設(shè)定的閾值,就以指針為中心,將鄰近的若干個(gè)頁(yè)面磨損程度最低的頁(yè)面交換。最終,基于桶和基于數(shù)組的磨損均衡算法下的PCM內(nèi)存壽命達(dá)到了完全磨損均衡理想狀態(tài)下的80%。

圖2 基于桶的磨損均衡算法

圖3 基于數(shù)組的磨損均衡算法
磨損均衡算法小結(jié)如下。
● Start-gap算法將PCM內(nèi)存行移動(dòng)到鄰近的地址空間,利用兩種隨機(jī)映射地址的技術(shù),分配區(qū)域集中的寫(xiě)操作。
● 軟件實(shí)現(xiàn)的磨損均衡算法通過(guò)數(shù)組統(tǒng)計(jì)數(shù)據(jù)的寫(xiě)次數(shù),利用軟件對(duì)數(shù)據(jù)進(jìn)行遷移,但由于該算法要先利用ODA算法對(duì)數(shù)據(jù)進(jìn)行分配,所以會(huì)引起額外的內(nèi)存訪問(wèn)時(shí)間開(kāi)銷(xiāo)。
● 自適應(yīng)的磨損均衡算法能夠根據(jù)寫(xiě)操作的分布情況,自動(dòng)調(diào)整數(shù)據(jù)的交換和遷移,在盡量避免不必要的交換和遷移引起的額外的寫(xiě)操作前提下,達(dá)到了良好的延長(zhǎng)PCM壽命的效果。但是該算法需要大量的附加硬件支持,每512 MB的PRAM就需要32 MB的內(nèi)存空間以支持算法。
● LLS算法通過(guò)對(duì)硬件故障修復(fù)技術(shù)ECP的改進(jìn),使PCM上的可使用地址恢復(fù)連續(xù)性,得以和Start-gap算法結(jié)合,同時(shí)實(shí)現(xiàn)PCM的回收利用和磨損均衡的效果。
● 基于桶和基于數(shù)組的磨損均衡算法僅能達(dá)到理想狀態(tài)下PCM壽命的80%,會(huì)引起2%的額外寫(xiě)操作,但由于算法不需要跟蹤內(nèi)存頁(yè)面的寫(xiě)頻繁度,所以對(duì)系統(tǒng)的性能影響幾乎為零。
3.2.3 PCM的故障處理
傳統(tǒng)的DRAM技術(shù)擁有容錯(cuò)技術(shù),在沒(méi)有壽命限制的情況下,內(nèi)存系統(tǒng)利用錯(cuò)誤檢查和糾正(error checking and correcting,ECC)編碼修復(fù)DRAM中的瞬態(tài)故障。然而在PCM內(nèi)存系統(tǒng)中,由于在一定次數(shù)的寫(xiě)操作之后,存儲(chǔ)單元很快被磨損,基于電阻內(nèi)存的ECC修復(fù)編碼快速失效。一旦存儲(chǔ)單元出現(xiàn)了故障,該單元上的數(shù)據(jù)就無(wú)法繼續(xù)使用,PCM也會(huì)被認(rèn)定為已經(jīng)損壞,所以,在PCM/DRAM混合存儲(chǔ)系統(tǒng)中,需要新的容錯(cuò)機(jī)制以修復(fù)內(nèi)存存儲(chǔ)單元的故障。為了保證存儲(chǔ)在PCM上的數(shù)據(jù)的安全性,修復(fù)PCM上的故障存儲(chǔ)單元,目前主要的工作如下。
(1)ECP算法
為了盡量減少寫(xiě)磨損,處理永久性的存儲(chǔ)單元故障,提高內(nèi)存系統(tǒng)的壽命,修正早期的存儲(chǔ)單元故障,Schechter S等人[38]提出了ECP算法。ECP算法通過(guò)將故障單元的位置永久編碼到表中并分配單元替它們來(lái)糾正錯(cuò)誤。圖4(a)顯示了ECP算法一個(gè)最簡(jiǎn)單的應(yīng)用,即對(duì)一個(gè)位的修正,當(dāng)一個(gè)位出現(xiàn)故障時(shí),這個(gè)位就會(huì)被標(biāo)記為滿,修正指針就會(huì)指向這個(gè)位,然后就會(huì)用一個(gè)新的存儲(chǔ)單元存儲(chǔ)這個(gè)位原來(lái)具有的值。當(dāng)需要對(duì)內(nèi)存單元進(jìn)行n位修正時(shí),如圖4(b)所示,當(dāng)出現(xiàn)第一個(gè)故障時(shí),就利用修正記錄位0進(jìn)行修正。當(dāng)替代的單元也出現(xiàn)了故障時(shí)就用圖4(c)的方法進(jìn)行修正,當(dāng)修正指針發(fā)生故障時(shí)就會(huì)利用圖4(d)的方法進(jìn)行修正。ECP算法在大量的寫(xiě)操作發(fā)生后,仍能保持頁(yè)面的健康性。

圖4 ECP的應(yīng)用例子
(2)動(dòng)態(tài)復(fù)制的內(nèi)存
為了在硬件和操作系統(tǒng)層面有效地延續(xù)PCM的物理可使用性,Ipek E等人[11]提出了動(dòng)態(tài)復(fù)制的內(nèi)存(dynamically replicated memory,DRM)算法修復(fù)PCM上的硬件故障。為了便于動(dòng)態(tài)復(fù)制,DRM引入了一個(gè)新的間接尋址層,位于系統(tǒng)的物理地址空間的PCM和真實(shí)地址空間的PCM之間。物理地址中的每一頁(yè)都被映射到一個(gè)未使用過(guò)的無(wú)故障的真實(shí)頁(yè)面,或兩個(gè)有故障的但在同一個(gè)位上沒(méi)有故障的兼容性頁(yè)面,因此,可以配對(duì)在每一個(gè)位上進(jìn)行讀寫(xiě)操作的物理頁(yè)。為了完成這樣的映射,DRM算法在PCM上存儲(chǔ)了3個(gè)獨(dú)立的副本表,若對(duì)第一個(gè)副本表的復(fù)制出現(xiàn)錯(cuò)誤,那么系統(tǒng)就會(huì)嘗試第二個(gè)副本表、第三個(gè)副本表;如果所有的副本表都出現(xiàn)故障,相應(yīng)的物理頁(yè)面都會(huì)被棄用。為了從映射之后的PCM地址獲得數(shù)據(jù),DRM算法利用硬件追蹤真實(shí)地址,并利用操作系統(tǒng)保證沒(méi)有不兼容的頁(yè)面被配對(duì)在一起。DRM算法與傳統(tǒng)的內(nèi)存錯(cuò)誤修復(fù)機(jī)制相比,在過(guò)程變化程度(process variation,以下用CoV表示)不同的情況下,能不同程度地延長(zhǎng)PCM的壽命。當(dāng)CoV=0.1、CoV=0.2和CoV=0.3時(shí), DRM能分別將PCM的壽命延長(zhǎng)至1.25倍、2.7倍和40倍。
PCM的故障處理技術(shù)算法小結(jié)如下。
● ECP算法利用操作系統(tǒng)對(duì)出現(xiàn)故障的單元進(jìn)行追蹤,將其標(biāo)記為不可用并取回?cái)?shù)據(jù)。ECP算法標(biāo)記所有的出錯(cuò)單元,因此當(dāng)故障單元數(shù)超出了一定的限制后,ECP算法便無(wú)法進(jìn)行修復(fù),并且會(huì)使PCM上的可使用地址空間不再連續(xù),無(wú)法繼續(xù)使用其他利用隨機(jī)地址映射方式的優(yōu)化技術(shù)。
● DRM算法動(dòng)態(tài)地配對(duì)兩個(gè)故障頁(yè)面,從中獲得一個(gè)可使用的頁(yè)面來(lái)回復(fù)PCM早期的故障頁(yè)面,但動(dòng)態(tài)配對(duì)需要檢測(cè)兩個(gè)故障頁(yè)面的故障單元數(shù)和故障單元的位置,如果故障頁(yè)面的故障單元過(guò)多,會(huì)導(dǎo)致大量額外的時(shí)間開(kāi)銷(xiāo)和能耗開(kāi)銷(xiāo)。
所以故障修復(fù)處理技術(shù)必須與現(xiàn)有的磨損均衡算法和減少PCM上寫(xiě)操作的算法結(jié)合起來(lái),才能更好地延長(zhǎng)PCM的壽命,并節(jié)省時(shí)間與能源開(kāi)銷(xiāo)。
4、 混合內(nèi)存未來(lái)的優(yōu)化及研究方向
4.1 已有工作的不足
現(xiàn)有工作存在以下不足。
● DRAM作為PCM的緩存的混合內(nèi)存架構(gòu),如果沒(méi)有額外的存儲(chǔ)容量的支持與開(kāi)銷(xiāo),系統(tǒng)的性能優(yōu)化效果不能得到保證,與存儲(chǔ)容量較小的DRAM系統(tǒng)相比,性能的優(yōu)化效果顯著,但與存儲(chǔ)容量相近的DRAM系統(tǒng)相比,性能上還是存在微弱的劣勢(shì)。
● 在PCM和DRAM同級(jí)混合內(nèi)存架構(gòu)中,數(shù)據(jù)部署在不同的存儲(chǔ)介質(zhì)中,而由于PCM和DRAM的性能屬性不同,對(duì)數(shù)據(jù)進(jìn)行冷熱度和讀寫(xiě)傾向劃分時(shí),需要統(tǒng)計(jì)數(shù)據(jù)的讀寫(xiě)歷史次數(shù),這會(huì)導(dǎo)致額外的時(shí)間開(kāi)銷(xiāo)和能耗開(kāi)銷(xiāo),而且數(shù)據(jù)的劃分會(huì)導(dǎo)致遷移操作,這些遷移操作會(huì)引起額外的讀寫(xiě)操作,降低PCM和DRAM同級(jí)混合內(nèi)存架構(gòu)的優(yōu)化效果。
● 對(duì)于讀寫(xiě)傾向的劃分和冷熱數(shù)據(jù)劃分,冷頁(yè)面的遷移會(huì)帶來(lái)PCM上不必要的寫(xiě)操作,同時(shí)PCM與DRAM之間的頁(yè)面遷移次數(shù)與遷移時(shí)機(jī)的不恰當(dāng)也會(huì)導(dǎo)致遷移顛簸。
● 在以往磨損均衡的研究工作中,數(shù)據(jù)的交換和遷移會(huì)導(dǎo)致額外的PCM上的寫(xiě)操作,目前可依靠良好的閾值設(shè)定來(lái)控制數(shù)據(jù)的交換、遷移的次數(shù)和頻繁度,但靜態(tài)的閾值設(shè)定無(wú)法滿足應(yīng)用寫(xiě)操作的動(dòng)態(tài)變化,動(dòng)態(tài)的閾值設(shè)定則需要硬件、操作系統(tǒng)或者軟件來(lái)支撐,帶來(lái)額外的成本開(kāi)銷(xiāo)與時(shí)間開(kāi)銷(xiāo)。
● 在PCM的故障處理中,最顯著的問(wèn)題是,當(dāng)PCM的故障單元超過(guò)一定的限制后,這些技術(shù)就無(wú)法再使用,而將磨損均衡與故障處理的技術(shù)結(jié)合起來(lái)需要提供連續(xù)的PCM可使用的地址空間。
4.2 PCM/DRAM混合內(nèi)存的優(yōu)化研究方向
在大數(shù)據(jù)應(yīng)用優(yōu)化的需求背景下,對(duì)PCM/DRAM混合內(nèi)存管理策略的研究,關(guān)鍵在于結(jié)合應(yīng)用特征以及算法策略,并進(jìn)行適當(dāng)?shù)恼{(diào)整以適應(yīng)不同的應(yīng)用指標(biāo)和架構(gòu)環(huán)境。例如,磨損均衡中所提到的LLS算法,就是通過(guò)改變故障修復(fù)策略,在PCM上保持了連續(xù)的空間,滿足了磨損均衡算法的需求。基于PCM和DRAM的關(guān)系,可以在兩種不同的架構(gòu)方式下考慮。
在DRAM作為PCM緩存的混合內(nèi)存架構(gòu)下,由于PCM的空間地址是獨(dú)立的,所以可利用PCM的故障修復(fù)處理技術(shù),延長(zhǎng)系統(tǒng)的壽命。DRAM作為PCM緩存的混合內(nèi)存架構(gòu),可采用磨損均衡算法對(duì)PCM內(nèi)存上的寫(xiě)操作進(jìn)行分布,延長(zhǎng)系統(tǒng)的壽命。此外還可充分發(fā)揮DRAM緩存能吸收PCM上的寫(xiě)操作的優(yōu)勢(shì),允許磨損均衡的遷移和交換操作引起的額外寫(xiě)操作。同時(shí)擴(kuò)大內(nèi)存PCM的容量,使系統(tǒng)的性能得到提升,也可以承擔(dān)由于控制磨損均衡所需要的硬件開(kāi)銷(xiāo)。在保證了系統(tǒng)的壽命的前提下,利用DRAM作為PCM緩存的混合內(nèi)存架構(gòu)自身的性能優(yōu)勢(shì),對(duì)大數(shù)據(jù)應(yīng)用進(jìn)行優(yōu)化。
在PCM/DRAM同級(jí)混合內(nèi)存架構(gòu)下,由于PCM動(dòng)態(tài)(讀寫(xiě)操作)能耗比DRAM高,PCM的寫(xiě)操作效率是DRAM的1/8,所以在PCM/DRAM同級(jí)混合內(nèi)存架構(gòu)中,需要將寫(xiě)傾向的頁(yè)面或其他存儲(chǔ)結(jié)構(gòu)維持在DRAM上,并且要維持系統(tǒng)的命中率,避免遷移之后的缺頁(yè)錯(cuò)誤。利用DRAM動(dòng)態(tài)能耗低和讀寫(xiě)操作性能優(yōu)化的特性,避免DRAM的漏電。對(duì)于在PCM/DRAM同級(jí)混合內(nèi)存架構(gòu)上減少PCM寫(xiě)操作的算法,可以動(dòng)態(tài)地統(tǒng)計(jì)DRAM上和PCM上頁(yè)面的寫(xiě)操作,根據(jù)這些頁(yè)面的冷熱度聚類(lèi)在一起,再依據(jù)它們的寫(xiě)操作次數(shù)按升序排列在某一數(shù)據(jù)結(jié)構(gòu)中,當(dāng)PCM發(fā)生寫(xiě)操作時(shí),釋放PCM被選中頁(yè)面,從DRAM中將寫(xiě)次數(shù)最少、最冷(最空閑)的頁(yè)面遷移到PCM上,若DRAM無(wú)空閑頁(yè)面,就將PCM中寫(xiě)次數(shù)最多、最熱的頁(yè)面與DRAM中寫(xiě)次數(shù)最少、最冷(最空閑)的頁(yè)面交換。
基于上述分析,可以將未來(lái)的研究方向[39]概括為以下幾個(gè)方面 。
● 研究?jī)?nèi)存容量配置對(duì)性能的影響?;旌蟽?nèi)存可以按比例為1:1的DRAM和PCM容量比配置,但PCM具有良好的擴(kuò)展性,因此未來(lái)的內(nèi)存容量配置也可能為較大容量PCM和較小容量DRAM的混合,所以需要研究評(píng)測(cè)內(nèi)存容量配置對(duì)內(nèi)存性能的影響。此外,結(jié)合大數(shù)據(jù)應(yīng)用的具體特征,例如數(shù)據(jù)的讀寫(xiě)頻率與模式等,獲得最佳內(nèi)存配置在性能與成本間的平衡。
● 研究不同結(jié)構(gòu)的混合內(nèi)存DRAM/PCM。混合內(nèi)存分為平行結(jié)構(gòu)和層次結(jié)構(gòu)。平行結(jié)構(gòu)可避免存儲(chǔ)相同的數(shù)據(jù),更好利用DRAM的容量;層次結(jié)構(gòu)是DRAM作為PCM的緩存,能更好地緩存頻繁訪問(wèn)的數(shù)據(jù),減少DRAM和PCM間的數(shù)據(jù)移動(dòng)開(kāi)銷(xiāo)。此外,結(jié)合大數(shù)據(jù)應(yīng)用的具體特征,探索不同結(jié)構(gòu)的適用性問(wèn)題。
● 研究PCM的耐寫(xiě)性問(wèn)題[40]。過(guò)多的寫(xiě)操作會(huì)導(dǎo)致存儲(chǔ)單元磨損,減少PCM壽命,可分析在不同應(yīng)用的讀寫(xiě)、訪問(wèn)、存儲(chǔ)的行為下PCM使用的壽命情況,從而從體系結(jié)構(gòu)方面更好地提高壽命及其耐寫(xiě)度。研究新的耗損均衡算法,根據(jù)應(yīng)用場(chǎng)景的不同動(dòng)態(tài)地調(diào)整讀寫(xiě)策略,延長(zhǎng)新型NVM的使用時(shí)間。研究新的緩存訪問(wèn)控制算法來(lái)減少寫(xiě)操作。
● 研究混合內(nèi)存能耗問(wèn)題。PCM靜態(tài)功耗低于DRAM,但是動(dòng)態(tài)寫(xiě)能耗高于DRAM,因此需研究不同大數(shù)據(jù)應(yīng)用下兩者內(nèi)存的能耗差異,并基于這種差異探索應(yīng)用感知的優(yōu)化策略,降低內(nèi)存器件的能耗。此外,研究低開(kāi)銷(xiāo)的糾錯(cuò)方法,在保證糾錯(cuò)準(zhǔn)確率的前提下盡量減小開(kāi)銷(xiāo)。
● 研究PCM的安全性問(wèn)題。利用PCM的非易失性,可以在內(nèi)存中直接對(duì)部分?jǐn)?shù)據(jù)做持久化。另外,PCM非易失性的特征帶來(lái)了數(shù)據(jù)信息泄露的安全隱患。研究壞塊復(fù)用方法,將壞塊中未損壞的部分組合起來(lái);研究壞塊丟棄策略,將緩存中出現(xiàn)的壞塊丟棄,然后指導(dǎo)其他數(shù)據(jù)被正確分配、訪問(wèn),維護(hù)數(shù)據(jù)的一致性。目前,安全性研究展望主要包括4個(gè)方面[41]:融合權(quán)限和保護(hù)機(jī)制、加強(qiáng)程序安全、使用非易失緩存和提供硬件支持保持?jǐn)?shù)據(jù)一致性、減少PCM的保持時(shí)間以降低數(shù)據(jù)被竊取的風(fēng)險(xiǎn)。
● 研究數(shù)據(jù)標(biāo)簽化及數(shù)據(jù)部署問(wèn)題。與傳統(tǒng)內(nèi)存系統(tǒng)不同的是,混合存儲(chǔ)架構(gòu)下每種內(nèi)存介質(zhì)的性能差異較大,導(dǎo)致在內(nèi)存頁(yè)面管理上必須將不同存儲(chǔ)介質(zhì)的頁(yè)面區(qū)別對(duì)待,因此合適的數(shù)據(jù)分類(lèi)非常重要[15]。需要研究數(shù)據(jù)標(biāo)簽化(即對(duì)數(shù)據(jù)進(jìn)行劃分)以及數(shù)據(jù)在混合存儲(chǔ)器件上的部署問(wèn)題。
5 、結(jié)束語(yǔ)
本文通過(guò)分析大數(shù)據(jù)的應(yīng)用特征和以PCM為代表的新型非易失性存儲(chǔ)器的特點(diǎn),闡述了混合存儲(chǔ)架構(gòu)在性能和能耗方面與傳統(tǒng)內(nèi)存架構(gòu)相比存在的優(yōu)勢(shì),并討論了混合架構(gòu)的優(yōu)化算法,總結(jié)了未來(lái)的優(yōu)化和研究方向。在未來(lái)的發(fā)展中,PCM/DRAM混合內(nèi)存架構(gòu)可以逐漸取代原有的DRAM架構(gòu),成為計(jì)算系統(tǒng)的內(nèi)存。通過(guò)擴(kuò)充內(nèi)存的容量,提升計(jì)算系統(tǒng)在大數(shù)據(jù)應(yīng)用背景下的性能,節(jié)省計(jì)算系統(tǒng)在大數(shù)據(jù)應(yīng)用背景下的能耗,滿足大數(shù)據(jù)應(yīng)用的數(shù)字化、全球化、超海量、實(shí)時(shí)性和中心化等特性。