專利名稱:基于pcram主存應(yīng)用的內(nèi)存管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存管理技術(shù),特別是涉及一種基于PCRAM主存應(yīng)用的內(nèi)存管理 方法。
背景技術(shù):
內(nèi)存(Memory)是計算機(jī)中重要的部件之一,它是與CPU(中央處理器)進(jìn)行溝通 的橋梁。計算機(jī)中所有程序的運(yùn)行都是在內(nèi)存中進(jìn)行的,因此內(nèi)存的性能對計算機(jī)的影響 非常大。內(nèi)存也被稱為內(nèi)存儲器,其作用是用于暫時存放CPU中的運(yùn)算數(shù)據(jù)以及與硬盤等 外部存儲器交換的數(shù)據(jù)。因而,計算機(jī)類產(chǎn)品的重要硬件設(shè)備,其軟件系統(tǒng)實(shí)現(xiàn)各種功能都 離不開對內(nèi)存進(jìn)行讀寫。目前業(yè)界對內(nèi)存大管理通過操作系統(tǒng)實(shí)現(xiàn),因此軟件系統(tǒng)使用內(nèi) 存時都要依賴于操作系統(tǒng)。操作系統(tǒng)對內(nèi)存大管理可以分為動態(tài)管理和靜態(tài)管理兩種。
計算機(jī)系統(tǒng)的存儲設(shè)備分為內(nèi)存儲器和外存儲器,程序及程序要訪問的數(shù)據(jù)都必 須裝入內(nèi)存才能運(yùn)行。主存是計算機(jī)系統(tǒng)的核心硬件,對存儲器的管理是操作系統(tǒng)的另一 個重要功能。
程序在編譯后對應(yīng)的地址是虛擬地址(32位4G),物理地址(可能是1G)是實(shí) 際的內(nèi)存地址。當(dāng)程序從硬盤被加載到內(nèi)存中需要進(jìn)行虛擬地址和物理地址的映射,因 為我們的物理地址沒有4G,許多沒有運(yùn)行的程序?qū)⒈粨Q出,而它們之間的管理則是通過 MMU(Memory Management Unit,即內(nèi)存管理單元)來管理的。在開始的時候我們的內(nèi)存很 小,通常只有幾兆的容量,如果在硬盤和內(nèi)存之間不停的調(diào)換的話就消耗了大量的資源,而 且硬盤的讀取速度很慢,所以就設(shè)計出了 Swap分區(qū)(交換區(qū)),它雖然是從硬盤中劃分出來 的,但是其格式是和內(nèi)存接近。所以沒有在內(nèi)存中運(yùn)行的程序可以放到Swap分區(qū)中,這樣 換入和換出的速率將增加。
交換分區(qū)在物理內(nèi)存(RAM)被充滿時被使用。如果系統(tǒng)需要更多的內(nèi)存資源,而 物理內(nèi)存已經(jīng)充滿,內(nèi)存中不活躍的頁就會被移到交換空間去。雖然交換空間可以為帶有 少量內(nèi)存的機(jī)器提供幫助,但是這種方法不應(yīng)該被當(dāng)作是對內(nèi)存的取代。交換空間位于硬 盤驅(qū)動器上,它比進(jìn)入物理內(nèi)存要慢。
交換(Swapping)技術(shù)在多個程序并發(fā)執(zhí)行時,可以將暫時不能執(zhí)行的程序送到 外存中,從而獲得空閑內(nèi)存空間來裝入新程序,或讀入保存在外存中而處于就緒狀態(tài)的程 序。交換單位為整個進(jìn)程的地址空間。交換技術(shù)常用于多道程序系統(tǒng)或小型分時系統(tǒng)中, 與分區(qū)式存儲管理配合使用又稱作“對換”或“滾進(jìn)/滾出”。其優(yōu)點(diǎn)之一是增加并發(fā)運(yùn)行 的程序數(shù)目,并給用戶提供適當(dāng)?shù)捻憫?yīng)時間;與覆蓋技術(shù)相比交換技術(shù)另一個顯著的優(yōu)點(diǎn) 是不影響程序結(jié)構(gòu)。交換技術(shù)本身也存在著不足,例如對換入和換出的控制增加處理器開 銷;程序整個地址空間都進(jìn)行對換,沒有考慮執(zhí)行過程中地址訪問的統(tǒng)計特性。
在當(dāng)今移動計算日益普及的環(huán)境中,過去的存儲技術(shù)已經(jīng)顯得力不從心,尤其是 難以滿足電子產(chǎn)品對存儲體積更小、系統(tǒng)功耗的要求。隨著半導(dǎo)體及存儲芯片技術(shù)的發(fā)展, 新型的非易失性計算機(jī)存儲技術(shù)的綜合了目前半導(dǎo)體存儲器市場上主流的DRAM、SRAM和FLASH等存儲器的優(yōu)良特性,而且還具有微縮性能優(yōu)越、非揮發(fā)性、高速存取、循環(huán)壽命長、 數(shù)據(jù)穩(wěn)定性強(qiáng)、功耗低等諸多優(yōu)勢,被認(rèn)為是下一代非揮發(fā)存儲技術(shù)的最佳解決方案。
請參閱圖1a及圖lc,顯示現(xiàn)有技術(shù)中PCRAM主存應(yīng)用的三種硬件架構(gòu)示意圖, 包括CPU11、高速緩存(即圖示中模塊CACHE) 12,內(nèi)存13,外存(即圖示中模塊SSD/HARD DISK) 14,上述三種硬件架構(gòu)的存儲容量依次減少,每位存儲器成本依次遞增,存儲器存儲 速度依次增加,存儲器存儲時間減少。但在實(shí)際的應(yīng)用中仍存在以下問題
呈如圖1a所示的PCRAM應(yīng)用的硬件架構(gòu),使用PCRAM替代傳統(tǒng)的DRAM擴(kuò)大內(nèi)存 容量PCRAM,但目前基于PCRAM的擦寫次數(shù)及寫數(shù)據(jù)速度、抗疲勞等性能的局限性遠(yuǎn)達(dá)不到 CPU對數(shù)據(jù)訪問所需求的速度及次數(shù)。
再如圖1b及圖1c所示的PCRAM應(yīng)用的硬件架構(gòu),二者均是基于DRAM的緩存作用 來應(yīng)用,即存儲系統(tǒng)由緩存及內(nèi)存構(gòu)成,即有DRAM的高速又有PCRAM的大容量存儲系統(tǒng)。其 中,圖1b所示的硬件架構(gòu)中將訪問比較頻繁的數(shù)據(jù)存放在DRAM中,訪問不頻繁的數(shù)據(jù)存放 在PCRAM ;圖1c所示的硬件架構(gòu)中將DRAM作為PCRAM的二級緩存,平衡了 PCRAM與CPU之 間寫速度、擦寫次數(shù)及疲勞特性間的需求。但是,上述兩種方案的不足之處在于,如果CPU 只需要讀PCRAM緩存中某些數(shù)據(jù)頁中的少量數(shù)據(jù)時,而仍然將其讀入DRAM供CPU訪問,此 時大大增加了讀操作時的工作量及系統(tǒng)功耗。
因而,如何提供一種基于PCRAM主存應(yīng)用的內(nèi)存管理技術(shù),以解決上述現(xiàn)有技術(shù) 中存在的問題及不足,已經(jīng)成為本領(lǐng)域從業(yè)者競相研究的課題。發(fā)明內(nèi)容
鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于PCRAM主存應(yīng)用 的內(nèi)存管理方法,用以實(shí)現(xiàn)CPU在寫操作時提高對PCRAM主存所需求的擦寫次數(shù)及寫速度 與降低疲勞性等性能的目的。
本發(fā)明的另一目的在于提供一種基于PCRAM主存應(yīng)用的內(nèi)存管理系統(tǒng)及方法,用 以在CPU讀操作時,基于隨機(jī)讀取特性CPU可直接讀取DRAM及PCRAM內(nèi)的數(shù)據(jù),進(jìn)而實(shí)現(xiàn) 大大節(jié)省了系統(tǒng)讀操作時的工作量的目的。
為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種基于PCRAM主存應(yīng)用的內(nèi)存管 理方法,應(yīng)用在由CPU、內(nèi)存以及外存構(gòu)建的系統(tǒng)中以在所述CPU執(zhí)行讀/寫操作時對所述 內(nèi)存進(jìn)行管理作業(yè),所述內(nèi)存包括DRAM緩存及PCRAM主存,其特征在于,所述內(nèi)存管理方法 包括數(shù)據(jù)頁置換的步驟,系統(tǒng)將所述DRAM緩存作為PCRAM主存的緩存,當(dāng)所述DRAM緩存 空間不足時,系統(tǒng)將所述DRAM緩存中的閑置數(shù)據(jù)頁以循環(huán)均衡方式置換至所述PCRAM主存 中,當(dāng)置換出的數(shù)據(jù)頁重新讀入所述DRAM主存時,該數(shù)據(jù)頁所占所述PCRAM主存的存儲空 間自動釋放掉;寫數(shù)據(jù)的步驟,于所述CPU執(zhí)行寫數(shù)據(jù)的操作時,所述CPU檢測所述DRAM緩 存中是否存在要寫的數(shù)據(jù)頁,若存在,則將數(shù)據(jù)寫入所述DRAM緩存,若否,則將要寫的數(shù)據(jù) 頁由所述PCRAM主存讀入到所述DRAM緩存之后再進(jìn)行寫操作;讀數(shù)據(jù)的步驟,于所述CPU 執(zhí)行讀數(shù)據(jù)的操作時,所述CPU首先訪問所述DRAM緩存,并在所述DRAM緩存中未讀取到欲 讀取的數(shù)據(jù)頁時,所述CPU訪問所述PCRAM主存進(jìn)行讀取。
在本發(fā)明的內(nèi)存管理方法中,系統(tǒng)將所述DRAM緩存中的閑置數(shù)據(jù)頁置換至所述 PCRAM主存時,按所述PCRAM主存地址順序依次存放置換出的頁,所述CPU判斷所述PCRAM主存前一次存放被置換的閑置數(shù)據(jù)頁的位置是否達(dá)到了所述PCRAM主存的最大地址,若 否,則判定為當(dāng)前循環(huán),若是,則判定當(dāng)前循環(huán)結(jié)束,進(jìn)入下一循環(huán)。
具體地,于所述當(dāng)前循環(huán)中,包括以下步驟1)所述CPU從地址增長方向掃描所 述PCRAM主存中空閑塊地址區(qū)域;2)將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū) 域;3)在所述DRAM緩存中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在其位圖的bit位予以標(biāo) 記,且將該計數(shù)器初始化為I ;4)將所述DRAM緩存的位圖中所有賦值的計數(shù)器加I ;5)查找 該些賦值的計數(shù)器中超過一預(yù)設(shè)值N的頁面;6)將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù) 據(jù)頁映射到當(dāng)前循環(huán),以重新讀入到所述DRAM緩存中,并將該重新讀入到所述DRAM緩存中 的閑置數(shù)據(jù)頁對應(yīng)的計數(shù)器清零。
于所述下一循環(huán)中,包括以下步驟1)所述CPU從所述PCRAM主存的最小地址開 始掃描空閑塊地址區(qū)域;2)將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū)域;3)在 所述DRAM緩存中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在其位圖的bit位予以標(biāo)記,且將 該計數(shù)器初始化為I ;4)將所述DRAM緩存的位圖中所有賦值的計數(shù)器加I ;5)查找該些賦 值的計數(shù)器中超過一預(yù)設(shè)值N的頁面;6)將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù)據(jù)頁映 射到當(dāng)前循環(huán),以重新讀入到所述DRAM緩存中,并將該重新讀入到所述DRAM緩存中的閑置 數(shù)據(jù)頁對應(yīng)的計數(shù)器清零。
于所述CPU執(zhí)行寫數(shù)據(jù)的操作時,所述CPU首先判斷所述DRAM緩存中是否存在要 寫入的數(shù)據(jù)頁,若是,則向所述DRAM緩存中寫入數(shù)據(jù),若否,則系統(tǒng)拋出頁錯誤,并轉(zhuǎn)至所 述PCRAM主存,將所述欲寫入的數(shù)據(jù)頁由所述PCRAM主存讀入所述DRAM緩存中以便寫入數(shù)據(jù)。
在本發(fā)明的內(nèi)存管理方法中,于所述CPU執(zhí)行讀數(shù)據(jù)的操作時,所述CPU首先判斷 所述DRAM緩存中是否存在要讀取的數(shù)據(jù)頁,若是,則從所述DRAM緩存中讀取,若否,則從所 述PCRAM主存中讀取。
在本發(fā)明的內(nèi)存管理方法中,所述系統(tǒng)還包括連接于所述CPU與內(nèi)存之間的高速緩存。
如上所述,本發(fā)明的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,將DRAM作為PCRAM的 緩存,寫操作時,CPU調(diào)用DRAM內(nèi)的頁數(shù)據(jù),實(shí)現(xiàn)了 CPU寫操作時對PCRAM所需求的擦寫次 數(shù)及寫速度、疲勞性等性能的需求;讀操作時,基于隨機(jī)讀取特性,CPU可直接讀取DRAM及 PCRAM內(nèi)的數(shù)據(jù),大大節(jié)省了系統(tǒng)讀操作時的工作量。且本發(fā)明基于PCRAM的主存作用既可 以實(shí)現(xiàn)對內(nèi)存數(shù)據(jù)的快速寫操作又可以實(shí)現(xiàn)對PCRAM主存內(nèi)數(shù)據(jù)的隨機(jī)讀取,大大節(jié)省讀 操作消耗的能量,本發(fā)明特別對基于大量數(shù)據(jù)讀操作的數(shù)據(jù)庫應(yīng)用具有更明顯的優(yōu)勢。
圖1a及圖1c顯示為現(xiàn)有技術(shù)中PCRAM主存應(yīng)用的三種硬件架構(gòu)示意圖。
圖2顯示為應(yīng)用本發(fā)明內(nèi)存管理方法的系統(tǒng)原理框圖。
圖3顯示為本發(fā)明內(nèi)存管理方法中CPU讀數(shù)據(jù)的流程圖。
圖4顯示為本發(fā)明內(nèi)存管理方法中CPU寫數(shù)據(jù)的流程圖。
圖5顯示為本發(fā)明內(nèi)存管理方法中循環(huán)均衡方式置換的流程圖。
具體實(shí)施方式
以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書 所揭示的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的具體實(shí) 施方式加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在不背離本 發(fā)明的精神下進(jìn)行各種修飾或改變。
請參閱圖2至圖5,需要說明的是,本實(shí)施例中所提供的圖示僅以示意方式說明 本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時的組件數(shù) 目、形狀及尺寸繪制,其實(shí)際實(shí)施時各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其 組件布局型態(tài)也可能更為復(fù)雜。
如圖所示,本發(fā)明提供一種基于PCRAM主存應(yīng)用的內(nèi)存管理方法,應(yīng)用在由 CPU21、高速緩存(CACHE) 22、內(nèi)存23以及外存24(例如為SSD或者Hard disk)構(gòu)建的系 統(tǒng)中,用以在所述CPU21執(zhí)行讀/寫操作時對所述內(nèi)存23進(jìn)行管理作業(yè),所述內(nèi)存23包括 DRAM 緩存 231 及 PCRAM 主存 232。
于所述CPU21執(zhí)行讀數(shù)據(jù)的操作時,所述CPU21首先訪問所述DRAM緩存231,并在 所述DRAM緩存231中未讀取到欲讀取的數(shù)據(jù)頁時,所述CPU21訪問所述PCRAM主存232進(jìn)行讀取。
請參閱圖3所示的CPU執(zhí)行讀數(shù)據(jù)的流程圖,首先執(zhí)行步驟S20,所述CPU21執(zhí)行 讀數(shù)據(jù)的操作,接著執(zhí)行步驟S21。
在步驟S21中,所述CPU21首先判斷所述DRAM緩存231中是否存在要讀取的數(shù)據(jù) 頁,若是,則轉(zhuǎn)至步驟S22,若否,則接著執(zhí)行步驟S23。
在步驟S22中,CPU21從所述DRAM緩存231中讀取。
在步驟S23中,CPU21從所述PCRAM主存232中讀取。
本發(fā)明的內(nèi)存管理方法的寫數(shù)據(jù)的步驟中,于所述CPU21執(zhí)行寫數(shù)據(jù)的操作時, 所述CPU21檢測所述DRAM緩存231中是否存在要寫的數(shù)據(jù)頁,若存在,則將數(shù)據(jù)寫入所述 DRAM231緩存,若否,則將要寫的數(shù)據(jù)頁由所述PCRAM主存讀入到所述DRAM緩存之后再進(jìn)行 寫操作。請參閱圖4所示的CPU執(zhí)行寫數(shù)據(jù)的流程圖,首先執(zhí)行步驟S10,所述CPU21執(zhí)行 寫數(shù)據(jù)的操作,接著執(zhí)行步驟SI I。
在步驟Sll中,所述CPU21判斷所述DRAM緩存231中是否存在要寫入的數(shù)據(jù)頁, 若是,則轉(zhuǎn)至步驟S15,若否,則接著執(zhí)行步驟S12。
在步驟S12中,系統(tǒng)拋出頁錯誤,接著執(zhí)行步驟S13。
在步驟S13中,所述CPU21轉(zhuǎn)至所述PCRAM主存232,接著執(zhí)行步驟S14。
在步驟S14中,所述CPU21將所述欲寫入的數(shù)據(jù)頁由所述PCRAM主存232讀入所 述DRAM緩存231中。
在步驟S15中,所述CPU21向所述DRAM緩存231中寫入數(shù)據(jù)。
需要說明的是,
在本發(fā)明的內(nèi)存管理方法的數(shù)據(jù)頁置換的步驟中,數(shù)據(jù)頁置換的步驟,系統(tǒng)將所 述DRAM緩存231作為PCRAM232主存的緩存,當(dāng)所述DRAM緩存231空間不足時,系統(tǒng)將所 述DRAM緩存231中的閑置數(shù)據(jù)頁(即暫時不訪問或者訪問次數(shù)較少的數(shù)據(jù)頁)以循環(huán)均 衡方式置換至所述PCRAM232主存中,當(dāng)置換出的數(shù)據(jù)頁重新讀入所述DRAM主存232時,該數(shù)據(jù)頁所占所述PCRAM主存232的存儲空間自動釋放掉,換言之,當(dāng)CPU21發(fā)現(xiàn)所述DRAM 緩存231中的存儲空間在不足時,需要將DRAM緩存231中閑置數(shù)據(jù)頁以循環(huán)均衡的方式置 換到PCRAM主存232中,在本實(shí)施方式中,所述的以循環(huán)均衡的方式置換的流程呈如圖5所 示
首先執(zhí)行步驟S30,所述數(shù)據(jù)頁置換命令,當(dāng)CPU21發(fā)現(xiàn)DRAM緩存231中的存儲空 間在不足時執(zhí)行步驟S31。
在步驟S31中,系統(tǒng)斷定并標(biāo)記需要從DRAM緩存231置換到PCRAM主存232中的 閑置數(shù)據(jù)頁,接著執(zhí)行步驟S32。
在步驟S32中,系統(tǒng)將所述DRAM緩存231中的閑置數(shù)據(jù)頁置換至所述PCRAM主存 232時,按所述PCRAM主存232地址順序依次存放置換出的頁,所述CPU21判斷所述PCRAM 主存232前一次存放被置換的閑置數(shù)據(jù)頁的位置是否達(dá)到了所述PCRAM主存232的最大 地址,若是,則判定當(dāng)前循環(huán)結(jié)束,進(jìn)入下一循環(huán),即執(zhí)行步驟S330 ;若否,則判定為當(dāng)前循 環(huán),即執(zhí)行步驟S340。
在步驟S330中,即于所述的下一循環(huán)中,所述CPU21從所述PCRAM主存232的最 小地址開始掃描空閑塊地址區(qū)域;接著執(zhí)行步驟S331。
在步驟S331中,將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū)域;接著執(zhí) 行步驟S332。
在步驟S332中,在所述DRAM緩存231中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在 其位圖的bit位予以標(biāo)記,且將該計數(shù)器初始化為I ;接著執(zhí)行步驟S333。
在步驟S333中,將所述DRAM緩存231的位圖中所有賦值的計數(shù)器加I ;接著執(zhí)行 步驟S334。
在步驟S334中,查找該些賦值的計數(shù)器中超過一預(yù)設(shè)值N的頁面;接著執(zhí)行步驟 S335。
在步驟S335中,將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù)據(jù)頁映射到當(dāng)前循環(huán), 以重新讀入到所述DRAM緩存231中,并將該重新讀入到所述DRAM緩存231中的閑置數(shù)據(jù) 頁對應(yīng)的計數(shù)器清零,并且,當(dāng)某一計數(shù)器是值到達(dá)預(yù)設(shè)值N時,與之對應(yīng)的置換出的數(shù)據(jù) 頁將被重新映射到當(dāng)前循環(huán)系統(tǒng)將與其對應(yīng)的置換出的數(shù)據(jù)頁重新讀入DRAM,然后再按 照一般頁面置換的過程存放到PCRAM主存232中。
在步驟S340中,即于所述當(dāng)前循環(huán)中,所述CPU21從地址增長方向掃描所述PCRAM 主存232中空閑塊地址區(qū)域;接著執(zhí)行步驟S341。
在步驟S341中,將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū)域;接著執(zhí) 行步驟S342。
在步驟S342中,在所述DRAM緩存231中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在 其位圖的bit位予以標(biāo)記,且將該計數(shù)器初始化為I ;接著執(zhí)行步驟S343。
在步驟S343中,將所述DRAM緩存231的位圖中所有賦值的計數(shù)器加I ;接著執(zhí)行 步驟S344。
在步驟S344中,查找該些賦值的計數(shù)器中超過一預(yù)設(shè)值N的頁面;接著執(zhí)行步驟 S345。
在步驟S345中,將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù)據(jù)頁映射到當(dāng)前循環(huán),以重新讀入到所述DRAM緩存231中,并將該重新讀入到所述DRAM緩存231中的閑置數(shù)據(jù) 頁對應(yīng)的計數(shù)器清零,并且,當(dāng)某一計數(shù)器是值到達(dá)預(yù)設(shè)值N時,與之對應(yīng)的置換出的數(shù)據(jù) 頁將被重新映射到當(dāng)前循環(huán)系統(tǒng)將與其對應(yīng)的置換出的數(shù)據(jù)頁重新讀入DRAM,然后再按 照一般頁面置換的過程存放到PCRAM主存232中。
綜上所述,本發(fā)明的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,將DRAM作為PCRAM的 緩存,寫操作時,CPU調(diào)用DRAM內(nèi)的頁數(shù)據(jù),實(shí)現(xiàn)了 CPU寫操作時對PCRAM所需求的擦寫次 數(shù)及寫速度、疲勞性等性能的需求;讀操作時,基于隨機(jī)讀取特性,CPU可直接讀取DRAM及 PCRAM內(nèi)的數(shù)據(jù),大大節(jié)省了系統(tǒng)讀操作時的工作量。且本發(fā)明基于PCRAM的主存作用既可 以實(shí)現(xiàn)對內(nèi)存數(shù)據(jù)的快速寫操作又可以實(shí)現(xiàn)對PCRAM主存內(nèi)數(shù)據(jù)的隨機(jī)讀取,大大節(jié)省讀 操作消耗的能量,本發(fā)明特別對基于大量數(shù)據(jù)讀操作的數(shù)據(jù)庫應(yīng)用具有更明顯的優(yōu)勢。所 以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價值。
上述實(shí)施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟 悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實(shí)施例進(jìn)行修飾或改變。因 此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完 成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
權(quán)利要求
1.一種基于PCRAM主存應(yīng)用的內(nèi)存管理方法,應(yīng)用在由CPU、內(nèi)存以及外存構(gòu)建的系統(tǒng)中以在所述CPU執(zhí)行讀/寫操作時對所述內(nèi)存進(jìn)行管理作業(yè),所述內(nèi)存包括DRAM緩存及PCRAM主存,其特征在于,所述內(nèi)存管理方法包括 數(shù)據(jù)頁置換的步驟,系統(tǒng)將所述DRAM緩存作為PCRAM主存的緩存,當(dāng)所述DRAM緩存空間不足時,系統(tǒng)將所述DRAM緩存中的閑置數(shù)據(jù)頁以循環(huán)均衡方式置換至所述PCRAM主存中,當(dāng)置換出的數(shù)據(jù)頁重新讀入所述DRAM主存時,該數(shù)據(jù)頁所占所述PCRAM主存的存儲空間自動釋放掉; 寫數(shù)據(jù)的步驟,于所述CPU執(zhí)行寫數(shù)據(jù)的操作時,所述CPU檢測所述DRAM緩存中是否存在要寫的數(shù)據(jù)頁,若存在,則將數(shù)據(jù)寫入所述DRAM緩存,若否,則將要寫的數(shù)據(jù)頁由所述PCRAM主存讀入到所述DRAM緩存之后再進(jìn)行寫操作; 讀數(shù)據(jù)的步驟,于所述CPU執(zhí)行讀數(shù)據(jù)的操作時,所述CPU首先訪問所述DRAM緩存,并在所述DRAM緩存中未讀取到欲讀取的數(shù)據(jù)頁時,所述CPU訪問所述PCRAM主存進(jìn)行讀取。
2.根據(jù)權(quán)利要求1所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于系統(tǒng)將所述DRAM緩存中的閑置數(shù)據(jù)頁置換至所述PCRAM主存時,按所述PCRAM主存地址順序依次存放置換出的頁,所述CPU判斷所述PCRAM主存前一次存放被置換的閑置數(shù)據(jù)頁的位置是否達(dá)到了所述PCRAM主存的最大地址,若否,則判定為當(dāng)前循環(huán),若是,則判定當(dāng)前循環(huán)結(jié)束,進(jìn)入下一循環(huán)。
3.根據(jù)權(quán)利要求2所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于于所述當(dāng)前循環(huán)中,包括以下步驟 1)所述CPU從地址增長方向掃描所述PCRAM主存中空閑塊地址區(qū)域; 2)將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū)域; 3)在所述DRAM緩存中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在其位圖的bit位予以標(biāo)記,且將該計數(shù)器初始化為I ; 4)將所述DRAM緩存的位圖中所有賦值的計數(shù)器加I; 5)查找該些賦值的計數(shù)器中超過一預(yù)設(shè)值N的頁面; 6)將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù)據(jù)頁映射到當(dāng)前循環(huán),以重新讀入到所述DRAM緩存中,并將該重新讀入到所述DRAM緩存中的閑置數(shù)據(jù)頁對應(yīng)的計數(shù)器清零。
4.根據(jù)權(quán)利要求2所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于于所述下一循環(huán)中,包括以下步驟 1)所述CPU從所述PCRAM主存的最小地址開始掃描空閑塊地址區(qū)域; 2)將所述閑置數(shù)據(jù)頁存放到掃描到的首個空閑塊地址區(qū)域; 3)在所述DRAM緩存中對應(yīng)該閑置數(shù)據(jù)頁分配一個計數(shù)器,并在其位圖的bit位予以標(biāo)記,且將該計數(shù)器初始化為I ; 4)將所述DRAM緩存的位圖中所有賦值的計數(shù)器加I; 5)查找該些賦值的計數(shù)器中超過一預(yù)設(shè)值N的頁面; 6)將與所述超過設(shè)值N的頁面對應(yīng)的閑置數(shù)據(jù)頁映射到當(dāng)前循環(huán),以重新讀入到所述DRAM緩存中,并將該重新讀入到所述DRAM緩存中的閑置數(shù)據(jù)頁對應(yīng)的計數(shù)器清零。
5.根據(jù)權(quán)利要求1、2、3、或4所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于于所述CPU執(zhí)行寫數(shù)據(jù)的操作時,所述CPU首先判斷所述DRAM緩存中是否存在要寫入的數(shù)據(jù)頁,若是,則向所述DRAM緩存中寫入數(shù)據(jù),若否,則系統(tǒng)拋出頁錯誤,并轉(zhuǎn)至所述PCRAM主存,將所述欲寫入的數(shù)據(jù)頁由所述PCRAM主存讀入所述DRAM緩存中以便寫入數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于于所述CPU執(zhí)行讀數(shù)據(jù)的操作時,所述CPU首先判斷所述DRAM緩存中是否存在要讀取的數(shù)據(jù)頁,若是,則從所述DRAM緩存中讀取,若否,則從所述PCRAM主存中讀取。
7.根據(jù)權(quán)利要求1所述的基于PCRAM主存應(yīng)用的內(nèi)存管理方法,其特征在于所述系統(tǒng)還包括連接于所述CPU與內(nèi)存之間的高速緩存。
全文摘要
本發(fā)明提供一種基于PCRAM主存應(yīng)用的內(nèi)存管理方法,應(yīng)用在由CPU、內(nèi)存以及外存構(gòu)建的系統(tǒng)中,該內(nèi)存管理方法是將DRAM緩存作為PCRAM主存的緩存,系統(tǒng)將DRAM緩存中的閑置頁以循環(huán)均衡方式置換到PCRAM主存;于CPU執(zhí)行寫數(shù)據(jù)的操作時,CPU檢測DRAM緩存中是否存在要寫的數(shù)據(jù)頁,存在則將數(shù)據(jù)寫入DRAM緩存,否則將要寫的數(shù)據(jù)頁由PCRAM主存讀入到DRAM緩存之后再進(jìn)行寫操作,實(shí)現(xiàn)了CPU寫操作時對PCRAM主存所需求的擦寫次數(shù)及寫速度、疲勞特性等性能的需求;于CPU執(zhí)行讀數(shù)據(jù)的操作時,CPU首先訪問DRAM緩存,并在DRAM緩存中未讀取到要訪問的數(shù)據(jù)頁時,CPU訪問PCRAM主存進(jìn)行讀取,實(shí)現(xiàn)CPU可直接讀取DRAM緩存及PCRAM主存內(nèi)的數(shù)據(jù),大大節(jié)省了系統(tǒng)讀操作時的工作量。
文檔編號G06F12/08GK103019955SQ201110300660
公開日2013年4月3日 申請日期2011年9月28日 優(yōu)先權(quán)日2011年9月28日
發(fā)明者陳小剛, 李順芬, 陳一峰, 許林海, 陳后鵬, 丁晟, 宋志棠 申請人:中國科學(xué)院上海微系統(tǒng)與信息技術(shù)研究所