陳 吉 劉海坤 王孝遠(yuǎn) 張 宇 廖小飛 金 海
(華中科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 武漢 430074) (服務(wù)計(jì)算技術(shù)與系統(tǒng)教育部重點(diǎn)實(shí)驗(yàn)室(華中科技大學(xué)) 武漢 430074) (集群與網(wǎng)格計(jì)算湖北省重點(diǎn)實(shí)驗(yàn)室(華中科技大學(xué)) 武漢 430074) (湖北省大數(shù)據(jù)技術(shù)與系統(tǒng)工程實(shí)驗(yàn)室(華中科技大學(xué)) 武漢 430074) (hkliu@hust.edu.cn)
隨著計(jì)算機(jī)軟硬件技術(shù)的飛速發(fā)展,傳統(tǒng)的動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(dynamic random access memory, DRAM)因其存儲(chǔ)密度小、可擴(kuò)展性有限、刷新和閑置功耗大等缺點(diǎn)已經(jīng)無(wú)法滿足應(yīng)用越來(lái)越大的內(nèi)存需求.諸如相變存儲(chǔ)器(phase change memory, PCM)、磁性隨機(jī)存儲(chǔ)器(magnetic random access memory, MRAM)等非易失性存儲(chǔ)器(non-volatile memory, NVM)具有可隨機(jī)訪問(wèn)、存儲(chǔ)密度大、無(wú)靜態(tài)功耗等優(yōu)點(diǎn),但也存在著訪問(wèn)時(shí)延較高、寫次數(shù)有限、寫功耗大等缺點(diǎn),因此直接使用NVM替代DRAM目前尚不可行.學(xué)術(shù)界提出使用DRAM/NVM混合內(nèi)存架構(gòu),通過(guò)混合使用小容量DRAM和大容量NVM,將DRAM作為NVM內(nèi)存的緩存或者將DRAM和NVM統(tǒng)一編址并通過(guò)頁(yè)遷移將頻繁訪問(wèn)的數(shù)據(jù)放置于DRAM中來(lái)克服NVM高訪問(wèn)時(shí)延缺陷的方式,提升系統(tǒng)性能.DRAM/NVM混合內(nèi)存系統(tǒng)的設(shè)計(jì)與優(yōu)化成為了學(xué)術(shù)界的研究熱點(diǎn).
隨著非易失性內(nèi)存的引入,計(jì)算機(jī)系統(tǒng)的內(nèi)存容量固然得到顯著提升,但是也給系統(tǒng)設(shè)計(jì)帶來(lái)了新的問(wèn)題:內(nèi)存地址空間增大、虛實(shí)地址轉(zhuǎn)化的開銷隨之增大、虛實(shí)地址轉(zhuǎn)換將成為新的系統(tǒng)瓶頸[1].當(dāng)下主流的處理器都設(shè)計(jì)有加速虛實(shí)地址轉(zhuǎn)換的特殊硬件-旁路轉(zhuǎn)換緩沖(translation lookaside buffer, TLB).TLB的發(fā)展受到了其尺寸、查詢延遲及能耗開銷等因素的限制,因此近年來(lái)TLB的容量增加相當(dāng)緩慢.TLB的查找位于訪存的關(guān)鍵路徑上,對(duì)系統(tǒng)性能有著至關(guān)重要的影響.當(dāng)操作系統(tǒng)運(yùn)行大內(nèi)存占用的應(yīng)用程序并采用默認(rèn)大小為4 KB的頁(yè)面時(shí),操作系統(tǒng)不僅需要較大的內(nèi)存空間來(lái)管理那些頁(yè)表項(xiàng),而且應(yīng)用程序運(yùn)行過(guò)程中還會(huì)產(chǎn)生較多的TLB 缺失和頁(yè)表查詢操作,從而大大影響系統(tǒng)的性能.TLB硬件的容量與快速增長(zhǎng)的內(nèi)存地址空間之間出現(xiàn)了不可調(diào)和的矛盾[2-5].
操作系統(tǒng)中內(nèi)存分配的單元是一個(gè)個(gè)的物理頁(yè)框,通常是4 KB大小.大頁(yè)是由2n個(gè)物理地址對(duì)齊且連續(xù)的4 KB頁(yè)面構(gòu)成,可以容納更多的數(shù)據(jù).在使用2 MB大頁(yè)的系統(tǒng)中,一個(gè)TLB表項(xiàng)可以映射的快速地址轉(zhuǎn)換范圍是2 MB,在TLB表項(xiàng)數(shù)一樣的情況下,TLB映射的地址范圍是使用4 KB頁(yè)面時(shí)的512倍.大頁(yè)技術(shù)可以使一個(gè)TLB表項(xiàng)映射一個(gè)很大的物理內(nèi)存頁(yè),從而在不增加TLB硬件容量的情況下顯著調(diào)提高TLB的地址覆蓋范圍,降低查找TLB的缺失率.當(dāng)操作系統(tǒng)以 2 MB 甚至更大作為分頁(yè)的單位時(shí),將會(huì)大大減少 TLB 缺失數(shù),顯著提高應(yīng)用程序的性能,對(duì)于存儲(chǔ)容量越來(lái)越大的混合內(nèi)存系統(tǒng)更是如此.
在混合內(nèi)存系統(tǒng)中,使用大頁(yè)存在著新的挑戰(zhàn).譬如,在平行架構(gòu)的混合內(nèi)存中,NVM大頁(yè)內(nèi)部的數(shù)據(jù)的訪問(wèn)往往是不均勻的,部分?jǐn)?shù)據(jù)會(huì)被頻繁訪問(wèn),而另一部分?jǐn)?shù)據(jù)則很少被訪問(wèn)[6].對(duì)于熱的那部分?jǐn)?shù)據(jù),應(yīng)該遷移到DRAM中來(lái)提高訪問(wèn)性能.但如果以大頁(yè)為粒度進(jìn)行頁(yè)面遷移,在遷移了熱數(shù)據(jù)的同時(shí),也將大量的冷數(shù)據(jù)遷移到了DRAM中,這就占用了DRAM空間,還產(chǎn)生了不必要的遷移開銷和帶寬占用.但是細(xì)粒度的遷移需要復(fù)雜的硬件設(shè)計(jì)或者更改操作系統(tǒng)的頁(yè)表、TLB設(shè)計(jì)等.在層次結(jié)構(gòu)的混合內(nèi)存中,DRAM和NVM之間通常采用細(xì)粒度的數(shù)據(jù)交換方式,層次結(jié)構(gòu)的混合內(nèi)存系統(tǒng)可以將NVM大頁(yè)中的熱數(shù)據(jù)以細(xì)粒度的方式加載到DRAM中,更適合在層次結(jié)構(gòu)的混合內(nèi)存上使用大頁(yè),因此本文將著重于層次化混合內(nèi)存上的大頁(yè)支持.在層次結(jié)構(gòu)的混合內(nèi)存中,查找DRAM緩存的元數(shù)據(jù)查找和存儲(chǔ)開銷成為了新的挑戰(zhàn)性問(wèn)題,使得支持較大容量DRAM緩存比較困難.
針對(duì)上述問(wèn)題,我們?cè)O(shè)計(jì)了一個(gè)在層次化混合內(nèi)存上支持大頁(yè)和大容量DRAM緩存的系統(tǒng)(supporting both superpage and large-capacity DRAM cache, SSLDC).SSLDC系統(tǒng)在DRAM和NVM之間使用直接映射的方式,同時(shí)在DRAM緩存中使用4 KB的粗粒度數(shù)據(jù)塊進(jìn)行管理,從而將元數(shù)據(jù)大小降低到能放入片上高速緩存中.為降低DRAM/NVM之間的粗粒度數(shù)據(jù)交換對(duì)內(nèi)存帶寬造成的壓力,提出了DRAM緩存數(shù)據(jù)過(guò)濾機(jī)制,只將訪問(wèn)頻繁的熱數(shù)據(jù)緩存到DRAM中,避免將緩存收益不高的冷數(shù)據(jù)拷貝到DRAM中,減少了混合內(nèi)存間的數(shù)據(jù)交換,從而減輕了內(nèi)存帶寬的占用.還提出了一個(gè)基于內(nèi)存實(shí)時(shí)信息的動(dòng)態(tài)熱度閾值調(diào)整策略,周期性的動(dòng)態(tài)調(diào)整熱度閾值,以靈活適應(yīng)應(yīng)用訪存特征的變化.實(shí)驗(yàn)結(jié)果表明,SSLDC系統(tǒng)與使用大頁(yè)的純NVM內(nèi)存系統(tǒng)和CHOP緩存策略系統(tǒng)相比分別平均有69.9%和15.2%的性能提升,并且與使用大頁(yè)的純DRAM內(nèi)存系統(tǒng)相比平均只有8.8%的性能差距.
本節(jié)首先介紹2種主流的混合內(nèi)存架構(gòu),并分析其各自的特點(diǎn);然后介紹地址轉(zhuǎn)換過(guò)程中存在的TLB性能瓶頸,進(jìn)而介紹大頁(yè)在降低TLB缺失率方面的有效性以及在混合內(nèi)存中支持大頁(yè)使用的必要性.
由于PCM等NVM介質(zhì)具有低延遲、低能耗、非易失性、高密度的特點(diǎn),被認(rèn)為是DRAM內(nèi)存的有效補(bǔ)充或者替代品.但NVM的讀延遲是DRAM讀延遲的幾倍,NVM寫延遲更是超出DRAM一個(gè)數(shù)量級(jí),且NVM寫操作的能耗是DRAM的幾倍.NVM內(nèi)存單元寫次數(shù)有限,大概只能承受108~1012次的寫操作,而DRAM可以承受大于1015次寫操作[7],NVM寫耐受力不足DRAM的1/1 000,NVM存儲(chǔ)單元非常容易因?yàn)轭l繁的寫操作而被寫壞,因此NVM不能完全取代DRAM的位置.為了充分利用NVM容量大和DRAM讀寫性能好的優(yōu)勢(shì),并且最大限度地避免2種存儲(chǔ)介質(zhì)的缺陷,一般把NVM和DRAM結(jié)合起來(lái)構(gòu)造混合內(nèi)存系統(tǒng).目前主要有平行和層次2種混合內(nèi)存架構(gòu).
1) 層次化混合內(nèi)存架構(gòu)(層次結(jié)構(gòu)).如圖1(a)所示,層次結(jié)構(gòu)的混合內(nèi)存系統(tǒng)中,DRAM等快速存儲(chǔ)器作為NVM的緩存[8-9],由于緩存操作時(shí)間開銷較小,因此相較于統(tǒng)一編址結(jié)構(gòu)的平行架構(gòu)混合內(nèi)存系統(tǒng),層次結(jié)構(gòu)的混合內(nèi)存系統(tǒng)能獲取更多的性能提升.傳統(tǒng)的層次化混合內(nèi)存系統(tǒng)用硬件管理DRAM緩存,DRAM的組織形式類似于傳統(tǒng)的片上高速緩存,DRAM緩存對(duì)操作系統(tǒng)透明.最后一級(jí)片上緩存(last level cache, LLC)缺失后,首先通過(guò)DRAM內(nèi)存控制器中的硬件電路查找訪問(wèn)地址對(duì)應(yīng)的標(biāo)識(shí)(tag),判斷訪問(wèn)是否在DRAM緩存中命中,然后再進(jìn)行數(shù)據(jù)訪問(wèn),由此可看出,層次化混合內(nèi)存系統(tǒng)在DRAM緩存缺失的情況下的訪存時(shí)延比較長(zhǎng).此外,硬件管理的DRAM緩存一般采用Demand-Based數(shù)據(jù)預(yù)取機(jī)制[10],即DRAM緩存中數(shù)據(jù)缺失后,必須將其對(duì)應(yīng)的NVM數(shù)據(jù)塊取到DRAM中,該數(shù)據(jù)塊才能被訪問(wèn),在大數(shù)據(jù)環(huán)境下,很多應(yīng)用局部性很差,這種數(shù)據(jù)預(yù)取機(jī)制會(huì)加劇緩存污染問(wèn)題.
2) 統(tǒng)一編址混合內(nèi)存架構(gòu)(平行結(jié)構(gòu)).如圖1(b)所示,DRAM與NVM統(tǒng)一編址,2種內(nèi)存都作為主存使用,并由操作系統(tǒng)進(jìn)行統(tǒng)一的管理和分配[11-13].為了充分發(fā)揮NVM與DRAM的優(yōu)勢(shì),并且盡可能地避免NVM的缺陷給系統(tǒng)帶來(lái)的性能影響,現(xiàn)有研究普遍使用熱頁(yè)遷移這種優(yōu)化策略,即將頻繁訪問(wèn)和頻繁寫的NVM頁(yè)面遷移到DRAM中.為了保證數(shù)據(jù)遷移的正確性,遷移操作一般分為2個(gè)步驟串行執(zhí)行:①讀取源和目標(biāo)頁(yè)框的內(nèi)容到緩沖區(qū)中;②將緩沖區(qū)數(shù)據(jù)寫入到目標(biāo)地址中.因此一次頁(yè)遷移操作會(huì)產(chǎn)生4次頁(yè)拷貝,由于讀取和寫入2個(gè)階段是串行執(zhí)行的,遷移操作的時(shí)間開銷比較大.
Fig.1 Hybrid memory architectures圖1 混合內(nèi)存架構(gòu)
由以上分析可以發(fā)現(xiàn)層次結(jié)構(gòu)和平行結(jié)構(gòu)適合不同的應(yīng)用特征.層次化結(jié)構(gòu)更適合局部性良好的應(yīng)用,由于大部分訪存都在DRAM中命中,可以極大地提高訪存性能.對(duì)于訪存局部性一般的應(yīng)用,由于所有的訪存必須經(jīng)過(guò)DRAM,將導(dǎo)致大量的緩存換入換出,甚至可能導(dǎo)致性能差于純NVM主存.在平行結(jié)構(gòu)中,由軟件及硬件監(jiān)測(cè)應(yīng)用的訪存特征、頁(yè)面的訪問(wèn)信息,并據(jù)此進(jìn)行頁(yè)面的分配、回收與遷移,可以實(shí)現(xiàn)更大的靈活性,但由于監(jiān)測(cè)和頁(yè)面遷移的原因,會(huì)帶來(lái)一定的系統(tǒng)開銷,尤其是在頁(yè)面粒度較大的情況下,遷移一個(gè)頁(yè)面將帶來(lái)較為嚴(yán)重的性能開銷.
當(dāng)處理器要訪問(wèn)某個(gè)內(nèi)存地址時(shí),不是直接在頁(yè)表中查找.虛擬地址首先被送到TLB中查找,若TLB命中,則得到物理地址;否則,稱為TLB缺失,將通過(guò)操作系統(tǒng)的TLB缺失處理程序查找頁(yè)表來(lái)獲取物理地址,并進(jìn)行TLB的更新.在X86架構(gòu)中,共有4級(jí)頁(yè)表,意味著一次TLB缺失,會(huì)增加4次對(duì)內(nèi)存的訪問(wèn).而內(nèi)存的訪問(wèn)速度相比于處理器慢了幾個(gè)數(shù)量級(jí),TLB缺失處理會(huì)增加地址轉(zhuǎn)換的開銷,使系統(tǒng)性能下降.尤其是當(dāng)運(yùn)行科學(xué)計(jì)算、大數(shù)據(jù)等內(nèi)存占用量巨大的應(yīng)用時(shí),TLB缺失的情況會(huì)變得更加嚴(yán)峻.一些相關(guān)研究指出,地址轉(zhuǎn)換開銷占整個(gè)系統(tǒng)開銷的10%~15%[14-15],Muck等人指出,在某些場(chǎng)景下TLB的缺失處理時(shí)間占應(yīng)用總執(zhí)行時(shí)間的40%以上[16],在虛擬化場(chǎng)景下地址轉(zhuǎn)換開銷占整體開銷甚至高達(dá)89%[17],大內(nèi)存工作集應(yīng)用中地址轉(zhuǎn)換開銷占整體開銷高達(dá)50%[18].由此可見,TLB缺失會(huì)嚴(yán)重影響系統(tǒng)的整體性能.因此,必須采取適當(dāng)?shù)氖侄谓档蚑LB缺失率,降低地址轉(zhuǎn)換的開銷,從而提高系統(tǒng)性能.
降低TLB缺失率的辦法主要有2種:1)增大TLB的表項(xiàng)數(shù)目.由于TLB在系統(tǒng)訪存的關(guān)鍵路徑上,增加TLB表項(xiàng)數(shù)目會(huì)增加系統(tǒng)的訪問(wèn)時(shí)延以及造成更高的能耗開銷,并且少量地增加TLB表項(xiàng)不能解決TLB的性能瓶頸問(wèn)題.2)使用大頁(yè).大頁(yè)是由2n個(gè)基本頁(yè)(比如4 KB頁(yè)面)組成連續(xù)且自然對(duì)齊的頁(yè)面.通過(guò)使用較大的頁(yè)面粒度,增加每個(gè)TLB表項(xiàng)所能尋址的地址范圍,從而顯著的降低TLB缺失率.比如相較于使用4 KB頁(yè)面粒度,2 MB的頁(yè)面粒度的系統(tǒng)中,一個(gè)TLB表項(xiàng)可以覆蓋2 MB頁(yè)面的地址范圍,從而使得一個(gè)TLB表項(xiàng)可映射的地址范圍提升(2 048 KB)/(4 KB)=512倍,進(jìn)而顯著增加TLB命中率,同時(shí)實(shí)現(xiàn)在未增加TLB硬件開銷的情況下,顯著地降低了虛實(shí)地址轉(zhuǎn)化開銷.
Korn等人通過(guò)運(yùn)行SPEC CPU2006基準(zhǔn)得出,使用64 KB和16 MB的大頁(yè),分別提高系統(tǒng)性能高達(dá)46.9%和50.9%[18].Zhang等人指出,對(duì)于Linpack測(cè)試基準(zhǔn)中的矩陣乘法,使用16 MB的大頁(yè)相比于使用16 KB的頁(yè)面,TLB缺失數(shù)量可減少99%以上[19].使用大頁(yè)被認(rèn)為是降低TLB缺失率最好的辦法.
對(duì)于大內(nèi)存應(yīng)用,如果使用傳統(tǒng)的4 KB細(xì)粒度頁(yè)面,會(huì)使TLB缺失率劇增,導(dǎo)致系統(tǒng)性能嚴(yán)重下降.因此在混合內(nèi)存系統(tǒng)中解決TLB 性能瓶頸問(wèn)題顯得尤為迫切,提供大頁(yè)支持十分必要.
下面將分2部分介紹在平行結(jié)構(gòu)和層次結(jié)構(gòu)混合內(nèi)存中使用大頁(yè)所面臨的挑戰(zhàn).
在平行結(jié)構(gòu)的混合內(nèi)存架構(gòu)中,操作系統(tǒng)需要提供一定的策略來(lái)將NVM中訪問(wèn)熱度高的頁(yè)面遷移到DRAM中,將DRAM中熱度低的頁(yè)面交換到NVM中,頁(yè)面遷移涉及到4次頁(yè)拷貝,開銷很大.為了防止過(guò)多的數(shù)據(jù)遷移,文獻(xiàn)[11]和文獻(xiàn)[20]中提到了使用硬件方法的細(xì)粒度熱數(shù)據(jù)遷移策略,但對(duì)硬件的改動(dòng)較多,硬件復(fù)雜度高,實(shí)施難度大.硬件都是針對(duì)DRAM/NVM容量比例設(shè)計(jì)的,可擴(kuò)展性差.大頁(yè)內(nèi)部數(shù)據(jù)讀寫熱度往往不均,在DRAM和NVM間以大頁(yè)為粒度進(jìn)行熱數(shù)據(jù)遷移,會(huì)在遷移了熱數(shù)據(jù)的同時(shí)也遷移了大量的冷數(shù)據(jù),造成極大地帶寬浪費(fèi).軟件支持的細(xì)粒度熱數(shù)據(jù)遷移,又需要操作系統(tǒng)支持多粒度頁(yè)面,遷移時(shí)需要更改頁(yè)表、TLB表項(xiàng),進(jìn)行clflush, tlb shootdown等操作,系統(tǒng)開銷非常大,DRAM和NVM的內(nèi)存管理也會(huì)變得很復(fù)雜.
而在層次化的混合內(nèi)存架構(gòu)中,硬件管理的DRAM緩存支持以較小的粒度加載NVM主存中的數(shù)據(jù).比如在純DRAM內(nèi)存的架構(gòu)上,LLC中的cache line的粒度是64 B,而DRAM主存的頁(yè)面粒度是4 KB, 當(dāng)LLC缺失時(shí),以相對(duì)于DRAM頁(yè)面較小的cache line粒度來(lái)加載數(shù)據(jù).層次化混合內(nèi)存結(jié)構(gòu)中NVM和DRAM之間的數(shù)據(jù)交換不需要對(duì)頁(yè)表、TLB等進(jìn)行操作,相較于平行結(jié)構(gòu)開銷更小.層次化的混合內(nèi)存可以很好地支持大頁(yè)的使用,便于實(shí)現(xiàn)熱度感知的細(xì)粒度數(shù)據(jù)交換,不會(huì)存在平行結(jié)構(gòu)混合內(nèi)存架構(gòu)中的困難.因此在更適合在層次結(jié)構(gòu)的混合內(nèi)存上提供大頁(yè)支持.
然而,層次結(jié)構(gòu)的混合內(nèi)存中存在著元數(shù)據(jù)查找和存儲(chǔ)開銷大的挑戰(zhàn).圖2中展示的是DRAM查找元數(shù)據(jù)命中時(shí)的訪存開銷.如圖2(a)所示,當(dāng)訪問(wèn)DRAM緩存時(shí),首先查找元數(shù)據(jù),確定所訪問(wèn)的數(shù)據(jù)是不是在DRAM中.這個(gè)串行化的查找過(guò)程,在訪存的關(guān)鍵路徑上.如果將元數(shù)據(jù)存放在DRAM中,相當(dāng)于每次訪存都增加了一次對(duì)DRAM內(nèi)存的訪問(wèn),這將嚴(yán)重影響系統(tǒng)的性能.
為了加速元數(shù)據(jù)的查找過(guò)程,如圖2(b)所示,一般將元數(shù)據(jù)存儲(chǔ)在一塊高速的靜態(tài)隨機(jī)存儲(chǔ)器(static random access memory, SRAM)中,以減少元數(shù)據(jù)查找對(duì)系統(tǒng)性能的不良影響.對(duì)于片上cache,因其容量小、所需元數(shù)據(jù)很少,不存在元數(shù)據(jù)空間開銷大的問(wèn)題.但當(dāng)前計(jì)算機(jī)中DRAM一般有著較大的容量,對(duì)于4 GB的DRAM緩存,若使用64 B粒度的數(shù)據(jù)塊,元數(shù)據(jù)的存儲(chǔ)開銷將達(dá)到384 MB,遠(yuǎn)遠(yuǎn)超過(guò)當(dāng)前的LLC大小,放置在SRAM中是不現(xiàn)實(shí)的.
對(duì)于上述問(wèn)題,Loh和Hill在組相聯(lián)的DRAM緩存中采用64 B細(xì)粒度cacheline[21], 如圖3所示,他們修改了硬件結(jié)構(gòu),將元數(shù)據(jù)和數(shù)據(jù)放置在同一個(gè)bank行中,每一個(gè)bank行里存放著一組cache line和對(duì)應(yīng)的元數(shù)據(jù).每次訪存請(qǐng)求到來(lái)時(shí),根據(jù)請(qǐng)求中的地址得到組相聯(lián)映射的組號(hào),查找元數(shù)據(jù)時(shí)會(huì)把組號(hào)對(duì)應(yīng)的bank行加載到bank行緩沖區(qū)(bankrow buffer)中.如圖2(c)所示,如果DRAM命中,則數(shù)據(jù)此時(shí)已經(jīng)在bank行緩沖區(qū)中了,能快速地訪問(wèn)數(shù)據(jù).
Fig.2 Access cost when DRAM hit圖2 DRAM緩存命中時(shí)的訪問(wèn)開銷
Fig.3 Metadata and data in the same bank row圖3 元數(shù)據(jù)和數(shù)據(jù)放置在同一bank row示意圖
圖3中的策略充分利用了內(nèi)存的行緩沖區(qū)(row buffer)命中,有效地縮短了DRAM命中時(shí)的串行查找開銷,甚至優(yōu)于將元數(shù)據(jù)放置在SRAM中的情況.但是在DRAM緩存缺失時(shí)會(huì)產(chǎn)生4次訪存:1)訪問(wèn)存放在DRAM中的元數(shù)據(jù),判斷所訪問(wèn)數(shù)據(jù)是否在DRAM緩存中;2)DRAM缺失后,需要訪問(wèn)NVM讀取數(shù)據(jù);3)將NVM上的數(shù)據(jù)寫到DRAM緩存中;4)訪問(wèn)DRAM緩存,進(jìn)行相應(yīng)的訪存操作.當(dāng)應(yīng)用的局部性不佳導(dǎo)致DRAM命中率很低時(shí),該策略由于DRAM缺失時(shí)開銷較大,將導(dǎo)致嚴(yán)重的性能下降.同時(shí)對(duì)內(nèi)存硬件結(jié)構(gòu)有修改,可擴(kuò)展性差,大約有9%的DRAM用來(lái)存放元數(shù)據(jù),減少了DRAM實(shí)際可用的容量,會(huì)加劇DRAM的缺失問(wèn)題.
Jiang等人提出了緩存熱頁(yè)(caching hot page, CHOP)的策略[22].在DRAM緩存中采用4 KB的粗粒度管理方式,有效地減小了元數(shù)據(jù)存儲(chǔ)開銷,將元數(shù)據(jù)放置在SRAM中加速元數(shù)據(jù)的查找過(guò)程.使用4 KB的DRAM 緩存粒度,每次DRAM緩存缺失時(shí),都會(huì)從下層存儲(chǔ)器中加載一個(gè)4 KB的頁(yè)面.根據(jù)局部性原理,DRAM緩存采用更大的頁(yè)面管理粒度,可以有效地提高DRAM命中率,但是粗粒度的數(shù)據(jù)交換會(huì)增加對(duì)內(nèi)存帶寬的壓力.Jiang等人通過(guò)DRAM管理粒度敏感性實(shí)驗(yàn)得到,當(dāng)DRAM緩存行(DRAM cache line)增加到2 KB時(shí),內(nèi)存帶寬占用接近100%,這是嚴(yán)重的性能瓶頸.因此提出了cache過(guò)濾機(jī)制,加入一個(gè)硬件的過(guò)濾緩存(filter cache)結(jié)構(gòu)動(dòng)態(tài)的監(jiān)測(cè)主存中頁(yè)面的熱度.當(dāng)DRAM缺失時(shí),只有訪問(wèn)頻度超過(guò)一定閾值的熱頁(yè),才能被加載到DRAM緩存中.避免了將熱度低的頁(yè)面加載到DRAM緩存中造成的頁(yè)面拷貝開銷和帶寬占用,也防止了冷數(shù)據(jù)加載到DRAM中浪費(fèi)DRAM的空間.
但CHOP緩存機(jī)制中的DRAM緩存只有128 MB,因此需要198 KB的空間存儲(chǔ)元數(shù)據(jù).當(dāng)今計(jì)算機(jī)里內(nèi)存大小一般遠(yuǎn)大于128 MB.對(duì)于4 GB的DRAM緩存,需要6 MB的SRAM空間存儲(chǔ)元數(shù)據(jù),會(huì)造成較大的硬件開銷.因此,CHOP緩存機(jī)制不能支持較大的DRAM緩存,系統(tǒng)的可擴(kuò)展性差.同時(shí),該策略中的熱頁(yè)閾值是通過(guò)離線的分析訪存軌跡(trace)得到的,找出貢獻(xiàn)80%訪問(wèn)次數(shù)的頁(yè)面,認(rèn)為這些頁(yè)面熱頁(yè),并將這些頁(yè)面中訪問(wèn)最少的次數(shù)設(shè)置為閾值.針對(duì)不同應(yīng)用都需要離線運(yùn)行一遍,然后通過(guò)分析獲得靜態(tài)閾值.由于不同應(yīng)用程序的訪存特性差異,他們的閾值都不相同.這種靜態(tài)的閾值設(shè)置可能過(guò)高,會(huì)增加對(duì)NVM的訪存操作;而且這種靜態(tài)閾值的設(shè)置只考慮到了熱度信息,沒有考慮到實(shí)時(shí)帶寬占用的影響,閾值設(shè)置方法可操作性差,不適用于多進(jìn)程等多種應(yīng)用場(chǎng)景,自適應(yīng)性較差,靈活性低.
Fig.4 Architecture and function modules圖4 系統(tǒng)架構(gòu)與功能模塊
針對(duì)第2節(jié)提到的挑戰(zhàn),本文設(shè)計(jì)了一個(gè)支持大頁(yè)和大容量緩存的層次化混合內(nèi)存系統(tǒng)SSLDC.下面首先介紹系統(tǒng)的幾個(gè)模塊是如何工作的;然后介紹DRAM緩存的管理,包括使用粗粒度的DRAM數(shù)據(jù)塊、DRAM緩存與NVM主存間使用直接映射相聯(lián);最后介紹緩存數(shù)據(jù)操作的過(guò)濾機(jī)制,包括輕量級(jí)的熱度信息監(jiān)測(cè)、動(dòng)態(tài)的熱度閾值調(diào)整.
針對(duì)在混合內(nèi)存中使用大頁(yè)時(shí)存在的諸多挑戰(zhàn),我們?cè)O(shè)計(jì)了一個(gè)在層次化結(jié)構(gòu)的混合內(nèi)存上支持大頁(yè)和大容量緩存的系統(tǒng),針對(duì)DRAM緩存的元數(shù)據(jù)存儲(chǔ)和查詢延遲的問(wèn)題,采用4 KB粗粒度的DRAM管理方式,在DRAM緩存和NVM主存之間采用直接映射,從而進(jìn)一步精簡(jiǎn)了DRAM緩存標(biāo)志的結(jié)構(gòu),減小了元數(shù)據(jù)的存儲(chǔ)壓力,解決了文獻(xiàn)[22]中的CHOP策略無(wú)法支持大容量DRAM、可擴(kuò)展性差的問(wèn)題.
圖4所示的是SSLDC系統(tǒng)的架構(gòu)和功能模塊整體設(shè)計(jì)圖.DRAM作為NVM主存的緩存使用,可以看作是L4C (level 4 cache),被硬件直接管理,對(duì)操作系統(tǒng)透明.在DRAM中采用4 KB的粗粒度管理方式,與NVM主存之間采用直接映射的方式相聯(lián).在NVM主存中使用2 MB的大頁(yè),以減少TLB缺失率,加快地址轉(zhuǎn)換的速度.提出一個(gè)對(duì)DRAM緩存數(shù)據(jù)操作的過(guò)濾機(jī)制,只有訪問(wèn)熱度高的4 KB NVM數(shù)據(jù)塊才能在DRAM缺失時(shí)被加載到DRAM中.熱度監(jiān)測(cè)機(jī)制周期性的監(jiān)測(cè)NVM上的訪問(wèn)信息,包括以4 KB為粒度的數(shù)據(jù)塊的讀寫熱度、每個(gè)監(jiān)測(cè)周期內(nèi)DRAM命中率、DRAM和NVM之間交換數(shù)據(jù)對(duì)內(nèi)存帶寬的占用情況等.在內(nèi)存控制器中開辟一小塊高速SRAM來(lái)記錄NVM中最近最頻繁訪問(wèn)的4 KB數(shù)據(jù)塊的熱度信息,并綜合實(shí)時(shí)的DRAM命中率、帶寬占用情況、DRAM緩存使用情況,周期性地對(duì)熱度閾值進(jìn)行調(diào)整.
在整個(gè)訪存流程中,首先查找DRAM緩存的元數(shù)據(jù)來(lái)確定所訪問(wèn)的數(shù)據(jù)是否在DRAM緩存中.為了加速元數(shù)據(jù)的查找過(guò)程,本文選擇將元數(shù)據(jù)存儲(chǔ)在高速的SRAM中.在層次化結(jié)構(gòu)中,顯然DRAM緩存越大,就能存放更多的數(shù)據(jù),DRAM命中率也會(huì)更高,從而有更好的性能.DRAM容量對(duì)DRAM命中率的影響將在后續(xù)的實(shí)驗(yàn)部分討論.一般每一個(gè)DRAM數(shù)據(jù)塊需要6 B的元數(shù)據(jù)來(lái)維護(hù)DRAM到NVM的映射關(guān)系[21-22].如果DRAM緩存管理采用64 B數(shù)據(jù)塊、組相聯(lián)映射的方式,對(duì)于一塊4 GB的DRAM緩存,需要384 MB的空間存儲(chǔ)元數(shù)據(jù),如此巨大的元數(shù)據(jù)無(wú)法放置在SRAM中.當(dāng)采用4 KB大小的DRAM 數(shù)據(jù)塊時(shí),存儲(chǔ)元數(shù)據(jù)的空間開銷減少到6 MB.但將這么多的元數(shù)據(jù)放在SRAM中還是存在一定困難.
圖5(a)展示的是DRAM緩存和NVM主存之間的組相聯(lián)映射.在組相聯(lián)映射中,NVM主存數(shù)據(jù)塊映射到哪一組是固定的,而映射到組內(nèi)的哪一路是不固定的.硬件比較器并行的將訪存地址中的tag和所在組中每一行的tag進(jìn)行比較.tag需要維護(hù)DRAM緩存中數(shù)據(jù)塊在NVM中的具體的地址,因此每個(gè)元數(shù)據(jù)表項(xiàng)需要占用較多的位存儲(chǔ)地址信息.
為了減少元數(shù)據(jù)存儲(chǔ)的開銷,如圖5(b)展示的是直接映射的示意圖.在直接映射中,每一個(gè)NVM內(nèi)存數(shù)據(jù)塊都映射在固定的DRAM緩存塊上,圖5(b)中所示的DRAM與NVM的容量比是1∶4.直接映射的元數(shù)據(jù)tag不需要記錄數(shù)據(jù)塊對(duì)應(yīng)的NVM主存的地址,只需要記錄所對(duì)應(yīng)數(shù)據(jù)在NVM主存上的區(qū)號(hào).在圖5(b)中,元數(shù)據(jù)中的tag只需要2 b保存DRAM緩存數(shù)據(jù)塊在NVM主存中的區(qū)號(hào),就足以維護(hù)混合內(nèi)存間的映射.這極大地精簡(jiǎn)了元數(shù)據(jù)的結(jié)構(gòu),對(duì)于圖5(b)中DRAM與NVM容量比例 1∶4 的配置,每一個(gè)DRAM數(shù)據(jù)塊只需要4 b來(lái)存儲(chǔ)元數(shù)據(jù),相較于組相聯(lián)映射的6 B開銷,明顯減少.為了提高系統(tǒng)的可擴(kuò)展能力和內(nèi)存配置靈活性,我們使用6 b來(lái)記錄主存上的區(qū)號(hào),因此DRAM和NVM的比例可以根據(jù)需要靈活配置.使用4 KB粗粒度管理的4 GB DRAM,只需要1 MB的元數(shù)據(jù)存儲(chǔ)開銷.精簡(jiǎn)后的元數(shù)據(jù)存放在SRAM中,而不造成較大的硬件開銷.
Fig.5 Set-associative mapped and direct mapped hybrid memory圖5 組相聯(lián)映射和直接映射的層次化混合內(nèi)存
使用直接映射,硬件電路簡(jiǎn)單,容易實(shí)現(xiàn),但存在著命中率低的問(wèn)題.在LLC和主存的直接映射中,每一塊主存數(shù)據(jù)只能映射在固定的cache空間上,如果兩塊映射在同一cache空間的主存數(shù)據(jù)在某時(shí)間段內(nèi)都被頻繁訪問(wèn)時(shí)會(huì)成數(shù)據(jù)頻繁的換入換出,DRAM命中率嚴(yán)重下降.但考慮到,本架構(gòu)中使用4 GB的大容量DRAM,2個(gè)可能發(fā)生沖突的主存數(shù)據(jù)塊在物理地址上相隔4 GB的距離,因此在這樣的大容量DRAM緩存和NVM主存間使用直接映射的方式,產(chǎn)生緩存數(shù)據(jù)塊替換的概率會(huì)下降很多,而且后續(xù)提到的DRAM緩存過(guò)濾機(jī)制也能在一定程度上減少這種頻繁的數(shù)據(jù)交換.在后續(xù)實(shí)驗(yàn)部分進(jìn)行的混合內(nèi)存上映射方式敏感性測(cè)試也佐證了這一點(diǎn).
在訪存流程中,查找DRAM發(fā)生缺失時(shí),會(huì)先從NVM中取數(shù)據(jù)到DRAM中,然后在DRAM中訪問(wèn)數(shù)據(jù).每次DRAM缺失都會(huì)造成一次數(shù)據(jù)的預(yù)取,由于本系統(tǒng)中使用4 KB的粗粒度DRAM數(shù)據(jù)塊,因此頻繁的取數(shù)據(jù)操作產(chǎn)生的數(shù)據(jù)拷貝量會(huì)造成嚴(yán)重的帶寬壓力.文獻(xiàn)[22]中指出,如果每一次DRAM缺失,都從NVM主存中加載數(shù)據(jù),當(dāng)DRAM緩存數(shù)據(jù)粒度是2 KB時(shí),在某些場(chǎng)景下就可能造成100%的帶寬占用.因此需要在層次化混合內(nèi)存系統(tǒng)中加入過(guò)濾機(jī)制,避免向DRAM緩存中加載熱度低的數(shù)據(jù)塊,以降低對(duì)內(nèi)存帶寬的占用.
圖6展示的是采用DRAM預(yù)取過(guò)濾機(jī)制后的訪存流程.CPU發(fā)出的訪求請(qǐng)求通過(guò)地址轉(zhuǎn)換得到物理地址,再到cache中查找.如果cache命中,則直接訪問(wèn)cache上的數(shù)據(jù);否則,首先查找DRAM緩存中的元數(shù)據(jù).若DRAM命中,則直接訪問(wèn)DRAM上的數(shù)據(jù);若DRAM缺失,則查找存放在SRAM上的數(shù)據(jù)塊熱度記錄表.數(shù)據(jù)塊熱度記錄表有1 024個(gè)表項(xiàng),存儲(chǔ)著當(dāng)前監(jiān)測(cè)周期內(nèi)最近最頻繁訪問(wèn)的NVM中的4 KB數(shù)據(jù)塊的熱度信息.如果所訪問(wèn)的數(shù)據(jù)塊信息不在數(shù)據(jù)塊熱度記錄表中,則直接訪問(wèn)NVM內(nèi)存并插入一條新的表項(xiàng)到數(shù)據(jù)塊熱度記錄表中,這樣過(guò)濾掉取一個(gè)NVM數(shù)據(jù)塊到DRAM中的操作.若所訪問(wèn)的數(shù)據(jù)塊熱度信息在數(shù)據(jù)塊熱度記錄表中,則需要判斷其熱度是否大于閾值.如果大于閾值,該數(shù)據(jù)塊被鑒定為熱數(shù)據(jù),被緩存到DRAM中;否則,直接訪問(wèn)NVM,并更新數(shù)據(jù)塊熱度信息,該數(shù)據(jù)塊暫時(shí)不會(huì)被緩存到DRAM中.
Fig.6 Memory access process while using cache filter圖6 使用緩存過(guò)濾時(shí)的訪存流程
通過(guò)上述的過(guò)濾機(jī)制,只有熱度足夠的NVM數(shù)據(jù)塊才會(huì)被緩存到DRAM中,避免了將大量冷數(shù)據(jù)塊緩存到DRAM中,從而降低了混合內(nèi)存間數(shù)據(jù)交換對(duì)內(nèi)存帶寬造成的壓力.
如圖7所示,以108個(gè)CPU時(shí)鐘周期為時(shí)間片記錄每個(gè)周期內(nèi)混合內(nèi)存間數(shù)據(jù)交換對(duì)帶寬的占用情況,分別畫出了不使用過(guò)濾機(jī)制和使用過(guò)濾機(jī)制運(yùn)行Linpack[23]應(yīng)用時(shí),數(shù)據(jù)交換對(duì)內(nèi)存帶寬占用百分比隨時(shí)間變化的曲線圖.未使用過(guò)濾機(jī)制的Linpack在起始階段對(duì)帶寬的占用在20%,隨著時(shí)間推移,訪存特征發(fā)生變化,對(duì)帶寬的占用迅速提高到100%,這個(gè)時(shí)候系統(tǒng)甚至?xí)l(fā)生癱瘓.而使用了過(guò)濾機(jī)制后,由于根據(jù)應(yīng)用的實(shí)時(shí)訪存特征,動(dòng)態(tài)的調(diào)整熱度閾值,只把滿足熱度閾值的熱數(shù)據(jù)緩存到DRAM中,帶寬占用始終被控制在較低的水平.
Fig.7 Bandwidth occupancy with cache filter and without filter圖7 使用緩存過(guò)濾和不使用過(guò)濾時(shí)的帶寬占用
要在DRAM上使用過(guò)濾機(jī)制,需要知道NVM上數(shù)據(jù)塊的熱度信息.本系統(tǒng)中NVM上熱度信息監(jiān)測(cè)的粒度和DRAM緩存管理粒度一致,都是4 KB數(shù)據(jù)塊.在NVM上以4 KB為粒度監(jiān)測(cè)數(shù)據(jù)塊的訪存信息,每個(gè)4 KB數(shù)據(jù)塊需要使用2 B的計(jì)數(shù)器來(lái)存儲(chǔ)熱度值,以保證數(shù)據(jù)塊在周期時(shí)間內(nèi)的熱度值不會(huì)超過(guò)計(jì)數(shù)器最大計(jì)數(shù)范圍.對(duì)于本架構(gòu)中32 GB的NVM,監(jiān)測(cè)所有的NVM數(shù)據(jù)塊需要16 MB空間存儲(chǔ)熱度信息,數(shù)據(jù)量太大,存儲(chǔ)在SRAM中不現(xiàn)實(shí).而每次DRAM缺失時(shí),都需要查找一次訪存請(qǐng)求所訪問(wèn)數(shù)據(jù)塊的熱度值,為了縮短查找時(shí)延,需要將熱度信息存儲(chǔ)在高速的SRAM中.這就是當(dāng)前面臨著的矛盾.
文獻(xiàn)[24]中通過(guò)實(shí)驗(yàn)分析大量應(yīng)用的訪存特征,得出雖然大部分應(yīng)用總的內(nèi)存占用很大,但是在一定的時(shí)間周期內(nèi)(108cycle)所訪問(wèn)到的工作集只是其中很小的一部分.在本系統(tǒng)中由于DRAM緩存讀緩存請(qǐng)求的過(guò)濾作用,大部分訪存請(qǐng)求都直接訪問(wèn)DRAM中的數(shù)據(jù),實(shí)際上訪問(wèn)NVM內(nèi)存的部分工作集就更少了.根據(jù)這一特性,我們?cè)黾恿艘恍KSRAM,用來(lái)存放數(shù)據(jù)塊熱度信息記錄表.每個(gè)熱度信息表項(xiàng)需要8 B的存儲(chǔ)空間,包括3部分組成:1)28 b的NVM數(shù)據(jù)塊的塊號(hào),用來(lái)記錄NVM中數(shù)據(jù)塊的塊號(hào)信息,最大可支持1TB大小的主存,有很強(qiáng)的可擴(kuò)展性.2)22 b的最近最少使用(least recently used, LRU)值,用來(lái)記錄當(dāng)前熱度信息記錄表中表項(xiàng)的LRU信息.3)14 b的熱度值,記錄當(dāng)前數(shù)據(jù)塊的熱度.本系統(tǒng)中的熱度記錄表包括1 024個(gè)表項(xiàng),只需要8 KB的硬件存儲(chǔ)開銷.
在DRAM緩存過(guò)濾機(jī)制中,每次DRAM缺失都需要查找數(shù)據(jù)塊熱度記錄表以確定是否要將訪存請(qǐng)求訪問(wèn)的數(shù)據(jù)塊緩存到DRAM中.如果熱度信息記錄表的表項(xiàng)數(shù)太少,會(huì)造成大量的表項(xiàng)替換,一些舊的數(shù)據(jù)塊的熱度信息就會(huì)丟失,對(duì)熱度監(jiān)測(cè)的準(zhǔn)確性造成影響.為了驗(yàn)證使用1 024個(gè)表項(xiàng)來(lái)維護(hù)熱度信息是否足夠,我們統(tǒng)計(jì)了查找熱度信息記錄表的命中率.經(jīng)過(guò)實(shí)驗(yàn)得出查找熱度信息表的平均命中率高達(dá)99.1%,只有極少的舊表項(xiàng)會(huì)被換出,證明了本系統(tǒng)中使用1 024個(gè)表項(xiàng)是足夠的.由于NVM讀寫不對(duì)稱,讀延遲是DRAM的幾倍,而寫延遲比DRAM高一個(gè)數(shù)量級(jí).同時(shí)NVM寫耐受力差,頻繁的寫操作容易破壞NVM的存儲(chǔ)單元.因此更傾向于將寫熱度高的數(shù)據(jù)鑒定為熱頁(yè)加載到DRAM中.在統(tǒng)計(jì)NVM數(shù)據(jù)塊訪問(wèn)熱度時(shí),對(duì)于讀寫操作分別給予不同的熱度權(quán)重.每對(duì)NVM內(nèi)存進(jìn)行一次讀操作,增加Tnvm_read_cycle-Tdram_read_cycle的熱度值,其中Tnvm_read_cycle和Tdram_read_cycle分別代表NVM和DRAM進(jìn)行一次讀操作平均所需的時(shí)鐘周期數(shù).每對(duì)NVM內(nèi)存進(jìn)行一次寫操作,增加Tnvm_write_cycle-Tdram_write_cycle的熱度值,其中Tnvm_write_cycle和Tdram_write_cycle分別代表NVM和DRAM進(jìn)行一次讀操作平均所需的時(shí)鐘周期數(shù).由于寫操作密集的數(shù)據(jù)放置在DRAM中帶來(lái)的收益更大,因此寫操作在數(shù)據(jù)塊熱度計(jì)算過(guò)程中被賦予了更大的權(quán)重,寫操作頻繁的數(shù)據(jù)塊就更容易達(dá)到閾值從而被緩存到DRAM中.
除了記錄NVM數(shù)據(jù)塊的熱度信息,也用一個(gè)計(jì)數(shù)器記錄每個(gè)周期內(nèi)混合內(nèi)存間數(shù)據(jù)交換的數(shù)據(jù)量,用來(lái)估算數(shù)據(jù)交換對(duì)內(nèi)存帶寬的壓力.同時(shí)也記錄DRAM緩存的訪問(wèn)次數(shù)和命中次數(shù),用來(lái)計(jì)算每個(gè)周期內(nèi)實(shí)時(shí)的DRAM命中率,用于指導(dǎo)閾值的動(dòng)態(tài)調(diào)整策略.
閾值的選取,決定了在DRAM缺失時(shí)是否從NVM主存中將請(qǐng)求的數(shù)據(jù)塊加載到DRAM中.閾值選取過(guò)低,會(huì)減弱了過(guò)濾機(jī)制的作用,將大量訪問(wèn)熱度不高的數(shù)據(jù)也加載到DRAM中.閾值選取過(guò)高,熱數(shù)據(jù)很晚才能被加載到DRAM中,NVM會(huì)承受大量的讀寫操作,會(huì)降低系統(tǒng)的性能和使用壽命.由于應(yīng)用的訪存特征在運(yùn)行過(guò)程中會(huì)動(dòng)態(tài)地發(fā)生變化,不同的應(yīng)用訪存特征差異性也較大.為了保證系統(tǒng)的靈活性和可用性,需要使用動(dòng)態(tài)的熱度閾值調(diào)整策略.
在本系統(tǒng)中,對(duì)于閾值的動(dòng)態(tài)調(diào)整,為了盡可能優(yōu)化系統(tǒng)的性能,有3點(diǎn)因素需要考慮:1)DRAM實(shí)時(shí)的命中率.DRAM的命中率越高,從NVM中取數(shù)據(jù)的次數(shù)就越少,性能、帶寬上的表現(xiàn)也會(huì)好.因此在帶寬條件允許的情況下適當(dāng)?shù)亟档烷撝?,將更多的?shù)據(jù)加載到DARM緩存中,有助于提高DRAM緩存的命中率,從而提升系統(tǒng)整體性能.2)大多數(shù)應(yīng)用的工作集小于DRAM緩存大小,對(duì)于這類應(yīng)用,設(shè)置較低的閾值,將其全部工作集盡早的調(diào)入到DRAM緩存中有利于提高系統(tǒng)的性能.3)要考慮帶寬的占用情況,避免出現(xiàn)帶寬100%占用的情形.在帶寬占用嚴(yán)重時(shí),應(yīng)快速大步長(zhǎng)的提高熱度閾值,減少數(shù)據(jù)交換量,防止數(shù)據(jù)交換對(duì)內(nèi)存帶寬造成巨大壓力.根據(jù)上述的3點(diǎn)因素,在SSLDC中提出了基于應(yīng)用運(yùn)行過(guò)程中實(shí)時(shí)信息的動(dòng)態(tài)閾值調(diào)整算法.
閾值動(dòng)態(tài)調(diào)整的過(guò)程如下:
1) 考慮DRAM的命中率.當(dāng)DRAM命中率小于10%時(shí),此時(shí)的閾值可能設(shè)置得太大了,導(dǎo)致最近訪問(wèn)的數(shù)據(jù)熱度很難達(dá)到將其緩存到DRAM中所需的閾值.此時(shí)需要快速地以大步長(zhǎng)來(lái)減小閾值;當(dāng)DRAM命中率在10%~50%時(shí),混合內(nèi)存的性能不是很好,此時(shí)適當(dāng)?shù)販p小閾值,以提升DRAM命中率;當(dāng)DRAM命中率在50%~80%之間時(shí),在不對(duì)內(nèi)存帶寬產(chǎn)生壓力的情況下,以小步長(zhǎng)減小閾值以進(jìn)一步提高DRAM命中率.
2) 考慮實(shí)時(shí)的DRAM緩存使用情況.在DRAM空間比較富余時(shí),將閾值設(shè)為0,盡可能地利用空閑的DRAM緩存.
3) 考慮帶寬的實(shí)時(shí)占用情況.前面2點(diǎn)都是盡可能地在帶寬允許的條件下減小閾值,以達(dá)到更高的DRAM命中率.在本策略中,每個(gè)周期都會(huì)統(tǒng)計(jì)DRAM和NVM間數(shù)據(jù)交換所產(chǎn)生的帶寬占用量,根據(jù)這個(gè)占用情況來(lái)最終決定閾值的設(shè)置.當(dāng)數(shù)據(jù)交換產(chǎn)生的帶寬占用小于10%時(shí),不會(huì)對(duì)內(nèi)存帶寬產(chǎn)生壓力,因此不進(jìn)一步對(duì)閾值進(jìn)行調(diào)整.當(dāng)數(shù)據(jù)交換的帶寬占用超過(guò)20%時(shí),此時(shí)會(huì)較嚴(yán)重的對(duì)內(nèi)存帶寬產(chǎn)生壓力,大步長(zhǎng)的增加閾值,從而過(guò)濾掉更多數(shù)據(jù)交換的操作.當(dāng)數(shù)據(jù)交換的帶寬占用在15%~20%之間時(shí),存在一定的帶寬壓力,此時(shí)適當(dāng)?shù)脑黾娱撝?,降低?shù)據(jù)交換所產(chǎn)生的內(nèi)存占用;當(dāng)這部分帶寬占用在10%~15%之間時(shí),小步長(zhǎng)的增加閾值,將數(shù)據(jù)交換產(chǎn)生的帶寬占用控制到10%左右.
使用了動(dòng)態(tài)閾值調(diào)整技術(shù)后,DRAM和NVM間數(shù)據(jù)交換產(chǎn)生的帶寬占用維持在10%左右,在不對(duì)帶寬產(chǎn)生明顯壓力的情況下,盡可能地降低閾值以提高DRAM命中率,從而提高系統(tǒng)整體性能.
本系統(tǒng)是基于zsim[25]和 NVMain[26]兩個(gè)廣泛使用的模擬器實(shí)現(xiàn)的.其中,zsim是一個(gè)快速的x86-64架構(gòu)的多核模擬器,它使用Intel Pin[27]工具收集處理器的訪存信息,并且在zsim中進(jìn)行重放.我們借鑒了文獻(xiàn)[24]對(duì)zsim做的修改,同樣在zsim源碼中加入了對(duì)操作系統(tǒng)功能的模擬模塊(比如伙伴分配器、頁(yè)表及TLB管理等).CPU訪存前,首先調(diào)用伙伴分配器為虛擬頁(yè)分配對(duì)應(yīng)的物理頁(yè),并在頁(yè)表中建立虛擬頁(yè)到物理頁(yè)的映射;CPU訪存時(shí),通過(guò)TLB獲取虛擬地址對(duì)應(yīng)的物理地址.另一個(gè)模擬器—NVMain,是一個(gè)時(shí)鐘精確性的內(nèi)存模擬器,它可以同時(shí)模擬DRAM以及NVM內(nèi)存的訪存行為.在實(shí)驗(yàn)中,我們使用NVMain來(lái)模擬DRAM與NVM組成的混合內(nèi)存系統(tǒng).
本系統(tǒng)詳細(xì)配置信息如表1所示.因?yàn)镻CM是研究領(lǐng)域中主流的NVM介質(zhì).我們選擇PCM作為NVM的代表,其中具體的時(shí)序和能耗參數(shù)主要參考文獻(xiàn)[24]和文獻(xiàn)[28].
Table 1 System Detailed Configuration 表1 系統(tǒng)詳細(xì)配置
Table 1 (Continued)
我們測(cè)試了不同訪存特征的測(cè)試集,如表2所示,這些測(cè)試用例選自SPEC CPU 2006[29],Parsec[30],Problem Based Benchmarks Suit (PBBS)[31]以及大內(nèi)存應(yīng)用Graph500[32],Linpack[23]和NPB-CG[33].其中mcf,soplex,freqmine,BFS,setCover等應(yīng)用的內(nèi)存占用小于4 GB大小.MST,Graph500,Linpack,NPB-CG的內(nèi)存占用均超過(guò)4 GB.
Table 2 Benchmarks表2 應(yīng)用程序測(cè)試集
為了衡量本系統(tǒng)在系統(tǒng)性能、能耗、帶寬占用等方面的表現(xiàn),共設(shè)置了5組系統(tǒng)進(jìn)行對(duì)比:
1) NVM-2 MB.主存由單一的32 GB NVM存儲(chǔ)器構(gòu)成的系統(tǒng),在所有對(duì)比系統(tǒng)中,性能最差.
2) DRAM-2 MB.主存由單一的32 GB DRAM存儲(chǔ)器構(gòu)成的系統(tǒng),在所有對(duì)比系統(tǒng)中,能耗較高,價(jià)格最貴,但性能最好.
3) CHOP.文獻(xiàn)[4]中提到的層次化結(jié)構(gòu)混合內(nèi)存系統(tǒng),采用4 GB的DRAM緩存、32 GB的NVM主存,操作系統(tǒng)中使用2 MB的大頁(yè).DRAM緩存的管理粒度是4 KB,并使用固定閾值的過(guò)濾機(jī)制對(duì)DRAM上的緩存數(shù)據(jù)的操作進(jìn)行過(guò)濾.
4) SSLDC.本文中設(shè)計(jì)的支持大頁(yè)和大容量緩存的層次化混合內(nèi)存的SSLDC系統(tǒng),使用層次化的混合內(nèi)存架構(gòu),4 GB DRAM使用4 KB的粗粒度管理方式,與32 GB的NVM以直接映射的方式相聯(lián),操作系統(tǒng)中使用2 MB大頁(yè).在DRAM緩存上使用本文描述的過(guò)濾機(jī)制,判斷數(shù)據(jù)塊熱度的閾值根據(jù)實(shí)時(shí)訪存情況進(jìn)行動(dòng)態(tài)的調(diào)整.
5) SSLDC_no_filter.和SSLDC大致相同,只是不對(duì)DRAM上緩存數(shù)據(jù)的操作進(jìn)行過(guò)濾.
本文將平均每個(gè)時(shí)鐘周期執(zhí)行的指令條數(shù)(instructions per cycle, IPC)作為系統(tǒng)性能的指標(biāo).在測(cè)試中把NVM-2 MB系統(tǒng)作為參照組;DRAM-2 MB因?yàn)闆]有頁(yè)面遷移開銷并且開啟了大頁(yè),所以DRAM-2 MB的性能是所有測(cè)試系統(tǒng)的上限.圖8顯示了5組對(duì)比系統(tǒng)的性能結(jié)果圖.
Fig.8 Systems IPC result圖8 系統(tǒng)IPC結(jié)果
從圖8可以看出,SSLDC相對(duì)于NVM-2 MB和CHOP分別平均有69.9%和15.2%的性能提升,并且距離上限(DRAM-2 MB)平均只有8.8%的性能差距.對(duì)于內(nèi)存占用小于DRAM緩存大小的應(yīng)用,SSLDC和SSLDC_no_filter的性能接近,增加了過(guò)濾機(jī)制對(duì)于性能的影響不大.這是因?yàn)镾SLDC中的動(dòng)態(tài)熱度閾值調(diào)整策略,會(huì)在DRAM使用量小于70%時(shí)將閾值設(shè)置為0,相當(dāng)于停止了過(guò)濾,因此對(duì)于內(nèi)存占用小于DRAM緩存大小的應(yīng)用,兩者性能十分接近.Graph500雖然內(nèi)存占用達(dá)到幾十GB,但本次測(cè)試只運(yùn)行了4×1010條指令,產(chǎn)生的工作集大概是2865 MB,小于DRAM緩存的大小,因此SSLDC和SSLDC_no_filter的性能也是接近的.MST,Linpack,NPB-CG產(chǎn)生的工作集均大于DRAM緩存的容量,SSLDC的性能都僅次于DRAM-2 MB的性能上限.對(duì)于內(nèi)存占用小于DRAM緩存的應(yīng)用,CHOP的性能普遍比SSLDC和SSLDC_no_filter要差.這因?yàn)镃HOP中靜態(tài)閾值設(shè)置得有些高,數(shù)據(jù)塊需要達(dá)到很熱才會(huì)被緩存到DRAM中,在此之間都在NVM中訪問(wèn),因此性能較差.而SSLDC和SSLDC_no_filter很早就把所有數(shù)據(jù)緩存到DRAM中,因此性能較好.而對(duì)于Linpack,MST,NPB-CG等內(nèi)存占用大的應(yīng)用,CHOP的性能都要好于SSLDC_no_filter.因?yàn)檫@類應(yīng)用的數(shù)據(jù)不能全部緩存到DRAM中,SSLDC_no_filter沒有過(guò)濾機(jī)制,在DRAM和NVM之間會(huì)頻繁的交換數(shù)據(jù),占用大量帶寬同時(shí)產(chǎn)生巨大的數(shù)據(jù)拷貝開銷,性能會(huì)比較差.
圖9顯示了各個(gè)系統(tǒng)的能耗對(duì)比.其中,NVM-2 MB系統(tǒng)作為對(duì)照系統(tǒng).
Fig.9 Power consumption result圖9 能耗結(jié)果
從圖9中可以看出DRAM-2 MB系統(tǒng)能耗最高,這是因?yàn)镈RAM產(chǎn)生了較多的靜態(tài)能耗.類似地,CHOP,SSLDC_no_filter和SSLDC能耗高于對(duì)照系統(tǒng)(NVM-2 MB)的原因也有部分是因?yàn)樵黾恿薉RAM刷新能耗,此外還有頁(yè)面拷貝到DRAM以及寫回到NVM中的能耗.從圖9中我們可以看到,與DRAM-2 MB,CHOP相比,SSLDC平均降低67.6%和20.1%的能耗.NVM有著較低的靜態(tài)功耗,但注意到mcf,setCover,Graph500,NPB-CG這幾個(gè)應(yīng)用的NVM-2 MB能耗并不是最低的,尤其是mcf和setCover,NVM-2 MB的能耗僅次于DRAM-2 MB,雖然比DRAM-2 MB的能耗低很多.這是因?yàn)閙cf和setCover等應(yīng)用有頻繁的訪存操作,NVM讀寫的動(dòng)態(tài)功耗較大,因此NVM-2 MB運(yùn)行這些應(yīng)用時(shí)功耗較高.SSLDC在能耗方面表現(xiàn)優(yōu)秀,對(duì)于大多數(shù)應(yīng)用都有著較低的能耗.
圖10顯示了CHOP,SSLDC_no_filter和SSLDC三種策略的帶寬使用對(duì)比.在本實(shí)驗(yàn)中以CHOP作為對(duì)照系統(tǒng).
Fig.10 Bandwidth occupancy result圖10 帶寬占用結(jié)果
從圖10可以看出,相比于CHOP,SSLDC_no_filter和SSLDC增加了39.9%和36.9%的帶寬占用.這是因?yàn)镃HOP中的靜態(tài)閾值設(shè)置得較高,所以有很強(qiáng)的過(guò)濾能力.如4.2節(jié)性能測(cè)試中提到的,CHOP閾值設(shè)置過(guò)高導(dǎo)致只有熱度很高的數(shù)據(jù)才能被緩存到DRAM中,NVM因此承受了大量的讀寫,導(dǎo)致系統(tǒng)性能較差.對(duì)于mcf,soplex,freqmine等應(yīng)用完全可以將全部工作集盡早地緩存到DRAM中,以提高系統(tǒng)性能.但過(guò)高的閾值阻礙了將數(shù)據(jù)緩存到DRAM的操作.圖10中這3個(gè)應(yīng)用的帶寬占用量明顯低于其他2組的原因,正是由于閾值設(shè)置的不合理.圖10中顯示的是運(yùn)行全部測(cè)試集的平均帶寬占用情況,所以大多數(shù)應(yīng)用的帶寬占用在3組策略下區(qū)別不大.
圖11顯示了SSLDC中大頁(yè)優(yōu)化的效果圖.其中縱坐標(biāo)顯示的是每運(yùn)行一千條指令所產(chǎn)生的TLB 缺失次數(shù)(TLB misses per kilo instructions,MPKI).通過(guò)圖11可以看出開啟大頁(yè)后顯著地降低了TLB缺失次數(shù),對(duì)于Linpack等內(nèi)存占用較大的應(yīng)用,可以降低99.96%的TLB缺失率.平均來(lái)說(shuō)SSLDC開啟大頁(yè)可以降低99.8%的TLB缺失率.
圖12顯示的是,在操作系統(tǒng)中使用2 MB大頁(yè)和使用4 KB時(shí)系統(tǒng)IPC的對(duì)比情況,對(duì)于mcf,soplex,setCover,Graph500,NPB-CG等應(yīng)用,使用大頁(yè)后性能提升明顯,其中Graph500應(yīng)用的性能提升超過(guò)220%.使用大頁(yè)后,相對(duì)于使用4 KB基本頁(yè)的平均性能提升高達(dá)37.3%.
Fig.11 MPKI result圖11 MPKI結(jié)果
Fig.12 IPC result圖12 IPC結(jié)果
為了驗(yàn)證混合內(nèi)存間映射方式對(duì)DRAM命中率以及性能的影響,選取了3個(gè)代表性的應(yīng)用來(lái)進(jìn)行映射方式的敏感性實(shí)驗(yàn).
如圖13展示了3個(gè)應(yīng)用在使用直接映射、4路組相聯(lián)映射、8路組相聯(lián)映射、16路組相聯(lián)映射這4組不同映射策略時(shí)的DRAM命中率.從圖13中可以看出采用不同的映射方式,DRAM命中率變化不大.
Fig.13 Effect of mapping mode on DRAM hit rate圖13 映射方式對(duì)DRAM命中率的影響
圖14中也同樣顯示出,混合內(nèi)存間的映射關(guān)系對(duì)系統(tǒng)IPC的影響不大.因此在本架構(gòu)中使用直接映射的方式不會(huì)對(duì)DRAM命中率和系統(tǒng)性能產(chǎn)生顯著影響.
Fig.14 Effect of mapping mode on IPC圖14 映射方式對(duì)IPC的影響
為了研究DRAM容量對(duì)DRAM命中率和系統(tǒng)性能的影響,分別進(jìn)行了1 GB,2 GB,4 GB,8 GB不同DRAM緩存容量配置的實(shí)驗(yàn).
DRAM容量對(duì)DRAM命中率的影響如圖15所示,DRAM緩存容量越大,命中率也越高.
Fig.15 Effect of DRAM capacity on DRAM hit rate圖15 DRAM容量對(duì)DRAM命中率的影響
Fig.16 Effect of DRAM capacity on IPC圖16 DRAM容量對(duì)IPC的影響
如圖16所示,使用更大容量的DRAM緩存可以有效地提高系統(tǒng)性能和DRAM命中率.Linpack的8 GB DRAM這一組實(shí)驗(yàn)的IPC比使用1 GB DRAM時(shí)提高了50%,DRAM緩存命中率也提高了大約5倍.soplex和BFS的IPC與DRAM命中率都隨著DRAM緩存容量的增大有所提升.因此在層次化混合內(nèi)存中支持大容量的DRAM有顯著優(yōu)勢(shì).
在DRAM緩存過(guò)濾機(jī)制中,每次DRAM缺失都需要查找數(shù)據(jù)塊熱度記錄表以確定是否要將訪存請(qǐng)求訪問(wèn)的數(shù)據(jù)塊緩存到DRAM中.查找數(shù)據(jù)塊熱度記錄表在訪存的關(guān)鍵路徑上,雖然數(shù)據(jù)塊熱度記錄表存儲(chǔ)在高速訪問(wèn)的SRAM中,但仍需要分析一下這部分開銷對(duì)整體性能的影響.
圖17展示的是查找數(shù)據(jù)塊熱度記錄表的開銷在整個(gè)程序執(zhí)行時(shí)間中的占比.對(duì)于大多數(shù)應(yīng)用,使用過(guò)濾機(jī)制產(chǎn)生的額外開銷只有不到1%,幾乎可以忽略不計(jì).對(duì)于Linpack和NPB-CG,這部分開銷超過(guò)了3%,這是因?yàn)長(zhǎng)inpack和NPB-CG的內(nèi)存占用非常大,且訪存的局部性比較差,所以DRAM的命中率較低,造成了較多次數(shù)的數(shù)據(jù)塊熱度信息表查找.
Fig.17 Time spent in hotness table lookup圖17 查找熱度信息記錄表的時(shí)間開銷
在本系統(tǒng)中,有2部分?jǐn)?shù)據(jù)需要存儲(chǔ)在SRAM中:
1) DRAM緩存的元數(shù)據(jù).因?yàn)樵贒RAM緩存中使用4 KB的粗粒度管理方式,且在DRAM緩存和NVM主存之間使用直接映射的方式,進(jìn)一步簡(jiǎn)化了元數(shù)據(jù)的結(jié)構(gòu),降低了硬件存儲(chǔ)開銷.對(duì)于本系統(tǒng)中4 GB的DRAM緩存,僅需要1 MB的SRAM硬件存儲(chǔ)開銷.
2) 數(shù)據(jù)塊熱度信息記錄表.在周期性的監(jiān)測(cè)NVM數(shù)據(jù)塊熱度信息時(shí),用一塊SRAM存放當(dāng)前最近最頻繁訪問(wèn)的NVM數(shù)據(jù)塊的熱度信息.每一個(gè)表項(xiàng)需要8 B,1 024個(gè)表項(xiàng)一共需要8 KB的SRAM存儲(chǔ)開銷.
總體來(lái)看,本系統(tǒng)的硬件存儲(chǔ)開銷在可以接受的范圍內(nèi)是可實(shí)現(xiàn)的.
本文設(shè)計(jì)了一個(gè)能同時(shí)支持大頁(yè)和大容量DRAM緩存的層次化混合內(nèi)存系統(tǒng).為了優(yōu)化元數(shù)據(jù)結(jié)構(gòu),以盡可能地減小元數(shù)據(jù)存儲(chǔ)開銷,在DRAM中使用4 KB數(shù)據(jù)塊粒度,并在DRAM緩存和NVM主存之間使用直接映射的方式維護(hù)地址映射信息,精簡(jiǎn)了元數(shù)據(jù)結(jié)構(gòu),所以大容量DRAM緩存的元數(shù)據(jù)都可以放置在SRAM中.考慮到DRAM每次缺失時(shí)都需要從NVM中讀取數(shù)據(jù),這將帶來(lái)嚴(yán)重的帶寬占用.為了減小帶寬壓力,增加了一個(gè)過(guò)濾機(jī)制,只有NVM中訪問(wèn)熱度達(dá)到閾值的熱數(shù)據(jù)塊才能被緩存到NVM中,避免了不必要的冷數(shù)據(jù)讀取產(chǎn)生的帶寬占用.提出了一個(gè)動(dòng)態(tài)熱度閾值調(diào)整方法,根據(jù)應(yīng)用實(shí)時(shí)的內(nèi)存信息周期性的動(dòng)態(tài)調(diào)整熱度閾值,保證在不造成內(nèi)存帶寬壓力的情況下,盡可能地遷移熱數(shù)據(jù)提高DRAM命中率,從而提高系統(tǒng)整體性能.與使用大頁(yè)的純NVM內(nèi)存和現(xiàn)有的CHOP策略相比分別平均有69.9%和15.2%的性能提升,并且與使用大頁(yè)的純DRAM內(nèi)存系統(tǒng)相比也平均只有8.8%的性能差距.
[1]Alam H, Zhang Tianhao, Erez M, et al.Do-It-Yourself virtual memory translation [C]//Proc of the 44th Annual Int Symp on Computer Architecture.Los Alamitos, CA: IEEE Computer Society, 2017: 457468
[2]Mccurdy C, Coxa A L, Vetter J.Investigating the TLB behavior of high-end scientific applications on commodity microprocessors [C]//Proc of the IEEE Int Symp on Performance Analysis of Systems and Software (ISPASS 2008).Los Alamitos, CA: IEEE Computer Society, 2008: 95104
[3]Basu A, Gandhi J, Chang Jichuan, et al.Efficient virtual memory for big memory servers [J].ACM SIGARCH Computer Architecture News, 2013, 41(3): 237248
[4]Barr T W, Cox A L, Rixner S.Translation caching: Skip, don’t walk (the page table) [J].ACM SIGARCH Computer Architecture News, 2010, 38(3): 4859
[5]Bhattacharjee A.Large-reach memory management unit caches [C]//Proc of the 46th Annual IEEE/ACM Int Symp on Microarchitecture.New York: ACM, 2013: 383394
[6]Chen Yujie.Hardware/software cooperative caching for hybrid DRAM/NVM memory architectures [D].Wuhan: College of Computer Science and Technology, Huazhong University of Science and Technology, 2017 (in Chinese)(陳宇杰.軟硬件協(xié)同管理的異構(gòu)內(nèi)存緩存機(jī)制[D].武漢: 華中科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 2017)
[7]Mao Wei, Liu Jingning, Tong Wei, et al.A review of storage technology research based on phase change memory [J].Chinese Journal of Computers, 2015, 38(5): 944960 (in Chinese)(冒偉, 劉景寧, 童薇, 等.基于相變存儲(chǔ)器的存儲(chǔ)技術(shù)研究綜述[J].計(jì)算機(jī)學(xué)報(bào), 2015, 38(5): 944960)
[8]Meza J, Chang Jichuan, Yoon H B, et al.Enabling efficient and scalable hybrid memories using fine-granularity DRAM cache management [J].IEEE Computer Architecture Letters, 2012, 11(2): 6164
[9]Qureshi M K, Loh G H.Fundamental latency trade-off in architecting DRAM caches: Outperforming impractical SRAM-Tags with a simple and practical design [C]//Proc of the 45th Annual IEEE/ACM Int Symp on Microarchitecture.Piscataway, NJ: IEEE, 2012: 235246
[10]Qureshi M K, Srinivasan V, Rivers J A.Scalable high performance main memory system using phase-change memory technology [C]//Proc of the 36th Annual Int Symp on Computer Architecture.New York: ACM, 2009: 2433
[11]Ryoo J H, Meswani M R, Panda R, et al.SILC-FM: Subblocked interleaved cache-like flat memory organization [C]//Proc of the 2016 Int Conf on Parallel Architectures and Compilation.Piscataway, NJ: IEEE, 2017: 435437
[12]Bock S, Childers B R, Melhem R, et al.Concurrent migration of multiple pages in software-managed hybrid main memory [C]//Proc of ICCD2016.Piscataway, NJ: IEEE, 2016: 420423
[13]Salkhordeh R, Asadi H.An operating system level data migration scheme in hybrid DRAM-NVM memory architecture [C]//Proc of the 2016 Conf on Design, Automation & Test in Europe.Piscataway, NJ: IEEE, 2016: 936941
[14]Barr T W, Cox A L, Rixner S.SpecTLB: A mechanism for speculative address translation [C]//Proc of the 38th Annual Int Symp on Computer Architecture.Piscataway, NJ: IEEE, 2011: 307317
[15]Talluri M, Hill M D.Surpassing the TLB performance of superpages with less operating system support [J].ACM SIGPLAN Notices, 1994, 29(11): 171182
[16]Muck J, Hays J.Architectural support for translation table management in large address space machines [C]//Proc of the 20th Annual Int Symp on Computer Architecture.Piscataway, NJ: IEEE, 1993: 3950
[17]Bhargava R, Serebrin B, Spadini F, et al.Accelerating two-dimensional page walks for virtualized systems [C]//Proc of the 13th Int Conf on Architectural Support for Programming Languages and Operating Systems.New York: ACM, 2008: 2635
[18]Korn W, Chang M S.SPEC CPU2006 sensitivity to memory page sizes [J].ACM SIGARCH Computer Architecture News, 2007, 35(1): 97101
[19]Zhang Xiaohui, Jiang Yifei, Cong Ming.Performance improvement for multicore processors using variable page technologies [C]//Proc of the 6th 2011 IEEE Int Conf on Networking, Architecture, and Storage.Piscataway, NJ: IEEE, 2011: 230235
[20]Chou C C, Jaleel A, Qureshi M K.CAMEO: A two-level memory organization with capacity of main memory and flexibility of hardware-managed cache [C]//Proc of the 47th Annual IEEE/ACM Int Symp on Microarchitecture.Piscataway, NJ: IEEE, 2014: 112
[21]Loh G H, Hill M D.Efficiently enabling conventional block sizes for very large die-stacked DRAM caches [C]//Proc of the 44th Annual IEEE/ACM Int Symp on Microarchitecture.New York: ACM, 2011: 454464
[22]Jiang Xiaowei, Madan N, Zhao Li, et al.CHOP: Adaptive filter-based DRAM caching for CMP server platforms [C]//Proc of the 16th Int Symp on High Performance Computer Architecture(HPCA).Piscataway, NJ: IEEE, 2010: 112
[23]Linpack.Benchmark programs and reports[EB/OL].[2018-04-05].http://www.netlib.org/benchmark/
[24]Liu Haikun, Chen Yujie, Liao Xiaofei, et al.Hardware/software cooperative caching for hybrid DRAM/NVM memory architectures [C]//Proc of the Int Conf on Supercomputing (ICS’17).New York: ACM, 2017: Article Number 26
[25]Sanchez D, Kozyrakis C.ZSim: Fast and accurate microarchitectural simulation of thousand-core systems [J].ACM SIGARCH Computer Architecture News, 2013, 41(3): 475486
[26]Poremba M, Zhang Tao, Xie Yuan.NVMain 2.0: A user-friendly memory simulator to model (non-) volatile memory systems [J].IEEE Computer Architecture Letters, 2015, 14(2): 140143
[27]Luk C K, Cohn R, Muth R, et al.Pin: Building customized program analysis tools with dynamic instrumentation [J].ACM SIGPLAN Notices, 2005, 40(6): 190200
[28]Lee B C, Ipek E, Mutlu O, et al.Architecting phase change memory as a scalable dram alternative [J].ACM SIGARCH Computer Architecture News, 2009, 37(3): 213
[29]Henning J L.SPEC CPU2006 benchmark descriptions [J].ACM SIGARCH Computer Architecture News, 2006, 34(4): 117
[30]Bienia C, Kumar S, Singh J P, et al.The PARSEC benchmark suite: Characterization and architectural implications [C]//Proc of the 17th Int Conf on Parallel Architectures and Compilation Techniques.New York: ACM, 2008: 7281
[31]Carnegie Mellon University.PBBS: Problem based benchmarks suit[EB/OL].[2018-04-05].http://www.cs.cmu.edu/pbbs/
[32]Standard Performance Evaluation Corporation.Graph500[EB/OL].[2018-04-05].http://graph500.org/
[33]NASA Advanced Supercomputing Division.NAS parallel benchmarks: NPB-CG[EB/OL].[2018-04-05].https://www.nas.nasa.gov/publications/npb.htmlChenJi, born in 1992.Master candidate.His main research interests include in-memory computing and operation system.