內(nèi)存回收方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供一種內(nèi)存回收方法及裝置,內(nèi)存回收方法包括:接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量;根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的頁序回收NVM非活動頁面,本發(fā)明實施例的內(nèi)存回收方法及裝置通過按照NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,實現(xiàn)了NVM非活動內(nèi)存頁面被寫次數(shù)相對小的頁面先被回收利用,NVM非活動內(nèi)存頁面被寫次數(shù)相對大的頁面后被回收利用,從而能夠使NVM內(nèi)存頁面磨損均衡,提高了存儲單元的穩(wěn)定性和可靠性。
【專利說明】內(nèi)存回收方法及裝置【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明實施例涉及計算機【技術(shù)領(lǐng)域】,尤其涉及內(nèi)存回收方法及裝置。
【背景技術(shù)】
[0002]構(gòu)成內(nèi)存單元的內(nèi)存器件通常包括動態(tài)隨機訪問存儲器(英文全稱DynamicRandom Access Memory,簡稱 DRAM)和非易失性存儲器(英文全稱 Non-Volatile Memory,簡稱NVM),DRAM可以承受的寫次數(shù)高,但可集成度低,可集成的存儲空間有限,NVM的集成度更高,可以集成較大內(nèi)存容量的內(nèi)存單元,但可以承受的寫次數(shù)相對較低,隨著人們對存儲設(shè)備的內(nèi)存容量的要求越來越高,期望存儲設(shè)備的內(nèi)存容量越來越大,越來越穩(wěn)定可靠,因此,出現(xiàn)了由DRAM和NVM構(gòu)成的混合結(jié)構(gòu)的內(nèi)存單元,由DRAM和NVM混合可以提高存儲設(shè)備的存儲容量。
[0003]現(xiàn)有技術(shù)中,DRAM和NVM混合結(jié)構(gòu)的存儲設(shè)備的操作系統(tǒng)在執(zhí)行頁面回收操作時,采用最近最少使用算法(英文全稱Least Recently Used,簡稱LRU)從非活動的NVM頁面鏈表的頭部選擇相應(yīng)數(shù)量的頁面進行回收,這種方法可能會導(dǎo)致被寫次數(shù)較多的NVM頁面先被回收利用,致使被寫次數(shù)多的NVM被磨損嚴(yán)重,影響整個存儲單元的穩(wěn)定性和可靠性。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例的目的在于提供一種內(nèi)存回收方法,旨在解決NVM的內(nèi)存頁面磨損不均衡的問題。
[0005]第一方面,本發(fā)明提供一種內(nèi)存回收方法,包括:
[0006]接收內(nèi)存回收請求消息,所述內(nèi)存回收請求消息中包含回收標(biāo)識,所述回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量;
[0007]根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面。
[0008]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括:
[0009]確定所述NVM非活動內(nèi)存頁面的被寫次數(shù);
[0010]根據(jù)所述NVM非活動內(nèi)存頁面的被寫次數(shù),將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,所述非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
[0011]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在所述非活動內(nèi)存頁面鏈表中排列。
[0012] 結(jié)合第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,包括:
[0013]在所述非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0014]結(jié)合第一方面,在第一方面的第四種可能的實現(xiàn)方式中,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括:
[0015]確定所述NVM非活動內(nèi)存頁面的被寫次數(shù);
[0016]將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,所述頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
[0017]結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后頁序在所述非活動內(nèi)存頁面鏈表中排列。
[0018]結(jié)合第一方面的第四種可能的實現(xiàn)方式或第一方面的第五種可能的實現(xiàn)方式中,在第一方面的第六種可能的實現(xiàn)方式中,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,包括:
[0019]在所述非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0020]第二方面,本發(fā)明實施例提供一種內(nèi)存回收裝置,包括:
[0021 ] 接收模塊,用于接收內(nèi)存回收請求消息,所述內(nèi)存回收請求消息中包含回收標(biāo)識,所述回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量;
[0022]內(nèi)存回收模塊,用于根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面。
[0023]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,還包括:
[0024]確定模塊,用于在所述內(nèi)存回收模塊根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定所述NVM非活動內(nèi)存頁面的被寫次數(shù);
[0025]第一插入模塊,用于根據(jù)所述NVM非活動內(nèi)存頁面的被寫次數(shù),將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,所述非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
[0026]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在所述非活動內(nèi)存頁面鏈表中排列。
[0027]結(jié)合第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,
[0028]內(nèi)存回收模塊,具體用于在所述非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。[0029]結(jié)合第二方面,在第二方面的第四種可能的實現(xiàn)方式中,還包括:
[0030]確定模塊,用于在所述內(nèi)存回收模塊根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定所述NVM非活動內(nèi)存頁面的被寫次數(shù);
[0031 ] 第二插入模塊,用于將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,所述頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
[0032]結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后順序在所述非活動內(nèi)存頁面鏈表中排列。
[0033]結(jié)合第二方面的第四種可能的實現(xiàn)方式或第二方面的第五種可能的實現(xiàn)方式中,在第二方面的第六種可能的實現(xiàn)方式中,
[0034]內(nèi)存回收模塊,具體用于在所述非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0035]本實施例的內(nèi)存回收方法及裝置,通過接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量,根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,實現(xiàn)了 NVM非活動內(nèi)存頁面被寫次數(shù)相對小的頁面先被回收利用,NVM非活動內(nèi)存頁面被寫次數(shù)相對大的頁面后被回收利用,從而能夠使NVM內(nèi)存頁面磨損均衡,提高了存儲單元的穩(wěn)定性和可靠性。
【專利附圖】
【附圖說明】
[0036]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0037]圖1為本發(fā)明內(nèi)存回收方法實施例一的流程圖;
[0038]圖2為本發(fā)明NVM非活動內(nèi)存頁面鏈表組織形式實施例一示意圖;
[0039]圖3為本發(fā)明內(nèi)存回收方法實施例二的流程圖;
[0040]圖4為本發(fā)明NVM非活動內(nèi)存頁面鏈表組織形式實施例二示意圖;
[0041]圖5為本發(fā)明內(nèi)存回收方法實施例三的流程圖;
[0042]圖6為本發(fā)明內(nèi)存回收裝置實施例一的流程圖。
【具體實施方式】
[0043]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明中的附圖,對本發(fā)明中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。[0044]需要說明的是:本發(fā)明實施例的內(nèi)存回收方法可以適用于內(nèi)存模塊為混合型的內(nèi)存回收裝置,即內(nèi)存回收裝置的內(nèi)存模塊由動態(tài)隨機訪問存儲器(英文全稱DynamicRandom Access Memory,簡稱 DRAM)和非易失性存儲器(英文全稱 Non-Volatile Memory,簡稱NVM)構(gòu)成,還可以適用于內(nèi)存模塊由NVM構(gòu)成的內(nèi)存回收裝置。對于內(nèi)存模塊為混合型的內(nèi)存回收裝置,在執(zhí)行內(nèi)存回收時,可以先回收DRAM中的非活動內(nèi)存頁面,當(dāng)DRAM中的非活動內(nèi)存頁面數(shù)量不能滿足回收需要時,再回收NVM中內(nèi)存頁面,回收NVM中內(nèi)存頁面的方法可以采用本發(fā)明實施例的內(nèi)存回收方法。
[0045]本實施例的內(nèi)存回收方法可以采用內(nèi)存回收裝置來實現(xiàn),該內(nèi)存回收裝置可以通過硬件或軟件的方式實現(xiàn),該內(nèi)存回收裝置通常可以為手機、計算機等終端中具有處理功能的部件,例如:CPU等,可以用于在終端中實現(xiàn)內(nèi)存回收方法。
[0046]圖1為本發(fā)明內(nèi)存回收方法實施例一的流程圖,如圖1所示,本實施的內(nèi)存回收方法包括:
[0047]S101、接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量。
[0048]具體地,例如:內(nèi)存回收裝置在運行程序時,需要為某一進程分配內(nèi)存空間,此時,如果空閑內(nèi)存不足,則操作系統(tǒng)向內(nèi)存管理模塊發(fā)送內(nèi)存回收請求消息,內(nèi)存管理模塊接收該內(nèi)存回收請求消息,該內(nèi)存回收請求消息中包含回收標(biāo)識,該回收標(biāo)識可以為用于表示操作系統(tǒng)請求的內(nèi)存頁面數(shù)量的標(biāo)識,即操作系統(tǒng)請求內(nèi)存管理模塊分配回收標(biāo)識所標(biāo)識的數(shù)量的內(nèi)存頁面,內(nèi)存管理模塊根據(jù)該內(nèi)存回收請求消息,在NVM非活動內(nèi)存頁面鏈表中回收相應(yīng)數(shù)量的內(nèi)存頁面滿足操作系統(tǒng)的需要。
[0049]S102、根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面。
[0050]具體地,內(nèi)存管理模塊根據(jù)NVM非活動內(nèi)存頁面鏈表中的非活動內(nèi)存頁面的被寫次數(shù)的大小,按照非活動內(nèi)存頁面的被寫次數(shù)由小到大的順序,依次回收與回收標(biāo)識相應(yīng)的個數(shù)的非活動內(nèi)存頁面,這樣NVM非活動內(nèi)存頁面鏈表中的被寫次數(shù)小的非活動內(nèi)存頁面先被回收利用,若被回收的非活動內(nèi)存頁面的被寫次數(shù)在下一次回收時仍然較小,則繼續(xù)回收該被寫次數(shù)較小的非活動內(nèi)存頁面,這樣使得在執(zhí)行內(nèi)存頁面回收過程中,被寫次數(shù)較小的非活動內(nèi)存頁面總是先被回收,避免了內(nèi)存回收裝置的內(nèi)存模塊因為一些內(nèi)存頁面因被寫次數(shù)多先被損壞,影響整個內(nèi)存模塊的穩(wěn)定性和可靠性,提高了 NVM內(nèi)存頁面的磨損均衡性。
[0051]本發(fā)明實施例的內(nèi)存回收方法,通過接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量,根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,實現(xiàn)了 NVM非活動內(nèi)存頁面被寫次數(shù)相對小的頁面先被回收利用,NVM非活動內(nèi)存頁面被寫次數(shù)相對大的頁面后被回收利用,從而能夠使NVM內(nèi)存頁面磨損均衡,提高了存儲單元的穩(wěn)定性和可靠性。
[0052]在上述實施例的基礎(chǔ)上,進一步地,根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括:確定NVM非活動內(nèi)存頁面的被寫次數(shù);根據(jù)NVM非活動內(nèi)存頁面的被寫次數(shù),將NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
[0053]具體地,內(nèi)存管理模塊根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還可以先確定NVM非活動內(nèi)存頁面的被寫次數(shù),例如:內(nèi)存管理模塊可以通過內(nèi)存控制器緩存中記錄的NVM非活動內(nèi)存頁面的被寫次數(shù)獲取非活動內(nèi)存頁面的被寫次數(shù),若內(nèi)存控制器緩存中沒有相應(yīng)非活動內(nèi)存頁面的被寫次數(shù)的記錄時,則還可以從NVM的計數(shù)器中獲取相應(yīng)非活動內(nèi)存頁面的被寫次數(shù),通過在內(nèi)存控制器中設(shè)置內(nèi)存控制器緩存,在內(nèi)存控制器緩存中記錄非活動內(nèi)存頁面的被寫次數(shù)可以減少對NVM的訪問次數(shù)。內(nèi)存管理模塊還可以定期地將內(nèi)存控制器緩存中記錄的非活動內(nèi)存頁面的被寫次數(shù)刷新到NVM的計數(shù)器中,該NVM的計數(shù)器中記錄了 NVM中所有內(nèi)存頁面的被寫次數(shù)。
[0054]在上述實施例的基礎(chǔ)上,進一步地,非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在非活動內(nèi)存頁面鏈表中排列。
[0055]具體地,圖2為本發(fā)明NVM非活動內(nèi)存頁面鏈表組織形式實施例一示意圖,如圖2所示,NVM非活動內(nèi)存頁面鏈表包括多個NVM非活動內(nèi)存頁面鏈表段,每個NVM非活動內(nèi)存頁面鏈表段的表頭包含一數(shù)值范圍,該數(shù)值范圍表示該段內(nèi)所有內(nèi)存頁面的被寫次數(shù)范圍,如NVM非活動內(nèi)存頁面鏈表段A內(nèi)的所有內(nèi)存頁面的被寫次數(shù)范圍在O到100之間,在NVM非活動內(nèi)存頁面鏈表段A內(nèi)所有內(nèi)存頁面的被寫次數(shù)范圍在O到100之間的內(nèi)存頁面按照被寫次數(shù)從小到大的順序在鏈表中排列。
[0056]當(dāng)有新的NVM非活動內(nèi)存頁面移動到NVM非活動內(nèi)存頁面鏈表中時,通過判斷獲知待插入的NVM非活動內(nèi)存頁面M的被寫次數(shù)為30,將該NVM非活動內(nèi)存頁面M插入到被寫次數(shù)范圍在O到100之間的NVM非活動內(nèi)存頁面鏈表段A中,并具體插入到鏈表段A的被寫次數(shù)為20和50的非活動內(nèi)存頁面之間,使得插入后鏈表段A內(nèi)的內(nèi)存頁面依然按照被寫次數(shù)從小到大的順序排列,這樣能夠保證在頁面回收時,總是能從按照被寫次數(shù)從小到大的順序回收NVM非活動內(nèi)存頁面鏈表中的頁面。
[0057]在上述實施例的基礎(chǔ)上,進一步地,根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,包括:在非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0058]具體地,圖3為本發(fā)明內(nèi)存回收方法實施例二的流程圖,如圖3所示,本實施例提供的內(nèi)存回收方法,非活動內(nèi)存頁面鏈表可以分為包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面,非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在非活動內(nèi)存頁面鏈表中排列,內(nèi)存管理模塊對NVM中的非活動內(nèi)存頁面進行回收時可以依照下述步驟回收:
[0059]301、選擇NVM非活動內(nèi)存頁面鏈表中被寫次數(shù)范圍最小的段。
[0060]內(nèi)存管理模塊在NVM非活動內(nèi)存頁面鏈表中選擇NVM非活動內(nèi)存頁面鏈表中被寫次數(shù)范圍最小的NVM非活動內(nèi)存頁面鏈表段。
[0061]302、從選擇的NVM非活動內(nèi)存頁面鏈表段的頭部回收非活動頁面。
[0062]從選擇的非活動內(nèi)存頁面鏈表段的頭部開始,按照非活動內(nèi)存頁面被寫次數(shù)從小到大的順序,選擇指定數(shù)目的內(nèi)存頁面,回收選擇的內(nèi)存頁面,使其成為空閑頁面從而可以進行再次利用,所述的指定數(shù)目可以由操作系統(tǒng)設(shè)定。
[0063]303、判斷是否回收了指定數(shù)目的內(nèi)存頁面,若是,則執(zhí)行304 ;若否,則執(zhí)行305。
[0064]若選擇的內(nèi)存頁面的數(shù)目能夠滿足操作系統(tǒng)的需求,則此次內(nèi)存回收操作完成;若選擇的內(nèi)存頁面的數(shù)目沒有滿足操作系統(tǒng)的需求,則從NVM非活動內(nèi)存頁面鏈表中的其他段中回收內(nèi)存頁面。
[0065]304、結(jié)束。
[0066]305、判斷是否是最后一個NVM非活動內(nèi)存頁面鏈表段,若是,則執(zhí)行304 ;若否,則執(zhí)行306。
[0067]若上述301中選擇的NVM非活動內(nèi)存頁面鏈表段是NVM非活動內(nèi)存頁面鏈表的最后一個鏈表段,則此次內(nèi)存回收操作完成;若不是,則從NVM非活動內(nèi)存頁面鏈表中的其他段中回收內(nèi)存頁面。
[0068]306、選擇NVM非活動內(nèi)存頁面鏈表中被寫次數(shù)范圍次小的段。
[0069]選擇NVM非活動內(nèi)存頁面鏈表中被寫次數(shù)范圍較上述301中選擇的NVM非活動內(nèi)存頁面鏈表段的寫次數(shù)范圍小且相鄰的NVM非活動內(nèi)存頁面鏈表段,再執(zhí)行302。
[0070]可選地,在內(nèi)存回收方法實施例一的基礎(chǔ)上,本實施例的內(nèi)存回收方法在根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括:確定NVM非活動內(nèi)存頁面的被寫次數(shù);將NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
[0071]具體地,內(nèi)存管理模塊在根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還可以先確定NVM非活動內(nèi)存頁面的被寫次數(shù),確定NVM非活動內(nèi)存頁面的被寫次數(shù)的具體過程與上述實施例相同,此處不再贅述。
[0072]內(nèi)存管理模塊還可以將NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
[0073]在上述實施例的基礎(chǔ)上,進一步地,非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后順序在非活動內(nèi)存頁面鏈表中排列。
[0074]具體地,圖4為本發(fā)明NVM非活動內(nèi)存頁面鏈表組織形式實施例二示意圖,如圖4所示,NVM非活動內(nèi)存頁面鏈表包括多個頁面組,每個頁面組按照建立時間的先后順序在頁面鏈表中排列,例如:頁面組O中包含的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面插入到鏈表中的時間比頁面組P中包含的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面插入到鏈表中的時間相對較早;頁面組P中包含的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面插入到鏈表中的時間比頁面組Q中包含的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面插入到鏈表中的時間相對較早。
[0075]頁面組O、頁面組P和頁面組Q中包含的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面依次按照非活動內(nèi)存頁面的被寫次數(shù)從小到大順序排列,當(dāng)有新的NVM非活動內(nèi)存頁面N移動到非活動內(nèi)存頁面鏈表中時,通過判斷獲知待插入的NVM非活動內(nèi)存頁面N的被寫次數(shù)為30,將該NVM非活動內(nèi)存頁面N插入到NVM非活動內(nèi)存頁面鏈表尾部的頁面組Q中,并具體插入到頁面組Q的被寫次數(shù)為55和20的非活動內(nèi)存頁面之間,使得插入后鏈表段A內(nèi)的內(nèi)存頁面依然按照被寫次數(shù)從小到大的順序排列,這樣能夠保證在頁面回收時,總是能從按照被寫次數(shù)從小到大的順序回收頁面組中的頁面。
[0076]在上述實施例的基礎(chǔ)上,進一步地,根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的頁序回收NVM非活動頁面,包括:在非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0077]具體地,圖5為本發(fā)明內(nèi)存回收方法實施例三的流程圖,如圖5所示,本實施例提供的內(nèi)存回收方法,頁面列表中可以包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面,頁面鏈表中包括的多個頁面組按照建立時間的先后順序在頁面鏈表中排列,內(nèi)存管理模塊對NVM中的非活動內(nèi)存頁面進行回收時可以依照下述步驟回收:
[0078]501、從NVM非活動內(nèi)存頁面鏈表中建立時間最早的頁面組開始回收非活動頁面。
[0079]內(nèi)存管理模塊從NVM非活動內(nèi)存頁面鏈表段的頭部開始,按照非活動內(nèi)存頁面被寫次數(shù)從小到大的順序,選擇指定數(shù)目的內(nèi)存頁面,回收選擇的內(nèi)存頁面,使其成為空閑頁面從而可以進行再次利用,所述的指定數(shù)目可以根據(jù)操作系統(tǒng)的需求而定。
[0080]502、判斷是否回收了指定數(shù)目的內(nèi)存頁面。
[0081]若選擇的內(nèi)存頁面的數(shù)目能夠滿足操作系統(tǒng)的需求,則此次內(nèi)存回收操作完成;若選擇的內(nèi)存頁面的數(shù)目沒有滿足操作系統(tǒng)的需求,則從NVM非活動內(nèi)存頁面鏈表中的其他頁面組中回收內(nèi)存頁面。
[0082]503、結(jié)束。
[0083]504、判斷是否到達NVM非活動內(nèi)存頁面鏈表的尾部。
[0084]若已經(jīng)到達NVM非活動內(nèi)存頁面鏈表的尾部,則此次內(nèi)存回收操作完成;若不是,則從NVM非活動內(nèi)存頁面鏈表中的其他頁面組中回收內(nèi)存頁面。
[0085]505、從NVM非活動內(nèi)存頁面鏈表中建立時間的頁面組開始回收非活動頁面。
[0086]選擇NVM非活動內(nèi)存頁面鏈表中建立時間較上述501中選擇的頁面組的建立時間晚且相鄰的頁面組,在選擇的頁面組中按照非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收內(nèi)存頁面,直至回收的內(nèi)存頁面數(shù)量滿足操作系統(tǒng)的需要。
[0087]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0088]圖6為本發(fā)明內(nèi)存回收裝置實施例一的流程圖,如圖6所示,本實施的內(nèi)存回收裝置600包括:接收模塊601和內(nèi)存回收模塊602,其中:
[0089]接收模塊601用于接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量;
[0090]內(nèi)存回收模塊602用于根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的頁序回收NVM非活動頁面。
[0091 ] 本實施例的內(nèi)存回收裝置可以用于執(zhí)行內(nèi)存回收方法實施例一的內(nèi)存回收方法,具體執(zhí)行過程可以參照內(nèi)存回收方法實施例一,此處不再贅述。
[0092]本實施例的內(nèi)存回收裝置,通過接收模塊接收內(nèi)存回收請求消息,內(nèi)存回收請求消息中包含回收標(biāo)識,回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量,內(nèi)存回收模塊根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,實現(xiàn)了 NVM非活動內(nèi)存頁面被寫次數(shù)相對小的頁面先被回收利用,NVM非活動內(nèi)存頁面被寫次數(shù)相對大的頁面后被回收利用,從而能夠使NVM內(nèi)存頁面磨損均衡,提高了存儲單元的穩(wěn)定性和可靠性。
[0093]在上述實施例的基礎(chǔ)上,進一步地,內(nèi)存回收裝置600還可以包括:確定模塊和第一插入模塊。
[0094]確定模塊,可以用于在內(nèi)存回收模塊根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定NVM非活動內(nèi)存頁面的被寫次數(shù);
[0095]第一插入模塊,可以用于根據(jù)NVM非活動內(nèi)存頁面的被寫次數(shù),將NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
[0096]在上述實施例的基礎(chǔ)上,進一步地,非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在非活動內(nèi)存頁面鏈表中排列。
[0097]在上述實施例的基礎(chǔ)上,進一步地,內(nèi)存回收模塊具體可以用于在非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0098]可選地,在內(nèi)存回收裝置實施例一的基礎(chǔ)上,內(nèi)存回收裝置600還可以包括:確定模塊和第二插入模塊,其中:
[0099]確定模塊,可以用于在內(nèi)存回收模塊根據(jù)回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定NVM非活動內(nèi)存頁面的被寫次數(shù);
[0100]第二插入模塊,可以用于將NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
[0101]在上述實施例的基礎(chǔ)上,進一步地,非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后順序在非活動內(nèi)存頁面鏈表中排列。
[0102]在上述實施例的基礎(chǔ)上,進一步地,內(nèi)存回收模塊具體可以用于在非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
[0103]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種內(nèi)存回收方法,其特征在于,包括: 接收內(nèi)存回收請求消息,所述內(nèi)存回收請求消息中包含回收標(biāo)識,所述回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量; 根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括: 確定所述NVM非活動內(nèi)存頁面的被寫次數(shù); 根據(jù)所述NVM非活動內(nèi)存頁面的被寫次數(shù),將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,所述非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在所述非活動內(nèi)存頁面鏈表中排列。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,包括: 在所述非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,還包括: 確定所述NVM非活動內(nèi)存頁面的被寫次數(shù); 將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,所述頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后順序在所述非活動內(nèi)存頁面鏈表中排列。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面,包括: 在所述非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
8.—種內(nèi)存回收裝置,其特征在于,包括: 接收模塊,用于接收內(nèi)存回收請求消息,所述內(nèi)存回收請求消息中包含回收標(biāo)識,所述回收標(biāo)識用于表示請求回收的內(nèi)存頁面數(shù)量; 內(nèi)存回收模塊,用于根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 確定模塊,用于在所述內(nèi)存回收模塊根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定所述NVM非活動內(nèi)存頁面的被寫次數(shù); 第一插入模塊,用于根據(jù)所述NVM非活動內(nèi)存頁面的被寫次數(shù),將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的相應(yīng)段中,所述非活動內(nèi)存頁面鏈表中包括多個段,每個段用于存儲設(shè)定被寫次數(shù)范圍的NVM非活動內(nèi)存頁面。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述非活動內(nèi)存頁面鏈表中包括的多個段按照對應(yīng)的設(shè)定被寫次數(shù)范圍從小到大的順序在所述非活動內(nèi)存頁面鏈表中排列。
11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于, 內(nèi)存回收模塊,具體用于在所述非活動內(nèi)存頁面鏈表中按照設(shè)定被寫次數(shù)范圍從小到大的順序,回收一個或多個段中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 確定模塊,用于在所述內(nèi)存回收模塊根據(jù)所述回收標(biāo)識,按照非易失性存儲器NVM非活動內(nèi)存頁面被寫次數(shù)從小到大的順序回收NVM非活動頁面之前,確定所述NVM非活動內(nèi)存頁面的被寫次數(shù); 第二插入模塊,用于將所述NVM非活動內(nèi)存頁面存儲至非活動內(nèi)存頁面鏈表中的最后一個頁面組中,所述頁面列表中包括多個頁面組,每個頁面組中包括按照被寫次數(shù)從小到大順序排列的設(shè)定個數(shù)的NVM非活動內(nèi)存頁面。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述非活動內(nèi)存頁面鏈表中包括的多個頁面組按照建立時間的先后順序在所述非活動內(nèi)存頁面鏈表中排列。
14.根據(jù)權(quán)利要求12或13所述的裝置,其特征在于, 內(nèi)存回收模塊,具體用于在所述非活動內(nèi)存頁面鏈表中按照建立時間的先后順序,回收一個或多個頁面組中的與所述回收標(biāo)識請求回收的內(nèi)存頁面數(shù)量匹配的NVM非活動內(nèi)存頁面。
【文檔編號】G06F12/02GK104008061SQ201310057351
【公開日】2014年8月27日 申請日期:2013年2月22日 優(yōu)先權(quán)日:2013年2月22日
【發(fā)明者】夏飛, 蔣德鈞, 魏巍, 熊勁 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所