首页> 中国专利> 相变内存周期性磨损均衡方法及其内存管理方法

相变内存周期性磨损均衡方法及其内存管理方法

摘要

本发明是一种相变内存周期性磨损均衡方法及其内存管理方法,包括步骤:S1,为相变内存的物理内存维护一个全局写次数计数器;S2,为每个子表增加used_list和threshold_list两个双向链表;同时增加一个全局的bad_list来维护不能进行分配的内存区域;S3,在数据写入到物理内存页时,同步更新全局的写次数计数器和内存块本次分配期间的累计写次数计数器;S4,设置一个写入阈值,当内存块本次分配期间的写入次数超过该写入阈值后,则将该内存块进行释放,并放入到相应子表的threshold_list中去;再申请分配同样大小的内存块,并将数据内容从旧的内存块中拷贝到新分配的内存块中;S5,当有物理内存页的全局写次数超过相变存储单元的寿命限度,将该内存页放入到bad_list中,永远不进行分配。

著录项

  • 公开/公告号CN102495806A

    专利类型发明专利

  • 公开/公告日2012-06-13

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201110382040.3

  • 发明设计人 胡事民;赵鹏;

    申请日2011-11-25

  • 分类号G06F12/06(20060101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-12-18 05:25:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-09-03

    授权

    授权

  • 2012-07-11

    实质审查的生效 IPC(主分类):G06F12/06 申请日:20111125

    实质审查的生效

  • 2012-06-13

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种相变内存周期性磨损 均衡方法及其内存管理方法。

背景技术

一种基于相变存储(Phase-Change Memory)的相变随机存储器 (PRAM)技术被认为是替代DRAM的候选技术,其具有高密度,非易 失,低功耗等特点。与DRAM相比,PRAM可以在更小的尺寸上存储 更多的内容;速度方面,PRAM的读速度比DRAM稍慢,写速度比 DRAM慢几十倍,但整体能耗比DRAM低的多。但是,PRAM有一个 明显的缺点,就是其存储单元的写次数有限,目前的技术可以支持 PRAM存储单元重复写108次。针对这一问题,研究人员也提出了很多 技术方案来弥补不足,使得PRAM真正发挥自身的优点。这些技术方 案主要是结合减少冗余写,磨损均衡等技术组成,进而提高PRAM的 使用寿命。

发明内容

(一)要解决的技术问题

本发明的目的是提供一种相变内存周期性磨损均衡方法及其内 存管理方法,基于传统的内存管理方法——伙伴系统进行了重新设 计,在操作系统层面来对相变内存进行控制,达到磨损均衡的目的, 从而提供对相变内存的支持。

(二)技术方案

为了解决上述技术问题,本发明提供一种相变内存周期性磨损均 衡方法,包括步骤:

S1,为相变内存的物理内存维护一个全局写次数计数器 Access_Counter,其中包含了相变内存中每个物理页框的写次数;

S2,为每个子表增加used_list和threshold_list两个双向链表; used_list中保存的是已分配过的空闲块,threshold_list中保存的是目 前写次数已超过阈值的空闲块;同时增加一个全局的bad_list来维护 不能进行分配的内存区域;

S3,在数据写入到物理内存页时,会同步更新全局的写次数计数 器Access_Counter和内存块本次分配期间的累计写次数计数器;

S4,设置一个写入阈值,当内存块本次分配期间的写入次数超过 该写入阈值后,则将该内存块进行释放,并放入到相应子表的 threshold_list中去;同时再申请分配同样大小的内存块,并将数据内 容从旧的内存块中拷贝到新分配的内存块中;

S5,更新页表和刷新页表缓冲中的对应项;当有物理内存页的全 局写次数超过相变存储单元的寿命限度时,将该内存页放入到 bad_list中,永远不进行分配。

优选地,所述步骤S1中的计数器写次数数据保存在相变内存的 特定区域中,当系统重新启动后,依然可以读取到计数器的写次数数 据。

优选地,当子表中维护空闲内存块的free_list中无空闲内存块同 时也无大内存块可以进行分割使用时,将子表的used_list和 threshold_list两个链表合并到free_list中,表示相变内存已完成一次 磨损均衡操作。

本发明还提供一种包括上述的相变内存周期性磨损均衡方法的 内存管理方法,包括步骤:

S10,相变内存相关数据结构的初始化;

S20,相变内存的物理内存分配管理;

S30,相变内存的物理内存回收管理;

S40,相变内存的周期性磨损均衡。

优选地,所述步骤S10是按照经典伙伴系统的初始化规则进行初 始化。

优选地,若空闲内存容量为2m+n个字节,最大阶数为10,则内 存被分为以1024个页为单位的块,通过链表的方式链接在阶数为10 的子表中;其余不够1024个页的内存容量则按页为单位链接在阶数 为0的子表中。

优选地,所述步骤S20包括:

通过计算定位到与请求相匹配的子表,若该子表非空,则将子表 中任意一个空闲块分配即可;若子表不为空,则需要从上一个阶数大 的子表中去查找,若非空则将内存块进行对半分割,一部分返回给内 存请求,剩下的一部分插入到相应的子表中。

优选地,所述步骤S30包括:

S31,在内存使用者请求释放内存时,系统将释放后的空间重新 放入到分配系统的可用空闲空间列表中;其中并不是将空闲空间插入 到原来的free_list中,而是先插入到used_list中;

S32,在内存回收过程中,首先判断两个空闲块释放是否是伙伴; 这时只在子表的free_list中查找伙伴空闲块。

优选地,若内存块的地址为addr,大小为2k,获得伙伴起始地址 的方法如下:

WLBuddyk(addr)=addr+2k(addrMOD2k+1=0);addr-2k(addrMOD2k+1=2k).

(三)有益效果

本发明通过周期性相变内存磨损均衡方法,达到了磨损均衡的目 的的目的,使得在计算机的操作系统中能够很好的支持相变内存,增 强了相变内存的可靠性。

附图说明

图1为本发明相变内存周期性磨损均衡方法的流程图;

图2为本发明内存管理方法的流程图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细 描述。以下实施例用于说明本发明,但不是限制本发明的范围。

如图1所示,本发明所述的相变内存周期性磨损均衡方法,包括 步骤:S1,为相变内存的物理内存维护一个全局写次数计数器 Access_Counter,其中包含了相变内存中每个物理页框的写次数计数 器;写次数数据保存在相变内存的特定区域中,当系统重新启动后, 依然可以读取到计数器的写次数数据;S2,为每个子表增加used_list 和threshold_list两个双向链表;used_list中保存的是已分配过的空闲 块,threshold_list中保存的是目前写次数已超过阈值的空闲块;同 时增加一个全局的bad_list来维护不能进行分配的内存区域;S3,在 数据写入到物理内存页时,会同步更新全局的写次数计数器 Access_Counter和内存块本次分配期间的累计写次数计数器;S4,设 置一个写入阈值,当内存块本次分配期间的写入次数超过该写入阈值 后,则将该内存块进行释放,并放入到相应子表的threshold_list中去; 同时再申请分配同样大小的内存块,并将数据内容从旧的内存块中拷 贝到新分配的内存块中;S5,更新页表和刷新页表缓冲中的对应项; 当有物理内存页的全局写次数超过相变存储单元的寿命限度108时, 将该内存页放入到bad_list中,永远不进行分配。

当子表中维护空闲内存块的free_list中无空闲内存块同时也无大 内存块可以进行分割使用时,将子表的used_list和threshold_list两个 链表合并到free_list中,表示相变内存已完成一次磨损均衡操作。

本发明所述的包括上述的相变内存周期性磨损均衡方法的内存 管理方法,包括步骤:S10,相变内存相关数据结构的初始化;伙伴 系统中维护的是系统中的可用空闲空间列表free_list,按照分割后的 相同大小块链接在一起;S20,相变内存的物理内存分配管理;S30, 相变内存的物理内存回收管理;S40,相变内存的周期性磨损均衡。

所述步骤S10是按照经典伙伴系统的初始化规则进行初始化。若 空闲内存容量为2m+n个字节,最大阶数为10,则内存被分为以1024 个页为单位的块,通过链表的方式链接在阶数为10的子表中;其余 不够1024个页的内存容量则按页为单位链接在阶数为0的子表中。

其中,所述步骤S20具体包括:通过计算定位到与请求相匹配的 子表,若该子表非空,则将子表中任意一个空闲块分配即可;若子表 不为空,则需要从上一个阶级大的子表中去查找,若非空则将内存块 进行对半分割,一部分返回给内存请求,剩下的一部分插入到相应的 子表中。当子表中维护空闲内存块的free_list中无空闲内存块同时也 无大内存块可以进行分割使用时,将子表的used_list和threshold_list 两个链表合并到free_list中。这表示内存系统已完成一次均衡性操作。

所述步骤S30包括:S31,在内存使用者请求释放内存时,系统 需要将释放后的空间重新放入到分配系统的可用空闲空间列表中。在 这里,并不是将空闲空间插入到原来的free_list中,而是先插入到 used_list中;S32,在内存回收过程中,一个重要的问题是将相邻空 闲伙伴合并为一个大块。首先需要判断两个空闲块释放是否是伙伴。 这时只在子表的free_list中查找伙伴空闲块。优选地,若内存块的地 址为addr,大小为2k,获得伙伴起始地址的方法如下:

WLBuddyk(addr)=addr+2k(addrMOD2k+1=0);addr-2k(addrMOD2k+1=2k).

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领 域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以 做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号