CN105117175B - 一种基于软件编译层的可变电阻式存储器磨损均衡方法 - Google Patents
一种基于软件编译层的可变电阻式存储器磨损均衡方法 Download PDFInfo
- Publication number
- CN105117175B CN105117175B CN201510569734.6A CN201510569734A CN105117175B CN 105117175 B CN105117175 B CN 105117175B CN 201510569734 A CN201510569734 A CN 201510569734A CN 105117175 B CN105117175 B CN 105117175B
- Authority
- CN
- China
- Prior art keywords
- variable
- address
- size
- resistance type
- write
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种基于软件编译层的可变电阻式存储器磨损均衡方法,它包括以下步骤:1、根据程序的特征,将程序划分为多个程序区域,并统计出各个变量的写操作次数和变量的大小;2、根据内存未被占用的空间大小,动态地配置可变电阻式存储器SLC和MLC的大小;3、为各个变量分配合适的地址,为写频繁的变量分配高性能和寿命长的单层单元,为写不频繁的变量分配容量大的多层单元,4、把编译好的程序,在嵌入式系统上执行,以获得可变电阻式存储器上的磨损均衡。本发明具有以下技术效果:磨损均衡性更好,进一步提高了可变电阻式存储器的使用寿命;仅需很低的执行时间和存储开销,没有硬件开销。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及一种可变电阻式存储器的磨损均衡方法。
背景技术
通用的DRAM存储器受限于能耗大、容量难扩展等问题。一种新型能耗低、容量大、非易失性的存储器有望替代传统的DRAM存储器,如:记忆组存储器、可变电阻式存储器(PCM)。特别的是,可变电阻式存储器PCM可以实现多层单元(Multi-Level Cell,MLC),也就是一个单元可以存放两个或两个以上的比特。与单层单元(Single-Level Cell,SLC)相比,MLC可得到较高密集性和较大的容量。然而,这个优势也导致相应的代价,由于需要更精密的感应和控制PCM单元的电阻,增加了相应的访问延迟以及减少了寿命。
一般情况下,一个典型SLC PCM单元能容忍大约107-108次写操作,一个典型的MLCPCM单元仅能容忍105次写操作。MLC PCM单元的寿命给可变电阻式存储器带来了巨大的挑战。由于典型的嵌入式程序的写操作,常常以一种极不平衡的方式写到内存上,例如:大部分写操作集中在少量的变量。写操作频繁的变量,对存放该变量的位置磨损大,频繁地对该位置擦写,加速了可变电阻式储的MLC PCM单元磨损。若不进行合理管理,可变电阻式存储器可能会在几十秒内被损坏。为了延长可变电阻式存储器的寿命,许多技术被提出来,例如:
现有技术之一:M.K.Qureshi,M.M.Franceschini,L.A.Lastras-Montano,andJ.P.Karidis,“Morphable memory system:a robust architecture for exploitingmulti-levelphase change memories,”in Proceedings of the 37th InternationalSymposium on Computer Architecture(ISCA’10),vol.38,pp.153–162,2010.(M.K.Qureshi,M.M.Franceschini,L.A.Lastras-Montano,和J.P.Karidis,“可变内存系统:一个基于多层相变存储器的健壮架构”,第37届计算机体系结构上国际研讨会议(ISCA),2010),它根据工作量负荷请求,动态地控制内存系统每个单元存放比特的数目。具体方法是把内存分为两个区域,一个高密度高延迟的区域(HDPCM),由MLC模式的内存页构成;一个是低延迟低密度的区域(LLPCM),每个单元的存放比特数是HDPCM区域每个单元存放比特数的一半。在硬件层添加一个内存监控电路(Memory Monitoring circuit,MMON)来跟踪工作负载的内存需求。周期性的执行MMON跟踪信息,根据信息,进行评估并确定LLPCM和HDPCM区域的最佳划分。如果访问发生在HDPCM区域的页面,这样的页面将被升级到LLCPM区域,来减少后续访问的延迟。允许自动地在LLPCM和HDPCM区域之间转换,提供低延迟LLPCM区域给频繁访问的页。现有技术一有以下几个缺点:需要在硬件上的支持。该技术需要内存监控电路来周期性跟踪信息,和单独的硬件架构来记录内存页的物理位置;周期性监控内存负责量,进行调节,开销大。
现有技术之二:R.Zhou and T.Li,“Leveraging phase change memory toachieve efficient virtual machine execution,”in Proceedings of ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments(VEE’13),pp.179–190,2013.(R.Zhou和李涛,“利用相变内存来实现高效的虚拟机执行”,虚拟执行环境上的ACM SIGPLAN/SIGOPS国际会议(VEE’13),2013),它的内存页管理包含信息收集器和负载平衡器,定制了之前的内存缺页错误监控方法。把缺页错误分为了SLC缺页错误和MLC缺页错误。信息收集器用这两种类型的缺页错误来收集内存位置的统计信息。仅当MLC缺页错误会触发负载平衡器,来调节SLC和MLC内存页的数目、每个虚拟机中的balloon driver大小。运用了采样算法来周期性跟踪内存缺页信息。根据虚拟内存页使用的LRU直方图,来计算每个虚拟机的缺页曲线。根据缺页曲线,针对不同虚拟机建立相应的SLC、MLC的效益函数。当增减一页SLC、MLC内存页,都会带来相应的效益改变。根据效益增减的大小对比,来确定是否增加MLC和SLC。现有技术二的缺点:监控内存缺页情况,来计算相应的效益函数值,不可避免,会导致不小的开销;仅根据内存缺页,来调控MLC和SLC的转换。这些现有技术存在巨大的写开销和运行开销,并且大多都需要硬件和操作系统的支持,从而限制了可变电阻式存储器在嵌入式系统上的实际应用。
发明内容
针对现有技术的不足,本发明所要解决的技术问题是从软件编译器的层面,根据访问模式,提供一种基于软件编译层的可变电阻式存储器磨损均衡方法,它能有效的改善可变电阻式存储器在嵌入式系统中的使用寿命,并且具有很低的时间和存储开销,不需要任何硬件支持。
本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:
步骤1、根据程序的特征,将程序划分为多个程序区域,并统计出各个变量的写操作次数和变量的大小;
步骤2、根据内存未被占用的空间大小,动态地配置可变电阻式存储器单层单元和多层单元的大小;
步骤3、为各个变量分配合适的地址,为写频繁的变量分配高性能和寿命长的SLC,为写不频繁的变量分配容量大的MLC;
步骤4、把编译好的程序,在嵌入式系统上执行,以获得可变电阻式存储器上的磨损均衡。
由于本方法发明结合了可变电阻式存储器SLC和MLC的优势来平衡写分布;并且本方法在编译时间完成,具有很低的执行时间和存储开销;因为不需要操作系统或硬件的支持,所以没有硬件开销。又因为现有技术针对内存页进行分配,而本发明针对变量进行分配,具有更好的细粒度性,所以能获得更好的磨损均衡。
与现有技术相比,本发明具有以下技术效果:磨损均衡性更好,进一步提高了可变电阻式存储器的使用寿命;仅需很低的执行时间和存储开销,没有硬件开销。
附图说明
本发明的附图说明如下:
图1为本发明中程序划分为程序区域的示意图;
图2为本发明的可变电阻式存储器空间划分流程图;
图3本发明的数据分配流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
本发明包括以下步骤:
步骤1、根据程序的特征,将程序划分为多个程序区域,并统计出各个变量的写操作次数和变量的大小;
步骤2、根据内存未被占用的空间大小,动态地配置可变电阻式存储器单层单元和多层单元的大小;
步骤3、为各个变量分配合适的地址,为写频繁的变量分配高性能和寿命长的SLC,为写不频繁的变量分配容量大的MLC,从而减少可变程序的访问延迟,并改善可变电阻式存储器寿命;
步骤4、把编译好的程序,在嵌入式系统上执行,以获得可变电阻式存储器上的磨损均衡。
如图1所示,程序可以划分为多个程序区域。程序区域划分可根据程序点:1)每个内部程序的开始与结尾;2)每个循环的开始与结尾。然后,根据划分的程序区域,采用程序的静态分析技术(profiling),统计每个程序区域里静态变量和局部变量的大小,并记录每个变量的写操作次数。参考文献如下:
J.Hu,Q.Zhuge,C.J.Xue,W.-C.Tseng,and E.H.-M.Sha,“Low Overhead SoftwareWear Leveling for Hybrid PCM+DRAM Main Memory on Embedded Systems,”IEEETransation VLSI Systems,vol.23,no.4,pp.654–663,2015.(胡京通,诸葛晴凤,薛春,W.-C.Tseng和沙行勉,“基于混合PCM+DRAM内存的嵌入式系统上的低开销软件磨损均衡”,IEEE超大规模集成系统(TVLSI),2015)
然后,根据程序各个区域变量的信息,动态地配置可变电阻式存储器SLC大小和MLC大小,最后,动态地为各个程序区域的变量分配地址空间,尽可能地将写频繁的变量分配到SLC内存空间,其余的变量分配到MLC内存空间。
如图2所示,上述步骤2中动态地配置可变电阻式存储器SLC大小和MLC大小的流程如下:该流程开始于步骤201,
在步骤202,输入程序所有区域的所有变量大小si,j,写操作次数wi,j,以及可变电阻式存储器各单元的MLC大小MPCM;
在步骤203,根据多个程序区域的写信息,计算需要的内存大小:式中,i代表程序的第i个区域,k代表程序第i个区域的变量数目,Mi为程序区域i需要的内存大小,si,j代表程序的第i区域中第j个变量大小;
在步骤204,根据区域需要的内存大小,计算出空闲内存大小:式中,Fi代表程序区域i的空闲内存大小,m代表可变电阻式存储器第m个单元,N代表可变电阻式存储器的单元总数;并根据区域空闲内存大小,尽可能的合并多层单元为单层单元:式中,Mslc代表SLC的大小,代表MLC的密度,Min(Fi)代表Fi的最小值,即所有程序区域执行时至少空闲的内存大小;由此可得MLC的大小:Mmlc=P-Min(Fi),式中,P代表可变电阻式存储器的MLC大小;
在步骤205,输出可变电阻式存储器中的SLC大小Mslc和MLC大小Mmlc;
在步骤206,程序结束。
如图3所示,上述步骤3中各个变量地址分配的流程如下:该流程开始于步骤301,
在步骤302,输入程序所有区域的所有变量大小si,j与写操作次数wi,j,以及可变电阻式存储器的大小M=Mslc+Mml,c式中,Mslc为可变电阻式存储器中的SLC大小,Mmlc为MLC大小;
在步骤303,建立一个数组W记录每个地址的写次数;
在步骤304,建立一个数组B记录每个地址的磨损度,磨损度等于该地址的写次数除以该地址的最大写次数:公式中Wh代表该地址的写次数,E代表改地址的最大写次数,如果该地址为SLC,那么就是SLC的最大写次数(108);相反则是MLC的最大写次数(106);并初始化存储器的写操作阈值T;
在步骤305,对程序区域i和变量j初始化,i=1,j=1表示第一个程序区域的第一个变量;
在步骤306,判断变量Vi,j是否已经存放在可变电阻式存储器上;若是,则执行步骤307;否则执行步骤309;
在步骤307,针对已存放在可变电阻式存储器的变量,检查变量写次数与该地址之前的写次数之和是否大于该地址的写阈值,如是,则执行步骤309,否则执行步骤308;
对该地址位于MLC,写阈值为T;为了保证SLC与MLC的寿命一致,对该地址位于SLC,写阈值为α*T,α代表单层单元的最大写次数与多层单元的最大写次数的倍数;α依据不同可变电阻式存储器的写特性获得,如SLC的最大写次数为108,MLC的最大写次数为106,α则为100;T的最小取值为1,最大取值为该地址的最大写次数;
在步骤308,不移动变量,更新W和B的信息,接下来执行步骤313;
在步骤309,在数组B中,需找具有最小磨损度的地址;
在步骤310,检查变量写次数与该地址之前的写次数之和是否大于该地址的写阈值,如是,则执行步骤312,否则执行步骤311;
在步骤311,移动变量到该地址,更新W和B的信息;接下来执行步骤313;
在步骤312,没有可行的分配方案,增加写操作阈值T;转执行步骤306;
在步骤313,j加1,判断变量j是否是大于程序区域的变量数目;若是,则执行步骤314;否则执行步骤306;
在步骤314,i加1,判断i是否是大于程序的区域数目;若是,则执行步骤315;否则设定j=1并执行步骤306;
在步骤315,输出地址分配信息;
在步骤316,程序结束。
Claims (2)
1.一种基于软件编译层的可变电阻式存储器磨损均衡方法,其特征是,包括以下步骤:
步骤1、根据程序的特征,将程序划分为多个程序区域,并统计出各个变量的写操作次数和变量的大小;
步骤2、根据内存未被占用的空间大小,动态地配置可变电阻式存储器单层单元和多层单元的大小,具体步骤如下:
步骤(1)根据多个程序区域的写信息,计算需要的内存大小:式中,i代表程序的第i个区域,k代表程序第i个区域的变量数目,Mi为程序区域i需要的内存大小,si,j代表程序的第i区域中第j个变量大小;
步骤(2)根据区域需要的内存大小,计算出区域的空闲内存大小:Fi=P-Mi,式中,Fi代表程序区域i的空闲内存大小,P代表可变电阻式存储器的MLC大小;
步骤(3)根据区域空闲内存大小,为了提高存储器的寿命和性能,尽可能的合并MLC为SLC:式中,Mslc代表SLC的大小,代表MLC的密度,Min(Fi)代表Fi的最小值,即所有程序区域执行时至少空闲的内存大小;由此可得MLC的大小:Mmlc=P-Min(Fi);
步骤3、为各个变量分配合适的地址,为写频繁的变量分配高性能和寿命长的SLC,为写不频繁的变量分配容量大的MLC;
步骤4、把编译好的程序,在嵌入式系统上执行,以获得可变电阻式存储器上的磨损均衡。
2.根据权利要求1所述的基于软件编译层的可变电阻式存储器磨损均衡方法,其特征是,所述步骤3 中变量地址分配包括以下步骤:
步骤1)建立一个数组W记录每个地址的写次数;
步骤2)建立一个数组B记录每个地址的磨损度,磨损度等于该地址的写次数除以该地址的最大写次数:公式中Wh代表该地址的写次数,E代表该地址的最大写次数,若该地址为SLC,则SLC的最大写次数为108;若该地址为MLC,MLC的最大写次数为106;
步骤3)为可变电阻式存储器设定两个写阈值,T为MLC的写阀值;SLC的写阈值设定为α*T,其中,α代表SLC的最大写次数是MLC的最大写次数的倍数;α依据不同可变电阻式存储器的写特性获得,T的最小取值为1,最大取值为该地址的最大写次数;
步骤4)针对每个程序区域,根据变量是否已经在可变电阻式存储器中,分为两种类:已存放的变量和将要存放的变量;
步骤5)针对已存放的变量,检查变量写次数与该地址之前的写次数之和,是否大于该地址的写阈值T或者α*T;
若是,需找具有最小磨损度的地址,检查变量写次数与该地址之前的写次数之和,是否大于该地址的写阈值T或者α*T;若是,则增加阈值的大小;否则移动变量到该地址,更新W和B的信息;
如果小于或者等于写阈值,不移动变量,更新W和B的信息;
步骤6)针对将要存放的变量,寻找具有最小磨损度的地址,检查变量写次数与该地址之前的写次数之和,是否大于该地址的写阈值T或者α*T;若是,则增加阈值的大小;否则移动变量到该地址,更新W和B的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510569734.6A CN105117175B (zh) | 2015-08-18 | 2015-09-09 | 一种基于软件编译层的可变电阻式存储器磨损均衡方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510508326X | 2015-08-18 | ||
CN201510508326 | 2015-08-18 | ||
CN201510569734.6A CN105117175B (zh) | 2015-08-18 | 2015-09-09 | 一种基于软件编译层的可变电阻式存储器磨损均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117175A CN105117175A (zh) | 2015-12-02 |
CN105117175B true CN105117175B (zh) | 2018-02-02 |
Family
ID=54665178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510569734.6A Active CN105117175B (zh) | 2015-08-18 | 2015-09-09 | 一种基于软件编译层的可变电阻式存储器磨损均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117175B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920386B (zh) * | 2018-07-20 | 2020-06-26 | 中兴通讯股份有限公司 | 面向非易失性内存的磨损均衡及访问方法、设备和存储介质 |
CN109117546B (zh) * | 2018-08-08 | 2023-03-14 | 北方电子研究院安徽有限公司 | 一种显示互连线寄生电阻的方法 |
CN112527695B (zh) * | 2020-12-17 | 2022-10-11 | 重庆邮电大学 | 一种基于效益感知的slc/mlc混合内存的页面转换方法 |
CN113010112B (zh) * | 2021-03-09 | 2022-11-11 | 重庆邮电大学 | 一种基于可变电阻式存储器的数据分配优化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101874239A (zh) * | 2007-11-19 | 2010-10-27 | 三德动力有限公司 | 基于写入频率将数据写入不同的存储设备 |
CN102142277A (zh) * | 2010-01-28 | 2011-08-03 | 深圳市江波龙电子有限公司 | 一种存储器及存储器读写控制方法及系统 |
-
2015
- 2015-09-09 CN CN201510569734.6A patent/CN105117175B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101874239A (zh) * | 2007-11-19 | 2010-10-27 | 三德动力有限公司 | 基于写入频率将数据写入不同的存储设备 |
CN102142277A (zh) * | 2010-01-28 | 2011-08-03 | 深圳市江波龙电子有限公司 | 一种存储器及存储器读写控制方法及系统 |
Non-Patent Citations (2)
Title |
---|
A space allocation and reuse strategy for PCM-based embedded;Linbo Long,Duo Liu etc.;《Journal of Systems Architecture》;20140930;第60卷(第8期);全文 * |
A space-based wear leveling for PCM-based embedded systems;Linbo Long,Duo Liu etc.;《Embedded and Real-Time Computing Systems and Applicationis》;20140206;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105117175A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10236070B2 (en) | Read level tracking and optimization | |
US10552288B2 (en) | Health-aware garbage collection in a memory system | |
CN105117175B (zh) | 一种基于软件编译层的可变电阻式存储器磨损均衡方法 | |
CN101777026B (zh) | 一种存储管理方法、硬盘及存储系统 | |
US10254981B2 (en) | Adaptive health grading for a non-volatile memory | |
CN102047230A (zh) | 混合式存储器管理 | |
KR20090093626A (ko) | 메모리 시스템 및 그것의 블록 병합 방법 | |
US10956049B2 (en) | Wear-aware block mode conversion in non-volatile memory | |
CN102047341A (zh) | 用于混合非易失性固态存储系统的疲劳管理系统和方法 | |
WO2012161659A1 (en) | A memory storage device, and a related zone-based block management and mapping method | |
CN103562883A (zh) | 存储器装置中的动态存储器高速缓存大小调整 | |
US20210149592A1 (en) | Memory controllers for solid-state storage devices | |
CN109002257A (zh) | 一种基于可变便笺存储器的数据分布优化方法 | |
US11698754B2 (en) | Coalescing read commands by location from a host queue | |
US20230229308A1 (en) | Storage device read-disturb-based block read temperature utilization system | |
Hong et al. | Improving SSD performance using adaptive restricted-copyback operations | |
Yao et al. | HDFTL: An on-demand flash translation layer algorithm for hybrid solid state drives | |
US20110138110A1 (en) | Method and control unit for performing storage management upon storage apparatus and related storage apparatus | |
CN106569728B (zh) | 多磁盘阵列raid共享写缓存的处理方法及装置 | |
CN109947589B (zh) | 一种闪存中近似数据存储方法 | |
US11797199B2 (en) | Balancing utilization of memory pools of physical blocks of differing storage densities | |
US10552086B2 (en) | Global pool of garbage collection units (GCUs) in a shared non-volatile memory device | |
CN101866321B (zh) | 一种高速缓存管理策略的调整方法及系统 | |
Cui et al. | Exploiting uncorrectable data reuse for performance improvement of flash memory | |
Zhao et al. | Adaptive one-way SLC/TLC mode conversion in high density SSDs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |