一種混合內(nèi)存訪(fǎng)問(wèn)情況的記錄方法及其系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明提供了一種內(nèi)存訪(fǎng)問(wèn)情況的記錄方法,包括步驟:獲取頁(yè)表項(xiàng)中空閑位和臟位的表征值;進(jìn)行寫(xiě)回步驟,具體包括:將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位,并將臟位重置。本發(fā)明使用頁(yè)表項(xiàng)中的空閑位和臟位一起記錄頁(yè)面使用情況,利用頁(yè)面被寫(xiě)入時(shí)臟位即被置1及空閑位原本未使用的特點(diǎn),無(wú)需做另外專(zhuān)門(mén)的訪(fǎng)存統(tǒng)計(jì)工作,也無(wú)需額外開(kāi)辟存儲(chǔ)空間存放統(tǒng)計(jì)結(jié)果,可以在遍歷頁(yè)表項(xiàng)時(shí)就一并獲取其歷史訪(fǎng)問(wèn)信息,減少了系統(tǒng)時(shí)間及空間上的開(kāi)銷(xiāo)。
【專(zhuān)利說(shuō)明】一種混合內(nèi)存訪(fǎng)問(wèn)情況的記錄方法及其系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)器領(lǐng)域,尤其涉及一種混合內(nèi)存訪(fǎng)問(wèn)情況的記錄方法及其系統(tǒng)?!颈尘凹夹g(shù)】
[0002]DRAM (Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī)存儲(chǔ)器)一直以來(lái)?yè)?dān)當(dāng)著計(jì)算機(jī)體系中主存儲(chǔ)器的角色,但隨著集成電路關(guān)鍵尺寸的不斷減小,DRAM在尺寸收縮、功耗控制、存儲(chǔ)密度和發(fā)熱量等方面遇到了極大的挑戰(zhàn),其技術(shù)已接近瓶頸,迫切需要找到新的替代者。PRAM(Phase change Random Access Memory,相變隨機(jī)存儲(chǔ)器)憑借其優(yōu)良的特性已逐步成為最有可能取代DRAM地位的存儲(chǔ)器件。
[0003]然而,與DRAM相比,PRAM的讀功耗低、靜態(tài)功耗低,但其寫(xiě)功耗和寫(xiě)延時(shí)均比較大,因此PRAM還不能完全取代DRAM獨(dú)自成為主存。目前最常見(jiàn)的方法是讓PRAM與DRAM —同構(gòu)成混合主存。在DRAM-PRAM的混合存儲(chǔ)架構(gòu)下,為了最大化的發(fā)揮兩種存儲(chǔ)器件的優(yōu)點(diǎn)以降低內(nèi)存系統(tǒng)的功耗,已有的技術(shù)均是通過(guò)對(duì)內(nèi)存頁(yè)面讀、寫(xiě)次數(shù)的統(tǒng)計(jì),將DRAM中讀頻繁的頁(yè)面遷入PRAM,而將PRAM中寫(xiě)頻繁的頁(yè)面遷入DRAM,從而充分發(fā)揮DRAM寫(xiě)功耗低、寫(xiě)延時(shí)低,PRAM讀功耗低的優(yōu)點(diǎn)。
[0004]在混合內(nèi)存的使用中,如何準(zhǔn)確的選擇需要交換的頁(yè)面,是讓混合內(nèi)存高效運(yùn)轉(zhuǎn)的關(guān)鍵所在。根據(jù)經(jīng)典的時(shí)間局部性原理,當(dāng)前被訪(fǎng)問(wèn)的頁(yè)面極有可能在接下來(lái)的時(shí)間內(nèi)繼續(xù)被訪(fǎng)問(wèn)。目前,記錄下最近一段時(shí)間內(nèi)頁(yè)面的訪(fǎng)問(wèn)情況,并通過(guò)一定算法選擇出最佳交換頁(yè)面是混合內(nèi)存中選擇交換頁(yè)面的主要方法。為了記錄頁(yè)面最近一段時(shí)間的訪(fǎng)問(wèn)情況,通常是開(kāi)辟一段專(zhuān)用的存儲(chǔ)空間,占用額外硬件空間,增加了成本,存儲(chǔ)頁(yè)面的訪(fǎng)問(wèn)情況,并維護(hù)記錄與頁(yè)面的對(duì)應(yīng)關(guān)系,在每次選擇頁(yè)面時(shí)遍歷頁(yè)表及記錄表,時(shí)間開(kāi)銷(xiāo)增大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供了一種內(nèi)存訪(fǎng)問(wèn)情況的記錄方法及系統(tǒng),無(wú)需額外硬件空間,減小時(shí)間開(kāi)銷(xiāo),提高系統(tǒng)效率。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了如下技術(shù)方案:
[0007]一種內(nèi)存訪(fǎng)問(wèn)情況的記錄方法,包括步驟:
[0008]獲取頁(yè)表項(xiàng)中空閑位和臟位的表征值;
[0009]進(jìn)行寫(xiě)回步驟,具體包括:將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位;將臟位重置。
[0010]可選的,空閑位及臟位設(shè)置有權(quán)值,且由空閑位的高位至第一位、由第一位至臟位,其權(quán)值依次升高,在獲取頁(yè)表項(xiàng)中空閑位和臟位的表征值之后,進(jìn)行寫(xiě)回步驟之前,還包括步驟:
[0011]根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值;
[0012]判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。
[0013]可選的,根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值的步驟具體為:由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值。
[0014]可選的,所述臟位在判斷是否進(jìn)行遷移完成之后或在頁(yè)面遷移完成之后被重置。
[0015]可選的,所述臟位在頁(yè)面寫(xiě)操作發(fā)生時(shí)由處理器重新置位。
[0016]此外,本發(fā)明還提供了一種內(nèi)存訪(fǎng)問(wèn)情況的記錄系統(tǒng),包括:
[0017]獲取單元,用于獲取空閑位和臟位的表征值;
[0018]寫(xiě)回單元,用于將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位,最高位丟棄;將臟位重置。
[0019]可選的,空閑位及臟位設(shè)置有權(quán)值,且由空閑位的高位至第一位、由第一位至臟位,其權(quán)值依次升高,系統(tǒng)還包括:
[0020]訪(fǎng)存熱度單元,用于根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值;
[0021]判斷單元,用于判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。
[0022]可選的,所述獲取單元,由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值。
[0023]可選的,所述臟位在判斷是否進(jìn)行遷移完成之后或在頁(yè)面遷移完成之后被重置。
[0024]可選的,所述臟位在頁(yè)面寫(xiě)操作發(fā)生時(shí)由處理器重新置位。
[0025]本發(fā)明實(shí)施例提供的內(nèi)存訪(fǎng)問(wèn)情況的記錄方法及系統(tǒng),使用頁(yè)表項(xiàng)中的空閑位和臟位一起記錄頁(yè)面使用情況,利用頁(yè)面被寫(xiě)入時(shí)臟位即被置I及空閑位原本未使用的特點(diǎn),無(wú)需做另外專(zhuān)門(mén)的訪(fǎng)存統(tǒng)計(jì)工作,也無(wú)需額外開(kāi)辟存儲(chǔ)空間存放統(tǒng)計(jì)結(jié)果,可以在遍歷頁(yè)表項(xiàng)時(shí)就一并獲取其歷史訪(fǎng)問(wèn)信息,減少了系統(tǒng)時(shí)間及空間上的開(kāi)銷(xiāo)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0026]圖1為根據(jù)本發(fā)明實(shí)施例的混合內(nèi)存訪(fǎng)問(wèn)情況的記錄方法的流程圖示意圖;
[0027]圖2為L(zhǎng)inux的三級(jí)映射的虛擬內(nèi)存的結(jié)構(gòu)示意圖;
[0028]圖3為圖2中的頁(yè)表項(xiàng)中的存儲(chǔ)單元的示意圖;
[0029]圖4為根據(jù)本發(fā)明實(shí)施例的混合內(nèi)存訪(fǎng)問(wèn)情況的記錄系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0030]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做詳細(xì)的說(shuō)明。
[0031]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是本發(fā)明還可以采用其他不同于在此描述的其它方式來(lái)實(shí)施,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以下實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi),因此本發(fā)明不受下面公開(kāi)的具體實(shí)施例的限制。
[0032]正如【背景技術(shù)】的描述,目前多采用專(zhuān)用存儲(chǔ)空間存儲(chǔ)頁(yè)面信息并遍歷記錄表來(lái)確定交換的頁(yè)面,存在硬件和時(shí)間開(kāi)銷(xiāo)大的問(wèn)題。為此,本發(fā)明提出了一種混合內(nèi)存訪(fǎng)問(wèn)情況的記錄方法,利用頁(yè)面表中的空閑位和臟位進(jìn)行存儲(chǔ),具體包括:
[0033]獲取空閑位和臟位的表征值;
[0034]將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位;將臟位重置。
[0035]該方法使用頁(yè)表項(xiàng)中的空閑位和臟位一起記錄頁(yè)面使用情況,其占用的是頁(yè)表項(xiàng)的存儲(chǔ)空間,利用頁(yè)面被寫(xiě)入時(shí)臟位即被置I及空閑位原本未使用的特點(diǎn),無(wú)需做另外專(zhuān)門(mén)的訪(fǎng)存統(tǒng)計(jì)工作,也無(wú)需額外開(kāi)辟存儲(chǔ)空間存放統(tǒng)計(jì)結(jié)果,可以在遍歷頁(yè)表項(xiàng)時(shí)就一并獲取其歷史訪(fǎng)問(wèn)信息,減少了系統(tǒng)時(shí)間及空間上的開(kāi)銷(xiāo)。
[0036]在本發(fā)明中,PTE表項(xiàng)是由計(jì)算機(jī)硬件CPU和MMU模塊建立的,空閑位是頁(yè)表項(xiàng)中本身存在、但未使用的位;臟位為對(duì)頁(yè)面是否做過(guò)寫(xiě)操作的標(biāo)志位,通常地,置I表示進(jìn)行過(guò)寫(xiě)操作。
[0037]為了更好的理解本發(fā)明,以下將結(jié)合具體的實(shí)施例的流程圖圖1進(jìn)行詳細(xì)的說(shuō)明。在本實(shí)施例中,用于由PRAM和DRAM構(gòu)成的內(nèi)存訪(fǎng)問(wèn)的統(tǒng)計(jì),以判斷是否觸發(fā)頁(yè)面的遷移。
[0038]在本實(shí)施例中,利用Linux操作系統(tǒng)的三級(jí)映射的虛擬內(nèi)存,在一個(gè)具體的實(shí)施例中,如圖2所示,一個(gè)32位的虛擬地址被分為頁(yè)目錄10位,頁(yè)表偏移量10位和頁(yè)內(nèi)偏移量12位。寄存器CR3存儲(chǔ)了進(jìn)程的頁(yè)目錄基地址,通過(guò)基地址加偏移量,找到頁(yè)表基地址,而后加上頁(yè)表偏移量就能找到物理頁(yè),通過(guò)頁(yè)內(nèi)偏移量就能找到確定的存儲(chǔ)單元。
[0039]其中,第二級(jí)映射單元即為頁(yè)表項(xiàng)(PTE),為一個(gè)32位的存儲(chǔ)單元,其中高20位記錄了對(duì)應(yīng)物理頁(yè)地址的基地址,低12位中有三位空閑位以及功能位和控制位,如圖3所示,各位排布及說(shuō)明如下:
[0040]P位表示Present,置I表示此頁(yè)面正在內(nèi)存中,否則置O。
[0041]R/W是讀寫(xiě)位,表示此頁(yè)面的訪(fǎng)問(wèn)權(quán)限。
[0042]U/S是權(quán)限位,即User/Supervisor,表示訪(fǎng)問(wèn)此頁(yè)面所需的特權(quán)級(jí)別。
[0043]PffT和P⑶均用于確定頁(yè)面的高速緩存處理方式。
[0044]A位表示Accessed,置I表示此頁(yè)被訪(fǎng)問(wèn)過(guò)。
[0045]D位表示Dirty,置I表示對(duì)此頁(yè)做過(guò)寫(xiě)操作。
[0046]在該實(shí)施例中,硬件為32位機(jī),空閑位Avail共三位,分別為Abitll、AbitlO和AbitQ0可以理解的是,在其他實(shí)施例中,空閑位會(huì)隨硬件的不同有所不同,例如硬件為64位機(jī)時(shí),空閑位會(huì)設(shè)置有4位。在本發(fā)明中,利用其存儲(chǔ)頁(yè)面歷史訪(fǎng)問(wèn)信息的表征值。在發(fā)生訪(fǎng)存時(shí),PTE由CPU硬件設(shè)置,并由操作系統(tǒng)內(nèi)核清除。要獲得各位的信息,直接進(jìn)行讀取相關(guān)字段的數(shù)值即可。
[0047]在本發(fā)明中,臟位D是頁(yè)面歷史訪(fǎng)問(wèn)信息的來(lái)源。本實(shí)施例中,分別將Abitll、Abi110、Abit9、D位賦予權(quán)值,且從左至右權(quán)值依次增高,例如權(quán)值分別為1、2、4、8,代表訪(fǎng)問(wèn)行為發(fā)生時(shí)間的遠(yuǎn)近,越近發(fā)生的訪(fǎng)問(wèn)權(quán)值越高。
[0048]在進(jìn)行遍歷時(shí),每隔一定的周期,讀取Abitll、AbitlO、Abit9、D位這四位中的表征值。
[0049]接著,根據(jù)權(quán)值和表征值,獲得訪(fǎng)存熱度值。在本實(shí)施例中,由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值,即Abitll*l+Abitl0*2+Abit9*4+D*8,通過(guò)權(quán)值的設(shè)置來(lái)影響得到的訪(fǎng)存熱度值。
[0050]而后,判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。這樣,通過(guò)空閑位與臟位就存儲(chǔ)了頁(yè)面的最近結(jié)構(gòu)周期的使用情況,并依據(jù)該記錄來(lái)判定一個(gè)頁(yè)面是否該被遷移,無(wú)需額外的存儲(chǔ)空間,也不需要再去維護(hù)頁(yè)面的對(duì)應(yīng)關(guān)系,可以在遍歷頁(yè)表項(xiàng)時(shí)就一并獲取其歷史訪(fǎng)問(wèn)信息,減少了遍歷次數(shù)與時(shí)間開(kāi)銷(xiāo)。[0051]而后,無(wú)論是否發(fā)生觸發(fā),都進(jìn)行這幾位表征值的回寫(xiě)。如圖4所示,將Abitll、AbitlO、Abit9、D位中的表征值依次左移,即AbitlO中的值移至Abitll,Abit9中的值移至AbitlO, D位中的值移至Abit9,Abitll移除丟棄,而后,將D位的表征值進(jìn)行重置,即將臟位D置為初始狀態(tài)0,該重置的步驟可以在遷移判定完成之后或遷移完成之后進(jìn)行。重置后的臟位D為初始狀態(tài),以便在下一個(gè)周期時(shí)捕獲新的值,本實(shí)施例中,所述臟位將在頁(yè)面寫(xiě)操作發(fā)生時(shí)由處理器重新置位,即如發(fā)生寫(xiě)操作,由處理器將臟位置位為I。這樣,使得空閑位Avail中存儲(chǔ)并更新了頁(yè)面的歷史訪(fǎng)問(wèn)情況。
[0052]此外,還提供了利用上述方法構(gòu)成的系統(tǒng),在本實(shí)施例中,用于由PRAM和DRAM構(gòu)成的內(nèi)存訪(fǎng)問(wèn),頁(yè)表項(xiàng)的空閑位的每一位及臟位設(shè)置有權(quán)值,且由空閑位的高位至第一位、由第一位至臟位,權(quán)值依次升高,如圖4所示,該系統(tǒng)包括:
[0053]寫(xiě)回單元,用于將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位,并將臟位重置;
[0054]獲取單元,用于獲取空閑位和臟位的表征值;
[0055]訪(fǎng)存熱度單元,用于根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值;
[0056]判斷單元,用于判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。
[0057]在具體的實(shí)施例中,如上述利用Linux操作系統(tǒng)的三級(jí)映射的虛擬內(nèi)存的系統(tǒng)中,頁(yè)表項(xiàng)為L(zhǎng)inux系統(tǒng)虛擬內(nèi)存的第二級(jí)映射單元,獲取單元由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值。通過(guò)空閑位Abitll、AbitlO、Abit9和D位的表征值獲得歷史頁(yè)面的訪(fǎng)問(wèn)信息,獲得該四位的表征值,從而,利用其判斷頁(yè)面是否要被遷移。
[0058]以上為利用本發(fā)明的內(nèi)存訪(fǎng)問(wèn)情況的記錄方法進(jìn)行頁(yè)面遷移判斷的實(shí)施例??梢岳斫獾氖牵谄渌膶?shí)施例中,還可以利用本發(fā)明的記錄方法進(jìn)行其他的操作,例如僅進(jìn)行一段周期內(nèi)的頁(yè)面訪(fǎng)問(wèn)次數(shù)的統(tǒng)計(jì)等。
[0059]本發(fā)明已以較佳實(shí)施例披露如上,然而并非用以限定本發(fā)明。任何熟悉本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的方法和技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案做出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。
【權(quán)利要求】
1.一種內(nèi)存訪(fǎng)問(wèn)情況的記錄方法,其特征在于,包括步驟: 獲取頁(yè)表項(xiàng)中空閑位和臟位的表征值; 進(jìn)行寫(xiě)回步驟,具體包括:將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)中空閑位的第一位,空閑位中每一位的表征值順次移入更高位;將臟位重置。
2.根據(jù)權(quán)利要求1所述的記錄方法,其特征在于,空閑位及臟位設(shè)置有權(quán)值,且由空閑位的高位至第一位、由第一位至臟位,其權(quán)值依次升高,在獲取頁(yè)表項(xiàng)中空閑位和臟位的表征值之后,進(jìn)行寫(xiě)回步驟之前,還包括步驟: 根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值; 判斷是否進(jìn)行遷移:判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。
3.根據(jù)權(quán)利要求2所述的記錄方法,其特征在于,根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值的步驟具體為:由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值。
4.根據(jù)權(quán)利要求2所述的記錄方法,其特征在于,所述臟位在判斷是否進(jìn)行遷移完成之后或在頁(yè)面遷移完成之后被重置。
5.根據(jù)權(quán)利要求4所述的記錄方法,其特征在于,所述臟位在頁(yè)面寫(xiě)操作發(fā)生時(shí)由處理器重新置位。
6.一種內(nèi)存訪(fǎng)問(wèn)情況的記錄系統(tǒng),其特征在于,包括: 獲取單元,用于獲取空閑位和臟位的表征值; 寫(xiě)回單元,用于將頁(yè)表項(xiàng)中臟位的表征值移入頁(yè)表項(xiàng)空閑位的第一位,空閑位中每一位的表征值順次移入更高位,最高位丟棄;將臟位重置。
7.根據(jù)權(quán)利要求6所述的記錄系統(tǒng),其特征在于,空閑位及臟位設(shè)置有權(quán)值,且由空閑位的高位至第一位、由第一位至臟位,其權(quán)值依次升高,系統(tǒng)還包括: 訪(fǎng)存熱度單元,用于根據(jù)權(quán)值和表征值,得到訪(fǎng)存熱度值; 判斷單元,用于判斷訪(fǎng)存熱度值是否高于閾值,若是,則判定頁(yè)面要被遷移。
8.根據(jù)權(quán)利要求7所述的記錄系統(tǒng),其特征在于,所述獲取單元,由權(quán)值和與權(quán)值對(duì)應(yīng)位的表征值得乘積得到訪(fǎng)存熱度值。
9.根據(jù)權(quán)利要求6所述的記錄系統(tǒng),其特征在于,所述臟位在判斷是否進(jìn)行遷移完成之后或在頁(yè)面遷移完成之后被重置。
10.根據(jù)權(quán)利要求7所述的記錄系統(tǒng),其特征在于,所述臟位在頁(yè)面寫(xiě)操作發(fā)生時(shí)由處理器重新置位。
【文檔編號(hào)】G06F12/08GK103914403SQ201410175738
【公開(kāi)日】2014年7月9日 申請(qǐng)日期:2014年4月28日 優(yōu)先權(quán)日:2014年4月28日
【發(fā)明者】陳嵐, 覃力, 郝曉冉 申請(qǐng)人:中國(guó)科學(xué)院微電子研究所