基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法、裝置、處理器和電子設(shè)備的制作方法
【專利摘要】本申請(qǐng)公開(kāi)一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法及相應(yīng)設(shè)備,該方法應(yīng)用于電子設(shè)備,且電子設(shè)備中設(shè)置有DRAM和PRAM。該方法中分別為DRAM和PRAM分配內(nèi)存域;獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,確定所屬虛擬內(nèi)存區(qū);然后將數(shù)據(jù)存儲(chǔ)至與虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域中的空閑內(nèi)存塊中。當(dāng)虛擬地址屬于虛擬內(nèi)存堆棧段時(shí),分配屬于DRAM內(nèi)存域中的空閑內(nèi)存塊;當(dāng)虛擬地址屬于虛擬內(nèi)存代碼段、數(shù)據(jù)段或共享段時(shí),分配屬于PRAM內(nèi)存域的空閑內(nèi)存塊。本申請(qǐng)根據(jù)DRAM和PRAM的優(yōu)缺點(diǎn)進(jìn)行數(shù)據(jù)存儲(chǔ),將具有不同讀寫特性的數(shù)據(jù)存儲(chǔ)至相應(yīng)存儲(chǔ)空間,發(fā)揮PRAM和DRAM在讀、寫方面的性能優(yōu)勢(shì),可降低內(nèi)存系統(tǒng)的功耗,增大內(nèi)存容量。
【專利說(shuō)明】基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法、裝置、處理器和電子設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)系統(tǒng)領(lǐng)域,特別是涉及一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法、裝置、處理器和電子設(shè)備。
【背景技術(shù)】
[0002]DRAM (Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)是一種較為常見(jiàn)的系統(tǒng)內(nèi)存,長(zhǎng)期以來(lái),計(jì)算機(jī)系統(tǒng)主內(nèi)存的任務(wù)一直由DRAM來(lái)?yè)?dān)當(dāng)。
[0003]但是,發(fā)明人在本申請(qǐng)的研究過(guò)程中發(fā)現(xiàn),DRAM具有易失性,需要不斷充電刷新來(lái)保持其中所存儲(chǔ)的數(shù)據(jù),具備功耗高的缺點(diǎn),因此在當(dāng)前的體系架構(gòu)中,基于DRAM的內(nèi)存系統(tǒng)功耗在系統(tǒng)總功耗中占有很聞的比例。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的在于提供一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法、裝置、處理器和電子設(shè)備,以解決現(xiàn)有技術(shù)中,基于DRAM的內(nèi)存系統(tǒng)具有功耗聞的問(wèn)題,具體實(shí)施方案如下:
[0005]一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于電子設(shè)備,所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM,其中,所述基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法包括:
[0006]分別為所述DRAM和PRAM建立相應(yīng)的管理數(shù)據(jù)結(jié)構(gòu),獲取分屬于所述DRAM和PRAM的內(nèi)存域;
[0007]當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,并根據(jù)所述虛擬空間的地址,確定所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū);
[0008]根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
[0009]優(yōu)選的,
[0010]當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為堆棧段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在DRAM中的內(nèi)存域;
[0011]當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為代碼段、數(shù)據(jù)段或共享段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在PRAM中的內(nèi)存域。
[0012]優(yōu)選的,將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中,包括:
[0013]根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),為所述待存入內(nèi)存的數(shù)據(jù)配置相應(yīng)的內(nèi)存修飾符;
[0014]獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域,并在所述內(nèi)存域具有足夠存儲(chǔ)空間的空閑內(nèi)存塊時(shí),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
[0015]優(yōu)選的,當(dāng)所述PRAM劃分的內(nèi)存域?yàn)槿齻€(gè),且所述DRAM劃分的內(nèi)存域?yàn)橐粋€(gè)時(shí),所述獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域的計(jì)算公式為:
[0016]zone= (GFP_Z0NE_TABLE>> (bit*2)) & ((1?2) -1);
[0017]其中,GFP_Z0NE_TABLE為設(shè)定的常量值,bit為所述待存儲(chǔ)數(shù)據(jù)的內(nèi)存修飾符,zone為所述待存入內(nèi)存的數(shù)據(jù)對(duì)應(yīng)的內(nèi)存域的內(nèi)存域索引值。
[0018]優(yōu)選的,當(dāng)所述PRAM中劃分的內(nèi)存域?yàn)閮蓚€(gè)以上,且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯬RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),獲取所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域后,還包括:
[0019]51)根據(jù)內(nèi)存域索引值,獲取優(yōu)先級(jí)最高的內(nèi)存域,作為當(dāng)前內(nèi)存域;
[0020]52)查找所述當(dāng)前內(nèi)存域中的空閑內(nèi)存塊,并判斷所述空閑內(nèi)存塊的存儲(chǔ)空間是否能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),若是,則將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述當(dāng)前內(nèi)存域的空閑內(nèi)存塊中,若否,則執(zhí)行下一步驟;
[0021]53)若確定所述空閑內(nèi)存塊的存儲(chǔ)空間不能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),則判斷所述PRAM中是否存在優(yōu)先級(jí)次于所述當(dāng)前內(nèi)存域的其他內(nèi)存域,若存在,確定其他內(nèi)存域中優(yōu)先級(jí)最高的內(nèi)存域?yàn)楫?dāng)前內(nèi)存域,并返回執(zhí)行步驟52)的操作,若不存在,則結(jié)束本次存儲(chǔ)操作。
[0022]優(yōu)選的,當(dāng)所述DRAM中劃分的內(nèi)存域?yàn)橐粋€(gè),且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯠RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),獲取所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域后 ,還包括:
[0023]查找獲取所述DRAM的內(nèi)存域中的冷內(nèi)存;
[0024]獲取所述PRAM中的內(nèi)存域中的空閑內(nèi)存塊,并將所述冷內(nèi)存遷移到所述PRAM中的空閑內(nèi)存塊;
[0025]將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至冷內(nèi)存遷移后的所述DRAM中。
[0026]相應(yīng)的,本發(fā)明還公開(kāi)了一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置,應(yīng)用于電子設(shè)備,所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM,其中,所述基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置包括:
[0027]內(nèi)存域初始化模塊,用于分別為所述DRAM和PRAM建立相應(yīng)的管理數(shù)據(jù)結(jié)構(gòu),獲取分屬于所述DRAM和PRAM的內(nèi)存域;
[0028]虛擬內(nèi)存區(qū)確定模塊,用于當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,并根據(jù)所述虛擬空間的地址,確定所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū);
[0029]數(shù)據(jù)存儲(chǔ)模塊,用于根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
[0030]優(yōu)選的,
[0031]當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為堆棧段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在DRAM中的內(nèi)存域;
[0032]當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為代碼段、數(shù)據(jù)段或共享段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在PRAM中的內(nèi)存域。
[0033]優(yōu)選的,所述數(shù)據(jù)存儲(chǔ)模塊包括:
[0034]內(nèi)存修飾符配置單元,用于根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),為所述待存入內(nèi)存的數(shù)據(jù)配置相應(yīng)的內(nèi)存修飾符;[0035]第一存儲(chǔ)單元,用于獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域,并在所述內(nèi)存域具有足夠存儲(chǔ)空間的空閑內(nèi)存塊時(shí),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
[0036]優(yōu)選的,當(dāng)所述PRAM劃分的內(nèi)存域?yàn)槿齻€(gè),且所述DRAM劃分的內(nèi)存域?yàn)橐粋€(gè)時(shí),所述第一存儲(chǔ)單元中,獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域的計(jì)算公式為:
[0037]zone=(GFP_Z0NE_TABLE?(bit*2))&((l〈〈2)-l);
[0038]其中,GFP_Z0NE_TABLE為設(shè)定的常量值,bit為所述待存儲(chǔ)數(shù)據(jù)的內(nèi)存修飾符,zone為所述待存入內(nèi)存的數(shù)據(jù)對(duì)應(yīng)的內(nèi)存域的內(nèi)存域索引值。
[0039]優(yōu)選的,當(dāng)所述PRAM中劃分的內(nèi)存域?yàn)閮蓚€(gè)以上,且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯬RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),所述數(shù)據(jù)存儲(chǔ)模塊還包括:
[0040]第一獲取單元,用于根據(jù)內(nèi)存域索引值,獲取優(yōu)先級(jí)最高的內(nèi)存域,作為當(dāng)前內(nèi)存域;
[0041]第一判斷單元,用于查找所述當(dāng)前內(nèi)存域中的空閑內(nèi)存塊,并判斷所述空閑內(nèi)存塊的存儲(chǔ)空間是否能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),若是,則將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述當(dāng)前內(nèi)存域 的空閑內(nèi)存塊中,若否,則執(zhí)行第二獲取單元的操作;
[0042]第二獲取單元,用于若確定所述空閑內(nèi)存塊的存儲(chǔ)空間不能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù)時(shí),判斷所述PRAM中是否存在優(yōu)先級(jí)次于所述當(dāng)前內(nèi)存域的其他內(nèi)存域,若存在,確定其他內(nèi)存域中優(yōu)先級(jí)最高的內(nèi)存域?yàn)楫?dāng)前內(nèi)存域,并返回執(zhí)行第一判斷單元的操作,若不存在,則結(jié)束本次存儲(chǔ)操作。
[0043]優(yōu)選的,當(dāng)所述DRAM中劃分的內(nèi)存域?yàn)橐粋€(gè),且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯠RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),所述數(shù)據(jù)存儲(chǔ)模塊還包括:
[0044]查找單元,用于查找獲取所述DRAM的內(nèi)存域中的冷內(nèi)存;
[0045]遷移單元,用于獲取所述PRAM中的內(nèi)存域中的空閑內(nèi)存塊,并將所述冷內(nèi)存遷移到所述PRAM中的空閑內(nèi)存塊;
[0046]第二存儲(chǔ)單元,用于將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至冷內(nèi)存遷移后的所述DRAM中。
[0047]相應(yīng)的,本發(fā)明還公開(kāi)了一種處理器,應(yīng)用于電子設(shè)備,
[0048]所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM ;
[0049]所述處理器中集成有如上所述的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置。
[0050]相應(yīng)的,本發(fā)明還公開(kāi)了一種電子設(shè)備,
[0051]所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM ;
[0052]所述電子設(shè)備中設(shè)置有如上所述的處理器。
[0053]本申請(qǐng)應(yīng)用的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于電子設(shè)備,且電子設(shè)備中同時(shí)設(shè)置有DRAM和PRAM,與DRAM相比,PRAM具有靜態(tài)功耗低、存儲(chǔ)密度大、讀功耗低的優(yōu)點(diǎn),但是PRAM的寫延時(shí)和寫功耗要比DRAM大,且PRAM的寫壽命有限。本申請(qǐng)公開(kāi)的方法,根據(jù)所述DRAM和PRAM的優(yōu)缺點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ),通過(guò)待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),能夠獲取所述待存入內(nèi)存的數(shù)據(jù)的性質(zhì),將具有不同讀寫特性的數(shù)據(jù)存儲(chǔ)至相應(yīng)的存儲(chǔ)空間內(nèi),從而能夠發(fā)揮PRAM和DRAM在讀、寫方面的性能優(yōu)勢(shì),既可以降低內(nèi)存系統(tǒng)的靜態(tài)功耗、增大內(nèi)存容量,又可以降低內(nèi)存系統(tǒng)的動(dòng)態(tài)功耗。
[0054]進(jìn)一步的,現(xiàn)有技術(shù)中,隨著集成電路關(guān)鍵尺寸的減小,DRAM存儲(chǔ)器件在尺寸收縮和存儲(chǔ)密度方面的發(fā)展遇到了極大的困難,從而給內(nèi)存系統(tǒng)的發(fā)展帶來(lái)一定的限制。本申請(qǐng)公開(kāi)的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法,在電子設(shè)備中同時(shí)設(shè)置有DRAM和PRAM,擴(kuò)充了電子設(shè)備的存儲(chǔ)量,在存儲(chǔ)器件尺寸收縮的同時(shí),仍能保持一定的存儲(chǔ)密度,解除了對(duì)內(nèi)存系統(tǒng)的發(fā)展的限制。
【專利附圖】
【附圖說(shuō)明】
[0055]為了更清楚地說(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ù)這些附圖獲得其他的附圖。
[0056]圖1為本發(fā)明實(shí)施例公開(kāi)的一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法的工作流程示意圖;
[0057]圖2為本發(fā)明實(shí)施例公開(kāi)的一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法中,虛擬空間地址和物理空間地址的算法設(shè)計(jì)示意圖;
[0058]圖3為本發(fā)明實(shí)施例公開(kāi)的又一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法的工作流程示意圖;
[0059]圖4為本發(fā)明實(shí)施例公開(kāi)的又一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法的工作流程示意圖;
[0060]圖5本發(fā)明實(shí)施例公開(kāi)的一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0061]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0062]為了解決現(xiàn)有技術(shù)中,基于DRAM的內(nèi)存系統(tǒng)具有功耗高的問(wèn)題,本申請(qǐng)公開(kāi)了一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法、裝置和電子設(shè)備,其實(shí)施過(guò)程參見(jiàn)以下實(shí)施例。
[0063]實(shí)施例一
[0064]本申請(qǐng)公開(kāi)了一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法,用于解決現(xiàn)有技術(shù)中,基于DRAM的內(nèi)存系統(tǒng)具有功耗高的問(wèn)題,該方法應(yīng)用于電子設(shè)備,所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM。
[0065]參見(jiàn)圖1所示的工作流程示意圖,所述基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法包括:
[0066]步驟S11、分別為所述DRAM和PRAM建立相應(yīng)的管理數(shù)據(jù)結(jié)構(gòu),獲取分屬于所述DRAM和PRAM的內(nèi)存域。
[0067]步驟S12、當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,并根據(jù)所述虛擬空間的地址,確定所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)。
[0068]虛擬內(nèi)存是為了防止物理內(nèi)存不足而設(shè)計(jì)的。當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),待存入內(nèi)存的數(shù)據(jù)與虛擬空間的地址相映射,而虛擬空間的地址映射到實(shí)際的物理頁(yè)幀,最后再將這個(gè)物理地址中的數(shù)據(jù)傳輸給硬件存儲(chǔ)器進(jìn)行實(shí)際的存儲(chǔ)操作。[0069]例如,在Linux進(jìn)程中,虛擬空間被劃分為五個(gè)線性的虛擬內(nèi)存區(qū),所述虛擬內(nèi)存區(qū)包括:代碼段、數(shù)據(jù)段、堆段、棧段和共享段,其訪問(wèn)模式如表1所示。
[0070]表1虛擬內(nèi)存區(qū)的訪問(wèn)模式
[0071]
【權(quán)利要求】
1.一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法,應(yīng)用于電子設(shè)備,其特征在于,所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM,其中,所述基于內(nèi)存的數(shù)據(jù)存儲(chǔ)方法包括: 分別為所述DRAM和PRAM建立相應(yīng)的管理數(shù)據(jù)結(jié)構(gòu),獲取分屬于所述DRAM和PRAM的內(nèi)存域; 當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,并根據(jù)所述虛擬空間的地址,確定所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū); 根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為堆棧段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在DRAM中的內(nèi)存域; 當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為代碼段、數(shù)據(jù)段或共享段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在PRAM中的內(nèi)存域。
3.根據(jù)權(quán)利要求1和2所述的方法,其特征在于,將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中,包括: 根據(jù)所述待 存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),為所述待存入內(nèi)存的數(shù)據(jù)配置相應(yīng)的內(nèi)存修飾符; 獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域,并在所述內(nèi)存域具有足夠存儲(chǔ)空間的空閑內(nèi)存塊時(shí),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)所述PRAM劃分的內(nèi)存域?yàn)槿齻€(gè),且所述DRAM劃分的內(nèi)存域?yàn)橐粋€(gè)時(shí),所述獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域的計(jì)算公式為:
zone= (GFP_ZONE_TABLE>> (bit*2)) & ((1?2)-1); 其中,GFP_ZONE_TABLE為設(shè)定的常量值,bit為所述待存儲(chǔ)數(shù)據(jù)的內(nèi)存修飾符,zone為所述待存入內(nèi)存的數(shù)據(jù)對(duì)應(yīng)的內(nèi)存域的內(nèi)存域索引值。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)所述PRAM中劃分的內(nèi)存域?yàn)閮蓚€(gè)以上,且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯬RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),獲取所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域后,還包括: 51)根據(jù)內(nèi)存域索引值,獲取優(yōu)先級(jí)最高的內(nèi)存域,作為當(dāng)前內(nèi)存域; 52)查找所述當(dāng)前內(nèi)存域中的空閑內(nèi)存塊,并判斷所述空閑內(nèi)存塊的存儲(chǔ)空間是否能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),若是,則將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述當(dāng)前內(nèi)存域的空閑內(nèi)存塊中,若否,則執(zhí)行下一步驟; 53 )若確定所述空閑內(nèi)存塊的存儲(chǔ)空間不能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),則判斷所述PRAM中是否存在優(yōu)先級(jí)次于所述當(dāng)前內(nèi)存域的其他內(nèi)存域,若存在,確定其他內(nèi)存域中優(yōu)先級(jí)最高的內(nèi)存域?yàn)楫?dāng)前內(nèi)存域,并返回執(zhí)行步驟52)的操作,若不存在,則結(jié)束本次存儲(chǔ)操作。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)所述DRAM中劃分的內(nèi)存域?yàn)橐粋€(gè),且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯠RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),獲取所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域后,還包括: 查找獲取所述DRAM的內(nèi)存域中的冷內(nèi)存;獲取所述PRAM中的內(nèi)存域中的空閑內(nèi)存塊,并將所述冷內(nèi)存遷移到所述PRAM中的空閑內(nèi)存塊; 將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至冷內(nèi)存遷移后的所述DRAM中。
7.一種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置,應(yīng)用于電子設(shè)備,其特征在于,所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM,其中,所述基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置包括: 內(nèi)存域初始化模塊,用于分別為所述DRAM和PRAM建立相應(yīng)的管理數(shù)據(jù)結(jié)構(gòu),獲取分屬于所述DRAM和PRAM的內(nèi)存域; 虛擬內(nèi)存區(qū)確定模塊,用于當(dāng)需要存儲(chǔ)數(shù)據(jù)時(shí),獲取待存入內(nèi)存的數(shù)據(jù)的虛擬空間的地址,并根據(jù)所述虛擬空間的地址,確定所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū); 數(shù)據(jù)存儲(chǔ)模塊,用于根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于, 當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為堆棧段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在DRAM中的內(nèi)存域; 當(dāng)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū)為代碼段、數(shù)據(jù)段或共享段時(shí),與所述虛擬內(nèi)存區(qū)相對(duì)應(yīng)的內(nèi)存域?yàn)樵O(shè)置在PRAM中的內(nèi)存域。
9.根據(jù)權(quán)利要求7和8所述的裝置,其特征在于,所述數(shù)據(jù)存儲(chǔ)模塊包括: 內(nèi)存修飾符配置單元,用于根據(jù)所述待存入內(nèi)存的數(shù)據(jù)所屬的虛擬內(nèi)存區(qū),為所述待存入內(nèi)存的數(shù)據(jù)配置相應(yīng)的內(nèi)存修飾符; 第一存儲(chǔ)單元,用于獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域,并在所述內(nèi)存域具有足夠存儲(chǔ)空間的空閑內(nèi)存塊時(shí),將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域的空閑內(nèi)存塊中。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,當(dāng)所述PRAM劃分的內(nèi)存域?yàn)槿齻€(gè),且所述DRAM劃分的內(nèi)存域?yàn)橐粋€(gè)時(shí),所述第一存儲(chǔ)單元中,獲取與所述內(nèi)存修飾符相對(duì)應(yīng)的內(nèi)存域的計(jì)算公式為:
11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,當(dāng)所述PRAM中劃分的內(nèi)存域?yàn)閮蓚€(gè)以上,且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯬RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),所述數(shù)據(jù)存儲(chǔ)模塊還包括: 第一獲取單元,用于根據(jù)內(nèi)存域索引值,獲取優(yōu)先級(jí)最高的內(nèi)存域,作為當(dāng)前內(nèi)存域; 第一判斷單元,用于查找所述當(dāng)前內(nèi)存域中的空閑內(nèi)存塊,并判斷所述空閑內(nèi)存塊的存儲(chǔ)空間是否能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù),若是,則將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至所述當(dāng)前內(nèi)存域的空閑內(nèi)存塊中,若否,則執(zhí)行第二獲取單元的操作; 第二獲取單元,用于若確定所述空閑內(nèi)存塊的存儲(chǔ)空間不能夠存儲(chǔ)所述待存入內(nèi)存的數(shù)據(jù)時(shí),判斷所述PRAM中是否存在優(yōu)先級(jí)次于所述當(dāng)前內(nèi)存域的其他內(nèi)存域,若存在,確定其他內(nèi)存域中優(yōu)先級(jí)最高的內(nèi)存域?yàn)楫?dāng)前內(nèi)存域,并返回執(zhí)行第一判斷單元的操作,若不存在,則結(jié)束本次存儲(chǔ)操作。
12.根據(jù)權(quán)利要求9所述的裝置,其特征在于,當(dāng)所述DRAM中劃分的內(nèi)存域?yàn)橐粋€(gè),且所述內(nèi)存修飾符對(duì)應(yīng)的內(nèi)存域?yàn)樗鯠RAM中的內(nèi)存域,所述內(nèi)存域中的空閑內(nèi)存塊不具有充足的存儲(chǔ)空間時(shí),所述數(shù)據(jù)存儲(chǔ)模塊還包括: 查找單元,用于查找獲取所述DRAM的內(nèi)存域中的冷內(nèi)存; 遷移單元,用于獲取所述PRAM中的內(nèi)存域中的空閑內(nèi)存塊,并將所述冷內(nèi)存遷移到所述PRAM中的空閑內(nèi)存塊; 第二存儲(chǔ)單元,用于將所述待存入內(nèi)存的數(shù)據(jù)存儲(chǔ)至冷內(nèi)存遷移后的所述DRAM中。
13.—種處理器,應(yīng)用于電子設(shè)備,其特征在于, 所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM ; 所述處理器中集成有如權(quán)利要求7至權(quán)利要求12任一項(xiàng)所述的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)裝置。
14.一種電子設(shè)備,其特征在于, 所述電子設(shè)備中設(shè)置有動(dòng)態(tài)存儲(chǔ)器DRAM和相變存儲(chǔ)器PRAM ; 所述電子設(shè)備中設(shè)置有如權(quán)利要求13所述的處理器。
【文檔編號(hào)】G06F12/08GK103793332SQ201410071983
【公開(kāi)日】2014年5月14日 申請(qǐng)日期:2014年2月28日 優(yōu)先權(quán)日:2014年2月28日
【發(fā)明者】李功, 陳嵐, 郝曉冉 申請(qǐng)人:中國(guó)科學(xué)院微電子研究所