内存匿名页初始化方法、装置及系统.pdf

上传人:a2 文档编号:623337 上传时间:2018-02-26 格式:PDF 页数:20 大小:6.09MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310144933.3

申请日:

2013.04.24

公开号:

CN104123241A

公开日:

2014.10.29

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 12/10申请日:20130424|||公开

IPC分类号:

G06F12/10

主分类号:

G06F12/10

申请人:

华为技术有限公司; 中国科学院计算技术研究所

发明人:

夏飞; 熊劲; 蒋德钧; 魏巍

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明实施例公开一种内存匿名页初始化方法,包括:获取待识别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。相应的本发明实施例还公开了一种内存匿名页初始化装置以及内存匿名页初始化系统。

权利要求书

1.  一种内存匿名页初始化方法,其特征在于,包括:
获取待识别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;
根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;
根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;
根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。

2.
  根据权利要求1所述的内存匿名页初始化方法,其特征在于,在所述获取待识别内存匿名页的物理地址之前,还包括:
创建地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。

3.
  根据权利要求2所述的内存匿名页初始化方法,其特征在于,所述建立地址名称映射表包括:
修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中的系统内存映射表;
运行修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中的系统内存映射表。

4.
  根据权利要求1所述的内存匿名页初始化方法,其特征在于,在所述获取对所述内存写0与写1的能耗差异信息之前,还包括:
创建能耗差异信息映射表,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。

5.
  根据权利要求4所述的内存匿名页初始化方法,其特征在于,所述的能耗差异信息映射表建立在操作系统内核中,在内核启动后动态加载。

6.
  根据权利要求1所述的内存匿名页初始化方法,其特征在于,所述根 据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作,包括:
如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;
如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1。

7.
  根据权利要求6所述的内存匿名页初始化方法,其特征在于,所述的如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1包括:
在操作系统的内存管理模块中添加一个匿名页初始化函数,用于将所述内存匿名页所有位设置为1;
如果对所述内存写0的能耗小于对所述内存写1的能耗,则调用系统现有函数,将所述内存匿名页所有位设置为0;
如果对所述内存写1的能耗小于对所述内存写0的能耗,则调用所述的添加的匿名页初始化函数,将所述内存匿名页所有位设置为1。

8.
  根据权利要求1或2或3或4或5或6或7所述的内存匿名页初始化方法,其特征在于,所述内存包括PCM、NVM、DRAM、RRAM、MRAM单独以及以上任意组合的混合内存。

9.
  一种内存匿名页初始化装置,其特征在于,包括:
寻址模块,用于获取待识别内存匿名页的物理地址;
内存名称识别模块,用于根据所述寻址模块获取的所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;
能耗差异识别模块,用于根据所述内存名称识别模块获取到的所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;
初始化模块,用于根据所述能耗差异识别模块获取到的所述对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。

10.
  根据权利要求9所述的内存匿名页初始化装置,其特征在于,还包括:
第一添加模块,用于在操作系统中建立地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。

11.
  根据权利要求10所述的内存匿名页初始化装置,其特征在于,所述第一添加模块包括:
修改单元,用于修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中;
执行单元,用于运行所述修改单元修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中。

12.
  根据权利要求9所述的内存匿名页初始化装置,其特征在于,还包括:
第二添加模块,用于在操作系统内核中建立能耗差异信息映射表,所述能耗差异信息映射表用于反映对所述不同的内存写0与写1的能耗差异信息。

13.
  根据权利要求9所述的内存匿名页初始化装置,其特征在于,所述的匿名页初始化模块包括:
第一单元,用于将写0能耗小于写1能耗的所述内存匿名页所有位初始化为0;
第二单元,用于将写1能耗小于写0能耗的所述内存匿名页所有位初始化为1。

14.
  根据权利要求12所述的内存匿名页初始化装置,其特征在于,所述的第二添加模块在操作系统内核启动后动态加载。

15.
  一种内存匿名页初始化系统,包括建表的装置以及内存匿名页初始化装置,其特征在于,包括:
所述建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;所述地址名称映射表用于反映所述内存匿名页的物理地址和所述内存的内存名称的对应关系;所述能耗差异信息映射表用于反映对不同的所述内存写0与写1的能耗差异信息;
所述内存匿名页初始化装置,用于根据获取待识别所述内存匿名页的物理地址,查找所述建表装置创建的地址名称映射表,获取对应于所述物理地址的内存的内存名称;根据所述内存名称,查找建表装置创建的所述能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,根据所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。

说明书

内存匿名页初始化方法、装置及系统
技术领域
本发明涉及计算机领域,特别涉及一种内存匿名页初始化方法、装置及系统。
背景技术
在计算机系统中,内存一般由DRAM(Dynamic Random Access Memory,动态随机访问存储器)构成。由于DRAM集成度低,容量有限。另外,DRAM属于易失性存储器件,为了保证数据不丢失,需要不断的刷新操作,导致DRAM能耗高。内存系统能耗占计算机系统总能耗的比例较大,能耗问题也越来越成为制约内存系统发展的瓶颈。与DRAM相比,新型NVM(Non-Volatile Memory)能耗更低,并且由于集成度高,可以做到更大的容量。随着应用对内存容量的要求越来越大,对非易失性需求的增多,仅仅由DRAM构成的内存已难以满足应用的需求,将NVM作为内存或者DRAM与NVM构成混合内存,将成为未来内存系统的发展方向。
NVM存储数据的原理是,通过给存储单元加不同大小、不同方向的电压或磁场等来改变存储单元的电阻,根据存储单元电阻大小的不同来判断存储的数据是0还是1。如PCM(Phase Change Memory,相变存储器),通过给存储单元加不同大小的电压来改变存储单元的电阻;单极性RRAM(Resistive Random Access Memory,阻变式存储器),通过给存储单元加不同大小的电压来改变存储单元的电阻;双极性RRAM,通过给存储单元加不同方向、不同大小的电压来改变存储单元的电阻;MRAM(Magnetoresistive Random Access Memory,磁阻式存储器),通过给存储单元加不同方向的磁场来改变存储单元的电阻。这种根据存储单元电阻大小判断0和1的存储器件,写0(RESET操作)和写1(SET操作)的能耗不同。
操作系统的内存管理模块采用动态内存分配技术,当进程访问的页不在内存时,会引起缺页异常,缺页异常处理程序进行实际的物理页分配。其中,内存页是一个单位的内存,内存页包含匿名页和非匿名页。
在现有技术中,操作系统内存管理模块在处理缺页异常时,如果这个页是 初次被进程访问并且是匿名页,则缺页异常处理程序调用do_anonymous_page()函数获得一个新的物理匿名页,并调用clear_page()函数将该匿名页所有位初始化为0。
操作系统在分配匿名页时,直接将匿名页所有位初始化为0,没有考虑新型NVM写0与写1的能耗大小差异,从而导致能源浪费。
发明内容
本发明实施例提出一种节约能耗的内存匿名页初始化装置、方法、系统,通过识别不同内存的名称和物理地址,判断内存写0与写1的能耗差异,进行不同的初始化操作,减少了资源浪费。
一方面,本发明实施例提供一种内存匿名页初始化方法,包括:
获取待识别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;
根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;
根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;
根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。
在一方面的一种可能的实现方式中,在所述获取待识别内存匿名页的物理地址之前,创建地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述建立地址名称映射表包括修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中的系统内存映射表。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述建立地址名称映射表包括运行修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中的系统内存映射 表。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,在所述获取对所述内存写0与写1的能耗差异信息之前,创建能耗差异信息映射表,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的能耗差异信息映射表建立在操作系统内核中,在内核启动后动态加载。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述根据所述对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作,包括如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,述的如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1包括在操作系统的内存管理模块中添加一个匿名页初始化函数,用于将所述内存匿名页所有位设置为1;如果对所述内存写0的能耗小于对所述内存写1的能耗,则调用系统现有函数,将所述内存匿名页所有位设置为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,则调用所述的添加的匿名页初始化函数,将所述内存匿名页所有位设置为1。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述内存包括PCM、NVM、DRAM、RRAM、MRAM单独以及以上任意组合的混合内存。
本发明实施例还提供一种内存匿名页初始化装置,包括:
寻址模块,用于获取待识别内存匿名页的物理地址;
内存名称识别模块,用于根据所述寻址模块获取的所述物理地址,查找预 设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;
能耗差异识别模块,用于根据所述内存名称识别模块获取的所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;
初始化模块,用于根据所述能耗差异识别模块获取的对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。
在一方面的一种可能的实现方式中,所述的内存匿名页初始化装置还包括第一添加模块,用于在操作系统中建立地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述第一添加模块包括修改单元,用于修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中;执行单元,用于运行所述修改单元修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的内存匿名页初始化装置还包括第二添加模块,用于在操作系统内核中建立能耗差异信息映射表,所述能耗差异信息映射表用于反映对所述不同的内存写0与写1的能耗差异信息。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的匿名页初始化模块包括第一单元,用于将写0能耗小于写1能耗的所述内存匿名页所有位初始化为0;第二单元,用于将写1能耗小于写0能耗的所述内存匿名页所有位初始化为1。
结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的第二添加模块在操作系统内核启动后动态加载。
本发明实施例提供一种内存匿名页初始化系统,包括建表的装置以及内存匿名页初始化装置:
所述建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;所述地址名称映射表用于反映所述内存匿名页的物理地址和所述内存的内存名称的对应关系;所述能耗差异信息映射表用于反映对不同的所述内存写0与写1的能耗差异信息;
所述内存匿名页初始化装置,用于根据获取待识别所述内存匿名页的物理地址,查找所述建表的装置创建的地址名称映射表,获取对应于所述物理地址的内存的内存名称;根据所述内存名称,查找所述建表的装置创建的所述能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,根据所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对内存匿名页进行相应的初始化操作,从而较大地减少资源的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存匿名页初始化装置示意图;
图2为本发明实施例提供的一种内存匿名页初始化装置示意图;
图3为本发明实施例提供的一种内存匿名页初始化方法示意图;
图4为本发明实施例提供的一种内存匿名页初始化方法示意图;
图5为本发明实施例提供的一种由PCM组成的内存匿名页初始化方法示意图;
图6为本发明实施例提供的一种由DRAM与PCM、RRAM构成的混合内存匿名页初始化方法示意图;
图7为本发明实施例提供的一种内存匿名页初始化系统示意图;
图8为本发明实施例提供的一种PCM内存示意图;
图9为本发明实施例提供的一种DRAM与PCM、RRAM构成的混合内存示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一个实施例提供一种内存匿名页初始化装置,如图1所示,包括:
寻址模块101,用于获取待识别内存匿名页的物理地址;
内存名称识别模块102,用于根据寻址模101块获取的物理地址,查找预设的地址名称映射表,获取对应于物理地址的内存名称;
能耗差异识别模块103,用于根据内存名称识别模块102获取的内存名称,查找预设的能耗差异信息映射表,获取对内存写0与写1的能耗差异信息;
初始化模块104,用于根据能耗差异识别模块103获取的对内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对内存匿名页进行相应的初始化操作,从而较大地减少资源的浪费。
本发明一个实施例还提供一种内存匿名页初始化装置,如图2所示,包括:
寻址模块202,用于获取待识别内存匿名页的物理地址;
内存名称识别模块203,用于根据寻址模202块获取的物理地址,查找预设的地址名称映射表,获取对应于物理地址的内存名称;
能耗差异识别模块204,用于根据内存名称识别模块203获取的内存名称,查找预设的能耗差异信息映射表,获取对内存写0与写1的能耗差异信息;
初始化模块205,用于根据能耗差异识别模块204获取的对内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。
在一种可能的实现方式中,内存匿名页初始化装置还包括:
第一添加模块200,用于在操作系统中建立地址名称映射表,地址名称映射表用于反映内存名称及内存匿名页对应的物理地址。
在另一种可能的实现方式中,第一添加模块包括:
修改单元2001,用于修改基本输入输出系统BIOS,将内存名称以及所述物理地址写入BIOS中;
执行单元2002,用于运行修改后的基本输入输出系统BIOS,将内存名称以及物理地址保存在修改后的BIOS中。
在另一种可能的实现方式中,内存匿名页初始化装置还包括:
第二添加模块201,用于在操作系统内核中建立能耗差异信息映射表,能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。
在另一种可能的实现方式中,初始化模块205包括:
第一单元2051,用于将写0能耗小于写1能耗的内存匿名页所有位初始化为0;
第二单元2052,用于将写1能耗小于写0能耗的内存匿名页所有位初始化为1。
在另一种可能的实现方式中,第二添加模块201在操作系统内核启动后动态加载,动态加载是为了节省内存资源。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
本发明一个实施例还提供一种内存匿名页初始化方法,如图3所示,步骤如下:
S100,获取待识别内存匿名页的物理地址;
在一个实施例中,操作系统内存管理模块进行寻址操作,获取待识别内存匿名页的物理地址范围。
S101,根据获取的物理地址,查找地址名称映射表,获取对应于物理地址 的内存名称;
在一个实施例中,操作系统在内存初始化时,读取系统内存映射表中的内存信息,获得每种内存的名称信息,并保存该信息。
S102,根据内存名称,识别内存写0与写1的能耗差异信息;
在一个实施例中,操作系统在内核启动后,访问内存能耗差异信息映射表,获取内存写0与写1的能耗差异信息。
S103,根据内存写0与写1的能耗差异信息,进行不同的初始化操作;
在一个实施例中,如果内存写0的能耗小于写1的能耗,将内存匿名页所有位设置为0;如果内存写1的能耗小于写0的能耗,将内存匿名页所有位设置为1;
在另一个实施例中,在操作系统内存管理模块中新建一个函数,用来将内存匿名页所有位设置为1;如果内存写1能耗小,内存管理模块调用所述新函数进行初始化。
在另一个实施例中,如果内存写0能耗小,操作系统调用现有系统方法,将匿名页所有位初始化为0。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
本发明一个实施例还提供一种内存匿名页初始化方法,如图4所示,步骤如下:
S1001,创建地址名称映射表;
在一个实施例中,修改基本输入输出系统BIOS,在系统内存映射表中添加内存名称和相应的物理地址。
在另一个实施例中,执行修改后的基本输入输出系统BIOS,将内存名称以及相应的物理地址信息保存进系统内存映射表中。
S100,获取待识别内存匿名页的物理地址;
在一个实施例中,操作系统内存管理模块进行寻址操作,获取待识别内存匿名页的物理地址范围。
S101,根据获取的物理地址,查找地址名称映射表,获取对应于物理地址的内存名称;
在一个实施例中,操作系统在内存初始化时,读取系统内存映射表中的内存信息,获得每种内存的名称信息,并保存该信息。
S1011,创建内存能耗差异信息映射表;
在一个实施例中,在操作系统内核中建立内存能耗差异信息映射表。
在另一个实施例中,内存能耗差异信息映射表至少包含两列内容:内存名称以及对应的写能耗较小值。
在另一个实施例中,内存能耗差异信息映射表在操作系统内核启动后动态加载。
S102,根据内存名称,识别内存写0与写1的能耗差异信息;
在一个实施例中,操作系统在内核启动后,访问内存能耗差异信息映射表,获取内存写0与写1的能耗差异信息。
S103,根据内存写0与写1的能耗差异信息,进行不同的初始化操作;如果写0的能耗小,将所有位设置为0;如果写1的能耗小,将所有位设置为1;
在一个实施例中,在操作系统内存管理模块中新建一个函数,用来将内存匿名页所有位设置为1;如果内存写1能耗小,内存管理模块调用所述新函数进行初始化。
在另一个实施例中,如果内存写0能耗小,操作系统调用现有系统方法,将匿名页所有位初始化为0。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
为了便于更直观、更容易理解内存匿名页初始化方法,如图5和图8所示, 本实施例还提供了一种PCM组成的内存匿名页初始化方法。
S2001,首先创建地址名称映射表,即通过修改基本输入输出系统BIOS,将内存名称为PCM和对应的物理地址0~4GB信息添加到系统内存映射表E820表中,并运行修改后的BIOS保存信息,如表1所示;
S200,操作系统在内存初始化时,内存管理模块自动进行寻址操作,获取内存的物理地址是0~4GB,如图6所示;
S201,操作系统在内存初始化时,读取系统内存映射表E820表中的内存信息,识别出0~4GB范围的物理地址对应的内存名称为PCM;
S2021,在操作系统内核中建立内存能耗差异信息映射表,内存能耗差异信息映射表至少包含两列内容:内存名称以及对应的写能耗较小值,如表2所示;
S202,操作系统在内核启动后,访问内存能耗差异信息映射表,查询PCM写0与写1的能耗差异信息映射信息,获取PCM写1的能耗较小;
S2031,在操作系统的内存管理模块中添加一个匿名页初始化函数clear_page_one(),用于将匿名页的所有位都设置为1;
S203,经查询得知PCM写1的能耗小于写0的能耗,在初始化匿名页时,调用clear_page_one()函数,将匿名页所有位初始化为1。

器件名称物理地址范围...PCM0~4GB............

表1内存名称与对应的物理地址信息
器件名称写能耗较小的数值DRAM0PCM1RRAM0......

表2内存写0与写1的能耗大小差异信息映射表
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
本实施例还提供了一种由DRAM与PCM、RRAM构成的混合内存匿名页初始化方法,如图6和图9所示:
S3001,创建地址名称映射表,即通过修改基本输入输出系统BIOS,将内存名称为DRAM的对应的物理地址0~1GB、内存名称为PCM的内存对应的物理地址是1~2GB、内存名称为RRAM的内存对应的物理地址为2~4GB信息添加到系统内存映射表E820表中,并运行修改后的BIOS保存信息,如表3所示;
S300,内存初始化时,读取系统内存映射表E820表中的内存信息,识别出内存匿名页所在的物理地址是0~4GB;
S301,操作系统在内存初始化时,内存管理模块自动进行寻址操作,获取不同的物理地址范围的内存名称分别为:0~1GB为DRAM,1~2GB为PCM,2~4GB为RRAM;
S3021,在操作系统内核中建立内存能耗差异信息映射表,内存能耗差异信息映射表至少包含两列内容:内存名称以及对应的写能耗较小值,如表2所示;
S302,操作系统在内核启动后,访问内存能耗差异信息映射表,获取DRAM写0能耗小、PCM写1能耗小、RRAM写0能耗小的信息;
S3031,在操作系统的内存管理模块中添加一个匿名页初始化函数clear_page_one(),用于将匿名页的所有位都设置为1;
S303,经查询得知,物理地址范围0~1GB为DRAM,而DRAM写0的能耗小于写1的能耗,则操作系统的内存管理模块调用现有系统函数clear_page()函数将匿名页所有位初始化为0;物理地址范围1~2GB为PCM,PCM写1的能耗小于写0的能耗,则调用clear_page_one()函数,将匿名页所有位初始化 为1;物理地址范围2~4GB为RRAM,RRAM写0的能耗小于写1的能耗,则调用clear_page()函数将匿名页所有位初始化为0。
器件名称物理地址范围DRAM0~1GBPCM1~2GBRRAM2~4GB......

表3内存名称与对应的物理地址信息
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
本发明一个实施例还提供一种内存匿名页初始化系统,如图7所示,包括:
400,一个建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;
401,内存匿名页初始化装置,用于根据获取待识别内存匿名页的物理地址,查找所述建表的装置创建的地址名称映射表,获取对应于物理地址的内存的内存名称;根据内存名称,查找建表装置创建的能耗差异信息映射表,获取对内存写0与写1的能耗差异信息,根据内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。
在一种可能的实现方式中,建表的装置400在操作系统BIOS中修改系统内存映射表表,创建地址名称映射表,地址名称映射表用于反映内存匿名页的物理地址和内存的名称对应关系,如表3所示。
在一种可能的实现方式中,系统内存映射表在BIOS中是E820表。
在另一可能的实现方式中,建表的装置400在操作系统内核中创建能耗差异信息映射表,能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息,如表2所示。
本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。
本发明一个实施例还提供了一种内存匿名页初始化计算机,包括存储器和处理器,其中,存储器用于存储指令;处理器,与该存储器耦合,该处理器被配置为执行存储在存储器中的指令,且该处理器被配置为用于执行如图2至图3所对应的任一实施例所示内存匿名页初始化方法,其实现原理相类似,此处不再赘述。
综上所述,本发明实施例在操作系统内存管理模块初始化匿名页时,考虑了不同内存写0与写1的能耗大小差异,将匿名页初始化为写能耗较小的数值。通过以上技术方案节约内存系统能耗,从而降低内存系统及整个系统的运行成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述仅为本发明的几个实施例,本领域的技术人员依据申请文件公开的可以对本发明进行各种改动或变型而不脱离本发明的精神和范围。

内存匿名页初始化方法、装置及系统.pdf_第1页
第1页 / 共20页
内存匿名页初始化方法、装置及系统.pdf_第2页
第2页 / 共20页
内存匿名页初始化方法、装置及系统.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《内存匿名页初始化方法、装置及系统.pdf》由会员分享,可在线阅读,更多相关《内存匿名页初始化方法、装置及系统.pdf(20页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104123241A43申请公布日20141029CN104123241A21申请号201310144933322申请日20130424G06F12/1020060171申请人华为技术有限公司地址518129广东省深圳市龙岗区坂田华为总部办公楼申请人中国科学院计算技术研究所72发明人夏飞熊劲蒋德钧魏巍54发明名称内存匿名页初始化方法、装置及系统57摘要本发明实施例公开一种内存匿名页初始化方法,包括获取待识别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名。

2、页的物理地址和内存的内存名称的对应关系;根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。相应的本发明实施例还公开了一种内存匿名页初始化装置以及内存匿名页初始化系统。51INTCL权利要求书3页说明书9页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书9页附图7页10申请公布号CN104123241ACN104123241A1/3页21一种内存匿名页初始化方法,其特征在于,包括获取待识。

3、别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。2根据权利要求1所述的内存匿名页初始化方法,其特征在于,在所述获取待识别内存匿名页的物理地址之前,还包括创建地址名称映射表,所述地址名称映射表用于反映所。

4、述内存名称及所述内存匿名页对应的物理地址。3根据权利要求2所述的内存匿名页初始化方法,其特征在于,所述建立地址名称映射表包括修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中的系统内存映射表;运行修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中的系统内存映射表。4根据权利要求1所述的内存匿名页初始化方法,其特征在于,在所述获取对所述内存写0与写1的能耗差异信息之前,还包括创建能耗差异信息映射表,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。5根据权利要求4所述的内存匿名页初始化方法,其特征在于,所述的能耗。

5、差异信息映射表建立在操作系统内核中,在内核启动后动态加载。6根据权利要求1所述的内存匿名页初始化方法,其特征在于,所述根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作,包括如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1。7根据权利要求6所述的内存匿名页初始化方法,其特征在于,所述的如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1包括。

6、在操作系统的内存管理模块中添加一个匿名页初始化函数,用于将所述内存匿名页所有位设置为1;如果对所述内存写0的能耗小于对所述内存写1的能耗,则调用系统现有函数,将所述内存匿名页所有位设置为0;权利要求书CN104123241A2/3页3如果对所述内存写1的能耗小于对所述内存写0的能耗,则调用所述的添加的匿名页初始化函数,将所述内存匿名页所有位设置为1。8根据权利要求1或2或3或4或5或6或7所述的内存匿名页初始化方法,其特征在于,所述内存包括PCM、NVM、DRAM、RRAM、MRAM单独以及以上任意组合的混合内存。9一种内存匿名页初始化装置,其特征在于,包括寻址模块,用于获取待识别内存匿名页的。

7、物理地址;内存名称识别模块,用于根据所述寻址模块获取的所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;能耗差异识别模块,用于根据所述内存名称识别模块获取到的所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;初始化模块,用于根据所述能耗差异识别模块获取到的所述对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。10根据权利要求9所述的内存匿名页初始化装置,其特征在于,还。

8、包括第一添加模块,用于在操作系统中建立地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。11根据权利要求10所述的内存匿名页初始化装置,其特征在于,所述第一添加模块包括修改单元,用于修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中;执行单元,用于运行所述修改单元修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中。12根据权利要求9所述的内存匿名页初始化装置,其特征在于,还包括第二添加模块,用于在操作系统内核中建立能耗差异信息映射表,所述能耗差异信息映射表用于反映对所述不同的内存写0与写1的能。

9、耗差异信息。13根据权利要求9所述的内存匿名页初始化装置,其特征在于,所述的匿名页初始化模块包括第一单元,用于将写0能耗小于写1能耗的所述内存匿名页所有位初始化为0;第二单元,用于将写1能耗小于写0能耗的所述内存匿名页所有位初始化为1。14根据权利要求12所述的内存匿名页初始化装置,其特征在于,所述的第二添加模块在操作系统内核启动后动态加载。15一种内存匿名页初始化系统,包括建表的装置以及内存匿名页初始化装置,其特征在于,包括所述建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;所述地址名称映射表用于反映所述内存匿名页的物理地址和所述内存的内存名称的对应关系;所述能耗差异信息映射表用。

10、于反映对不同的所述内存写0与写1的能耗差异信息;所述内存匿名页初始化装置,用于根据获取待识别所述内存匿名页的物理地址,查找所述建表装置创建的地址名称映射表,获取对应于所述物理地址的内存的内存名称;根据权利要求书CN104123241A3/3页4所述内存名称,查找建表装置创建的所述能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,根据所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。权利要求书CN104123241A1/9页5内存匿名页初始化方法、装置及系统技术领域0001本发明涉及计算机领域,特别涉及一种内存匿名页初始化方法、装置及系统。背景技术0002在计算机。

11、系统中,内存一般由DRAMDYNAMICRANDOMACCESSMEMORY,动态随机访问存储器构成。由于DRAM集成度低,容量有限。另外,DRAM属于易失性存储器件,为了保证数据不丢失,需要不断的刷新操作,导致DRAM能耗高。内存系统能耗占计算机系统总能耗的比例较大,能耗问题也越来越成为制约内存系统发展的瓶颈。与DRAM相比,新型NVMNONVOLATILEMEMORY能耗更低,并且由于集成度高,可以做到更大的容量。随着应用对内存容量的要求越来越大,对非易失性需求的增多,仅仅由DRAM构成的内存已难以满足应用的需求,将NVM作为内存或者DRAM与NVM构成混合内存,将成为未来内存系统的发展方。

12、向。0003NVM存储数据的原理是,通过给存储单元加不同大小、不同方向的电压或磁场等来改变存储单元的电阻,根据存储单元电阻大小的不同来判断存储的数据是0还是1。如PCMPHASECHANGEMEMORY,相变存储器,通过给存储单元加不同大小的电压来改变存储单元的电阻;单极性RRAMRESISTIVERANDOMACCESSMEMORY,阻变式存储器,通过给存储单元加不同大小的电压来改变存储单元的电阻;双极性RRAM,通过给存储单元加不同方向、不同大小的电压来改变存储单元的电阻;MRAMMAGNETORESISTIVERANDOMACCESSMEMORY,磁阻式存储器,通过给存储单元加不同方向的。

13、磁场来改变存储单元的电阻。这种根据存储单元电阻大小判断0和1的存储器件,写0RESET操作和写1SET操作的能耗不同。0004操作系统的内存管理模块采用动态内存分配技术,当进程访问的页不在内存时,会引起缺页异常,缺页异常处理程序进行实际的物理页分配。其中,内存页是一个单位的内存,内存页包含匿名页和非匿名页。0005在现有技术中,操作系统内存管理模块在处理缺页异常时,如果这个页是初次被进程访问并且是匿名页,则缺页异常处理程序调用DO_ANONYMOUS_PAGE函数获得一个新的物理匿名页,并调用CLEAR_PAGE函数将该匿名页所有位初始化为0。0006操作系统在分配匿名页时,直接将匿名页所有位。

14、初始化为0,没有考虑新型NVM写0与写1的能耗大小差异,从而导致能源浪费。发明内容0007本发明实施例提出一种节约能耗的内存匿名页初始化装置、方法、系统,通过识别不同内存的名称和物理地址,判断内存写0与写1的能耗差异,进行不同的初始化操作,减少了资源浪费。0008一方面,本发明实施例提供一种内存匿名页初始化方法,包括0009获取待识别内存匿名页的物理地址,所述内存匿名页为一个单位的内存;说明书CN104123241A2/9页60010根据所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;00。

15、11根据所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;0012根据对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。0013在一方面的一种可能的实现方式中,在所述获取待识别内存匿名页的物理地址之前,创建地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。0014结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述建立地址名称映射表包括修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中的系统内。

16、存映射表。0015结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述建立地址名称映射表包括运行修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中的系统内存映射表。0016结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,在所述获取对所述内存写0与写1的能耗差异信息之前,创建能耗差异信息映射表,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。0017结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的能耗差异信息映射表建立在操作系统内核中,在内核启动后动态加载。0018结合一方面。

17、或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述根据所述对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作,包括如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1。0019结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,述的如果对所述内存写0的能耗小于对所述内存写1的能耗,将所述内存匿名页所有位初始化为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,将所述内存匿名页所有位初始化为1包括在操作系统的内存管理模块中添加一个匿名。

18、页初始化函数,用于将所述内存匿名页所有位设置为1;如果对所述内存写0的能耗小于对所述内存写1的能耗,则调用系统现有函数,将所述内存匿名页所有位设置为0;如果对所述内存写1的能耗小于对所述内存写0的能耗,则调用所述的添加的匿名页初始化函数,将所述内存匿名页所有位设置为1。0020结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述内存包括PCM、NVM、DRAM、RRAM、MRAM单独以及以上任意组合的混合内存。0021本发明实施例还提供一种内存匿名页初始化装置,包括0022寻址模块,用于获取待识别内存匿名页的物理地址;说明书CN104123241A3/9页70023内存名称识。

19、别模块,用于根据所述寻址模块获取的所述物理地址,查找预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,所述地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;0024能耗差异识别模块,用于根据所述内存名称识别模块获取的所述内存名称,查找预设的能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,所述能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息;0025初始化模块,用于根据所述能耗差异识别模块获取的对所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。0026在一方面的一种可能的实现方式中,所述的内存匿名页初始化装置还包括。

20、第一添加模块,用于在操作系统中建立地址名称映射表,所述地址名称映射表用于反映所述内存名称及所述内存匿名页对应的物理地址。0027结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述第一添加模块包括修改单元,用于修改基本输入输出系统BIOS,将所述内存名称以及所述物理地址写入BIOS中;执行单元,用于运行所述修改单元修改后的基本输入输出系统BIOS,将所述内存名称以及所述物理地址保存进所述修改后的BIOS中。0028结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的内存匿名页初始化装置还包括第二添加模块,用于在操作系统内核中建立能耗差异信息映射表,所述能耗。

21、差异信息映射表用于反映对所述不同的内存写0与写1的能耗差异信息。0029结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的匿名页初始化模块包括第一单元,用于将写0能耗小于写1能耗的所述内存匿名页所有位初始化为0;第二单元,用于将写1能耗小于写0能耗的所述内存匿名页所有位初始化为1。0030结合一方面或一方面的一种可能的实现方式,在另一种可能的实现方式中,所述的第二添加模块在操作系统内核启动后动态加载。0031本发明实施例提供一种内存匿名页初始化系统,包括建表的装置以及内存匿名页初始化装置0032所述建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;所述地址名称映。

22、射表用于反映所述内存匿名页的物理地址和所述内存的内存名称的对应关系;所述能耗差异信息映射表用于反映对不同的所述内存写0与写1的能耗差异信息;0033所述内存匿名页初始化装置,用于根据获取待识别所述内存匿名页的物理地址,查找所述建表的装置创建的地址名称映射表,获取对应于所述物理地址的内存的内存名称;根据所述内存名称,查找所述建表的装置创建的所述能耗差异信息映射表,获取对所述内存写0与写1的能耗差异信息,根据所述内存写0与写1的能耗差异信息,对所述内存匿名页进行相应的初始化操作。0034本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称。

23、,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对内存匿名页进行相应的初始化操作,从而较大地减少资源的浪费。说明书CN104123241A4/9页8附图说明0035为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。0036图1为本发明实施例提供的一种内存匿名页初始化装置示意图;0037图2为本发明实施例提供的一种内。

24、存匿名页初始化装置示意图;0038图3为本发明实施例提供的一种内存匿名页初始化方法示意图;0039图4为本发明实施例提供的一种内存匿名页初始化方法示意图;0040图5为本发明实施例提供的一种由PCM组成的内存匿名页初始化方法示意图;0041图6为本发明实施例提供的一种由DRAM与PCM、RRAM构成的混合内存匿名页初始化方法示意图;0042图7为本发明实施例提供的一种内存匿名页初始化系统示意图;0043图8为本发明实施例提供的一种PCM内存示意图;0044图9为本发明实施例提供的一种DRAM与PCM、RRAM构成的混合内存示意图。具体实施方式0045下面将结合本发明实施例中的附图,对本发明实施。

25、例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0046本发明一个实施例提供一种内存匿名页初始化装置,如图1所示,包括0047寻址模块101,用于获取待识别内存匿名页的物理地址;0048内存名称识别模块102,用于根据寻址模101块获取的物理地址,查找预设的地址名称映射表,获取对应于物理地址的内存名称;0049能耗差异识别模块103,用于根据内存名称识别模块102获取的内存名称,查找预设的能耗差异信息映射表,获取对内存写0与写1。

26、的能耗差异信息;0050初始化模块104,用于根据能耗差异识别模块103获取的对内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。0051本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对内存匿名页进行相应的初始化操作,从而较大地减少资源的浪费。0052本发明一个实施例还提供一种内存匿名页初始化装置,如图2所示,包括0053寻址模块202,用于获取待识别内存匿名页的物理地址;0054内存名称识别。

27、模块203,用于根据寻址模202块获取的物理地址,查找预设的地址名称映射表,获取对应于物理地址的内存名称;0055能耗差异识别模块204,用于根据内存名称识别模块203获取的内存名称,查找预设的能耗差异信息映射表,获取对内存写0与写1的能耗差异信息;说明书CN104123241A5/9页90056初始化模块205,用于根据能耗差异识别模块204获取的对内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。0057在一种可能的实现方式中,内存匿名页初始化装置还包括0058第一添加模块200,用于在操作系统中建立地址名称映射表,地址名称映射表用于反映内存名称及内存匿名页对应的物理地址。0。

28、059在另一种可能的实现方式中,第一添加模块包括0060修改单元2001,用于修改基本输入输出系统BIOS,将内存名称以及所述物理地址写入BIOS中;0061执行单元2002,用于运行修改后的基本输入输出系统BIOS,将内存名称以及物理地址保存在修改后的BIOS中。0062在另一种可能的实现方式中,内存匿名页初始化装置还包括0063第二添加模块201,用于在操作系统内核中建立能耗差异信息映射表,能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息。0064在另一种可能的实现方式中,初始化模块205包括0065第一单元2051,用于将写0能耗小于写1能耗的内存匿名页所有位初始化为0;0。

29、066第二单元2052,用于将写1能耗小于写0能耗的内存匿名页所有位初始化为1。0067在另一种可能的实现方式中,第二添加模块201在操作系统内核启动后动态加载,动态加载是为了节省内存资源。0068本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。0069本发明一个实施例还。

30、提供一种内存匿名页初始化方法,如图3所示,步骤如下0070S100,获取待识别内存匿名页的物理地址;0071在一个实施例中,操作系统内存管理模块进行寻址操作,获取待识别内存匿名页的物理地址范围。0072S101,根据获取的物理地址,查找地址名称映射表,获取对应于物理地址的内存名称;0073在一个实施例中,操作系统在内存初始化时,读取系统内存映射表中的内存信息,获得每种内存的名称信息,并保存该信息。0074S102,根据内存名称,识别内存写0与写1的能耗差异信息;0075在一个实施例中,操作系统在内核启动后,访问内存能耗差异信息映射表,获取内存写0与写1的能耗差异信息。0076S103,根据内存。

31、写0与写1的能耗差异信息,进行不同的初始化操作;0077在一个实施例中,如果内存写0的能耗小于写1的能耗,将内存匿名页所有位设置为0;如果内存写1的能耗小于写0的能耗,将内存匿名页所有位设置为1;0078在另一个实施例中,在操作系统内存管理模块中新建一个函数,用来将内存匿名页所有位设置为1;如果内存写1能耗小,内存管理模块调用所述新函数进行初始化。说明书CN104123241A6/9页100079在另一个实施例中,如果内存写0能耗小,操作系统调用现有系统方法,将匿名页所有位初始化为0。0080本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存。

32、的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。0081本发明一个实施例还提供一种内存匿名页初始化方法,如图4所示,步骤如下0082S1001,创建地址名称映射表;0083在一个实施例中,修改基本输入输出系统BIOS,在系统内存映射表中添加内存名称和相应的物理地址。0084在另一个实施例中,执行修改后的基本输入输出系统BIOS,将内存名称以及相应的物理地址信息保存进系统内。

33、存映射表中。0085S100,获取待识别内存匿名页的物理地址;0086在一个实施例中,操作系统内存管理模块进行寻址操作,获取待识别内存匿名页的物理地址范围。0087S101,根据获取的物理地址,查找地址名称映射表,获取对应于物理地址的内存名称;0088在一个实施例中,操作系统在内存初始化时,读取系统内存映射表中的内存信息,获得每种内存的名称信息,并保存该信息。0089S1011,创建内存能耗差异信息映射表;0090在一个实施例中,在操作系统内核中建立内存能耗差异信息映射表。0091在另一个实施例中,内存能耗差异信息映射表至少包含两列内容内存名称以及对应的写能耗较小值。0092在另一个实施例中,。

34、内存能耗差异信息映射表在操作系统内核启动后动态加载。0093S102,根据内存名称,识别内存写0与写1的能耗差异信息;0094在一个实施例中,操作系统在内核启动后,访问内存能耗差异信息映射表,获取内存写0与写1的能耗差异信息。0095S103,根据内存写0与写1的能耗差异信息,进行不同的初始化操作;如果写0的能耗小,将所有位设置为0;如果写1的能耗小,将所有位设置为1;0096在一个实施例中,在操作系统内存管理模块中新建一个函数,用来将内存匿名页所有位设置为1;如果内存写1能耗小,内存管理模块调用所述新函数进行初始化。0097在另一个实施例中,如果内存写0能耗小,操作系统调用现有系统方法,将匿。

35、名页所有位初始化为0。0098本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。说明书CN104123241A107/9页110099为了便于更直观、更容易理解内存匿名页初始化方法,如图5和图8所示,本实施例还提供了一种PCM组成的内存匿名页初始化方法。0100S2001,。

36、首先创建地址名称映射表,即通过修改基本输入输出系统BIOS,将内存名称为PCM和对应的物理地址04GB信息添加到系统内存映射表E820表中,并运行修改后的BIOS保存信息,如表1所示;0101S200,操作系统在内存初始化时,内存管理模块自动进行寻址操作,获取内存的物理地址是04GB,如图6所示;0102S201,操作系统在内存初始化时,读取系统内存映射表E820表中的内存信息,识别出04GB范围的物理地址对应的内存名称为PCM;0103S2021,在操作系统内核中建立内存能耗差异信息映射表,内存能耗差异信息映射表至少包含两列内容内存名称以及对应的写能耗较小值,如表2所示;0104S202,操。

37、作系统在内核启动后,访问内存能耗差异信息映射表,查询PCM写0与写1的能耗差异信息映射信息,获取PCM写1的能耗较小;0105S2031,在操作系统的内存管理模块中添加一个匿名页初始化函数CLEAR_PAGE_ONE,用于将匿名页的所有位都设置为1;0106S203,经查询得知PCM写1的能耗小于写0的能耗,在初始化匿名页时,调用CLEAR_PAGE_ONE函数,将匿名页所有位初始化为1。0107器件名称物理地址范围PCM04GB0108表1内存名称与对应的物理地址信息0109器件名称写能耗较小的数值DRAM0PCM1RRAM00110表2内存写0与写1的能耗大小差异信息映射表0111本发明实。

38、施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。说明书CN104123241A118/9页120112本实施例还提供了一种由DRAM与PCM、RRAM构成的混合内存匿名页初始化方法,如图6和图9所示0113S3001,创建地址名称映射表,即通过修改基本输入输出系统BIOS,将内存。

39、名称为DRAM的对应的物理地址01GB、内存名称为PCM的内存对应的物理地址是12GB、内存名称为RRAM的内存对应的物理地址为24GB信息添加到系统内存映射表E820表中,并运行修改后的BIOS保存信息,如表3所示;0114S300,内存初始化时,读取系统内存映射表E820表中的内存信息,识别出内存匿名页所在的物理地址是04GB;0115S301,操作系统在内存初始化时,内存管理模块自动进行寻址操作,获取不同的物理地址范围的内存名称分别为01GB为DRAM,12GB为PCM,24GB为RRAM;0116S3021,在操作系统内核中建立内存能耗差异信息映射表,内存能耗差异信息映射表至少包含两列。

40、内容内存名称以及对应的写能耗较小值,如表2所示;0117S302,操作系统在内核启动后,访问内存能耗差异信息映射表,获取DRAM写0能耗小、PCM写1能耗小、RRAM写0能耗小的信息;0118S3031,在操作系统的内存管理模块中添加一个匿名页初始化函数CLEAR_PAGE_ONE,用于将匿名页的所有位都设置为1;0119S303,经查询得知,物理地址范围01GB为DRAM,而DRAM写0的能耗小于写1的能耗,则操作系统的内存管理模块调用现有系统函数CLEAR_PAGE函数将匿名页所有位初始化为0;物理地址范围12GB为PCM,PCM写1的能耗小于写0的能耗,则调用CLEAR_PAGE_ONE。

41、函数,将匿名页所有位初始化为1;物理地址范围24GB为RRAM,RRAM写0的能耗小于写1的能耗,则调用CLEAR_PAGE函数将匿名页所有位初始化为0。0120器件名称物理地址范围DRAM01GBPCM12GBRRAM24GB0121表3内存名称与对应的物理地址信息0122本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,。

42、将内存匿名页所有位设置为1,从而较大减少资源的浪费。0123本发明一个实施例还提供一种内存匿名页初始化系统,如图7所示,包括0124400,一个建表的装置,用于创建地址名称映射表和创建能耗差异信息映射表;地址名称映射表用于反映内存匿名页的物理地址和内存的内存名称的对应关系;能耗差异信说明书CN104123241A129/9页13息映射表用于反映对不同的内存写0与写1的能耗差异信息;0125401,内存匿名页初始化装置,用于根据获取待识别内存匿名页的物理地址,查找所述建表的装置创建的地址名称映射表,获取对应于物理地址的内存的内存名称;根据内存名称,查找建表装置创建的能耗差异信息映射表,获取对内存。

43、写0与写1的能耗差异信息,根据内存写0与写1的能耗差异信息,对内存匿名页进行相应的初始化操作。0126在一种可能的实现方式中,建表的装置400在操作系统BIOS中修改系统内存映射表表,创建地址名称映射表,地址名称映射表用于反映内存匿名页的物理地址和内存的名称对应关系,如表3所示。0127在一种可能的实现方式中,系统内存映射表在BIOS中是E820表。0128在另一可能的实现方式中,建表的装置400在操作系统内核中创建能耗差异信息映射表,能耗差异信息映射表用于反映对不同的内存写0与写1的能耗差异信息,如表2所示。0129本发明实施例通过获取待识别内存匿名页的物理地址,查询预设的地址名称映射表,获。

44、取对应于所述物理地址的内存的内存名称,再根据获取的内存名称,查询预设的内存能耗差异信息表,查询到不同内存写0与写1的能耗差异,根据不同内存写0与写1的能耗差异,对写0能耗小于写1能耗的内存将内存匿名页所有位设置为0,而对写1能耗小于写0能耗的内存,将内存匿名页所有位设置为1,从而较大减少资源的浪费。0130本发明一个实施例还提供了一种内存匿名页初始化计算机,包括存储器和处理器,其中,存储器用于存储指令;处理器,与该存储器耦合,该处理器被配置为执行存储在存储器中的指令,且该处理器被配置为用于执行如图2至图3所对应的任一实施例所示内存匿名页初始化方法,其实现原理相类似,此处不再赘述。0131综上所。

45、述,本发明实施例在操作系统内存管理模块初始化匿名页时,考虑了不同内存写0与写1的能耗大小差异,将匿名页初始化为写能耗较小的数值。通过以上技术方案节约内存系统能耗,从而降低内存系统及整个系统的运行成本。0132本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体READONLYMEMORY,ROM或随机存储记忆体RANDOMACCESSMEMORY,RAM等。0133以上所述仅为本发明的几个实施例,本领域的技术人员依据申请文件公开的可以对本发明进行各种改动或变型而不脱离本发明的精神和范围。说明书CN104123241A131/7页14图1说明书附图CN104123241A142/7页15图2说明书附图CN104123241A153/7页16图3说明书附图CN104123241A164/7页17图4说明书附图CN104123241A175/7页18图5说明书附图CN104123241A186/7页19图6说明书附图CN104123241A197/7页20图7图8图9说明书附图CN104123241A20。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1