CN104794061B - 一种相变存储***损耗均衡方法 - Google Patents
一种相变存储***损耗均衡方法 Download PDFInfo
- Publication number
- CN104794061B CN104794061B CN201510200883.5A CN201510200883A CN104794061B CN 104794061 B CN104794061 B CN 104794061B CN 201510200883 A CN201510200883 A CN 201510200883A CN 104794061 B CN104794061 B CN 104794061B
- Authority
- CN
- China
- Prior art keywords
- write
- data
- segment
- psn
- section
- 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
本发明公开了一种相变存储***损耗均衡方法。本发明首先对当前服务请求,读取地址映射表、预留段表以及寄存器值,获得目标逻辑段号LSN及对应的物理段PSN;然后判断请求类型是读请求还是写请求。若是读请求,直接读取PSN内的数据;反之根据RSA分配机制,重新确定将要写入的物理段PSN。采用Shift‑Flip‑N‑Write算法,将数据写入到正确的物理段PSN中;最后判断是否服务完所有请求。若已服务完,则检测预留段表中是否有无效段。若存在无效预留段,则进行预留段交换。本发明能够均衡相变存储器的写操作,从而延长相变存储器的使用寿命。
Description
技术领域
本发明属于计算机技术领域,涉及一种相变存储***损耗均衡方法。
背景技术
在计算机体系结构中,处理器与存储器是***的两大核心,在过去的几十年时间内,处理器和存储器都在不断的发展更新。随着处理器的处理速度越来越快,存储器也在不断地发展,尤其是主存储器的容量越来越大。
动态随机存取存储器(DRAM)是目前最普遍的主存***的存储技术,具有速度快及可靠性高等优点,但由于是易失性存储器,需要用电来维持存储***中的数据,使得它的静态功耗比较高。随着存储器的容量越来越大,存储***的静态能耗在总存储能耗的比重也直线上升,存储***的能耗在计算机***总能耗中的占比也不断攀升。例如,在服务器应用领域,主存***的能耗大约占到***能耗的40%。因此,具有高密度、低漏电功耗、长寿命等特性的存储器——相变存储器(PRAM)得到了不少研究者的关注。
相变存储器作为非易失存储器,近年来成为了存储器***方面的研究热点,是取代DRAM、FLASH、硬盘等存储产品的最佳候选者。与DRAM相比,PRAM具有:1)良好的可扩放性;2)低漏电流功耗,降低了存储***的能耗;3)数倍于DRAM的存储密度,大大缩小了存储***的体积。因此,在当今阶段开展对PRAM存储器的研究,促进其早日替代DRAM作为计算机主存储器,是一件非常有意义的工作。
相变存储器PRAM因为具有能耗低、存储密度高、非易失性等优点,因而受到广泛的关注和研究,但它同时存在以下两点不足之处:
1)写操作代价高。当PRAM发生读操作时,只需在相变材料两端施加适当电压,然后通过测量电流即可读取存储单元内的数据;当PRAM发生写操作时,需要将PRAM存储单元迅速加热到较高温度,然后再进行冷却,使相变材料转换为晶态或者非晶态,这一过程需要较大的电流。所以PRAM的写操作与读操作是极不对称的,其读操作延时与DRAM在同一水平,功耗比DRAM更占优势;但是写操作代价却非常高,延时约为DRAM的6-10倍,功耗约为DRAM的3-5倍。
2)可写次数有限制。相变存储器利用相变材料的相位变化来存储数据,而相变材料的相位变化是有次数限制的;也就是说,当变化次数超过它的极限的时候,该相变存储器就会失效。目前相变存储器的耐写次数可以达到108-109次,但与DRAM和磁盘的1015次相比仍具有较大的差距。
发明内容
本发明针对上述相变存储器PRAM的不足,提出了一种相变存储***损耗均衡方法,从而延长相变存储器的寿命。
本发明解决技术问题所采取的技术方案:
步骤1:对当前服务请求,读取其地址映射表、预留段表以及寄存器值,从而获得请求的目标逻辑段号LSN及对应的物理段PSN。
步骤2:判断当前的服务请求的类型是读请求还是写请求。若是读请求,执行步骤3;反之执行步骤4。
步骤3:直接读取物理段PSN内的数据,然后转到步骤6。
步骤4:基于预留空间分配机制(RSA:Reserved Space Allocation),重新确定将要写入的物理段PSN。
步骤5:采用Shift-Flip-N-Write算法,将数据写入到正确的物理段PSN中。
步骤6:判断是否服务完所有请求。若已经服务完,执行步骤7;反之执行步骤1。
步骤7:所有请求服务结束后,检测预留段表中是否有无效段,当检测到预留段表中有无效预留段时,则进行预留段交换。
进一步地,如上所述步骤(4)的基于预留空间分配机制RSA,重新确定将要写入的物理段PSN,具体包括以下步骤:
4-1.根据地址映射表,找到物理段PSN,读取该物理段PSN的写操作次数segment_write_count(SWC),若该写操作次数segment_write_count不超过阈值θ(下文对θ等于1024进行了测试,并且取得较好效果),则将该数据写入到该物理段PSN,反之进入步骤4-2。
4-2.当该物理段PSN的写操作次数超过阈值θ,则地址映射表进行地址重映射,将该逻辑段重映射到预留池(Reserved Segment Pool,RSP)中空闲的预留段,原本的物理段则为预留池中的无效段。
进一步地,如上所述的步骤(5)中Shift-Flip-N-Write算法,以8bit作为循环移位的单位,且当该存储行的写入次数超过阈值φ时,进行移位。下文分别对φ等于64,128,256,512,1024进行了实验,由实验可知,256,512为较合适的写操作阈值。
该算法需要额外的空间来保存三个数据:1)行写操作次数row_write _count,用来记录该存储行发生写操作的次数;2)当前的位移偏量offset,记录当前的偏移位,以便下一次的读出或写入;3)翻转位Flip,和Flip-N-Write一样,需要记录当前的数据是否与原数据相反。该算法具体包括以下几个步骤:
(1)首先读出row_write_count和offset数据,若row_write_count小于φ,将row_write_count加1,offset不变;若row_write_count大于等于φ,则将row_write_count置0,offset加1。
(2)将要写入的新数据按照offset×8bit进行移位,并且读出该行的旧数据与移位后的新数据进行对比,若新旧数据的海明距离大于N/2(N为存储行的位宽,一般为32,64),则将新数据取反,写入目标行中,并且将Flip位置1;反之,则直接向新数据写入目标行,Flip位置0。
(3)写入时按位进行对比,当该位的新数据与旧数据不一样时,进行该位的更新。这样,当该数据写入目标地址时,实际更新的比特数将低于或等于N/2。
进一步地,如上所述的步骤(7)中的预留段交换,根据内存控制器中保存的物理段的写操作次数,找出存储空间中的冷存储段,将该冷存储段上的数据写入到无效的预留段中,并且更新地址映射表,写入时执行Shift-Flip-N-Write算法,冷存储段则作为预留段。
本发明有益效果如下:
本发明能够均衡相变存储器的写操作,从而延长相变存储器的使用寿命,保障存储数据的可靠性;同时,本发明在一定程度上降低了相变存储器的写操作次数,从而降低相变存储器的能耗。
附图说明
图1是相变存储***写均衡流程图;
图2是段损耗均衡操作过程;
图3是存储行循环位移装置;
图4是段交换;
图5是更新后的映射表和预留段池;
图6(a)是存储行最高写次数;
图6(b)是存储行最高写次数;
图6(c)是存储行最高写次数;
图6(d)是存储行最高写次数;
图6(e)是存储行最高写次数;
图7是存储行的写操作总数;
图8是存储段的最高写次数。
具体实施方式
以下结合附图对本发明作进一步说明。
一种相变存储***损耗均衡方法,包含存储段写均衡和存储行写均衡两个方面,完整的实施方法如图1所示,包括以下步骤:
步骤1.对当前服务请求,读取地址映射表、预留段表以及寄存器值,从而获得请求的目标逻辑段号LSN及对应的物理段PSN;如图2中的Mapping Table和Reserved SegmentPool。其中LSN(Logical Segment Number)列表示的是逻辑段号,括号内表示的是逻辑段上发生的写操作数;PSN(Physical Segment Number)列表示的是物理段号,括号内表示的是该物理段上发生的写操作次数。如图2中所示,LSN为12所映射的PSN为12,LSN为13所映射的PSN为13,依次类推。
步骤2.判断正在服务的请求的类型是读请求还是写请求。若是读请求,执行步骤3;反之执行步骤4。
步骤3.直接读取PSN内的数据,然后转到步骤6。
步骤4.根据RSA分配机制,重新确定将要写入的物理段PSN;
每一个LSN都会被映射到一个PSN,物理段上的写操作次数的阈值为θ,也就是说当某物理段上写操作发生θ次之后,地址映射表就会进行地址重映射。
(4.1)当写操作次数segment_write_count(SWC)小于θ,将数据写入LSN所映射的PSN中,并且令SWC加1;
(4.2) 当写操作次数segment_write_count(SWC)大于等于θ,则将LSN重映射到空闲预留段PSN’, SWC为0,原来的PSN则暂定为无效预留段。
如图2中PSN为252的物理段发生的写操作次数到达θ后,LSN为252的逻辑段就会映射到预留段池中PSN为300的空闲段,PSN为252的物理段将成为无效段。当PSN为13的存储段发生的写操作次数达到θ次之后,地址映射表就将LSN为13的逻辑段重映射到预留段池中PSN为301的空闲段,当PSN为301的预留段的写操作数到达θ时,逻辑段重映射到PSN为302的预留段。以此类推,最后LSN为13的逻辑段映射的物理段其实是预留段池中PSN为305的存储段。因此,尽管LSN为13的逻辑段上发生的写操作数为4.35θ,但经过地址重映射,4.35θ次写操作被均衡地分配到各个物理段上。
步骤5.采用Shift-Flip-N-Write算法,将数据写入到正确的物理段PSN中;
(5.1)当写入数据时,首先读出行写操作数row_write_count和位移offset数据,若row_write_count小于φ,将row_write_count加1,offset不变;若row_write_count大于等于φ,则将row_write_count置0,offset加1。
(5.2)将要写入的新数据按照offset×8bit进行移位,该循环位移装置如图3所示,并且读出该行的旧数据与移位后的新数据进行对比,若新旧数据的海明距离大于N/2,则将新数据取反,写入目标行中,并且将Flip位置1;反之,则直接向新数据写入目标行,Flip位置0。
(5.3)写入时按位进行对比,当该位的新数据与旧数据不一样时,进行该位的更新。这样,当该数据写入目标地址时,实际更新的比特数将低于或等于N/2。
其中Shift-Flip-N-Write算法的伪代码如下所示:
0: // N: word width
1: // F and F’: new and old flip bit values
2: // C and C’: new and old row_write_count
3: // O and O’: new and ole offset
4: Write(A: address, D: data)
5: C’ = Read_C_Bit(A)
6: O’ = Read_O_Bit(A)
7: if(C’ < φ)
8: C = C’ + 1
9: O = O’
10: else
11: C = 0
12: O = O’ + 1
13: end if
14: D = Left_Round_Shift(8*O, D) //shifting the data
15: D’ = Read(A);
16: F’ = Read_Flip_Bit(A);
17: if hamming_dist({D, 0}, {D’, F’}) > N/2
18: D = ~D; //flip data
19: F = 1; //set flip bit
20: else
21: F = 0; //don’t flip
22: end if
23: for each bit in {D’, F’} and {D, F}
24: if they differ
25: update memory bit
26: end if
27: end for
步骤6.判断是否服务完所有请求。若已经服务完,执行步骤7;反之执行步骤1;
步骤7.所有请求结束时,检测预留段表中是否有无效段,当***检测到预留段表中有无效预留段时,则进行预留段的交换。
首先查找存储空间中的冷存储段,将该冷存储段上的数据写入到无效的预留段中,然后更新映射表,写入时执行Shift-Flip-N-Write算法,冷存储段则作为预留段。
在更换预留段之前,所有失效的物理段都将会重分配,而那些预留段池内的有效段都将与逻辑段一一映射。如图4中,预留段池中PSN为300、305、306、307的物理段将分别与LSN为252、13、121、15的逻辑段一一映射,而LSN为13、15、121、252的物理段将被暂时列为预留段,与其他写操作数超过θ的预留段一样,等待与那些写操作稀疏的物理段进行替换操作。如图4所示,写操作较少的物理段与预留段进行交换操作,将PSN位420的物理段的数据写入到PSN为252的预留段,并且将PSN位420的物理段标志成预留段,PSN为252的物理段与LSN为420的逻辑段进行映射。更新后的映射表和预留段表如图5所示,这些更新的段的segment_write_count重新从0开始记录。
为验证本发明有效性,对本发明方法进行了仿真实验。实验采用GEM5体系结构模拟器进行模拟,为了方便测试存储器中的存储行和存储段上的写操作分布,实验设定PRAM的存储容量为128MB,设定的存储行的大小为128B,即1024bit,设定的存储段的大小为128KB,具体的***配置情况如表1所示。
表1 测试***配置情况
本实验选用了PARSEC2.1测试组件中的4个测试程序和splash2测试组件中的2个测试程序,分别为blackscholes、bodytrace、freqmin、vips、barnes、ocean,它们的简要功能描述如表2所示。
表2 测试程序描述
(1)行写均衡测试
对存储行进行2048次的写操作,比较Flip-N-Write和Shift-Flip-N- Write两个算法下存储行中的每个比特位上最高的写次数。实验分别测试当写操作阈值为64、128、256、512、1024时,该存储行的最高写次数,如图6所示。这是因为该测试的写次数是限定的,为2048次,当写次数阈值越少,需要更新的比特位就会越分散在该存储行中,因而它的最高写次数也就越小。
如图6所示,Shift-Flip-N-Write算法能将存储行内的最高写次数降低,从而均衡写操作。并且由于总写操作次数2048次的限制,使得写操作次数阈值越小,该算法的效果越好。为了进一步研究,对Shift-Flip-N-Write算法和Flip-N-Write算法的对行的写次数总数作比较,Shift-Flip-N-Write算法的写操作阈值分别为64、128、256、512、1024,对应于图6(a)、图6(b)、图6(c)、图6(d)和图6(e),如图7所示。从图中可以看出当写操作阈值越小,存储行的总写操作次数越大,当写操作阈值为64的时候,存储行的总写操作次数最大,比Flip-N-Write算法上升了44%左右。写操作阈值分别为64、128、256、512、1024的时候,存储行的总写操作次数依次增加44%、22%、10%、5%、3%,而存储行中位上的最大写操作次数比Flip-N-Write依次降低85%、73%、61%、38%、10%。从这些数据中可以看出,256和512是比较合适的写操作阈值。
(2)段写均衡测试
对Segment swapping和RSA进行存储段的最大写次数进行测试,设定写操作阈值为1024次,测试结果如图8所示,从图中可以看到,RSA机制比Segment swapping机制更有效地降低存储行的最大写操作次数,有效延长了PRAM的寿命。
Claims (1)
1.一种相变存储***损耗均衡方法,其特征在于该方法的具体步骤如下:
步骤1:对当前服务请求,读取其地址映射表、预留段表以及寄存器值,从而获得请求的目标逻辑段号LSN及对应的物理段PSN;
步骤2:判断当前服务请求的类型是读请求还是写请求;若是读请求,执行步骤3;反之执行步骤4;
步骤3:直接读取物理段PSN内的数据,然后转到步骤6;
步骤4:基于预留空间分配机制RSA,重新确定将要写入的物理段PSN;
步骤5:采用Shift-Flip-N-Write算法,将数据写入到正确的物理段PSN中;
步骤6:判断是否服务完所有请求;若已经服务完,执行步骤7;反之执行步骤1;
步骤7:所有请求服务结束后,检测预留段表中是否有无效段,当检测到预留段表中有无效预留段时,则进行预留段交换;
步骤4中所述的RSA,具体包括以下步骤:
4-1.根据地址映射表,找到物理段PSN,读取该物理段PSN的写操作次数segment_write_count,若该写操作次数segment_write_count不超过阈值θ,则将该数据写入到该物理段PSN,反之进入步骤4-2;
4-2.当该物理段PSN的写操作次数超过阈值θ,则地址映射表进行地址重映射,将该逻辑段重映射到预留池中空闲的预留段,原本的物理段则为预留池中的无效段;
步骤5中所述的Shift-Flip-N-Write算法采用额外的空间来保存三个数据:1)写操作次数row_write_count,用来记录该存储行发生写操作的次数;2)当前的位移偏量offset,记录当前的偏移位,以便下一次的读出或写入;3)翻转位Flip,需要记录当前的数据是否与原数据相反;
具体包括以下步骤:
5-1.首先读出row_write_count和offset数据,若row_write_count小于阈值将row_write_count加1,offset不变;若row_write_count不小于则将row_write_count置0,offset加1;
5-2.将要写入的新数据按照offset×8bit进行移位,并且读出该行的旧数据与移位后的新数据进行对比,若新旧数据的海明距离大于N/2,则将新数据取反,写入目标行中,并且将Flip位置1,N为存储行的位宽;反之,则直接向新数据写入目标行,Flip位置0;
5-3.写入时按位进行对比,当该位的新数据与旧数据不一样时,进行该位的更新;这样,当该数据写入目标地址时,实际更新的比特数将低于或等于N/2;
步骤7的预留段交换分散了预留段的写操作次数;根据内存控制器中存储的数据,查找存储空间中的冷存储段,将该冷存储段上的数据写入到无效的预留段中,并且更新地址映射表,写入时执行Shift-Flip-N-Write算法,冷存储段则作为预留段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510200883.5A CN104794061B (zh) | 2015-04-24 | 2015-04-24 | 一种相变存储***损耗均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510200883.5A CN104794061B (zh) | 2015-04-24 | 2015-04-24 | 一种相变存储***损耗均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794061A CN104794061A (zh) | 2015-07-22 |
CN104794061B true CN104794061B (zh) | 2018-11-02 |
Family
ID=53558870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510200883.5A Active CN104794061B (zh) | 2015-04-24 | 2015-04-24 | 一种相变存储***损耗均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794061B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106057236B (zh) * | 2016-05-24 | 2018-10-16 | 华中科技大学 | 一种相变存储器数据写入方法 |
CN106934158B (zh) * | 2017-03-13 | 2020-02-18 | 湖南大学 | 相变存储器模拟方法和*** |
CN112068775A (zh) * | 2020-09-03 | 2020-12-11 | 南昌航空大学 | 一种提高pcm写性能的优化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102067029B1 (ko) * | 2012-12-13 | 2020-01-16 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
-
2015
- 2015-04-24 CN CN201510200883.5A patent/CN104794061B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息*** |
Non-Patent Citations (3)
Title |
---|
A Durable and Energy Efficient Main Memory Using Phase Change Memory Technology;Ping Zhou等;《ACM SIGARCH computer Architecture News.ACM》;20091231;第37卷(第3期);第14-23页 * |
Flip-N-Write:A Simple Deterministic Technique to Improve PRAM Write Performance,Energy and Endurance;Sangyeun Cho等;《Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture》;20091216;第347-357页 * |
一种基于代数映射的相变内存矩阵磨损均衡方法;杜雨阳等;《计算机研究与发展》;20121215;第49卷(第12期);第2713-2720页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104794061A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8291156B2 (en) | Memory system having hybrid density memory and methods for wear-leveling management and file distribution management thereof | |
JP5728672B2 (ja) | ハイブリッドメモリ管理 | |
US20140006848A1 (en) | Bad block management mechanism | |
US9189313B2 (en) | Memory system having NAND-type flash memory and memory controller with shift read controller and threshold voltage comparison module | |
CN103765392A (zh) | 存储器装置的损耗均衡 | |
CN102306503B (zh) | 一种假容量存储器的检测方法及*** | |
TWI644209B (zh) | 記憶體管理 | |
CN101641679A (zh) | 用于***管理的多级单元选择的多程序 | |
US11735254B2 (en) | Error avoidance based on voltage distribution parameters of blocks | |
CN104794061B (zh) | 一种相变存储***损耗均衡方法 | |
CN113590505B (zh) | 地址映射方法、固态硬盘控制器及固态硬盘 | |
US11664085B2 (en) | Managing data disturbance in a memory with asymmetric disturbance effects | |
US11705193B2 (en) | Error avoidance based on voltage distribution parameters | |
CN109726140A (zh) | 非易失性存储器件及其操作方法以及存储设备 | |
US11615858B2 (en) | Media management operations based on health characteristics of memory cells | |
US11705192B2 (en) | Managing read level voltage offsets for low threshold voltage offset bin placements | |
JP5367357B2 (ja) | メモリシステムおよびコンピュータシステム | |
US10740026B2 (en) | Time indicator of super block operations | |
US20240069776A1 (en) | Super block management for efficient utilization | |
US12002516B2 (en) | Memory block characteristic determination | |
CN111949197B (zh) | 一种3d tlc闪存存储器及其数据写入方法和装置 | |
US20240177760A1 (en) | Probabilistic data integrity scans using risk factor estimation | |
US12013792B2 (en) | Error avoidance for partially programmed blocks of a memory device | |
Shi et al. | Read latency variation aware performance optimization on high-density NAND flash based storage systems | |
US20240061589A1 (en) | Code rate as function of logical saturation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190906 Address after: 310000 Room B601, Building 209, No. 3 Street, Baiyang Street, Hangzhou Economic and Technological Development Zone, Hangzhou, Zhejiang Province Patentee after: Hangzhou Xinxiao Information Technology Co., Ltd. Address before: Hangzhou City, Zhejiang province 310018 Xiasha Higher Education Park No. 2 street Patentee before: Hangzhou Electronic Science and Technology Univ |
|
TR01 | Transfer of patent right |