两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種面向非易失性內(nèi)存的高效的頁面組織和管理方法

文檔序號:10569853閱讀:355來源:國知局
一種面向非易失性內(nèi)存的高效的頁面組織和管理方法
【專利摘要】本發(fā)明公開了一種面向非易失性內(nèi)存的高效的頁面組織和管理方法,首先用樹形結(jié)構(gòu)建立并組織NVM中的空閑頁面的索引結(jié)構(gòu),生成磨損度索引樹;然后將NVM中的空閑頁面按照磨損計數(shù)值大小分成若干區(qū)間,各區(qū)間內(nèi)部的空閑頁面以鏈表的形式連接起來,形成區(qū)間鏈表;磨損度索引樹除葉子節(jié)點以外的所有內(nèi)部節(jié)點存放于DRAM中,用于快速索引;DRAM中的最后一層節(jié)點指向NVM內(nèi)存頁面的區(qū)間鏈表。本發(fā)明提供的面向非易失性內(nèi)存的高效的頁面組織和管理方法,解決了NVM內(nèi)存頁面的組織和管理方法,使得寫磨損比較少的頁面會被優(yōu)先選擇,從而達到將寫操作盡可能地均勻分布到每個頁面中的目的;同時在保證寫磨損均衡的同時實現(xiàn)高性能的NVM頁面的分配和回收管理;且充分利用多核架構(gòu),達到并行分配和回收。
【專利說明】
一種面向非易失性內(nèi)存的高效的頁面組織和管理方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機內(nèi)存頁面管理領(lǐng)域,特別是一種面向非易失性內(nèi)存的高效的頁面組織和管理方法。
【背景技術(shù)】
[0002]非易失性存儲器(Non-VolatileMemory,NVM)有著數(shù)據(jù)掉電不丟失、高存儲密度、低功耗和高速讀寫等特性。和傳統(tǒng)動態(tài)隨機內(nèi)存(Dynamic Random Access Memory ,DRAM)一樣,NVM能夠直接連接到系統(tǒng)的內(nèi)存總線,共享地址空間,直接通過CPU的load/store指令進行訪問。然而,不同于DRAM的是,NVM存儲單元的耐久度有限,其存儲介質(zhì)在擦寫過程中會被磨損,當(dāng)磨損到一定程度時,相應(yīng)的存儲單元就會失效。因此,如果頻繁擦寫地同一塊NVM區(qū)域,會導(dǎo)致NVM在短時間內(nèi)被寫壞,極大地降低NVM的使用壽命。可見,如何均勻地分布對存儲介質(zhì)的寫操作,使得各個頁面的磨損次數(shù)相近,對延長NVM在計算機內(nèi)存中的使用壽命具有重大意義。NVM在內(nèi)存中的使用壽命決定了非易失性內(nèi)存的實際使用價值。
[0003]由于NVM內(nèi)存的容量大,在NVM頁面管理的同時考慮NVM寫磨損均衡將造成一定的性能損失。因此NVM內(nèi)存的頁面組織架構(gòu)和管理方法的設(shè)計必須考慮到性能因素。
[0004]在已被廣泛應(yīng)用的多核并行的計算機系統(tǒng)架構(gòu)下,NVN內(nèi)存頁面的組織和管理方法需要能夠適用于多核并行的體系結(jié)構(gòu),并充分利用這樣并行結(jié)構(gòu)提升內(nèi)存管理本身的性能。內(nèi)存頁面管理的并行化能力將對在多核并行系統(tǒng)的性能提升產(chǎn)生重要影響。
[0005]目前,以其高速的讀寫性能和非易失性,NVM內(nèi)存被用來存放內(nèi)存文件系統(tǒng)和內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)。其中,NVM空閑空間的管理和分配是系統(tǒng)的重要組成部分?,F(xiàn)有的管理方案普遍使用位圖(Bit Map)、鏈表(Link List)和樹(Tree)組織并管理空閑頁。這些NVM的頁面管理方案在對NVM空間的回收和分配時都沒有考慮到NVM的磨損均衡,這可能導(dǎo)致對某些NVM的頁面擦寫次數(shù)過多,降低NVM內(nèi)存的實際使用壽命。此外,現(xiàn)有的全局、中心化的內(nèi)存管理數(shù)據(jù)結(jié)構(gòu),在多個進程同時需要分配/回收內(nèi)存頁面的情況下需要加鎖,以保證數(shù)據(jù)的一致,因此會造成性能瓶頸,導(dǎo)致多核系統(tǒng)不能完全發(fā)揮并發(fā)執(zhí)行的優(yōu)勢,影響系統(tǒng)性能。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的是提出一種面向非易失性內(nèi)存的高效的頁面組織和管理方法;該方法是一種面向動態(tài)隨機存取內(nèi)存(DRAM)和非易失性存儲器(Non-Volatile Memory,NVMWg合內(nèi)存架構(gòu)中的非易失性內(nèi)存的頁面管理及磨損均衡的方法。
[0007]本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:
[0008]本發(fā)明提供的一種面向非易失性內(nèi)存的高效的頁面組織和管理方法,包括以下步驟:
[0009]S1:用樹形結(jié)構(gòu)建立并組織NVM中的空閑頁面的索引結(jié)構(gòu),生成磨損度索引樹,所述磨損度索引樹的最低一層為NVM的空閑頁面;
[0010]S2:將NVM中的空閑頁面按照磨損計數(shù)值大小分成若干區(qū)間,各區(qū)間內(nèi)部的空閑頁面以鏈表的形式連接起來,形成區(qū)間鏈表;
[0011]S3:將磨損度索引樹除葉子節(jié)點外的所有內(nèi)部節(jié)點存放于DRAM中,所述DRAM中最后一層節(jié)點設(shè)置有指向NVM內(nèi)存頁面的區(qū)間鏈表;
[0012]S4:對NVM頁面分配采用寫磨損均衡;
[0013]S5:對NVM頁面回收采用寫磨損均衡。
[0014]進一步,所述步驟SI中的樹形結(jié)構(gòu)按照NVM空閑頁面的磨損計數(shù)值建立索引數(shù)據(jù);同時,將所述樹形結(jié)構(gòu)根據(jù)NVM的空間大小和NVM頁面的數(shù)量分為不同的層次結(jié)構(gòu)的樹;
[0015]在多核并行結(jié)構(gòu)下,每個核使用相互獨立的磨損度索引樹分配和回收頁面,使得NVM內(nèi)存頁面的管理并行執(zhí)行。
[0016]進一步,所述寫磨損均衡過程,具體步驟如下:
[0017]S41:搜索存放在DRAM中的磨損度索引樹,找到索引樹最左邊的節(jié)點,找到最小主鍵;
[0018]S42:通過最小主鍵的頭指針找到NVM中區(qū)間鏈表的起始地址,并返回該頁面的地址;
[0019]S43:修改DRAM中該最小主鍵的頭指針,使頭指針指向NVM中區(qū)間鏈表的下一個頁面。
[0020]進一步,所述寫磨損均衡過程,具體步驟如下:
[0021]S51:獲取回收頁面的磨損計數(shù)值;
[0022]S52:搜索存放在DRAM中的磨損度索引樹,在磨損度索引樹的最后一層節(jié)點中找到相應(yīng)的磨損計數(shù)值區(qū)間;
[0023 ] S53:將回收的頁面插入步驟S8中找到的NVM區(qū)間的尾部。
[0024]進一步,所述索引數(shù)據(jù)包括索引初始化,所述索引初始化具體步驟如下:
[0025]步驟801,開始;
[0026]步驟802,判斷NVM中是否有空閑頁,如果沒有,則該過程結(jié)束于步驟811 ;
[0027]步驟803,如果有,掃描NVM頁面的空閑鏈表;
[0028]步驟804,將掃描的每個頁面的地址和磨損計數(shù)信息讀入DRAM;
[0029]步驟805,判斷DRAM中是否已經(jīng)存在磨損度索引樹,如果沒有,執(zhí)行步驟806;否則執(zhí)行步驟807 ;
[0030]步驟806,創(chuàng)建一個新的磨損度索引樹根節(jié)點,并把該節(jié)點的指針保存到NVM;
[0031]步驟807,從磨損度索引樹中找到該頁面的正確位置,并插入數(shù)據(jù),即需要保證DRAM中節(jié)點的主鍵有序排列;
[0032]步驟808,判斷是否需要調(diào)整樹的節(jié)點,如果需要,則執(zhí)行步驟809;
[0033]步驟809,按需對節(jié)點執(zhí)行分裂操作;
[0034]步驟810,調(diào)整NVM空閑頁的區(qū)間鏈表指針;
[0035]步驟811,繼續(xù)處理NVM空閑鏈表的下一個頁面。
[0036]進一步,所述NVM頁面分配按照以下步驟進行:
[0037]步驟901,開始;
[0038]步驟902,初始化需要分配的頁面總數(shù)M;
[0039]步驟903,初始化已經(jīng)分配的頁面總數(shù)N;
[0040]步驟904,判斷是否已經(jīng)分配完所需數(shù)目的頁面,如果是,則執(zhí)行步驟910;否則執(zhí)行步驟905;
[0041 ]步驟905,從DRAM的磨損度索引樹中,讀取最左邊節(jié)點的主鍵,對應(yīng)的指針指向的NVM頁面都是磨損計數(shù)值相對較小的頁面;
[0042]步驟906,從DRAM中最后一層節(jié)點中找到NVM區(qū)間的頭指針;
[0043 ] 步驟907,返回NVM鏈表頭頁面的地址,表示新分配的一個NVM頁面;
[0044]步驟908,修改DRAM中鏈表頭的指針為該區(qū)間下一個NVM的頁面;
[0045]步驟909,對已經(jīng)分配的頁面總數(shù)加I;
[0046]步驟910,所有頁面已經(jīng)分配完畢,分配過程結(jié)束。
[0047]進一步,所述NVM頁面回收過程按照以下步驟進行:
[0048]步驟1001,開始;
[0049]步驟1002,獲取回收頁面的磨損計數(shù)值,所述數(shù)值存儲在全局?jǐn)?shù)組中,可以根據(jù)該頁面的地址定位到其磨損計數(shù)值;
[0050]步驟1003,在磨損度索引樹中找到該頁面對應(yīng)的主鍵以及其對應(yīng)的區(qū)間,即需要找到這個更新之后的頁面屬于哪個NVM區(qū)間;
[0051 ]步驟1004,讀取該區(qū)間的尾指針;
[0052]步驟1005,將回收的頁面插入NVM區(qū)間的尾部,不對NVM這個區(qū)間的頁面磨損計數(shù)排序,該操作需要同時修改空閑鏈表的指針和區(qū)間鏈表的指針;
[0053]步驟1006,修改磨損度索引樹相應(yīng)區(qū)間的尾指針為新回收的頁面,表示NVM區(qū)間鏈表增加了一個元素;
[0054]步驟1007,回收過程結(jié)束。
[0055]由于采用了上述技術(shù)方案,本發(fā)明具有如下的優(yōu)點:
[0056]本發(fā)明提供的面向非易失性內(nèi)存的高效的頁面組織和管理方法,解決了NVM內(nèi)存頁面的組織和管理方法,使得寫磨損比較少的頁面會被優(yōu)先選擇,分配給相應(yīng)的任務(wù)或進程使用,從而達到將寫操作盡可能地均勻分布到每個頁面中的目的;同時在保證寫磨損均衡的同時實現(xiàn)高性能的NVM頁面的分配和回收管理;且充分利用多核架構(gòu),達到并行分配和回收。
[0057]本發(fā)明的其他優(yōu)點、目標(biāo)和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其他優(yōu)點可以通過下面的說明書來實現(xiàn)和獲得。
【附圖說明】
[0058]本發(fā)明的【附圖說明】如下。
[0059]圖1為索引初始化或重建流程圖。
[0060]圖2為NVM頁面分配過程。
[0061 ]圖3為NVM頁面回收流程圖。
[0062]圖4為索引結(jié)構(gòu)圖。
[0063]圖5為NVM頁面分配過程。
[0064]圖6為NVM頁面回收過程。
【具體實施方式】
[0065]下面結(jié)合附圖和實施例對本發(fā)明作進一步說明。
[0066]實施例1
[0067]如圖所示,本實施例提供的一種基于磨損計數(shù)機制的樹型數(shù)據(jù)結(jié)構(gòu)來管理NVM的空閑空間,包括以下步驟:
[0068]將NVM空間劃分成固定大小的頁面(例如為4KB,2MB,或者不同大小頁面的集合),在NVM內(nèi)存中用一塊連續(xù)區(qū)域存放每個頁面的“磨損計數(shù)值”,“磨損計數(shù)值”記錄了每一個頁面的累積寫次數(shù);
[0069]每個NVM頁面有兩套指針管理,其中一個指針用來將所有的頁面鏈接成一個“空閑鏈表”,另外一個指針用來將所有的NVM頁面按照磨損計數(shù)值組合成不同的區(qū)間;
[0070]在系統(tǒng)運行時,以樹形結(jié)構(gòu)組織NVM中的空閑頁面,稱為“磨損度索引樹”。磨損度索引樹的底層是NVM中的空閑頁面,空閑頁面按照磨損計數(shù)值分成多個區(qū)間,各區(qū)間內(nèi)部的空閑頁面以鏈表的形式連接起來,稱為“區(qū)間鏈表”。磨損度索引樹除葉子節(jié)點外的所有內(nèi)部節(jié)點用于存放劃分及標(biāo)識NVM頁面各區(qū)間的索引。在系統(tǒng)運行時,其根節(jié)點和內(nèi)部節(jié)點存放于DRAM中;
[0071]磨損度索引樹除葉子節(jié)點外的所有每個內(nèi)部節(jié)點都包含多個“索引單元”。一個索引單元由一對主鍵和一對指針組成。其中,兩個主鍵定義了一個NVM空閑頁面組中頁面的磨損計數(shù)值的范圍,兩個指針則指向了該組指針鏈表的頭尾兩個元素。每個主鍵和指針對表示磨損計數(shù)值小于或等于該主鍵值的所有NVM頁面,都可以通過對應(yīng)的指針找到;每個節(jié)點包含一個整數(shù),用來記錄當(dāng)前節(jié)點有效鍵值的個數(shù);DRAM中最后一層節(jié)點的每個主鍵對應(yīng)有兩個指針,分別指向NVM空閑頁面區(qū)間鏈表的頭部和尾部,另外一個指針指向該節(jié)點的父節(jié)點,在合并和刪除過程中用來調(diào)整樹的結(jié)構(gòu);
[0072]在索引樹結(jié)構(gòu)初始化過程中,掃描NVM的空閑鏈表,順序讀取NVM的頁面地址和頁面的磨損計數(shù)值,在DRAM中建立NVM頁面的磨損度索引樹;如果系統(tǒng)是多核架構(gòu),則為每個核單獨建立一個磨損度索引樹,所有的磨損度索引樹有相同的結(jié)構(gòu),并將空閑頁面均勻分配到每個索引樹中;
[0073]在分配空閑NVM頁面的時候,查詢DRAM中的索引,從磨損度索引樹最左邊的葉子節(jié)點開始,取出空閑的NVM頁面。這種方式可以保證分配的頁面都是磨損計數(shù)值比較小的頁面。此外,由于分配操作只需要修改鏈表指針,能夠在常數(shù)時間完成,時間復(fù)雜度為0(1);
[0074]在回收頁面時,根據(jù)該頁面更新之后的磨損計數(shù)值,將其插入到NVM對應(yīng)的區(qū)間中;
[0075]NVM中存儲葉子節(jié)點的區(qū)間沒有限定大小,可以動態(tài)增長或縮小;在一定情況下,還可以統(tǒng)一調(diào)整各個區(qū)間的范圍及大??;
[0076]當(dāng)區(qū)間需要細化或者區(qū)間頁面過于密集時,可觸發(fā)“分裂操作”,該操作將待調(diào)整的區(qū)間中的頁面信息讀入DRAM,根據(jù)磨損計數(shù)值重新組織,修改DRAM中的索引結(jié)構(gòu),然后更新NVM的區(qū)間鏈表指針;
[0077]NVM中區(qū)間的分裂會導(dǎo)致DRAM中樹形結(jié)構(gòu)的節(jié)點調(diào)整主鍵范圍,分裂之后的節(jié)點所包含的主鍵范圍更加精細,即可以做到更好的磨損均衡;
[0078]當(dāng)區(qū)間范圍需要擴大或區(qū)間頁面過于稀疏時,可觸發(fā)“合并操作”,合并的好處是使之后的分配操作更快。
[0079]在系統(tǒng)每次分配空閑頁面時,使用的都是此時磨損程度相對較小的頁面。在回收頁面時,通過新的磨損計數(shù)值可以將該頁面插入適當(dāng)?shù)膮^(qū)間,用來保證磨損程度比該頁面小的空閑頁面在下次分配過程中被先使用。因此,這種管理方案能夠?qū)懖僮骶鶆蚍植嫉较到y(tǒng)所有的頁面中。并且該方案在DRAM中只需要建立指向NVM頁面的指針結(jié)構(gòu),不需要把NVM所有的頁面信息存儲到DRAM中,能極大減小DRAM中的空間開銷。此外,由于頁面用用鏈表管理,故該方案能在常數(shù)時間完成分配和回收,效率很高。針對多核架構(gòu),每個核分配和回收的過程使用自己的磨損度索引樹,不需要對數(shù)據(jù)結(jié)構(gòu)加鎖,能夠?qū)崿F(xiàn)NVM內(nèi)存頁面管理和磨損均衡的高度并行化。
[0080]實施例2
[0081 ]本實施例提供的索引的初始化或重建流程,如圖1所示:
[0082]該流程開始于步驟801,然后如下:
[0083]在步驟802,判斷NVM中是否有空閑頁,如果沒有,則該過程結(jié)束于步驟811;如果有,在步驟803,掃描NVM頁面的空閑鏈表;
[0084]在步驟804,將掃描的每個頁面的地址和磨損計數(shù)信息讀入DRAM;
[0085]在步驟805,判斷DRAM中是否已經(jīng)存在磨損度索引樹。如果沒有,執(zhí)行步驟806;否則執(zhí)行步驟807。
[0086]在步驟806,創(chuàng)建一個新的磨損度索引樹根節(jié)點,并把該節(jié)點的指針保存到NVM;
[0087]在步驟807,從磨損度索引樹中找到該頁面的正確位置,并插入數(shù)據(jù),即需要保證DRAM中節(jié)點的主鍵有序排列;
[0088]在步驟808,判斷是否需要調(diào)整樹的節(jié)點,如果需要,則執(zhí)行步驟809;
[0089]在步驟809,按需對節(jié)點執(zhí)行分裂等操作,DRAM中的節(jié)點可以按照B+樹的條件維護,即當(dāng)某個節(jié)點所存儲的鍵值和指針對達到最大度數(shù)是,需要分裂該節(jié)點,具體過程和B+樹的分裂操作一樣;
[0090]在步驟810,調(diào)整NVM空閑頁的區(qū)間鏈表指針;
[0091 ] 在步驟811,繼續(xù)處理NVM空閑鏈表的下一個頁面。
[0092]其中,NVM頁面分配過程如圖2所示。該流程起始于步驟901,然后:
[0093]在步驟902,初始化需要分配的頁面總數(shù)Μ;
[0094]在步驟903,初始化已經(jīng)分配的頁面總數(shù)N;
[0095]在步驟904,判斷是否已經(jīng)分配完所需數(shù)目的頁面,如果是,則執(zhí)行步驟910;否則執(zhí)行步驟905 ;
[0096]在步驟905,從DRAM的磨損度索引樹中,讀取最左邊節(jié)點的主鍵,對應(yīng)的指針指向的NVM頁面都是磨損計數(shù)值相對較小的頁面;
[0097]在步驟906,從DRAM中最后一層節(jié)點中找到NVM區(qū)間的頭指針;
[0098]在步驟907,返回NVM鏈表頭頁面的地址,表示新分配的一個NVM頁面;
[0099]在步驟908,修改DRAM中鏈表頭的指針為該區(qū)間下一個NVM的頁面;
[0100]在步驟909,對已經(jīng)分配的頁面總數(shù)加I;
[0101]在步驟910,所有頁面已經(jīng)分配完畢,分配過程結(jié)束。
[0102]其中,NVM頁面回收過程如圖3所示。該過程起始于步驟1001,然后,
[0103]在步驟1002,獲取回收頁面的磨損計數(shù)值,該數(shù)值存儲在全局?jǐn)?shù)組中,可以根據(jù)該頁面的地址定位到其磨損計數(shù)值;
[0104]在步驟1003,在磨損度索引樹中找到該頁面對應(yīng)的主鍵以及其對應(yīng)的區(qū)間,即需要找到這個更新之后的頁面屬于哪個NVM區(qū)間;
[0105]在步驟1004,讀取該區(qū)間的尾指針;
[0106]在步驟1005,將回收的頁面插入NVM區(qū)間的尾部,不對NVM這個區(qū)間的頁面磨損計數(shù)排序,該操作需要同時修改空閑鏈表的指針和區(qū)間鏈表的指針;
[0107]在步驟1006,修改磨損度索引樹相應(yīng)區(qū)間的尾指針為新回收的頁面,表示NVM區(qū)間鏈表增加了一個元素;
[0108]在步驟1007,回收過程結(jié)束。
[0109]其中,索引樹的結(jié)構(gòu)圖如圖4所示,DRAM中存儲樹形結(jié)構(gòu)除葉子節(jié)點外的所有中間節(jié)點,中間節(jié)點包含多個主鍵和指針對,以及記錄該節(jié)點有效記錄個數(shù)的數(shù)值NumC3DRAM中最后一層節(jié)點的每個主鍵對應(yīng)兩個指針,所有NVM中磨損計數(shù)值小于主鍵的頁面構(gòu)成一個區(qū)間(Bucket),HeadPtr存放NVM中區(qū)間的首地址,TaiIPtr存放區(qū)間的尾地址。
[0110]NVM數(shù)據(jù)頁包括兩個字段,F(xiàn)ree_List_Pointer: 64字節(jié)指針,用來將所有頁面鏈接成空閑鏈表;Range_Po inter: 64字節(jié)指針,用來將所有頁面按照磨損計數(shù)值的大小順序組成不同區(qū)間。
[0111]如圖表示DRAM中最后一層最左邊的節(jié)點有兩個主鍵指針對,其中主鍵Keyl為50,主鍵Key2為80 C3HeadPtrl指向磨損計數(shù)值等于11的NVM頁面,Tai IPtrl指向磨損計數(shù)值等于47的頁面,其中,前三個NVM頁面(磨損計數(shù)值為11,47,45)構(gòu)成一個區(qū)間,所有頁面的磨損計數(shù)值都小于50,并且每個頁面都由?代61^81:_?0;[1^61'鏈接起來,同時1^11^6_?0;[1^61'將其按照磨損計數(shù)值區(qū)間組織起來。HeadPtr2,TailPtr2所指向的NVM區(qū)間就只有兩個頁面,其磨損計數(shù)值分別為68,72。
[0112]其中,NVM頁面分配過程如圖5所示,圖5表示分配一個NVM頁面之后索引的結(jié)構(gòu),其中磨損計數(shù)值為11的NVM頁面被分配,需要修改DRAM最后一層節(jié)點的HeadPtr為磨損計數(shù)值為45的頁面。
[0113]NVM頁面回收過程如圖6所示,圖6表示回收一個NVM頁面之后索引的結(jié)構(gòu),其中磨損計數(shù)值為65的NVM頁面為新回收的頁面,該頁面對應(yīng)的區(qū)間為主鍵80,直接將該頁面插入TailPtr2之后,并修改TailPtrf指向該頁面,注意此時不需要對NVM區(qū)間按照磨損計數(shù)值排序,當(dāng)系統(tǒng)空閑或者每個NVM區(qū)間存放的節(jié)點個數(shù)十分不平衡時,再讀取NVM區(qū)間的所有頁面信息到DRAM,調(diào)整DRAM中的樹形結(jié)構(gòu),使其重新平衡。
[0114]最后說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
【主權(quán)項】
1.一種面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:包括以下步驟: S1:用樹形結(jié)構(gòu)建立并組織NVM中的空閑頁面的索引結(jié)構(gòu),生成磨損度索引樹,所述磨損度索引樹的最低一層為NVM的空閑頁面; S2:將NVM中的空閑頁面按照磨損計數(shù)值大小分成若干區(qū)間,各區(qū)間內(nèi)部的空閑頁面以鏈表的形式連接起來,形成區(qū)間鏈表; S3:將磨損度索引樹除葉子節(jié)點外的所有內(nèi)部節(jié)點存放于DRAM中,所述DRAM中最后一層節(jié)點設(shè)置有指向NVM內(nèi)存頁面的區(qū)間鏈表; 54:對NVM頁面分配采用寫磨損均衡; 55:對NVM頁面回收采用寫磨損均衡。2.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述步驟SI中的樹形結(jié)構(gòu)按照NVM空閑頁面的磨損計數(shù)值建立索引數(shù)據(jù);同時,將所述樹形結(jié)構(gòu)根據(jù)NVM的空間大小和NVM頁面的數(shù)量分為不同的層次結(jié)構(gòu)的樹; 在多核并行結(jié)構(gòu)下,每個核使用相互獨立的磨損度索引樹分配和回收頁面,使得NVM內(nèi)存頁面的管理并行執(zhí)行。3.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述寫磨損均衡過程,具體步驟如下: 541:搜索存放在DRAM中的磨損度索引樹,找到索引樹最左邊的節(jié)點,找到最小主鍵; 542:通過最小主鍵的頭指針找到NVM中區(qū)間鏈表的起始地址,并返回該頁面的地址; S43:修改DRAM中該最小主鍵的頭指針,使頭指針指向NVM中區(qū)間鏈表的下一個頁面。4.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述寫磨損均衡過程,具體步驟如下: S51:獲取回收頁面的磨損計數(shù)值; 552:搜索存放在DRAM中的磨損度索引樹,在磨損度索引樹的最后一層節(jié)點中找到相應(yīng)的磨損計數(shù)值區(qū)間; 553:將回收的頁面插入步驟S8中找到的NVM區(qū)間的尾部。5.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述索引數(shù)據(jù)包括索引初始化,所述索引初始化具體步驟如下: 步驟801,開始; 步驟802,判斷NVM中是否有空閑頁,如果沒有,則該過程結(jié)束于步驟811 ; 步驟803,如果有,掃描NVM頁面的空閑鏈表; 步驟804,將掃描的每個頁面的地址和磨損計數(shù)信息讀入DRAM; 步驟805,判斷DRAM中是否已經(jīng)存在磨損度索引樹,如果沒有,執(zhí)行步驟806;否則執(zhí)行步驟807; 步驟806,創(chuàng)建一個新的磨損度索弓I樹根節(jié)點,并把該節(jié)點的指針保存到NVM; 步驟807,從磨損度索引樹中找到該頁面的正確位置,并插入數(shù)據(jù),即需要保證DRAM中節(jié)點的主鍵有序排列; 步驟808,判斷是否需要調(diào)整樹的節(jié)點,如果需要,則執(zhí)行步驟809; 步驟809,按需對節(jié)點執(zhí)行分裂操作; 步驟810,調(diào)整NVM空閑頁的區(qū)間鏈表指針; 步驟811,繼續(xù)處理NVM空閑鏈表的下一個頁面。6.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述NVM頁面分配按照以下步驟進行: 步驟901,開始; 步驟902,初始化需要分配的頁面總數(shù)M; 步驟903,初始化已經(jīng)分配的頁面總數(shù)N; 步驟904,判斷是否已經(jīng)分配完所需數(shù)目的頁面,如果是,則執(zhí)行步驟910;否則執(zhí)行步驟905; 步驟905,從DRAM的磨損度索引樹中,讀取最左邊節(jié)點的主鍵,對應(yīng)的指針指向的NVM頁面都是磨損計數(shù)值相對較小的頁面; 步驟906,從DRAM中最后一層節(jié)點中找到NVM區(qū)間的頭指針; 步驟907,返回NVM鏈表頭頁面的地址,表示新分配的一個NVM頁面; 步驟908,修改DRAM中鏈表頭的指針為該區(qū)間下一個NVM的頁面; 步驟909,對已經(jīng)分配的頁面總數(shù)加I; 步驟910,所有頁面已經(jīng)分配完畢,分配過程結(jié)束。7.如權(quán)利要求1所述的面向非易失性內(nèi)存的高效的頁面組織和管理方法,其特征在于:所述NVM頁面回收過程按照以下步驟進行: 步驟1001,開始; 步驟1002,獲取回收頁面的磨損計數(shù)值,所述數(shù)值存儲在全局?jǐn)?shù)組中,可以根據(jù)該頁面的地址定位到其磨損計數(shù)值; 步驟1003,在磨損度索引樹中找到該頁面對應(yīng)的主鍵以及其對應(yīng)的區(qū)間,即需要找到這個更新之后的頁面屬于哪個NVM區(qū)間; 步驟1004,讀取該區(qū)間的尾指針; 步驟1005,將回收的頁面插入NVM區(qū)間的尾部,不對NVM這個區(qū)間的頁面磨損計數(shù)排序,該操作需要同時修改空閑鏈表的指針和區(qū)間鏈表的指針; 步驟1006,修改磨損度索引樹相應(yīng)區(qū)間的尾指針為新回收的頁面,表示NVM區(qū)間鏈表增加了一個元素; 步驟1007,回收過程結(jié)束。
【文檔編號】G06F12/02GK105930280SQ201610364236
【公開日】2016年9月7日
【申請日】2016年5月27日
【發(fā)明人】諸葛晴鳳, 沙行勉, 吳林
【申請人】諸葛晴鳳
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
嘉鱼县| 中阳县| 英超| 同心县| 肃北| 奎屯市| 成安县| 克东县| 桂林市| 江永县| 新邵县| 肥城市| 莱西市| 铜鼓县| 石首市| 丰原市| 诸暨市| 西乡县| 清丰县| 阿拉善左旗| 革吉县| 南澳县| 东乌| 崇明县| 张掖市| 三门峡市| 鲁甸县| 邯郸县| 广汉市| 灌阳县| 永清县| 汉沽区| 万载县| 洞口县| 抚顺县| 康定县| 安化县| 徐水县| 永定县| 清徐县| 顺昌县|