CN102495806B - 相变内存周期性磨损均衡方法及其内存管理方法 - Google Patents
相变内存周期性磨损均衡方法及其内存管理方法 Download PDFInfo
- Publication number
- CN102495806B CN102495806B CN201110382040.3A CN201110382040A CN102495806B CN 102495806 B CN102495806 B CN 102495806B CN 201110382040 A CN201110382040 A CN 201110382040A CN 102495806 B CN102495806 B CN 102495806B
- Authority
- CN
- China
- Prior art keywords
- memory
- list
- free
- memory block
- sublist
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000008859 change Effects 0.000 title abstract description 5
- 238000007726 management method Methods 0.000 title abstract 2
- 230000000737 periodic effect Effects 0.000 title abstract 2
- 230000007704 transition Effects 0.000 claims description 39
- 238000005299 abrasion Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000007599 discharging Methods 0.000 claims description 3
- 230000010387 memory retrieval Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明是一种相变内存周期性磨损均衡方法及其内存管理方法,包括步骤:S1,为相变内存的物理内存维护一个全局写次数计数器;S2,为每个子表增加used_list和threshold_list两个双向链表;同时增加一个全局的bad_list来维护不能进行分配的内存区域;S3,在数据写入到物理内存页时,同步更新全局的写次数计数器和内存块本次分配期间的累计写次数计数器;S4,设置一个写入阈值,当内存块本次分配期间的写入次数超过该写入阈值后,则将该内存块进行释放,并放入到相应子表的threshold_list中去;再申请分配同样大小的内存块,并将数据内容从旧的内存块中拷贝到新分配的内存块中;S5,当有物理内存页的全局写次数超过相变存储单元的寿命限度,将该内存页放入到bad_list中,永远不进行分配。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种相变内存周期性磨损均衡方法及其内存管理方法。
背景技术
一种基于相变存储(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,获得伙伴起始地址的方法如下:
(三)有益效果
本发明通过周期性相变内存磨损均衡方法,达到了磨损均衡的目的的目的,使得在计算机的操作系统中能够很好的支持相变内存,增强了相变内存的可靠性。
附图说明
图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,获得伙伴起始地址的方法如下:
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (8)
1.一种相变内存周期性磨损均衡方法,其特征在于,包括步骤:
S1,为相变内存的物理内存维护一个全局写次数计数器Access_Counter,其中包含了相变内存中每个物理页框的写次数;
S2,为每个子表增加used_list和threshold_list两个双向链表;used_list中保存的是已分配过的空闲块,threshold_list中保存的是目前写次数已超过阈值的空闲块;同时增加一个全局的bad_list,该bad_list是用来维护不能进行分配的内存区域的链表;
S3,在数据写入到物理内存页时,会同步更新全局的写次数计数器Access_Counter和内存块本次分配期间的累计写次数计数器;
S4,设置一个写入阈值,当内存块本次分配期间的写入次数超过该写入阈值后,则将该内存块进行释放,并放入到相应子表的threshold_list中去;同时再申请分配同样大小的内存块,并将数据内容从旧的内存块中拷贝到新分配的内存块中;
S5,更新页表和刷新页表缓冲中的对应项;当有物理内存页的全局写次数超过相变存储单元的寿命限度时,将该内存页放入到bad_list中,永远不进行分配。
2.如权利要求1所述的方法,其特征在于,所述步骤S1中的计数器写次数数据保存在相变内存的特定区域中。
3.如权利要求1所述的方法,其特征在于,free_list为子表中维护空闲内存块的列表,当free_list中无空闲内存块同时也无大内存块能够进行分割使用时,将子表的used_list和threshold_list两个链表合并到free_list中,表示相变内存已完成一次磨损均衡操作。
4.一种包括权利要求1-3中任意一项所述的相变内存周期性磨损均衡方法的内存管理方法,其特征在于,包括步骤:
S10,相变内存相关数据结构的初始化;
S20,相变内存的物理内存分配管理;
S30,相变内存的物理内存回收管理;
S40,相变内存的周期性磨损均衡。
5.如权利要求4所述的方法,其特征在于,所述步骤S10是按照经典伙伴系统的初始化规则进行初始化。
6.如权利要求5所述的方法,其特征在于,若空闲内存容量为2m+n个字节,m和n均为正整数,最大阶数为10,则内存被分为以1024个页为单位的块,通过链表的方式链接在阶数为10的子表中;其余不够1024个页的内存容量则按页为单位链接在阶数为0的子表中。
7.如权利要求5所述的方法,其特征在于,所述步骤S30包括:
S31,在内存使用者请求释放内存时,系统将释放后的空间重新放入到分配系统的可用空闲空间列表中;其中并不是将空闲空间插入到原来的free_list中,而是先插入到used_list中;
S32,在内存回收过程中,首先判断两个空闲块释放是否是伙伴;这时只在子表的free_list中查找伙伴空闲块,其中,所述free_list为子表中维护空闲内存块的列表。
8.如权利要求7所述的方法,其特征在于,若内存块的地址为addr,大小为2k,获得伙伴起始地址的方法如下:
其中,k为正整数,WLBuddyk(addr)为伙伴的起始地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110382040.3A CN102495806B (zh) | 2011-11-25 | 2011-11-25 | 相变内存周期性磨损均衡方法及其内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110382040.3A CN102495806B (zh) | 2011-11-25 | 2011-11-25 | 相变内存周期性磨损均衡方法及其内存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495806A CN102495806A (zh) | 2012-06-13 |
CN102495806B true CN102495806B (zh) | 2014-09-03 |
Family
ID=46187631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110382040.3A Active CN102495806B (zh) | 2011-11-25 | 2011-11-25 | 相变内存周期性磨损均衡方法及其内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495806B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981972A (zh) * | 2012-12-25 | 2013-03-20 | 重庆大学 | 一种相变存储器的损耗均衡方法 |
CN104517640B (zh) * | 2013-09-30 | 2017-08-25 | 华为技术有限公司 | 一种相变内存管理方法和装置 |
CN104714894B (zh) * | 2015-03-18 | 2017-08-11 | 清华大学 | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 |
CN104899154B (zh) * | 2015-06-10 | 2017-08-29 | 山东大学 | 基于嵌入式系统混合主存的页面管理方法 |
KR20180014975A (ko) * | 2016-08-02 | 2018-02-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN108446241B (zh) * | 2017-02-16 | 2020-12-08 | 华为技术有限公司 | 内存访问方法及装置 |
CN106934158B (zh) * | 2017-03-13 | 2020-02-18 | 湖南大学 | 相变存储器模拟方法和系统 |
CN107729146A (zh) * | 2017-10-11 | 2018-02-23 | 晶晨半导体(上海)股份有限公司 | 一种内存释放方法 |
US10769074B2 (en) | 2017-11-09 | 2020-09-08 | Microsoft Technology Licensing, Llc | Computer memory content movement |
CN108334279B (zh) * | 2017-12-26 | 2021-04-06 | 金卡智能集团股份有限公司 | 基于负载均衡模式的数据读写方法 |
CN109918317A (zh) * | 2019-03-01 | 2019-06-21 | 重庆大学 | 一种基于磨损感知的nvm条间磨损均衡方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354681A (zh) * | 2008-09-23 | 2009-01-28 | 美商威睿电通公司 | 存储器系统、非易失性存储器的磨损均衡方法及装置 |
CN101477492A (zh) * | 2009-01-21 | 2009-07-08 | 华中科技大学 | 一种用于固态硬盘的循环重写闪存均衡方法 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030046482A1 (en) * | 2001-08-28 | 2003-03-06 | International Business Machines Corporation | Data management in flash memory |
TWI368224B (en) * | 2007-03-19 | 2012-07-11 | A Data Technology Co Ltd | Wear-leveling management and file distribution management of hybrid density memory |
-
2011
- 2011-11-25 CN CN201110382040.3A patent/CN102495806B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354681A (zh) * | 2008-09-23 | 2009-01-28 | 美商威睿电通公司 | 存储器系统、非易失性存储器的磨损均衡方法及装置 |
CN101477492A (zh) * | 2009-01-21 | 2009-07-08 | 华中科技大学 | 一种用于固态硬盘的循环重写闪存均衡方法 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102495806A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102495806B (zh) | 相变内存周期性磨损均衡方法及其内存管理方法 | |
TWI498730B (zh) | 用於對記憶體進行耗損平均之方法,記憶體控制器及裝置 | |
US9128845B2 (en) | Dynamically partition a volatile memory for a cache and a memory partition | |
US9348527B2 (en) | Storing data in persistent hybrid memory | |
US11977484B2 (en) | Adapting in-memory database in hybrid memory systems and operating system interface | |
CN103946819B (zh) | 用于非易失性系统存储器的统计耗损均衡 | |
TWI494922B (zh) | 記憶卡系統中減少頁複製數的寫入與合併方法 | |
Liu et al. | PCM-FTL: A write-activity-aware NAND flash memory management scheme for PCM-based embedded systems | |
Xia et al. | A survey of phase change memory systems | |
CN102508787B (zh) | 混合结构内存的内存分配系统及方法 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
KR20120058352A (ko) | 하이브리드 메모리 시스템, 및 그 관리 방법 | |
CN103608782A (zh) | Lsb页面和msb页面中的选择性数据存储 | |
CN104899154B (zh) | 基于嵌入式系统混合主存的页面管理方法 | |
CN105808156A (zh) | 将数据写入固态硬盘的方法及固态硬盘 | |
JP2015503798A (ja) | Slc−mlc消耗バランシング | |
CN104380262A (zh) | 坏块管理机制 | |
Liu et al. | A block-level flash memory management scheme for reducing write activities in PCM-based embedded systems | |
CN104981785B (zh) | 用于具有受限的写入承受能力的存储器的集合内耗损均衡的方法和设备 | |
Lee et al. | M-CLOCK: Migration-optimized page replacement algorithm for hybrid DRAM and PCM memory architecture | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
KR20130063244A (ko) | 비휘발성 메모리 시스템 | |
CN100377118C (zh) | 基于sram的嵌入式文件系统的实现方法 | |
CN104298615A (zh) | 一种存储器交换分区损耗的均衡方法 | |
CN107544912A (zh) | 一种日志记录方法、加载方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |