內(nèi)存匿名頁(yè)初始化方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開(kāi)一種內(nèi)存匿名頁(yè)初始化方法,包括:獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,所述內(nèi)存匿名頁(yè)為一個(gè)單位的內(nèi)存;根據(jù)所述物理地址,查找預(yù)設(shè)的地址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,所述地址名稱映射表用于反映內(nèi)存匿名頁(yè)的物理地址和內(nèi)存的內(nèi)存名稱的對(duì)應(yīng)關(guān)系;根據(jù)所述內(nèi)存名稱,查找預(yù)設(shè)的能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫0與寫1的能耗差異信息,所述能耗差異信息映射表用于反映對(duì)不同的內(nèi)存寫0與寫1的能耗差異信息;根據(jù)對(duì)所述內(nèi)存寫0與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作。相應(yīng)的本發(fā)明實(shí)施例還公開(kāi)了一種內(nèi)存匿名頁(yè)初始化裝置以及內(nèi)存匿名頁(yè)初始化系統(tǒng)。
【專利說(shuō)明】?jī)?nèi)存匿名頁(yè)初始化方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種內(nèi)存匿名頁(yè)初始化方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 在計(jì)算機(jī)系統(tǒng)中,內(nèi)存一般由DRAM (Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī) 訪問(wèn)存儲(chǔ)器)構(gòu)成。由于DRAM集成度低,容量有限。另外,DRAM屬于易失性存儲(chǔ)器件,為 了保證數(shù)據(jù)不丟失,需要不斷的刷新操作,導(dǎo)致DRAM能耗高。內(nèi)存系統(tǒng)能耗占計(jì)算機(jī)系統(tǒng) 總能耗的比例較大,能耗問(wèn)題也越來(lái)越成為制約內(nèi)存系統(tǒng)發(fā)展的瓶頸。與DRAM相比,新型 NVM(Non-Volatile Memory)能耗更低,并且由于集成度高,可以做到更大的容量。隨著應(yīng)用 對(duì)內(nèi)存容量的要求越來(lái)越大,對(duì)非易失性需求的增多,僅僅由DRAM構(gòu)成的內(nèi)存已難以滿足 應(yīng)用的需求,將NVM作為內(nèi)存或者DRAM與NVM構(gòu)成混合內(nèi)存,將成為未來(lái)內(nèi)存系統(tǒng)的發(fā)展 方向。
[0003] NVM存儲(chǔ)數(shù)據(jù)的原理是,通過(guò)給存儲(chǔ)單元加不同大小、不同方向的電壓或磁場(chǎng)等 來(lái)改變存儲(chǔ)單元的電阻,根據(jù)存儲(chǔ)單元電阻大小的不同來(lái)判斷存儲(chǔ)的數(shù)據(jù)是〇還是1。如 PCM(Phase Change Memory,相變存儲(chǔ)器),通過(guò)給存儲(chǔ)單元加不同大小的電壓來(lái)改變存儲(chǔ) 單元的電阻;單極性RRAM(Resistive Random Access Memory,阻變式存儲(chǔ)器),通過(guò)給存 儲(chǔ)單元加不同大小的電壓來(lái)改變存儲(chǔ)單元的電阻;雙極性RRAM,通過(guò)給存儲(chǔ)單元加不同 方向、不同大小的電壓來(lái)改變存儲(chǔ)單元的電阻;MRAM(Magnetoresistive Random Access Memory,磁阻式存儲(chǔ)器),通過(guò)給存儲(chǔ)單元加不同方向的磁場(chǎng)來(lái)改變存儲(chǔ)單元的電阻。這種 根據(jù)存儲(chǔ)單元電阻大小判斷〇和1的存儲(chǔ)器件,寫〇 (RESET操作)和寫1 (SET操作)的能 耗不同。
[0004] 操作系統(tǒng)的內(nèi)存管理模塊采用動(dòng)態(tài)內(nèi)存分配技術(shù),當(dāng)進(jìn)程訪問(wèn)的頁(yè)不在內(nèi)存時(shí), 會(huì)引起缺頁(yè)異常,缺頁(yè)異常處理程序進(jìn)行實(shí)際的物理頁(yè)分配。其中,內(nèi)存頁(yè)是一個(gè)單位的內(nèi) 存,內(nèi)存頁(yè)包含匿名頁(yè)和非匿名頁(yè)。
[0005] 在現(xiàn)有技術(shù)中,操作系統(tǒng)內(nèi)存管理模塊在處理缺頁(yè)異常時(shí),如果這個(gè)頁(yè)是初次被 進(jìn)程訪問(wèn)并且是匿名頁(yè),則缺頁(yè)異常處理程序調(diào)用d 〇_an〇nym〇US_page()函數(shù)獲得一個(gè)新 的物理匿名頁(yè),并調(diào)用 Clear_page〇函數(shù)將該匿名頁(yè)所有位初始化為0。
[0006] 操作系統(tǒng)在分配匿名頁(yè)時(shí),直接將匿名頁(yè)所有位初始化為0,沒(méi)有考慮新型NVM寫 〇與寫1的能耗大小差異,從而導(dǎo)致能源浪費(fèi)。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明實(shí)施例提出一種節(jié)約能耗的內(nèi)存匿名頁(yè)初始化裝置、方法、系統(tǒng),通過(guò)識(shí)別 不同內(nèi)存的名稱和物理地址,判斷內(nèi)存寫〇與寫1的能耗差異,進(jìn)行不同的初始化操作,減 少了資源浪費(fèi)。
[0008] -方面,本發(fā)明實(shí)施例提供一種內(nèi)存匿名頁(yè)初始化方法,包括:
[0009] 獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,所述內(nèi)存匿名頁(yè)為一個(gè)單位的內(nèi)存;
[0010] 根據(jù)所述物理地址,查找預(yù)設(shè)的地址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi) 存的內(nèi)存名稱,所述地址名稱映射表用于反映內(nèi)存匿名頁(yè)的物理地址和內(nèi)存的內(nèi)存名稱的 對(duì)應(yīng)關(guān)系;
[0011] 根據(jù)所述內(nèi)存名稱,查找預(yù)設(shè)的能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫〇與寫1 的能耗差異信息,所述能耗差異信息映射表用于反映對(duì)不同的內(nèi)存寫〇與寫1的能耗差異 信息;
[0012] 根據(jù)對(duì)所述內(nèi)存寫0與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始 化操作。
[0013] 在一方面的一種可能的實(shí)現(xiàn)方式中,在所述獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址之 前,創(chuàng)建地址名稱映射表,所述地址名稱映射表用于反映所述內(nèi)存名稱及所述內(nèi)存匿名頁(yè) 對(duì)應(yīng)的物理地址。
[0014] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 建立地址名稱映射表包括修改基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所述物理地址 寫入BIOS中的系統(tǒng)內(nèi)存映射表。
[0015] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 建立地址名稱映射表包括運(yùn)行修改后的基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所述 物理地址保存進(jìn)所述修改后的BIOS中的系統(tǒng)內(nèi)存映射表。
[0016] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,在所 述獲取對(duì)所述內(nèi)存寫〇與寫1的能耗差異信息之前,創(chuàng)建能耗差異信息映射表,所述能耗差 異信息映射表用于反映對(duì)不同的內(nèi)存寫0與寫1的能耗差異信息。
[0017] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 的能耗差異信息映射表建立在操作系統(tǒng)內(nèi)核中,在內(nèi)核啟動(dòng)后動(dòng)態(tài)加載。
[0018] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 根據(jù)所述對(duì)所述內(nèi)存寫〇與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操 作,包括如果對(duì)所述內(nèi)存寫0的能耗小于對(duì)所述內(nèi)存寫1的能耗,將所述內(nèi)存匿名頁(yè)所有位 初始化為〇 ;如果對(duì)所述內(nèi)存寫1的能耗小于對(duì)所述內(nèi)存寫〇的能耗,將所述內(nèi)存匿名頁(yè)所 有位初始化為1。
[0019] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,述的 如果對(duì)所述內(nèi)存寫〇的能耗小于對(duì)所述內(nèi)存寫1的能耗,將所述內(nèi)存匿名頁(yè)所有位初始化 為0 ;如果對(duì)所述內(nèi)存寫1的能耗小于對(duì)所述內(nèi)存寫0的能耗,將所述內(nèi)存匿名頁(yè)所有位初 始化為1包括在操作系統(tǒng)的內(nèi)存管理模塊中添加一個(gè)匿名頁(yè)初始化函數(shù),用于將所述內(nèi)存 匿名頁(yè)所有位設(shè)置為1 ;如果對(duì)所述內(nèi)存寫〇的能耗小于對(duì)所述內(nèi)存寫1的能耗,則調(diào)用系 統(tǒng)現(xiàn)有函數(shù),將所述內(nèi)存匿名頁(yè)所有位設(shè)置為0 ;如果對(duì)所述內(nèi)存寫1的能耗小于對(duì)所述內(nèi) 存寫0的能耗,則調(diào)用所述的添加的匿名頁(yè)初始化函數(shù),將所述內(nèi)存匿名頁(yè)所有位設(shè)置為 1〇
[0020] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 內(nèi)存包括PCM、NVM、DRAM、RRAM、MRAM單獨(dú)以及以上任意組合的混合內(nèi)存。
[0021] 本發(fā)明實(shí)施例還提供一種內(nèi)存匿名頁(yè)初始化裝置,包括:
[0022] 尋址模塊,用于獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址;
[0023] 內(nèi)存名稱識(shí)別模塊,用于根據(jù)所述尋址模塊獲取的所述物理地址,查找預(yù)設(shè)的地 址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,所述地址名稱映射表用于反 映內(nèi)存匿名頁(yè)的物理地址和內(nèi)存的內(nèi)存名稱的對(duì)應(yīng)關(guān)系;
[0024] 能耗差異識(shí)別模塊,用于根據(jù)所述內(nèi)存名稱識(shí)別模塊獲取的所述內(nèi)存名稱,查找 預(yù)設(shè)的能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫〇與寫1的能耗差異信息,所述能耗差異信 息映射表用于反映對(duì)不同的內(nèi)存寫〇與寫1的能耗差異信息;
[0025] 初始化模塊,用于根據(jù)所述能耗差異識(shí)別模塊獲取的對(duì)所述內(nèi)存寫0與寫1的能 耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作。
[0026] 在一方面的一種可能的實(shí)現(xiàn)方式中,所述的內(nèi)存匿名頁(yè)初始化裝置還包括第一添 加模塊,用于在操作系統(tǒng)中建立地址名稱映射表,所述地址名稱映射表用于反映所述內(nèi)存 名稱及所述內(nèi)存匿名頁(yè)對(duì)應(yīng)的物理地址。
[0027] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 第一添加模塊包括修改單兀,用于修改基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所 述物理地址寫入BIOS中;執(zhí)行單元,用于運(yùn)行所述修改單元修改后的基本輸入輸出系統(tǒng) BIOS,將所述內(nèi)存名稱以及所述物理地址保存進(jìn)所述修改后的BIOS中。
[0028] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 的內(nèi)存匿名頁(yè)初始化裝置還包括第二添加模塊,用于在操作系統(tǒng)內(nèi)核中建立能耗差異信息 映射表,所述能耗差異信息映射表用于反映對(duì)所述不同的內(nèi)存寫〇與寫1的能耗差異信息。
[0029] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 的匿名頁(yè)初始化模塊包括第一單元,用于將寫〇能耗小于寫1能耗的所述內(nèi)存匿名頁(yè)所有 位初始化為0 ;第二單元,用于將寫1能耗小于寫0能耗的所述內(nèi)存匿名頁(yè)所有位初始化為 1〇
[0030] 結(jié)合一方面或一方面的一種可能的實(shí)現(xiàn)方式,在另一種可能的實(shí)現(xiàn)方式中,所述 的第二添加模塊在操作系統(tǒng)內(nèi)核啟動(dòng)后動(dòng)態(tài)加載。
[0031] 本發(fā)明實(shí)施例提供一種內(nèi)存匿名頁(yè)初始化系統(tǒng),包括建表的裝置以及內(nèi)存匿名頁(yè) 初始化裝置:
[0032] 所述建表的裝置,用于創(chuàng)建地址名稱映射表和創(chuàng)建能耗差異信息映射表;所述地 址名稱映射表用于反映所述內(nèi)存匿名頁(yè)的物理地址和所述內(nèi)存的內(nèi)存名稱的對(duì)應(yīng)關(guān)系;所 述能耗差異信息映射表用于反映對(duì)不同的所述內(nèi)存寫〇與寫1的能耗差異信息;
[0033] 所述內(nèi)存匿名頁(yè)初始化裝置,用于根據(jù)獲取待識(shí)別所述內(nèi)存匿名頁(yè)的物理地址, 查找所述建表的裝置創(chuàng)建的地址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名 稱;根據(jù)所述內(nèi)存名稱,查找所述建表的裝置創(chuàng)建的所述能耗差異信息映射表,獲取對(duì)所述 內(nèi)存寫0與寫1的能耗差異信息,根據(jù)所述內(nèi)存寫0與寫1的能耗差異信息,對(duì)所述內(nèi)存匿 名頁(yè)進(jìn)行相應(yīng)的初始化操作。
[0034] 本發(fā)明實(shí)施例通過(guò)獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,查詢預(yù)設(shè)的地址名稱映射 表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,再根據(jù)獲取的內(nèi)存名稱,查詢預(yù)設(shè)的內(nèi)存 能耗差異信息表,查詢到不同內(nèi)存寫0與寫1的能耗差異,根據(jù)不同內(nèi)存寫0與寫1的能耗 差異,對(duì)內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作,從而較大地減少資源的浪費(fèi)。
【專利附圖】
【附圖說(shuō)明】
[0035] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。
[0036] 圖1為本發(fā)明實(shí)施例提供的一種內(nèi)存匿名頁(yè)初始化裝置示意圖;
[0037] 圖2為本發(fā)明實(shí)施例提供的一種內(nèi)存匿名頁(yè)初始化裝置示意圖;
[0038] 圖3為本發(fā)明實(shí)施例提供的一種內(nèi)存匿名頁(yè)初始化方法示意圖;
[0039] 圖4為本發(fā)明實(shí)施例提供的一種內(nèi)存匿名頁(yè)初始化方法示意圖;
[0040] 圖5為本發(fā)明實(shí)施例提供的一種由PCM組成的內(nèi)存匿名頁(yè)初始化方法示意圖;
[0041] 圖6為本發(fā)明實(shí)施例提供的一種由DRAM與PCM、RRAM構(gòu)成的混合內(nèi)存匿名頁(yè)初始 化方法示意圖;
[0042] 圖7為本發(fā)明實(shí)施例提供的一種內(nèi)存匿名頁(yè)初始化系統(tǒng)示意圖;
[0043] 圖8為本發(fā)明實(shí)施例提供的一種PCM內(nèi)存不意圖;
[0044] 圖9為本發(fā)明實(shí)施例提供的一種DRAM與PCM、RRAM構(gòu)成的混合內(nèi)存示意圖。
【具體實(shí)施方式】
[0045] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0046] 本發(fā)明一個(gè)實(shí)施例提供一種內(nèi)存匿名頁(yè)初始化裝置,如圖1所示,包括:
[0047] 尋址模塊101,用于獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址;
[0048] 內(nèi)存名稱識(shí)別模塊102,用于根據(jù)尋址模101塊獲取的物理地址,查找預(yù)設(shè)的地址 名稱映射表,獲取對(duì)應(yīng)于物理地址的內(nèi)存名稱;
[0049] 能耗差異識(shí)別模塊103,用于根據(jù)內(nèi)存名稱識(shí)別模塊102獲取的內(nèi)存名稱,查找預(yù) 設(shè)的能耗差異信息映射表,獲取對(duì)內(nèi)存寫〇與寫1的能耗差異信息;
[0050] 初始化模塊104,用于根據(jù)能耗差異識(shí)別模塊103獲取的對(duì)內(nèi)存寫0與寫1的能耗 差異信息,對(duì)內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作。
[0051] 本發(fā)明實(shí)施例通過(guò)獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,查詢預(yù)設(shè)的地址名稱映射 表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,再根據(jù)獲取的內(nèi)存名稱,查詢預(yù)設(shè)的內(nèi)存 能耗差異信息表,查詢到不同內(nèi)存寫〇與寫1的能耗差異,根據(jù)不同內(nèi)存寫〇與寫1的能耗 差異,對(duì)內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作,從而較大地減少資源的浪費(fèi)。
[0052] 本發(fā)明一個(gè)實(shí)施例還提供一種內(nèi)存匿名頁(yè)初始化裝置,如圖2所示,包括:
[0053] 尋址模塊202,用于獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址;
[0054] 內(nèi)存名稱識(shí)別模塊203,用于根據(jù)尋址模202塊獲取的物理地址,查找預(yù)設(shè)的地址 名稱映射表,獲取對(duì)應(yīng)于物理地址的內(nèi)存名稱;
[0055] 能耗差異識(shí)別模塊204,用于根據(jù)內(nèi)存名稱識(shí)別模塊203獲取的內(nèi)存名稱,查找預(yù) 設(shè)的能耗差異信息映射表,獲取對(duì)內(nèi)存寫〇與寫1的能耗差異信息;
[0056] 初始化模塊205,用于根據(jù)能耗差異識(shí)別模塊204獲取的對(duì)內(nèi)存寫0與寫1的能耗 差異信息,對(duì)內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作。
[0057] 在一種可能的實(shí)現(xiàn)方式中,內(nèi)存匿名頁(yè)初始化裝置還包括:
[0058] 第一添加模塊200,用于在操作系統(tǒng)中建立地址名稱映射表,地址名稱映射表用于 反映內(nèi)存名稱及內(nèi)存匿名頁(yè)對(duì)應(yīng)的物理地址。
[0059] 在另一種可能的實(shí)現(xiàn)方式中,第一添加模塊包括:
[0060] 修改單元2001,用于修改基本輸入輸出系統(tǒng)BIOS,將內(nèi)存名稱以及所述物理地址 寫入BIOS中;
[0061] 執(zhí)行單元2002,用于運(yùn)行修改后的基本輸入輸出系統(tǒng)BIOS,將內(nèi)存名稱以及物理 地址保存在修改后的BIOS中。
[0062] 在另一種可能的實(shí)現(xiàn)方式中,內(nèi)存匿名頁(yè)初始化裝置還包括:
[0063] 第二添加模塊201,用于在操作系統(tǒng)內(nèi)核中建立能耗差異信息映射表,能耗差異信 息映射表用于反映對(duì)不同的內(nèi)存寫〇與寫1的能耗差異信息。
[0064] 在另一種可能的實(shí)現(xiàn)方式中,初始化模塊205包括:
[0065] 第一單元2051,用于將寫0能耗小于寫1能耗的內(nèi)存匿名頁(yè)所有位初始化為0 ;
[0066] 第二單元2052,用于將寫1能耗小于寫0能耗的內(nèi)存匿名頁(yè)所有位初始化為1。
[0067] 在另一種可能的實(shí)現(xiàn)方式中,第二添加模塊201在操作系統(tǒng)內(nèi)核啟動(dòng)后動(dòng)態(tài)加 載,動(dòng)態(tài)加載是為了節(jié)省內(nèi)存資源。
[0068] 本發(fā)明實(shí)施例通過(guò)獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,查詢預(yù)設(shè)的地址名稱映射 表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,再根據(jù)獲取的內(nèi)存名稱,查詢預(yù)設(shè)的內(nèi)存 能耗差異信息表,查詢到不同內(nèi)存寫〇與寫1的能耗差異,根據(jù)不同內(nèi)存寫〇與寫1的能耗 差異,對(duì)寫0能耗小于寫1能耗的內(nèi)存將內(nèi)存匿名頁(yè)所有位設(shè)置為0,而對(duì)寫1能耗小于寫 0能耗的內(nèi)存,將內(nèi)存匿名頁(yè)所有位設(shè)置為1,從而較大減少資源的浪費(fèi)。
[0069] 本發(fā)明一個(gè)實(shí)施例還提供一種內(nèi)存匿名頁(yè)初始化方法,如圖3所示,步驟如下:
[0070] S100,獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址;
[0071] 在一個(gè)實(shí)施例中,操作系統(tǒng)內(nèi)存管理模塊進(jìn)行尋址操作,獲取待識(shí)別內(nèi)存匿名頁(yè) 的物理地址范圍。
[0072] S101,根據(jù)獲取的物理地址,查找地址名稱映射表,獲取對(duì)應(yīng)于物理地址的內(nèi)存名 稱;
[0073] 在一個(gè)實(shí)施例中,操作系統(tǒng)在內(nèi)存初始化時(shí),讀取系統(tǒng)內(nèi)存映射表中的內(nèi)存信息, 獲得每種內(nèi)存的名稱信息,并保存該信息。
[0074] S102,根據(jù)內(nèi)存名稱,識(shí)別內(nèi)存寫0與寫1的能耗差異信息;
[0075] 在一個(gè)實(shí)施例中,操作系統(tǒng)在內(nèi)核啟動(dòng)后,訪問(wèn)內(nèi)存能耗差異信息映射表,獲取內(nèi) 存寫〇與寫1的能耗差異信息。
[0076] S103,根據(jù)內(nèi)存寫0與寫1的能耗差異信息,進(jìn)行不同的初始化操作;
[0077] 在一個(gè)實(shí)施例中,如果內(nèi)存寫0的能耗小于寫1的能耗,將內(nèi)存匿名頁(yè)所有位設(shè)置 為〇 ;如果內(nèi)存寫1的能耗小于寫〇的能耗,將內(nèi)存匿名頁(yè)所有位設(shè)置為1 ;
[0078] 在另一個(gè)實(shí)施例中,在操作系統(tǒng)內(nèi)存管理模塊中新建一個(gè)函數(shù),用來(lái)將內(nèi)存匿名 頁(yè)所有位設(shè)置為1 ;如果內(nèi)存寫1能耗小,內(nèi)存管理模塊調(diào)用所述新函數(shù)進(jìn)行初始化。
[0079] 在另一個(gè)實(shí)施例中,如果內(nèi)存寫0能耗小,操作系統(tǒng)調(diào)用現(xiàn)有系統(tǒng)方法,將匿名頁(yè) 所有位初始化為0。
[0080] 本發(fā)明實(shí)施例通過(guò)獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,查詢預(yù)設(shè)的地址名稱映射 表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,再根據(jù)獲取的內(nèi)存名稱,查詢預(yù)設(shè)的內(nèi)存 能耗差異信息表,查詢到不同內(nèi)存寫0與寫1的能耗差異,根據(jù)不同內(nèi)存寫0與寫1的能耗 差異,對(duì)寫0能耗小于寫1能耗的內(nèi)存將內(nèi)存匿名頁(yè)所有位設(shè)置為0,而對(duì)寫1能耗小于寫 0能耗的內(nèi)存,將內(nèi)存匿名頁(yè)所有位設(shè)置為1,從而較大減少資源的浪費(fèi)。
[0081] 本發(fā)明一個(gè)實(shí)施例還提供一種內(nèi)存匿名頁(yè)初始化方法,如圖4所示,步驟如下:
[0082] S1001,創(chuàng)建地址名稱映射表;
[0083] 在一個(gè)實(shí)施例中,修改基本輸入輸出系統(tǒng)BIOS,在系統(tǒng)內(nèi)存映射表中添加內(nèi)存名 稱和相應(yīng)的物理地址。
[0084] 在另一個(gè)實(shí)施例中,執(zhí)行修改后的基本輸入輸出系統(tǒng)BIOS,將內(nèi)存名稱以及相應(yīng) 的物理地址信息保存進(jìn)系統(tǒng)內(nèi)存映射表中。
[0085] S100,獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址;
[0086] 在一個(gè)實(shí)施例中,操作系統(tǒng)內(nèi)存管理模塊進(jìn)行尋址操作,獲取待識(shí)別內(nèi)存匿名頁(yè) 的物理地址范圍。
[0087] S101,根據(jù)獲取的物理地址,查找地址名稱映射表,獲取對(duì)應(yīng)于物理地址的內(nèi)存名 稱;
[0088] 在一個(gè)實(shí)施例中,操作系統(tǒng)在內(nèi)存初始化時(shí),讀取系統(tǒng)內(nèi)存映射表中的內(nèi)存信息, 獲得每種內(nèi)存的名稱信息,并保存該信息。
[0089] S1011,創(chuàng)建內(nèi)存能耗差異信息映射表;
[0090] 在一個(gè)實(shí)施例中,在操作系統(tǒng)內(nèi)核中建立內(nèi)存能耗差異信息映射表。
[0091] 在另一個(gè)實(shí)施例中,內(nèi)存能耗差異信息映射表至少包含兩列內(nèi)容:內(nèi)存名稱以及 對(duì)應(yīng)的寫能耗較小值。
[0092] 在另一個(gè)實(shí)施例中,內(nèi)存能耗差異信息映射表在操作系統(tǒng)內(nèi)核啟動(dòng)后動(dòng)態(tài)加載。
[0093] S102,根據(jù)內(nèi)存名稱,識(shí)別內(nèi)存寫0與寫1的能耗差異信息;
[0094] 在一個(gè)實(shí)施例中,操作系統(tǒng)在內(nèi)核啟動(dòng)后,訪問(wèn)內(nèi)存能耗差異信息映射表,獲取內(nèi) 存寫〇與寫1的能耗差異信息。
[0095] S103,根據(jù)內(nèi)存寫0與寫1的能耗差異信息,進(jìn)行不同的初始化操作;如果寫0的 能耗小,將所有位設(shè)置為0 ;如果寫1的能耗小,將所有位設(shè)置為1 ;
[0096] 在一個(gè)實(shí)施例中,在操作系統(tǒng)內(nèi)存管理模塊中新建一個(gè)函數(shù),用來(lái)將內(nèi)存匿名頁(yè) 所有位設(shè)置為1 ;如果內(nèi)存寫1能耗小,內(nèi)存管理模塊調(diào)用所述新函數(shù)進(jìn)行初始化。
[0097] 在另一個(gè)實(shí)施例中,如果內(nèi)存寫0能耗小,操作系統(tǒng)調(diào)用現(xiàn)有系統(tǒng)方法,將匿名頁(yè) 所有位初始化為〇。
[0098] 本發(fā)明實(shí)施例通過(guò)獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,查詢預(yù)設(shè)的地址名稱映射 表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,再根據(jù)獲取的內(nèi)存名稱,查詢預(yù)設(shè)的內(nèi)存 能耗差異信息表,查詢到不同內(nèi)存寫〇與寫1的能耗差異,根據(jù)不同內(nèi)存寫〇與寫1的能耗 差異,對(duì)寫0能耗小于寫1能耗的內(nèi)存將內(nèi)存匿名頁(yè)所有位設(shè)置為0,而對(duì)寫1能耗小于寫 0能耗的內(nèi)存,將內(nèi)存匿名頁(yè)所有位設(shè)置為1,從而較大減少資源的浪費(fèi)。
[0099] 為了便于更直觀、更容易理解內(nèi)存匿名頁(yè)初始化方法,如圖5和圖8所示,本實(shí)施 例還提供了一種PCM組成的內(nèi)存匿名頁(yè)初始化方法。
[0100] S2001,首先創(chuàng)建地址名稱映射表,即通過(guò)修改基本輸入輸出系統(tǒng)BIOS,將內(nèi)存名 稱為PCM和對(duì)應(yīng)的物理地址0?4GB信息添加到系統(tǒng)內(nèi)存映射表E820表中,并運(yùn)行修改后 的BIOS保存信息,如表1所示;
[0101] S200,操作系統(tǒng)在內(nèi)存初始化時(shí),內(nèi)存管理模塊自動(dòng)進(jìn)行尋址操作,獲取內(nèi)存的物 理地址是0?4GB,如圖6所示;
[0102] S201,操作系統(tǒng)在內(nèi)存初始化時(shí),讀取系統(tǒng)內(nèi)存映射表E820表中的內(nèi)存信息,識(shí) 別出0?4GB范圍的物理地址對(duì)應(yīng)的內(nèi)存名稱為PCM ;
[0103] S2021,在操作系統(tǒng)內(nèi)核中建立內(nèi)存能耗差異信息映射表,內(nèi)存能耗差異信息映射 表至少包含兩列內(nèi)容:內(nèi)存名稱以及對(duì)應(yīng)的寫能耗較小值,如表2所示;
[0104] S202,操作系統(tǒng)在內(nèi)核啟動(dòng)后,訪問(wèn)內(nèi)存能耗差異信息映射表,查詢PCM寫0與寫 1的能耗差異信息映射信息,獲取PCM寫1的能耗較??;
[0105] S2031,在操作系統(tǒng)的內(nèi)存管理模塊中添加一個(gè)匿名頁(yè)初始化函數(shù)clear_page_ one (),用于將匿名頁(yè)的所有位都設(shè)置為1 ;
[0106] S203,經(jīng)查詢得知PCM寫1的能耗小于寫0的能耗,在初始化匿名頁(yè)時(shí),調(diào)用 clear_page_one()函數(shù),將匿名頁(yè)所有位初始化為1。
[0107]
【權(quán)利要求】
1. 一種內(nèi)存匿名頁(yè)初始化方法,其特征在于,包括: 獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址,所述內(nèi)存匿名頁(yè)為一個(gè)單位的內(nèi)存; 根據(jù)所述物理地址,查找預(yù)設(shè)的地址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的 內(nèi)存名稱,所述地址名稱映射表用于反映內(nèi)存匿名頁(yè)的物理地址和內(nèi)存的內(nèi)存名稱的對(duì)應(yīng) 關(guān)系; 根據(jù)所述內(nèi)存名稱,查找預(yù)設(shè)的能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫0與寫1的 能耗差異信息,所述能耗差異信息映射表用于反映對(duì)不同的內(nèi)存寫〇與寫1的能耗差異信 息; 根據(jù)對(duì)所述內(nèi)存寫〇與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操 作。
2. 根據(jù)權(quán)利要求1所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,在所述獲取待識(shí)別內(nèi) 存匿名頁(yè)的物理地址之前,還包括: 創(chuàng)建地址名稱映射表,所述地址名稱映射表用于反映所述內(nèi)存名稱及所述內(nèi)存匿名頁(yè) 對(duì)應(yīng)的物理地址。
3. 根據(jù)權(quán)利要求2所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,所述建立地址名稱映 射表包括: 修改基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所述物理地址寫入BIOS中的系統(tǒng) 內(nèi)存映射表; 運(yùn)行修改后的基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所述物理地址保存進(jìn)所述 修改后的BIOS中的系統(tǒng)內(nèi)存映射表。
4. 根據(jù)權(quán)利要求1所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,在所述獲取對(duì)所述內(nèi) 存寫0與寫1的能耗差異信息之前,還包括: 創(chuàng)建能耗差異信息映射表,所述能耗差異信息映射表用于反映對(duì)不同的內(nèi)存寫〇與寫 1的能耗差異信息。
5. 根據(jù)權(quán)利要求4所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,所述的能耗差異信息 映射表建立在操作系統(tǒng)內(nèi)核中,在內(nèi)核啟動(dòng)后動(dòng)態(tài)加載。
6. 根據(jù)權(quán)利要求1所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,所述根據(jù)對(duì)所述內(nèi)存 寫〇與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作,包括: 如果對(duì)所述內(nèi)存寫〇的能耗小于對(duì)所述內(nèi)存寫1的能耗,將所述內(nèi)存匿名頁(yè)所有位初 始化為〇 ; 如果對(duì)所述內(nèi)存寫1的能耗小于對(duì)所述內(nèi)存寫0的能耗,將所述內(nèi)存匿名頁(yè)所有位初 始化為1。
7. 根據(jù)權(quán)利要求6所述的內(nèi)存匿名頁(yè)初始化方法,其特征在于,所述的如果對(duì)所述內(nèi) 存寫0的能耗小于對(duì)所述內(nèi)存寫1的能耗,將所述內(nèi)存匿名頁(yè)所有位初始化為0 ;如果對(duì)所 述內(nèi)存寫1的能耗小于對(duì)所述內(nèi)存寫〇的能耗,將所述內(nèi)存匿名頁(yè)所有位初始化為1包括: 在操作系統(tǒng)的內(nèi)存管理模塊中添加一個(gè)匿名頁(yè)初始化函數(shù),用于將所述內(nèi)存匿名頁(yè)所 有位設(shè)置為1 ; 如果對(duì)所述內(nèi)存寫0的能耗小于對(duì)所述內(nèi)存寫1的能耗,則調(diào)用系統(tǒng)現(xiàn)有函數(shù),將所述 內(nèi)存匿名頁(yè)所有位設(shè)置為0; 如果對(duì)所述內(nèi)存寫1的能耗小于對(duì)所述內(nèi)存寫0的能耗,則調(diào)用所述的添加的匿名頁(yè) 初始化函數(shù),將所述內(nèi)存匿名頁(yè)所有位設(shè)置為1。
8. 根據(jù)權(quán)利要求1或2或3或4或5或6或7所述的內(nèi)存匿名頁(yè)初始化方法,其特征 在于,所述內(nèi)存包括PCM、NVM、DRAM、RRAM、MRAM單獨(dú)以及以上任意組合的混合內(nèi)存。
9. 一種內(nèi)存匿名頁(yè)初始化裝置,其特征在于,包括: 尋址模塊,用于獲取待識(shí)別內(nèi)存匿名頁(yè)的物理地址; 內(nèi)存名稱識(shí)別模塊,用于根據(jù)所述尋址模塊獲取的所述物理地址,查找預(yù)設(shè)的地址名 稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱,所述地址名稱映射表用于反映內(nèi) 存匿名頁(yè)的物理地址和內(nèi)存的內(nèi)存名稱的對(duì)應(yīng)關(guān)系; 能耗差異識(shí)別模塊,用于根據(jù)所述內(nèi)存名稱識(shí)別模塊獲取到的所述內(nèi)存名稱,查找預(yù) 設(shè)的能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫〇與寫1的能耗差異信息,所述能耗差異信息 映射表用于反映對(duì)不同的內(nèi)存寫〇與寫1的能耗差異信息; 初始化模塊,用于根據(jù)所述能耗差異識(shí)別模塊獲取到的所述對(duì)所述內(nèi)存寫0與寫1的 能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的初始化操作。
10. 根據(jù)權(quán)利要求9所述的內(nèi)存匿名頁(yè)初始化裝置,其特征在于,還包括: 第一添加模塊,用于在操作系統(tǒng)中建立地址名稱映射表,所述地址名稱映射表用于反 映所述內(nèi)存名稱及所述內(nèi)存匿名頁(yè)對(duì)應(yīng)的物理地址。
11. 根據(jù)權(quán)利要求10所述的內(nèi)存匿名頁(yè)初始化裝置,其特征在于,所述第一添加模塊 包括: 修改單元,用于修改基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱以及所述物理地址寫入 BIOS 中; 執(zhí)行單元,用于運(yùn)行所述修改單元修改后的基本輸入輸出系統(tǒng)BIOS,將所述內(nèi)存名稱 以及所述物理地址保存進(jìn)所述修改后的BIOS中。
12. 根據(jù)權(quán)利要求9所述的內(nèi)存匿名頁(yè)初始化裝置,其特征在于,還包括: 第二添加模塊,用于在操作系統(tǒng)內(nèi)核中建立能耗差異信息映射表,所述能耗差異信息 映射表用于反映對(duì)所述不同的內(nèi)存寫0與寫1的能耗差異信息。
13. 根據(jù)權(quán)利要求9所述的內(nèi)存匿名頁(yè)初始化裝置,其特征在于,所述的匿名頁(yè)初始化 模塊包括: 第一單元,用于將寫0能耗小于寫1能耗的所述內(nèi)存匿名頁(yè)所有位初始化為0 ; 第二單元,用于將寫1能耗小于寫0能耗的所述內(nèi)存匿名頁(yè)所有位初始化為1。
14. 根據(jù)權(quán)利要求12所述的內(nèi)存匿名頁(yè)初始化裝置,其特征在于,所述的第二添加模 塊在?呆作系統(tǒng)內(nèi)核啟動(dòng)后動(dòng)態(tài)加載。
15. -種內(nèi)存匿名頁(yè)初始化系統(tǒng),包括建表的裝置以及內(nèi)存匿名頁(yè)初始化裝置,其特征 在于,包括: 所述建表的裝置,用于創(chuàng)建地址名稱映射表和創(chuàng)建能耗差異信息映射表;所述地址名 稱映射表用于反映所述內(nèi)存匿名頁(yè)的物理地址和所述內(nèi)存的內(nèi)存名稱的對(duì)應(yīng)關(guān)系;所述能 耗差異信息映射表用于反映對(duì)不同的所述內(nèi)存寫〇與寫1的能耗差異信息; 所述內(nèi)存匿名頁(yè)初始化裝置,用于根據(jù)獲取待識(shí)別所述內(nèi)存匿名頁(yè)的物理地址,查找 所述建表裝置創(chuàng)建的地址名稱映射表,獲取對(duì)應(yīng)于所述物理地址的內(nèi)存的內(nèi)存名稱;根據(jù) 所述內(nèi)存名稱,查找建表裝置創(chuàng)建的所述能耗差異信息映射表,獲取對(duì)所述內(nèi)存寫0與寫1 的能耗差異信息,根據(jù)所述內(nèi)存寫0與寫1的能耗差異信息,對(duì)所述內(nèi)存匿名頁(yè)進(jìn)行相應(yīng)的 初始化操作。
【文檔編號(hào)】G06F12/10GK104123241SQ201310144933
【公開(kāi)日】2014年10月29日 申請(qǐng)日期:2013年4月24日 優(yōu)先權(quán)日:2013年4月24日
【發(fā)明者】夏飛, 熊勁, 蔣德鈞, 魏巍 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所