• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向大數(shù)據(jù)的異構(gòu)內(nèi)存系統(tǒng)

      2018-08-15 05:50:00王孝遠(yuǎn)廖小飛劉海坤金海
      大數(shù)據(jù) 2018年4期
      關(guān)鍵詞:檢查點(diǎn)異構(gòu)內(nèi)存

      王孝遠(yuǎn),廖小飛,劉海坤,金海

      華中科技大學(xué)計(jì)算機(jī)學(xué)院,湖北 武漢 430074

      1 引言

      隨著大數(shù)據(jù)應(yīng)用的蓬勃發(fā)展,計(jì)算模式已經(jīng)從傳統(tǒng)的以計(jì)算為中心轉(zhuǎn)變?yōu)橐源笠?guī)模數(shù)據(jù)處理為中心。大數(shù)據(jù)處理的需求不僅僅表現(xiàn)為要處理的數(shù)據(jù)規(guī)模大,而且要求能快速實(shí)時(shí)地響應(yīng)。數(shù)據(jù)的快速增長(zhǎng)和以數(shù)據(jù)為中心的計(jì)算模式給現(xiàn)有的計(jì)算機(jī)存儲(chǔ)系統(tǒng)帶來(lái)了新的挑戰(zhàn)。傳統(tǒng)以外存為主體的存儲(chǔ)模式需要頻繁地在內(nèi)存和外存之間交換數(shù)據(jù),這使得大數(shù)據(jù)處理的大部分時(shí)間都耗費(fèi)在數(shù)據(jù)移動(dòng)過(guò)程中,內(nèi)外存之間過(guò)低的I/O帶寬成了大數(shù)據(jù)處理系統(tǒng)的性能瓶頸。為了提高大數(shù)據(jù)處理的效率,內(nèi)存計(jì)算模式應(yīng)運(yùn)而生。內(nèi)存計(jì)算模式要求計(jì)算機(jī)系統(tǒng)能夠提供大容量的內(nèi)存,從而盡可能多地把需要處理的數(shù)據(jù)緩存在內(nèi)存中,從而消除磁盤I/O的性能瓶頸。

      然而,傳統(tǒng)的動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(dynamic random access memory,DRAM)因其存儲(chǔ)能耗大、存儲(chǔ)密度小、可擴(kuò)展性有限、刷新和靜態(tài)功耗高等缺點(diǎn),已經(jīng)無(wú)法滿足應(yīng)用越來(lái)越大的內(nèi)存需求。近些年涌現(xiàn)的非易失性存儲(chǔ)器(nonvolatile memory,NVM),如相變存儲(chǔ)器(phase change memory,PCM)、磁性隨機(jī)存儲(chǔ)器(magnetic random access memory,MRAM)等,具有可隨機(jī)訪問(wèn)、存儲(chǔ)密度大、可擴(kuò)展性強(qiáng)、無(wú)刷新和閑置功耗等特點(diǎn),成為替代DRAM提供大容量?jī)?nèi)存的理想存儲(chǔ)器。但NVM具有訪問(wèn)時(shí)延高、寫次數(shù)有限、寫功耗大等缺點(diǎn)(見(jiàn)表1),因此直接使用NVM替代DRAM是不可取的。

      為了充分利用NVM容量大和DRAM讀寫性能好的優(yōu)勢(shì),并且最大限度地避免各種存儲(chǔ)介質(zhì)的缺陷,學(xué)術(shù)界提出使用DRAM-NVM異構(gòu)內(nèi)存架構(gòu),通過(guò)混合使用小容量DRAM和大容量NVM,將DRAM作為NVM內(nèi)存的緩存,或者將頻繁訪問(wèn)的數(shù)據(jù)放置于DRAM中來(lái)提升系統(tǒng)性能,降低NVM高訪問(wèn)時(shí)延的缺陷。DRAMNVM異構(gòu)內(nèi)存系統(tǒng)的設(shè)計(jì)與優(yōu)化成了研究的熱點(diǎn)[1-9]。

      目前主要有層次和平行兩種異構(gòu)內(nèi)存架構(gòu)。DRAM-NVM層次化異構(gòu)內(nèi)存架構(gòu)如圖1(a)所示,在這種架構(gòu)下,DRAM作為大容量NVM內(nèi)存的緩存,其組織形式類似于傳統(tǒng)的片上緩存,CPU請(qǐng)求的數(shù)據(jù)在最后一級(jí)片上緩存缺失后,首先查找DRAM緩存,若數(shù)據(jù)在DRAM緩存中缺失,則訪問(wèn)NVM內(nèi)存,并將缺失的數(shù)據(jù)塊從NVM內(nèi)存復(fù)制到DRAM緩存中。DRAM-NVM平行架構(gòu)如圖1(b)所示,在這種架構(gòu)下,NVM和DRAM均作為內(nèi)存使用,由操作系統(tǒng)統(tǒng)一管理。

      表1 DRAM與NVM的性能參數(shù)對(duì)比

      圖1 異構(gòu)內(nèi)存架構(gòu)

      層次架構(gòu)的異構(gòu)內(nèi)存系統(tǒng)中,DRAM等快速存儲(chǔ)器作為NVM的緩存,緩存操作時(shí)間開銷較小,但是對(duì)于局部性較差的應(yīng)用,可能會(huì)引起DRAM緩存頻繁換入換出,從而導(dǎo)致性能降低。平行架構(gòu)的異構(gòu)內(nèi)存系統(tǒng)中,為了提高異構(gòu)內(nèi)存的性能,常用的優(yōu)化策略是熱頁(yè)遷移[4,7,9-11],即對(duì)應(yīng)用頁(yè)面信息進(jìn)行監(jiān)測(cè),將頻繁訪問(wèn)和頻繁寫的NVM頁(yè)框遷移到DRAM中,但是遷移操作的時(shí)間開銷較大,并且監(jiān)測(cè)開銷較大。

      以上兩種方案各有利弊,但是無(wú)論采取何種方案,最終目的都是盡可能同時(shí)發(fā)揮DRAM與NVM的自身優(yōu)勢(shì),從而改善異構(gòu)內(nèi)存各方面的性能,更好地為大數(shù)據(jù)應(yīng)用服務(wù)。由此可見(jiàn),異構(gòu)內(nèi)存給現(xiàn)有計(jì)算機(jī)設(shè)計(jì)帶來(lái)了新的挑戰(zhàn),這些挑戰(zhàn)主要集中在體系結(jié)構(gòu)層面、系統(tǒng)軟件層面、編程模型層面(如圖2所示)。

      具體說(shuō)來(lái),上述3個(gè)層面主要面臨以下挑戰(zhàn)。

      ● 在體系結(jié)構(gòu)層面,如何根據(jù)NVM和DRAM的特性以及不同應(yīng)用的訪存特征,設(shè)計(jì)可動(dòng)態(tài)適配的存儲(chǔ)架構(gòu),是異構(gòu)內(nèi)存系統(tǒng)設(shè)計(jì)面臨的主要挑戰(zhàn)。

      圖2 異構(gòu)內(nèi)存研究挑戰(zhàn)

      ● 在系統(tǒng)軟件層面,由于NVM和DRAM在性能、能耗和耐久性方面的差異,異構(gòu)內(nèi)存資源管理面臨的挑戰(zhàn)是:如何對(duì)異構(gòu)內(nèi)存中不同存儲(chǔ)介質(zhì)進(jìn)行差異化管理和調(diào)度;如何應(yīng)對(duì)可用地址空間增大而引起的旁路轉(zhuǎn)換緩沖(translation lookaside buffer,TLB)缺失率和地址轉(zhuǎn)換開銷增大的問(wèn)題;如何根據(jù)應(yīng)用的特征決定哪類數(shù)據(jù)組織形式更適合大規(guī)模事務(wù)數(shù)據(jù)的處理;如何結(jié)合新的內(nèi)存特性,設(shè)計(jì)高效、低傳輸量的數(shù)據(jù)可靠性保證機(jī)制。

      ● 在編程模型層面,異構(gòu)內(nèi)存給程序員帶來(lái)的主要挑戰(zhàn)是:如何設(shè)計(jì)統(tǒng)一的用戶接口與編程抽象、執(zhí)行模型與相應(yīng)的編譯器。

      本文將概述DRAM/NVM異構(gòu)內(nèi)存的發(fā)展現(xiàn)狀,總結(jié)目前異構(gòu)內(nèi)存的體系結(jié)構(gòu)、系統(tǒng)軟件、編程模型等層面的研究進(jìn)展,并分析現(xiàn)有研究的優(yōu)點(diǎn)與不足,提出針對(duì)性的解決方案。最后,以大規(guī)模圖計(jì)算系統(tǒng)為例,給出異構(gòu)內(nèi)存系統(tǒng)針對(duì)應(yīng)用層面的優(yōu)化方向。

      2 國(guó)內(nèi)外發(fā)展現(xiàn)狀

      為了克服異構(gòu)內(nèi)存中各介質(zhì)的缺點(diǎn),并充分發(fā)揮各自的優(yōu)點(diǎn),現(xiàn)有的研究主要是集中在異構(gòu)內(nèi)存系統(tǒng)架構(gòu)、異構(gòu)內(nèi)存管理機(jī)制、異構(gòu)內(nèi)存持久化和異構(gòu)內(nèi)存緩存管理等方面。

      2.1 異構(gòu)內(nèi)存系統(tǒng)架構(gòu)

      為了研究NVM與DRAM組成的異構(gòu)內(nèi)存系統(tǒng)架構(gòu)以及兩種介質(zhì)的容量配比問(wèn)題,Qureshi M K等人[1]把DRAM設(shè)計(jì)成NVM的一個(gè)小容量緩存區(qū),并利用操作系統(tǒng)頁(yè)表管理NVM,基于此頁(yè)表,文中使用了一系列的優(yōu)化策略來(lái)減少對(duì)NVM的寫操作次數(shù),從而延長(zhǎng)了NVM的使用壽命。這些策略主要有3種:延遲寫機(jī)制,該機(jī)制的原理是在發(fā)生缺頁(yè)的時(shí)候,首先從磁盤讀入DRAM,當(dāng)DRAM里的頁(yè)面需要逐出的時(shí)候,根據(jù)頁(yè)面是否被修改的信息來(lái)決定頁(yè)面是否被寫入NVM;緩存行粒度寫回機(jī)制,該機(jī)制的原理是只將DRAM中被標(biāo)記為臟的緩存行寫回NVM中,從而減少對(duì)NVM的不必要的寫操作;細(xì)粒度磨損均衡機(jī)制,該機(jī)制的原理是通過(guò)細(xì)粒度地管理邏輯扇區(qū)和物理扇區(qū)之間的映射關(guān)系,達(dá)到磨損均衡的目的。實(shí)驗(yàn)證明,DRAM容量與NVM容量的比在3%左右時(shí),可以更好地利用DRAM與NVM組成的異構(gòu)內(nèi)存系統(tǒng)。當(dāng)然,細(xì)粒度的映射機(jī)制也帶來(lái)了較大的空間開銷,tag的查詢、比較也增加了系統(tǒng)時(shí)延,降低了系統(tǒng)性能。

      通過(guò)將DRAM和NVM放在同一個(gè)地址空間內(nèi),Zhang W等人[12]實(shí)現(xiàn)了DRAM與NVM的平行架構(gòu)的異構(gòu)內(nèi)存系統(tǒng)。他們的想法是以頁(yè)面為粒度對(duì)應(yīng)用程序的頁(yè)面進(jìn)行分類,將頻繁修改的頁(yè)面放入DRAM,將不頻繁修改的頁(yè)面放入NVM。具體實(shí)現(xiàn)機(jī)制是,首先所有的頁(yè)面都加載到NVM中,隨著程序的運(yùn)行,對(duì)頁(yè)面進(jìn)行引用計(jì)數(shù),當(dāng)某個(gè)頁(yè)面的計(jì)數(shù)達(dá)到一定閾值時(shí),則會(huì)被遷移到NVM中。在進(jìn)行頁(yè)面計(jì)數(shù)的過(guò)程中,文章采用了多級(jí)隊(duì)列(multiqueue)的管理策略:使用多個(gè)最近最少使用(least recently used,LRU)隊(duì)列,每個(gè)隊(duì)列代表不同的引用等級(jí),根據(jù)頁(yè)面的引用計(jì)數(shù)值對(duì)頁(yè)面進(jìn)行分類,引用等級(jí)越高的隊(duì)列中的頁(yè)面越容易被遷移到DRAM中。與此同時(shí),也會(huì)把之前在DRAM中但具有較少引用計(jì)數(shù)值的頁(yè)面回遷到NVM中。但是該方案計(jì)數(shù)和隊(duì)列維護(hù)的開銷巨大,頁(yè)面遷移的操作也會(huì)給系統(tǒng)帶來(lái)影響。

      通過(guò)利用應(yīng)用的空間局部性原理,Mladenov R[2]設(shè)計(jì)了擁有小容量DRAM緩存和大容量NVM的異構(gòu)內(nèi)存系統(tǒng)。該系統(tǒng)將DRAM設(shè)計(jì)成NVM的小容量緩存,對(duì)系統(tǒng)的訪存請(qǐng)求的處理進(jìn)行優(yōu)化。對(duì)于讀請(qǐng)求,系統(tǒng)優(yōu)先訪問(wèn)DRAM緩存,如果在DRAM緩存中命中,則直接返回DRAM緩存中的數(shù)據(jù);若DRAM緩存未命中,則接著訪問(wèn)NVM,并把對(duì)應(yīng)的NVM數(shù)據(jù)緩存到DRAM中。對(duì)于寫請(qǐng)求,若DRAM未滿,則直接寫入DRAM緩存;若DRAM已滿,則基于LRU算法進(jìn)行DRAM緩存頁(yè)面的替換,并把替換下來(lái)的頁(yè)面寫回到NVM中。為了進(jìn)一步減少頁(yè)面替換對(duì)性能的影響,該系統(tǒng)會(huì)定期檢測(cè)DRAM的緩存狀態(tài),并在內(nèi)存空閑時(shí),根據(jù)LRU替換策略進(jìn)行頁(yè)面替換,從而預(yù)留DRAM空間用于響應(yīng)后來(lái)的DRAM寫請(qǐng)求。該系統(tǒng)有效地彌補(bǔ)了NVM訪問(wèn)速度慢的不足,更有利于充分發(fā)揮NVM的優(yōu)勢(shì)。

      為了進(jìn)一步提升DRAM緩存的優(yōu)勢(shì),Loh G H等人[13]以一個(gè)Cache line(64 byte)的粒度對(duì)DRAM進(jìn)行管理,而在DRAM與NVM之間采用組相連的方式進(jìn)行映射。同時(shí),為了降低tag查詢開銷對(duì)系統(tǒng)的影響,該系統(tǒng)將元數(shù)據(jù)和數(shù)據(jù)放在同一個(gè)存儲(chǔ)陣列的行(bank row)中,從而在DRAM命中時(shí)快速訪問(wèn)數(shù)據(jù),有效地縮短了DRAM命中時(shí)的串行查找開銷。然而,在DRAM緩存未命中的時(shí)候,該系統(tǒng)需要4次訪存:訪問(wèn)DRAM中的元數(shù)據(jù),判斷DRAM緩存命中與否;訪問(wèn)NVM并獲取相應(yīng)數(shù)據(jù)塊;將獲取的數(shù)據(jù)塊加載到DRAM緩存中;訪問(wèn)DRAM緩存,獲取相應(yīng)數(shù)據(jù)。由此可見(jiàn),該系統(tǒng)缺點(diǎn)也很明顯:由于DRAM缺失代價(jià)太高,該系統(tǒng)不適用于局部性較差的應(yīng)用;由于DRAM管理的粒度較小,tag的存儲(chǔ)開銷較大(9%左右),降低了DRAM實(shí)際可用容量;硬件改動(dòng)較大,可擴(kuò)展性差。

      2.2 異構(gòu)內(nèi)存管理機(jī)制

      為了降低異構(gòu)內(nèi)存的系統(tǒng)功耗,Park H等人[3]提出3種優(yōu)化策略。

      ● DRAM能耗動(dòng)態(tài)監(jiān)測(cè)機(jī)制,以DRAM行(row)為粒度對(duì)DRAM中的數(shù)據(jù)進(jìn)行監(jiān)測(cè),系統(tǒng)維護(hù)每一個(gè)DRAM row的監(jiān)測(cè)值,并定期衰減此檢測(cè)值,一旦檢測(cè)值為0,則對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行寫回操作,從而減少DRAM刷新能耗。

      ● DRAM bypass機(jī)制,該系統(tǒng)認(rèn)為對(duì)數(shù)據(jù)的第一次訪問(wèn)并不能說(shuō)明數(shù)據(jù)是熱數(shù)據(jù),當(dāng)此數(shù)據(jù)再次被訪問(wèn)的時(shí)候才會(huì)被判定為熱數(shù)據(jù),才會(huì)被遷移到DRAM。

      ● 臟數(shù)據(jù)保持機(jī)制,因?yàn)槌绦虻木植啃栽?,臟數(shù)據(jù)接下來(lái)被訪問(wèn)的概率較高,所以盡可能讓臟數(shù)據(jù)在DRAM中保持較長(zhǎng)時(shí)間,從而降低DRAM換入換出的開銷,并且在寫回時(shí)進(jìn)行寫操作合并策略,降低對(duì)NVM的寫頻次,更進(jìn)一步地降低系統(tǒng)功耗。該方案降低了系統(tǒng)的功耗,但是定期的頁(yè)面寫回操作對(duì)系統(tǒng)性能有一定的影響,并且策略的實(shí)現(xiàn)復(fù)雜度較高。

      通過(guò)對(duì)各個(gè)Linux段的訪存模式分析,Park Y等人[14]提出了基于段的頁(yè)面放置機(jī)制。Linux把線性地址空間分為很多個(gè)段,每一個(gè)段中的數(shù)據(jù)具有相似的訪存特征。比如文本段包含只讀的運(yùn)行代碼,訪存模式為只讀,而堆棧段包含返回地址、參數(shù)和本地變量等經(jīng)常被讀寫的數(shù)據(jù),因此堆棧段的訪存模式是頻繁讀寫的模式。根據(jù)這些信息,在程序運(yùn)行之前,針對(duì)性地把讀寫頻繁的段的數(shù)據(jù)放置在DRAM中,而把只讀的段的數(shù)據(jù)放在NVM中,從而提升異構(gòu)內(nèi)存系統(tǒng)性能。

      通過(guò)對(duì)多級(jí)隊(duì)列算法進(jìn)行改進(jìn)以及對(duì)隊(duì)內(nèi)元素進(jìn)行動(dòng)態(tài)排序,Ramos L E等人[4]提出了一種基于排序策略的異構(gòu)內(nèi)存頁(yè)面放置(rank-based page placement,RaPP)機(jī)制。與參考文獻(xiàn)[12]類似,RaPP的理念也是盡量將寫入操作較為頻繁的頁(yè)面放入DRAM,而將寫入操作不頻繁的頁(yè)面放入NVM。不同的是,首先,RaPP通過(guò)修改內(nèi)存控制器監(jiān)測(cè)頁(yè)面的寫操作頻次以及頁(yè)面寫密集程度;其次,RaPP根據(jù)監(jiān)測(cè)信息對(duì)頁(yè)面進(jìn)行動(dòng)態(tài)排序;最后,RaPP在發(fā)生頁(yè)面替換時(shí),優(yōu)先替換隊(duì)列中排名較為靠前的頁(yè)面。雖然該方案緩解了頁(yè)面統(tǒng)計(jì)的開銷問(wèn)題,但并未從根本上解決問(wèn)題,頁(yè)面遷移操作也給系統(tǒng)帶來(lái)了不小的性能影響。

      通過(guò)對(duì)堆中對(duì)象的訪存特征的分析,Wei W等人[5]提出一種軟硬件結(jié)合的異構(gòu)內(nèi)存頁(yè)面放置框架——二維頁(yè)面放置機(jī)制(2-phase page placement framework,2PP)。2PP的原理主要分以下兩步:

      ● 離線分析,通過(guò)離線運(yùn)行應(yīng)用程序,獲取并分析應(yīng)用程序的訪存特征(讀寫比例、程序計(jì)數(shù)器對(duì)象特征等),從而指導(dǎo)頁(yè)面的初始放置;

      ● 運(yùn)行時(shí)調(diào)整,通過(guò)在內(nèi)存控制器中對(duì)頁(yè)面進(jìn)行讀寫監(jiān)測(cè),周期性地計(jì)算頁(yè)面的讀寫比例,從而篩選出要遷移的頁(yè)。

      2.3 異構(gòu)內(nèi)存持久化

      通過(guò)使用一種基于影子內(nèi)存(shadow memory)的數(shù)據(jù)持久化方式,Liu M X等人[15]提出了一個(gè)將程序執(zhí)行和數(shù)據(jù)持久化操作完全解耦的NVM持久內(nèi)存框架——DUDETM。DUDETM的原理是,將系統(tǒng)執(zhí)行需要使用的數(shù)據(jù)全部從NVM緩存到位于DRAM的影子內(nèi)存,系統(tǒng)對(duì)持久數(shù)據(jù)的訪問(wèn)均在影子內(nèi)存中完成,不直接訪問(wèn)NVM。當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行持久化處理時(shí),DUDETM采用本地更新的方式將數(shù)據(jù)寫入影子內(nèi)存,同時(shí)將對(duì)應(yīng)的日志信息寫入DRAM緩沖區(qū)。待事務(wù)提交之后,后臺(tái)進(jìn)程會(huì)異步地將日志數(shù)據(jù)持久化到NVM中,并根據(jù)日志數(shù)據(jù)更新位于NVM中的持久數(shù)據(jù)。相比于不具有數(shù)據(jù)持久化功能的內(nèi)存事務(wù)系統(tǒng),DUDETM僅犧牲了7.4%~24.6%的系統(tǒng)吞吐量就實(shí)現(xiàn)了數(shù)據(jù)的持久化操作。但是作為層次化的架構(gòu),系統(tǒng)的性能很大程度上受限于DRAM緩存容量。

      為了能夠充分發(fā)揮DRAM/NVM異構(gòu)內(nèi)存性能,同時(shí)保證數(shù)據(jù)強(qiáng)制一致性,Xu J等人[6]設(shè)計(jì)了一個(gè)新穎的內(nèi)存文件系統(tǒng)——非易失內(nèi)存加速的日志文件系統(tǒng)(non-volatile memory accelerated logstructured file system,NOVA)。NOVA通過(guò)日志來(lái)保證用戶對(duì)文件系統(tǒng)元數(shù)據(jù)、文件數(shù)據(jù)操作的原子性,并且提供保證數(shù)據(jù)一致性的Atomic_mmap接口使應(yīng)用可以直接訪問(wèn)NVM。在提高系統(tǒng)訪問(wèn)性能方面,NOVA擴(kuò)展了已有的Log-structured文件系統(tǒng)技術(shù),充分發(fā)揮NVM可快速隨機(jī)訪問(wèn)數(shù)據(jù)的特征,并且為每一個(gè)索引節(jié)點(diǎn)(inode)都配置了獨(dú)立的日志結(jié)構(gòu),以保證訪問(wèn)的高并行性。此外,NOVA還將復(fù)雜的元數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在DRAM中,以加速數(shù)據(jù)查找。

      2.4 異構(gòu)內(nèi)存緩存管理

      Wang Z等人[16]提出了一種基于NVM的寫回操作感知的緩存動(dòng)態(tài)管理機(jī)制(writeback-aware dynamic cache management for nvm-based main memory system,WADE)。針對(duì)NVM的讀寫時(shí)延不同,WADE把片上共享高速末級(jí)緩存(last level cache,LLC)分成兩個(gè)列表:一個(gè)僅包含頻繁寫回的Cache line的列表,一個(gè)記錄其他Cache line的列表。通過(guò)替換非頻繁寫回的Cache line,WADE可以顯著地減少對(duì)NVM內(nèi)存的寫操作頻次。但是WADE并不適合應(yīng)用在異構(gòu)內(nèi)存環(huán)境中,原因如下。

      ● 異構(gòu)環(huán)境中有4種訪存模式:DRAM讀、DRAM寫、NVM讀、NVM寫,在LLC中維護(hù)4個(gè)列表,開銷比較大。

      ● 未考慮DRAM與NVM之間的性能差異,因?yàn)樵诋悩?gòu)內(nèi)存中,DRAM與NVM之間的性能差異要大于NVM讀操作與NVM寫操作之間的性能差異,所以發(fā)生緩存替換時(shí),應(yīng)當(dāng)充分考慮DRAM與NVM的特性。

      Wei W等人[17]提出一種面向異構(gòu)內(nèi)存的緩存管理(hybrid memory-aware partition in shared last-level cache,HAP)機(jī)制。HAP機(jī)制把整個(gè)共享緩存分成兩個(gè)部分,一部分用來(lái)緩存NVM頁(yè)面的數(shù)據(jù),一部分用來(lái)緩存DRAM頁(yè)面對(duì)應(yīng)的數(shù)據(jù),通過(guò)對(duì)采樣數(shù)據(jù)的分析比較,動(dòng)態(tài)調(diào)整NVM緩存區(qū)在整個(gè)緩存的占比,以達(dá)到LLC中DRAM 與NVM緩存塊最優(yōu)的配比。HAP機(jī)制只有5種配比策略,因此并不能保證每次調(diào)整都是最優(yōu)配比。因?yàn)镠AP機(jī)制使用簡(jiǎn)單的LRU替換算法,發(fā)生LLC缺失的時(shí)候并未考慮替換塊的類型,所以會(huì)導(dǎo)致因替換而影響緩存塊的最優(yōu)配比,造成性能的降低。

      3 異構(gòu)內(nèi)存關(guān)鍵技術(shù)

      為了更好地發(fā)揮異構(gòu)內(nèi)存的優(yōu)勢(shì),同時(shí)也為了給上層應(yīng)用提供高效、可靠的數(shù)據(jù)訪存和資源調(diào)度與管理等系統(tǒng)級(jí)支撐,主要從異構(gòu)內(nèi)存全系統(tǒng)模擬器、異構(gòu)內(nèi)存體系結(jié)構(gòu)、異構(gòu)內(nèi)存系統(tǒng)軟件、異構(gòu)內(nèi)存編程模型、面向大數(shù)據(jù)的異構(gòu)內(nèi)存應(yīng)用等方面進(jìn)行研究。

      3.1 異構(gòu)內(nèi)存全系統(tǒng)模擬器

      目前市場(chǎng)中還沒(méi)有商用的NVM產(chǎn)品,DRAM-NVM異構(gòu)內(nèi)存相關(guān)的研究主要是基于模擬器完成的。目前主流的模擬器主要有兩種:軟件模擬器和硬件仿真器。

      3.1.1 軟件模擬器

      軟件模擬器基于Zsim[18]和NVMain[19]的異構(gòu)內(nèi)存模擬器進(jìn)行研究。Zsim是基于Intel Pin[20]工具集的系統(tǒng)模擬器,它使用Intel Pin工具集獲取應(yīng)用程序訪存虛擬地址,并將虛擬地址重放到模擬的系統(tǒng)架構(gòu)中(包括CPU、片上高速緩存、片上互聯(lián)網(wǎng)絡(luò)等)模擬應(yīng)用執(zhí)行和訪存特征。此外,Zsim還支持使用其他內(nèi)存模擬器(如NVMain、DRAMSim2[21]等)模擬其物理內(nèi)存。NVMain是精確的內(nèi)存模擬器,可模擬DRAM和NVM等物理內(nèi)存的訪問(wèn)行為和物理組件。

      但當(dāng)前Zsim模擬器缺少TLB以及操作系統(tǒng)的模擬模塊,通過(guò)Intel Pin工具集獲取訪存虛擬地址后,直接用該虛擬地址訪問(wèn)Cache模塊和內(nèi)存模塊。不同應(yīng)用虛擬地址存在大量的重疊,因此當(dāng)前的Zsim不能準(zhǔn)確模擬多進(jìn)程混合的訪存行為。為了解決這個(gè)問(wèn)題,筆者在當(dāng)前Zsim模擬器中添加了操作系統(tǒng)內(nèi)存管理模塊、頁(yè)表和TLB模擬模塊,操作系統(tǒng)內(nèi)存管理模塊主要負(fù)責(zé)為虛擬頁(yè)分配物理頁(yè)[7],頁(yè)表、TLB模擬模塊主要負(fù)責(zé)將虛擬地址轉(zhuǎn)換成物理地址。修改后的Zsim模擬器可精確地模擬單進(jìn)程、混合多進(jìn)程的運(yùn)行和訪存行為。具體架構(gòu)如圖3所示。

      此外,為了給DRAM-NVM異構(gòu)內(nèi)存系統(tǒng)管理優(yōu)化提供基本的平臺(tái)支持,筆者基于Zsim和NVMain開發(fā)了DRAM-NVM層次化異構(gòu)內(nèi)存架構(gòu)和DRAM-NVM統(tǒng)一編址的異構(gòu)內(nèi)存架構(gòu)。為了進(jìn)一步提升異構(gòu)內(nèi)存系統(tǒng)性能,筆者基于DRAM-NVM統(tǒng)一編址的異構(gòu)內(nèi)存架構(gòu),提供了以下兩種內(nèi)存管理策略。

      ● 行緩存局部性感知(row buffer locality aware,RBLA)[22]的頁(yè)遷移策略:考慮行緩沖區(qū)命中時(shí),NVM讀寫訪問(wèn)時(shí)延接近DRAM讀寫訪問(wèn)時(shí)延,該策略將行緩沖區(qū)局部性差的NVM內(nèi)存頁(yè)遷移到DRAM中,將行緩沖區(qū)局部性好的NVM頁(yè)放置于NVM中,盡量降低NVM行緩沖區(qū)缺失帶來(lái)的巨大性能和能耗開銷。

      圖3 基于Zsim和NVMain混合模擬器的異構(gòu)內(nèi)存平臺(tái)架構(gòu)

      ● 基于多級(jí)隊(duì)列(multi-level queue,MQ)的熱頁(yè)遷移策略:采用多級(jí)隊(duì)列算法,根據(jù)頁(yè)面訪問(wèn)頻度將內(nèi)存頁(yè)劃分為冷頁(yè)面和熱頁(yè)面,將訪問(wèn)頻繁的熱頁(yè)面由NVM遷移到DRAM,從而提升系統(tǒng)性能。

      3.1.2 硬件仿真器

      現(xiàn)有的軟件模擬方法模擬速度較慢、無(wú)法準(zhǔn)確地模擬復(fù)雜和規(guī)模較大的工作負(fù)載,而且對(duì)網(wǎng)絡(luò)通信、虛擬化和分布式應(yīng)用的兼容性較差,筆者提出了一種基于DRAM的性能仿真器——異構(gòu)內(nèi)存仿真器(hybrid memory emulator,HME[23]),以模擬即將到來(lái)的NVM技術(shù)的性能和能耗特性。HME利用商業(yè)級(jí)CPU中的非統(tǒng)一內(nèi)存訪問(wèn)架構(gòu)(non-uniform memory access architecture,NUMA)中可用的功能來(lái)模擬兩種內(nèi)存:快速、本地DRAM和其他NUMA節(jié)點(diǎn)上的較慢的遠(yuǎn)程N(yùn)VM。通過(guò)在遠(yuǎn)程N(yùn)UMA節(jié)點(diǎn)上注入不同的內(nèi)存訪問(wèn)時(shí)延,HME可以模擬范圍廣泛的NVM時(shí)延和帶寬。

      為了幫助程序員和研究人員評(píng)估NVM對(duì)應(yīng)用程序性能的影響,筆者還提供了一個(gè)高級(jí)編程接口,用于從NVM或DRAM中分配內(nèi)存。

      在商用硬件中沒(méi)有編程接口直接控制內(nèi)存訪問(wèn)時(shí)延,因此筆者采用了一種軟件方法來(lái)模擬NVM讀時(shí)延。其基本思想是在合適的時(shí)間間隔內(nèi)為應(yīng)用程序注入軟件生成的額外時(shí)延。筆者通過(guò)對(duì)應(yīng)用程序的內(nèi)存訪問(wèn)進(jìn)行監(jiān)控,并通過(guò)內(nèi)存訪問(wèn)行為對(duì)滯后時(shí)間進(jìn)行建模,以逼近一段時(shí)期內(nèi)的NVM讀時(shí)延。

      一般情況下,數(shù)據(jù)寫入可以歸類為寫直達(dá)法和寫回法兩種方式。在寫直達(dá)法中,數(shù)據(jù)立即通過(guò)緩存寫入內(nèi)存中。在寫回法中,數(shù)據(jù)首先寫入緩存,并在以后將相應(yīng)的緩存行逐出時(shí)寫入內(nèi)存。雖然內(nèi)存寫入操作通常不在應(yīng)用程序執(zhí)行的關(guān)鍵路徑上,但是,它仍會(huì)占用內(nèi)存總線帶寬,也就可能造成內(nèi)存讀取請(qǐng)求的響應(yīng)被推遲,因此內(nèi)存寫入對(duì)系統(tǒng)的影響不應(yīng)被忽視。筆者通過(guò)特殊的性能監(jiān)控硬件來(lái)監(jiān)控寫直達(dá)操作和寫回操作,并通過(guò)構(gòu)建內(nèi)存讀寫次數(shù)與寫時(shí)延之間的關(guān)系來(lái)模擬NVM寫時(shí)延,從而實(shí)現(xiàn)了在不增加讀請(qǐng)求響應(yīng)時(shí)間的同時(shí),準(zhǔn)確地模擬寫操作時(shí)延。

      在帶寬模擬方面,筆者通過(guò)限制最大可用DRAM帶寬來(lái)模擬NVM帶寬。帶寬節(jié)流是通過(guò)在商品英特爾至強(qiáng)處理器中提供性能計(jì)數(shù)器來(lái)控制DRAM能通過(guò)的最大訪存指令實(shí)現(xiàn)的。筆者還建立了能源消耗模型來(lái)計(jì)算NVM的能耗。由于缺少用于計(jì)算主存儲(chǔ)器所消耗能量的硬件級(jí)特征,筆者選擇了一種統(tǒng)計(jì)方法對(duì)NVM能耗進(jìn)行建模。不像DRAM,NVM不產(chǎn)生靜態(tài)功耗,故只需要計(jì)算NVM讀寫能耗。記錄一段時(shí)間內(nèi)NVM的讀寫訪存次數(shù),通過(guò)建立簡(jiǎn)單的模型來(lái)模擬NVM單位時(shí)間內(nèi)的能耗。

      筆者使用NUMA體系結(jié)構(gòu)在雙插槽服務(wù)器上模擬混合內(nèi)存系統(tǒng)。每個(gè)插槽都包含三級(jí) CPU。NUMA體系結(jié)構(gòu)既支持時(shí)延較低的本地DRAM訪問(wèn)操作,也支持時(shí)延較高的遠(yuǎn)程Socket上的DRAM訪問(wèn)操作。因此,筆者使用遠(yuǎn)程節(jié)點(diǎn)上的DRAM來(lái)模擬時(shí)延較高和帶寬較低的NVM。

      如圖4所示,筆者在遠(yuǎn)端Socket中選擇一個(gè)核心(core),用來(lái)計(jì)算應(yīng)向本地Socket上的應(yīng)用程序注入的附加時(shí)延。筆者關(guān)閉遠(yuǎn)端Socket上的其他core以避免對(duì)計(jì)算核的性能干擾。HME使用英特爾至強(qiáng)處理器性能監(jiān)視單元(uncore PMU)中本地代理(home agent,HA)來(lái)記錄正在本地節(jié)點(diǎn)0上運(yùn)行的應(yīng)用程序?qū)h(yuǎn)程節(jié)點(diǎn)1上的DRAM內(nèi)存讀取訪問(wèn)的次數(shù)(LLC 缺失)和寫訪問(wèn)次數(shù)。HME通過(guò)核間中斷(interprocessor interrupt,IPI)向節(jié)點(diǎn)0的核心注入額外的時(shí)延。這樣,HME增加了遠(yuǎn)程內(nèi)存訪問(wèn)時(shí)延,以模擬NVM時(shí)延。

      3.2 異構(gòu)內(nèi)存體系結(jié)構(gòu)

      圖4 HME硬件仿真器系統(tǒng)架構(gòu)

      由于目前市場(chǎng)上沒(méi)有商用的異構(gòu)內(nèi)存產(chǎn)品,筆者在模擬器中進(jìn)行異構(gòu)內(nèi)存體系結(jié)構(gòu)的研究,主要研究包括軟硬件協(xié)同管理的層次化異構(gòu)內(nèi)存架構(gòu)、面向異構(gòu)內(nèi)存架構(gòu)的片上緩存管理和異構(gòu)內(nèi)存并行處理等方面。與此同時(shí),由于在不同的應(yīng)用場(chǎng)景下,異構(gòu)內(nèi)存系統(tǒng)中兩種架構(gòu)各有優(yōu)劣,筆者在模擬器中實(shí)現(xiàn)了軟件定義的可重構(gòu)異構(gòu)內(nèi)存體系架構(gòu)。

      3.2.1 軟硬件協(xié)同管理的層次化異構(gòu)內(nèi)存架構(gòu)

      Demand-Based數(shù)據(jù)管理機(jī)制是當(dāng)前內(nèi)存計(jì)算環(huán)境下DRAM-NVM層次化異構(gòu)內(nèi)存系統(tǒng)主要采用的數(shù)據(jù)管理機(jī)制,但這種數(shù)據(jù)預(yù)取機(jī)制沒(méi)考慮NVM讀寫性能不對(duì)稱的特征,且存在硬件復(fù)雜度高、存儲(chǔ)開銷大、軟件靈活性低、DRAM緩存利用率低等挑戰(zhàn),并不適用于DRAM-NVM異構(gòu)內(nèi)存系統(tǒng)。

      基于DRAM-NVM層次化異構(gòu)內(nèi)存系統(tǒng),筆者提出了基于效用的(utilitybased)軟硬件協(xié)同管理的層次化異構(gòu)內(nèi)存架構(gòu)(hardware/software cooperative caching for hybrid DRAM/NVM memory architectures,HSCC[7])。如圖5所示,HSCC在頁(yè)表和TLB中建立了NVM內(nèi)存到DRAM緩存的映射,消除了復(fù)雜的硬件開銷和巨大的存儲(chǔ)開銷,同時(shí)將多級(jí)數(shù)據(jù)預(yù)取機(jī)制的實(shí)現(xiàn)提升到軟件層次,增加了系統(tǒng)的可擴(kuò)展性。HSCC實(shí)現(xiàn)了基于效用的多級(jí)數(shù)據(jù)預(yù)取機(jī)制,該機(jī)制僅將NVM熱頁(yè)面預(yù)取到DRAM緩存,提升了DRAM緩存利用效率。此外,HSCC在基于效用的多級(jí)數(shù)據(jù)預(yù)取機(jī)制的基礎(chǔ)上,提出了HSCC-Dyn和HSCC-MQ兩種優(yōu)化策略:HSCCDyn使用爬山算法動(dòng)態(tài)調(diào)整數(shù)據(jù)預(yù)取閾值,充分利用DRAM緩存的同時(shí),盡量減少DRAM緩存回收造成的性能開銷;HSCC-MQ采用多級(jí)隊(duì)列算法動(dòng)態(tài)更新NVM頁(yè)面訪問(wèn)熱度,提升了NVM頁(yè)面熱度監(jiān)測(cè)的準(zhǔn)確度。

      3.2.2 面向異構(gòu)內(nèi)存架構(gòu)的片上緩存管理

      圖5 軟硬件協(xié)同管理的層次化異構(gòu)內(nèi)存架構(gòu)(HSCC)總體架構(gòu)

      傳統(tǒng)基于提高緩存命中率的策略在傳統(tǒng)DRAM內(nèi)存中展現(xiàn)了良好的性能。然而,這些策略在混合內(nèi)存環(huán)境下性能不高。這是因?yàn)镈RAM與NVM的訪問(wèn)時(shí)延存在著多倍的差異,不再像傳統(tǒng)DRAM內(nèi)存環(huán)境下那樣有著相對(duì)比較單一的訪存時(shí)延開銷。單純地考慮提升命中率不能反映整體的訪存開銷,因此這些算法已經(jīng)不能完全適應(yīng)混合內(nèi)存環(huán)境新的特性?;旌蟽?nèi)存環(huán)境下的LLC替換策略還需要將LLC緩存缺失時(shí)的訪存時(shí)延開銷這一變量納入緩存替換決策的考慮范疇。因此,筆者考慮LLC的命中開銷、DRAM緩存塊的缺失代價(jià)以及NVM緩存塊的缺失代價(jià),并采用平均訪存時(shí)延作為評(píng)價(jià)混合內(nèi)存下緩存性能的指標(biāo)。

      筆者提出了一種新型緩存替換策略——異構(gòu)內(nèi)存環(huán)境下的缺失代價(jià)感知的緩存替換策略(miss-penalty aware LRU-based cache replacement for hybrid memory systems,MALRU[8])。MALRU的主要思想是增加高時(shí)延緩存塊留存在LLC中的概率,降低這些高時(shí)延緩存塊缺失時(shí)帶來(lái)的昂貴訪存開銷。MALRU的整體構(gòu)架如圖6所示,MALRU通過(guò)設(shè)置一個(gè)保留指針,將LLC在邏輯上分為一個(gè)替換區(qū)間和一個(gè)保留區(qū)間。當(dāng)發(fā)生LLC缺失時(shí),MALRU會(huì)從LRU開始,在替換區(qū)間內(nèi)尋找第一個(gè)DRAM緩存塊,并將其替換出去。如果在優(yōu)化區(qū)間內(nèi)沒(méi)有找到DRAM緩存塊,則將LRU位置的NVM緩存塊替換出去。這種策略相當(dāng)于增加了NVM緩存塊留存在LLC中的概率,提高了NVM緩存塊的命中率,從而減少了因?yàn)楦邥r(shí)延的NVM緩存塊被替換出去帶來(lái)的昂貴的訪存開銷。同時(shí),保留區(qū)間內(nèi)的DRAM緩存塊和NVM緩存塊不會(huì)被替換出去。這是因?yàn)檫@些緩存塊均為被頻繁訪問(wèn)的緩存塊,保護(hù)其不被替換出去能夠避免這些緩存換被頻繁地?fù)Q進(jìn)換出而導(dǎo)致的緩存顛簸。

      圖6 MALRU

      3.2.3 異構(gòu)內(nèi)存并行處理

      并行程序在異構(gòu)內(nèi)存系統(tǒng)中運(yùn)行時(shí),一些運(yùn)行較慢的線程可能會(huì)減緩其他線程的運(yùn)行速度。原因在于:所有線程的訪存請(qǐng)求被分發(fā)到不同的內(nèi)存通道。NVM的寫請(qǐng)求時(shí)延過(guò)長(zhǎng),訪問(wèn)NVM的請(qǐng)求需要較長(zhǎng)的完成時(shí)間,因此NVM寫請(qǐng)求數(shù)量多的線程需要更多的時(shí)間來(lái)完成內(nèi)存訪問(wèn)操作,該線程將因此成為運(yùn)行最慢的線程。該運(yùn)行最慢的線程顯然將拖慢其他線程的運(yùn)行進(jìn)程,從而導(dǎo)致整個(gè)程序的性能下降。在異構(gòu)內(nèi)存環(huán)境下更好地調(diào)度線程的訪存請(qǐng)求,可以緩解這種性能的損失。筆者提出了一種針對(duì)異構(gòu)內(nèi)存環(huán)境下并行程序的訪存調(diào)度算法(如圖7所示)。該算法在運(yùn)行時(shí)監(jiān)測(cè)每個(gè)線程的訪存請(qǐng)求數(shù)量,然后根據(jù)訪存請(qǐng)求為每個(gè)線程計(jì)算調(diào)度優(yōu)先級(jí),最后執(zhí)行調(diào)度策略。

      為了能夠在異構(gòu)混合內(nèi)存環(huán)境下對(duì)多線程程序進(jìn)行調(diào)度,必須對(duì)多線程程序的訪存請(qǐng)求進(jìn)行監(jiān)測(cè),包括記錄每個(gè)訪存請(qǐng)求是由哪個(gè)處理器發(fā)出的、每個(gè)訪存請(qǐng)求所請(qǐng)求的數(shù)據(jù)的物理地址,這是對(duì)整個(gè)系統(tǒng)的基本要求,通過(guò)對(duì)這些訪存請(qǐng)求進(jìn)行分析,確定內(nèi)存控制器的調(diào)度算法。

      在記錄了每個(gè)線程訪存信息之后,如何通過(guò)這些信息確定內(nèi)存控制器的調(diào)度算法,減小NVM訪存時(shí)延高所帶來(lái)的系統(tǒng)性能下降,提高程序整體性能,是進(jìn)一步要研究的問(wèn)題。該難點(diǎn)在于如何在監(jiān)測(cè)的訪存請(qǐng)求的基礎(chǔ)上制定一個(gè)合適的調(diào)度優(yōu)化算法,盡可能使運(yùn)行時(shí)調(diào)度開銷與程序性能優(yōu)化之間達(dá)到平衡。

      圖7 面向多核的異構(gòu)內(nèi)存調(diào)度策略整體功能模塊

      如圖7所示,在內(nèi)存子系統(tǒng)中,異構(gòu)內(nèi)存控制器負(fù)責(zé)對(duì)訪問(wèn)DRAM和NVM的請(qǐng)求做優(yōu)化調(diào)度,在異構(gòu)內(nèi)存控制器中主要包含訪存行為監(jiān)測(cè)模塊、線程優(yōu)先級(jí)確定模塊、訪存請(qǐng)求調(diào)度模塊3個(gè)模塊。訪存行為監(jiān)測(cè)模塊主要在程序運(yùn)行期間對(duì)程序每個(gè)線程的訪存行為進(jìn)行檢測(cè),獲取確定調(diào)度策略的依據(jù)信息;線程優(yōu)先級(jí)確定模塊會(huì)根據(jù)訪存行為為每個(gè)線程計(jì)算出一個(gè)調(diào)度權(quán)值;訪存請(qǐng)求調(diào)度模塊會(huì)在已有的FRFCFS調(diào)度算法的基礎(chǔ)上優(yōu)先調(diào)度權(quán)值高的線程。

      3.3 異構(gòu)內(nèi)存系統(tǒng)軟件

      為了研究新型異構(gòu)內(nèi)存管理系統(tǒng),基于傳統(tǒng)內(nèi)存介質(zhì)和新型非易失性內(nèi)存的訪存特性和介質(zhì)屬性,研究新型異構(gòu)內(nèi)存管理機(jī)制,將內(nèi)存和存儲(chǔ)資源結(jié)合起來(lái)進(jìn)行統(tǒng)一管理,實(shí)現(xiàn)異構(gòu)內(nèi)存體系架構(gòu)下系統(tǒng)軟件的基礎(chǔ)。

      3.3.1 能耗管理

      隨著計(jì)算機(jī)系統(tǒng)軟硬件的發(fā)展,計(jì)算機(jī)內(nèi)存系統(tǒng)的能耗問(wèn)題日益突出。諸如PCM等新型非易失性存儲(chǔ)器依靠介質(zhì)的電阻特性存儲(chǔ)數(shù)據(jù),為解決現(xiàn)代計(jì)算機(jī)系統(tǒng)的能耗問(wèn)題提供了契機(jī),但這些存儲(chǔ)器存在寫功耗大的缺陷。為了改善異構(gòu)內(nèi)存系統(tǒng)的能耗問(wèn)題,筆者提出了一種新的能耗管理策略——異構(gòu)內(nèi)存能耗管理機(jī)制(EMH[9])。

      如圖8所示,EMH策略根據(jù)內(nèi)存頁(yè)面訪問(wèn)特征信息劃分冷頁(yè)面和熱頁(yè)面,并經(jīng)過(guò)一系列的排序和篩選得到若干個(gè)冷頁(yè)面和熱頁(yè)面,最后采用能耗模型預(yù)測(cè)每個(gè)頁(yè)面的能耗值,找到可使系統(tǒng)能耗效率最大化的冷熱頁(yè)面組合,遷移配對(duì)的冷熱頁(yè)面,從而提升系統(tǒng)的能耗效率。具體來(lái)說(shuō),EMH主要有以下3個(gè)方面的設(shè)計(jì)。

      ● 統(tǒng)計(jì)頁(yè)面全局和局部訪存信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。在異構(gòu)內(nèi)存管理中,分配頁(yè)面的依據(jù)就是頁(yè)面的訪存歷史信息,需要考慮頁(yè)面從被訪問(wèn)開始到當(dāng)前時(shí)間的全局和局部訪存信息。為了準(zhǔn)確地記錄這些頁(yè)面訪存信息,筆者設(shè)計(jì)了一個(gè)能統(tǒng)計(jì)頁(yè)面全局和局部訪存信息的數(shù)據(jù)結(jié)構(gòu)。

      ● 基于頁(yè)面全局/局部寫密集度和時(shí)間局部性的冷熱頁(yè)面決策算法設(shè)計(jì)。由于采用了本文設(shè)計(jì)的記錄訪存信息的數(shù)據(jù)結(jié)構(gòu),系統(tǒng)運(yùn)行時(shí)全局和局部的頁(yè)面讀/寫信息都被記錄下來(lái),充分參考這些信息,從全局角度和局部角度出發(fā),利用時(shí)間局部性制定了一個(gè)冷熱頁(yè)面決策算法。此算法準(zhǔn)確地對(duì)頁(yè)面的未來(lái)行為進(jìn)行預(yù)測(cè),從而更為準(zhǔn)確地選出寫操作頻繁的熱頁(yè)面和系統(tǒng)不經(jīng)常訪問(wèn)的冷頁(yè)面。

      ● 基于數(shù)據(jù)局部性的異構(gòu)內(nèi)存能耗遷移模型設(shè)計(jì)。本文基于數(shù)據(jù)局部性對(duì)異構(gòu)內(nèi)存能耗以頁(yè)面為單位進(jìn)行數(shù)學(xué)建模,通過(guò)該模型可以計(jì)算出遷移某頁(yè)面組合后所帶來(lái)的節(jié)能效益,對(duì)計(jì)算出的節(jié)約能耗值進(jìn)行排序,挑選出使系統(tǒng)能耗降低最大化的頁(yè)面組合,更好地達(dá)到降低異構(gòu)內(nèi)存整體能耗的目標(biāo)。

      3.3.2 異構(gòu)內(nèi)存全系統(tǒng)檢查點(diǎn)

      在異構(gòu)內(nèi)存環(huán)境下,為了減輕預(yù)復(fù)制對(duì)其他應(yīng)用的內(nèi)存訪問(wèn)干擾、降低檢查點(diǎn)的開銷,筆者對(duì)不同應(yīng)用在混合內(nèi)存上的訪存行為進(jìn)行了研究,發(fā)現(xiàn)多數(shù)應(yīng)用訪問(wèn)內(nèi)存Bank(一組存儲(chǔ)顆粒的集合)的頻繁程度隨著時(shí)間變化有著較大的變化,并且即使在同一時(shí)間段內(nèi),不同Bank的訪存頻繁程度也有較大差異。根據(jù)這個(gè)特征,可以利用應(yīng)用訪問(wèn)Bank的空閑時(shí)間完成預(yù)復(fù)制,減少檢查點(diǎn)對(duì)應(yīng)用訪存的干擾,降低檢查點(diǎn)操作的開銷。

      圖8 EMH系統(tǒng)模塊

      基于上述思想,筆者在混合內(nèi)存上實(shí)現(xiàn)了一個(gè)面向應(yīng)用內(nèi)存訪問(wèn)優(yōu)化、降低檢查點(diǎn)開銷的預(yù)復(fù)制檢查點(diǎn)系統(tǒng)——Shadow。Shadow利用預(yù)復(fù)制檢查點(diǎn)數(shù)據(jù)復(fù)制順序靈活可變且對(duì)內(nèi)存訪問(wèn)時(shí)延不敏感的特征,優(yōu)化了預(yù)復(fù)制檢查點(diǎn)的訪存行為。Shadow系統(tǒng)需要通過(guò)軟件和硬件的協(xié)同工作來(lái)實(shí)現(xiàn),其總體設(shè)計(jì)原則為將復(fù)雜、高開銷的預(yù)復(fù)制檢查點(diǎn)流程控制、Bank訪問(wèn)頻繁程度預(yù)測(cè)等功能放在軟件層實(shí)現(xiàn);對(duì)于簡(jiǎn)單且需要底層支持的應(yīng)用Bank訪問(wèn)信息采集、單個(gè)預(yù)復(fù)制事件數(shù)據(jù)復(fù)制、沖突預(yù)復(fù)制操作處理等功能,通過(guò)在傳統(tǒng)內(nèi)存控制器上添加新的部件,在硬件層實(shí)現(xiàn)。其整體結(jié)構(gòu)如圖9所示。具體來(lái)講,分別在軟件與硬件層面實(shí)現(xiàn)了以下主要功能。

      在系統(tǒng)軟件層面,主要實(shí)現(xiàn)了以下功能。

      ● 預(yù)復(fù)制檢查點(diǎn)流程控制:該模塊用于實(shí)現(xiàn)預(yù)復(fù)制檢查點(diǎn)的基本功能,包括跟蹤應(yīng)用數(shù)據(jù)的修改、生成檢查點(diǎn)數(shù)據(jù)復(fù)制事件、控制檢查點(diǎn)操作的起止、維護(hù)檢查點(diǎn)操作元數(shù)據(jù)等。

      ● Bank訪問(wèn)頻繁程度預(yù)測(cè):該模塊根據(jù)硬件收集的應(yīng)用Bank訪問(wèn)信息,通過(guò)預(yù)測(cè)算法計(jì)算得出未來(lái)應(yīng)用對(duì)各個(gè)Bank訪問(wèn)的頻繁程度,為預(yù)復(fù)制檢查點(diǎn)流程控制模塊生成新的檢查點(diǎn)復(fù)制事件提供參考。

      在硬件層面,在內(nèi)存控制器上添加了以下功能部件。

      圖9 Shadow系統(tǒng)架構(gòu)

      ● 應(yīng)用Bank訪問(wèn)信息采集:該模塊用于監(jiān)測(cè)到達(dá)內(nèi)存控制器的應(yīng)用訪存請(qǐng)求,記錄應(yīng)用對(duì)各個(gè)Bank的訪問(wèn)情況,為軟件中的預(yù)測(cè)模塊提供輸入數(shù)據(jù)。

      ● 預(yù)復(fù)制事件數(shù)據(jù)復(fù)制:該模塊從軟件中的檢查點(diǎn)控制模塊接收單個(gè)預(yù)復(fù)制事件的源地址、目的地址,在內(nèi)存控制器中完成檢查點(diǎn)數(shù)據(jù)的復(fù)制,使檢查點(diǎn)數(shù)據(jù)無(wú)須經(jīng)過(guò)CPU。

      ● 沖突預(yù)復(fù)制操作處理:該模塊監(jiān)測(cè)到達(dá)內(nèi)存控制器的應(yīng)用訪存請(qǐng)求,判斷應(yīng)用是否與預(yù)復(fù)制檢查點(diǎn)發(fā)生Bank沖突,并通知預(yù)復(fù)制事件數(shù)據(jù)復(fù)制模塊暫?;蛑貑?fù)制過(guò)程。

      ● 檢查點(diǎn)數(shù)據(jù)寄存器:該模塊用于存儲(chǔ)檢查點(diǎn)執(zhí)行過(guò)程中產(chǎn)生的關(guān)鍵數(shù)據(jù),包括Bank訪問(wèn)記錄、檢查點(diǎn)事件信息、緩存的檢查點(diǎn)數(shù)據(jù)請(qǐng)求,軟硬件各功能模塊通過(guò)寄存器中的數(shù)據(jù)進(jìn)行數(shù)據(jù)交流。

      3.3.3 大頁(yè)管理

      隨著應(yīng)用內(nèi)存需求、計(jì)算機(jī)系統(tǒng)內(nèi)存容量的持續(xù)增加,虛實(shí)地址轉(zhuǎn)換逐漸成為系統(tǒng)性能瓶頸?,F(xiàn)有的計(jì)算機(jī)普遍采用TLB來(lái)加快虛實(shí)地址轉(zhuǎn)換的速度。由于每一次CPU訪存操作都需要優(yōu)先訪問(wèn)TLB,如果TLB命中,則直接使用獲取的物理地址訪問(wèn)緩存或者內(nèi)存中的數(shù)據(jù),如果TLB缺失,則需要進(jìn)行查詢系統(tǒng)頁(yè)表的操作。由于現(xiàn)有Linux采用四級(jí)頁(yè)表的機(jī)制,訪問(wèn)頁(yè)表導(dǎo)致多達(dá)4次的訪存開銷,這將嚴(yán)重影響系統(tǒng)性能。同時(shí),由于TLB位于系統(tǒng)的關(guān)鍵路徑上,考慮到時(shí)延和能耗等相關(guān)因素的影響,TLB硬件的容量多年來(lái)發(fā)展緩慢。在不改變現(xiàn)有TLB硬件特性的情況下,使用大頁(yè)機(jī)制成為解決TLB瓶頸問(wèn)題的關(guān)鍵。而另一方面,隨著新型存儲(chǔ)介質(zhì)NVM的出現(xiàn),計(jì)算機(jī)系統(tǒng)內(nèi)存容量得以顯著增加,但由于NVM自身存在缺陷,導(dǎo)致主流的研究主要集中在DRAM/NVM異構(gòu)內(nèi)存系統(tǒng)中,在這些研究中,為了提升異構(gòu)內(nèi)存的性能,數(shù)據(jù)遷移成為異構(gòu)內(nèi)存優(yōu)化的一個(gè)重要手段。然而,因?yàn)楝F(xiàn)有的大頁(yè)管理機(jī)制不能很好地支持頁(yè)面遷移,所以這些方式在異構(gòu)環(huán)境下性能不高。

      筆者提出了一種異構(gòu)內(nèi)存環(huán)境下大頁(yè)管理機(jī)制(如圖10所示)。該機(jī)制的主要思想是,對(duì)DRAM和NVM采用不同的粒度進(jìn)行管理,通過(guò)使用Split TLB機(jī)制來(lái)加快DRAM和NVM的地址轉(zhuǎn)化速度,并在內(nèi)存控制器中使用位圖來(lái)標(biāo)識(shí)頁(yè)面遷移的狀態(tài),從而在邏輯上保證大頁(yè)的完整性。同時(shí)為了減少頁(yè)面監(jiān)測(cè)的開銷,采用輕量級(jí)的頁(yè)面監(jiān)測(cè)機(jī)制,即對(duì)內(nèi)存頁(yè)面分兩步進(jìn)行檢測(cè):首先,監(jiān)測(cè)大頁(yè)的冷熱程度,并篩選出最熱的N個(gè)大頁(yè);接著對(duì)篩選出來(lái)的N個(gè)大頁(yè)進(jìn)行細(xì)粒度的監(jiān)測(cè),從而篩選出最熱的細(xì)粒度頁(yè)面。此外,為了優(yōu)化DRAM中熱頁(yè)面的訪問(wèn),筆者設(shè)計(jì)了一套DRAM頁(yè)面重映射機(jī)制。

      3.4 異構(gòu)內(nèi)存編程模型

      在平行化異構(gòu)內(nèi)存系統(tǒng)中,只有將應(yīng)用程序的數(shù)據(jù)放置在合適的內(nèi)存介質(zhì)中,才能充分利用NVM和DRAM各自的優(yōu)勢(shì)。現(xiàn)有的研究主要著重于利用頁(yè)面遷移的機(jī)制來(lái)獲取更好的性能和更優(yōu)的能耗效率。然而這些機(jī)制都依賴于在線的頁(yè)面監(jiān)測(cè),而這種監(jiān)測(cè)機(jī)制需付出很大的性能開銷,并且以頁(yè)面為粒度進(jìn)行數(shù)據(jù)遷移的操作會(huì)浪費(fèi)一定的DRAM帶寬,并降低DRAM的利用率。

      筆者提出了一種基于對(duì)象的內(nèi)存分配和遷移機(jī)制(OAM)。OAM利用離線訪存分析工具獲取對(duì)象的訪存模式,并用性能/能耗模型來(lái)指導(dǎo)應(yīng)用程序的數(shù)據(jù)分配,并為有需要的數(shù)據(jù)對(duì)象提供遷移操作?;贠AM中提供的用于平行化異構(gòu)內(nèi)存系統(tǒng)內(nèi)存分配和數(shù)據(jù)遷移的編程接口,應(yīng)用程序的源碼可通過(guò)OAM提供的靜態(tài)代碼工具自動(dòng)修改。當(dāng)程序開始執(zhí)行后,操作系統(tǒng)根據(jù)OAM提供的分配建議以及當(dāng)前系統(tǒng)中DRAM的可用量共同決定對(duì)象的放置。如圖11所示,OAM主要包括離線分析(offline instrumentation,OFI)模塊和動(dòng)態(tài)分配(online allocation,OLA)模塊兩個(gè)模塊,并且通過(guò)提供適用于本系統(tǒng)的編程接口以及基于底層虛擬機(jī)(low level virtual machine,LLVM)實(shí)現(xiàn)的自動(dòng)化修改程序源代碼的機(jī)制,將這兩部分有效地結(jié)合。

      圖10 異構(gòu)內(nèi)存大頁(yè)管理機(jī)制

      圖11 基于對(duì)象的內(nèi)存分配和遷移機(jī)制總體架構(gòu)

      圖12 各種圖計(jì)算應(yīng)用下性能對(duì)比

      3.5 面向大數(shù)據(jù)的異構(gòu)內(nèi)存應(yīng)用

      大數(shù)據(jù)應(yīng)用需要越來(lái)越大的內(nèi)存,而新興的NVM內(nèi)存,因其優(yōu)異的特性成為內(nèi)存擴(kuò)展更好的選擇。相比于DRAM,NVM具有較低的帶寬和較高的時(shí)延,但也具有大容量和成本低廉的優(yōu)勢(shì)。筆者量化分析了相同成本下,異構(gòu)內(nèi)存環(huán)境帶來(lái)的性能提升。由先前的工作可知,DRAM內(nèi)存的成本約為NVM內(nèi)存成本的5倍,使用Twitter的數(shù)據(jù)集測(cè)試和對(duì)比了同種成本情況下多種圖計(jì)算應(yīng)用的性能。如圖12所示,相同成本情況下,異構(gòu)內(nèi)存系統(tǒng)中程序的性能明顯優(yōu)于純DRAM系統(tǒng),其中寬度優(yōu)先搜索(breadth first search,BFS)算法、網(wǎng)頁(yè)排序(page rank)算法和單源最短路徑(single-source shortest path,SSSP)算法分別獲得了3.47倍、4.52倍、6.96倍的性能提升。這是因?yàn)?6 GB的DRAM內(nèi)存,圖數(shù)據(jù)無(wú)法全部加載到內(nèi)存中處理,部分?jǐn)?shù)據(jù)需要存儲(chǔ)在磁盤中,而相同的成本,采用異構(gòu)內(nèi)存技術(shù),可以擁有更大的內(nèi)存,有機(jī)會(huì)使數(shù)據(jù)全部在內(nèi)存中處理,而無(wú)需與磁盤進(jìn)行數(shù)據(jù)交換。

      筆者進(jìn)一步測(cè)試了相同成本下兩種內(nèi)存配置不同迭代次數(shù)的性能。如圖13所示,隨著迭代次數(shù)增多,程序執(zhí)行時(shí)間相應(yīng)變長(zhǎng),采用異構(gòu)內(nèi)存獲得的加速比更大。這是因?yàn)椋谳^小的DRAM內(nèi)存條件下,每次迭代都和磁盤發(fā)生數(shù)據(jù)交換,而在異構(gòu)內(nèi)存中,只有在第一次數(shù)據(jù)加載到內(nèi)存中的時(shí)候,才有數(shù)據(jù)交換,其他時(shí)候數(shù)據(jù)都是在內(nèi)存當(dāng)中的,迭代次數(shù)較多時(shí),異構(gòu)內(nèi)存減少的磁盤數(shù)據(jù)交換更多,節(jié)省的時(shí)間也就越多。

      最后,筆者測(cè)試了在不同的數(shù)據(jù)集下,不同的圖算法在兩種內(nèi)存環(huán)境下的性能提升。如圖14所示,對(duì)于不同的應(yīng)用程序、不同的數(shù)據(jù)集,采用異構(gòu)內(nèi)存獲得的性能各不相同,但是總體來(lái)說(shuō),相同成本下,采用異構(gòu)內(nèi)存可以獲得一定的性能提升。筆者未考慮固態(tài)硬盤(solid state drive,SSD)和磁盤的開銷,因?yàn)橛辛俗銐虼蟮腘VM內(nèi)存,可以不用SSD和磁盤來(lái)存放數(shù)據(jù)。把SSD或者磁盤開銷考慮進(jìn)去,程序性能提升會(huì)更大。

      此外,針對(duì)圖計(jì)算應(yīng)用的特性,筆者提出一種面向圖處理的異構(gòu)內(nèi)存管理系統(tǒng)。該系統(tǒng)主要思想有以下兩部分。

      ● 異構(gòu)內(nèi)存圖數(shù)據(jù)放置策略:在圖數(shù)據(jù)中,由于圖屬性數(shù)據(jù)訪存不規(guī)則,緩存命中率較低,所以將其放置在DRAM中,以減少數(shù)據(jù)訪問(wèn)時(shí)延;而圖結(jié)構(gòu)數(shù)據(jù)一般以數(shù)組形式存放,訪存局部性較好,緩存命中率高,因此將其放置在NVM中;對(duì)于元數(shù)據(jù)等一些其他數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)量相對(duì)較小,可以緩存在緩存中,也可以放置在NVM中。

      圖13 PageRank不同迭代次數(shù)下性能對(duì)比

      圖14 不同數(shù)據(jù)集各種圖計(jì)算應(yīng)用下性能對(duì)比

      ● 異構(gòu)內(nèi)存多核圖處理優(yōu)化策略:在同步執(zhí)行模式下,多核并行處理圖數(shù)據(jù)因?yàn)镈RAM與NVM內(nèi)存訪存差異,各個(gè)核數(shù)據(jù)處理完成時(shí)間不同,任務(wù)快速完成的核會(huì)處于空閑狀態(tài),核利用率低,程序整體性能下降。優(yōu)化策略為:在進(jìn)行圖數(shù)據(jù)劃分和任務(wù)分配的時(shí)候,NVM中子圖劃分得小一些,DRAM中子圖劃分得大一些,使綁定到兩種內(nèi)存介質(zhì)上的核處理數(shù)據(jù)完成時(shí)間盡量保持一致。

      4 結(jié)束語(yǔ)

      與DRAM相比,NVM的讀寫時(shí)延較大、寫能耗較高、壽命有限,因此如何有效地引進(jìn)、高效地管理和準(zhǔn)確地評(píng)估異構(gòu)內(nèi)存是當(dāng)今研究面臨的挑戰(zhàn)。面對(duì)以上挑戰(zhàn),本文從異構(gòu)內(nèi)存系統(tǒng)架構(gòu)、內(nèi)存管理機(jī)制、緩存替換管理、內(nèi)存請(qǐng)求調(diào)度、持久化以及應(yīng)用等方面對(duì)面向大數(shù)據(jù)的異構(gòu)內(nèi)存系統(tǒng)進(jìn)行分析與研究,并提出了面向大數(shù)據(jù)的異構(gòu)內(nèi)存系統(tǒng)的優(yōu)化方案。

      可以看出,隨著對(duì)異構(gòu)內(nèi)存研究的深入,DRAM與NVM組成的異構(gòu)內(nèi)存取代純DRAM內(nèi)存指日可待,尤其是Intel、Micron等大公司對(duì)NVM的研究推進(jìn),加速了異構(gòu)內(nèi)存的商業(yè)化進(jìn)程。筆者相信異構(gòu)內(nèi)存將會(huì)給整個(gè)計(jì)算機(jī)系統(tǒng)架構(gòu)設(shè)計(jì)帶來(lái)新的變革。

      猜你喜歡
      檢查點(diǎn)異構(gòu)內(nèi)存
      Spark效用感知的檢查點(diǎn)緩存并行清理策略①
      試論同課異構(gòu)之“同”與“異”
      免疫檢查點(diǎn)抑制劑相關(guān)內(nèi)分泌代謝疾病
      “春夏秋冬”的內(nèi)存
      免疫檢查點(diǎn)抑制劑在腫瘤治療中的不良反應(yīng)及毒性管理
      overlay SDN實(shí)現(xiàn)異構(gòu)兼容的關(guān)鍵技術(shù)
      LTE異構(gòu)網(wǎng)技術(shù)與組網(wǎng)研究
      分布式任務(wù)管理系統(tǒng)中檢查點(diǎn)的設(shè)計(jì)
      在新興異構(gòu)SoCs上集成多種系統(tǒng)
      基于內(nèi)存的地理信息訪問(wèn)技術(shù)
      塘沽区| 壶关县| 杭州市| 彰武县| 旌德县| 南昌市| 北宁市| 潞西市| 博白县| 江源县| 彭阳县| 商城县| 格尔木市| 黄平县| 夏邑县| 吐鲁番市| 丹寨县| 廊坊市| 平南县| 汉中市| 鞍山市| 陇南市| 西乡县| 南宫市| 五峰| 星子县| 连山| 鹤岗市| 精河县| 藁城市| 乌拉特后旗| 衡东县| 昌江| 四会市| 准格尔旗| 定边县| 蚌埠市| 无锡市| 蛟河市| 宝坻区| 甘泉县|