CN105427892B - 一种面向相变存储的非均匀纠错方法及相变存储装置 - Google Patents
一种面向相变存储的非均匀纠错方法及相变存储装置 Download PDFInfo
- Publication number
- CN105427892B CN105427892B CN201510818957.1A CN201510818957A CN105427892B CN 105427892 B CN105427892 B CN 105427892B CN 201510818957 A CN201510818957 A CN 201510818957A CN 105427892 B CN105427892 B CN 105427892B
- Authority
- CN
- China
- Prior art keywords
- error correction
- data
- storage
- resistance value
- region
- 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
- Error Detection And Correction (AREA)
Abstract
本申请公开了一种面向相变存储的非均匀纠错方法及相变存储装置,其采用非均匀纠错方法,在对多值相变存储单元的阻值漂移程序预测的基础上,按照信息熵的大小将阻值区域进行重新划分,在存储状态的阻值交叠区域,对熵较大的阻值交叠区域,划分更多的量化级(即纠错区域),而在熵较小的阻值交叠区域,划分较少的量化级。通过这种非均匀量化方式,在相同的误码率下,软件硬开销和延迟都较小,或者说,在软件硬开销和延迟一定的情况下,本申请的误码率更低,数据读取和存储的准确度更高。
Description
技术领域
本申请涉及相变存储领域,尤其涉及一种面向相变存储的非均匀纠错方法及相变存储装置。
背景技术
相变存储器(Phase Change Memory:PCM)是一种基于硫系化合物(例如Ge2Sb2Te5,以下简称GST)作为相变材料的非易失型存储器。如图1所示,为一种相变存储器存储单元的典型结构,其主要包括顶部电极、相变材料、热绝缘体、电阻(加热器)、底部电极。数据存储在位于中间的相变材料中。相变材料顶部通过顶部电极连接到位线(bit-line,BL),底部电极连接到控制端。当被持续时间不同、幅度不同的电流脉冲加热时,相变材料可以在晶态和非晶态之间转化。当相变材料处于晶态时,其电阻值较低;当相变材料处于非晶态时,其电阻值较高。这两个不同状态的电阻值之间相差数个数量级,同时掉电以后仍然会保持相应状态,这使相变存储器成为优良的非易失存储器。
因此,在相变存储器中,数据的存储是通过对相变材料的配置来实现的,存储在相变存储器中的数据“0”和“1”就是利用相变材料在晶态和非晶的阻值差异来进行区分的,通过对相变材料施加不同幅值与宽度的电流和电压脉冲使其在晶态和非晶态之间转变。然后通过测量其阻值,并与参考阈值电阻比较得到其存储的信息。又由于晶态和非晶态电阻存在着数个数量级的电阻值的差异,因此可以通过不完全结晶化实现一个存储单元中存储多位数据(Multilevel Per Cell,MLC)。
相变存储器存在读写串扰、结晶化、耐久性失效和阻值漂移等问题。实际读写中,运用纠错技术进行纠错以保证数据读写和存储的可靠性。一般使用存储控制器完成纠错、存储驱动、接口适配等功能,如图2所示。
实际存储中,阻值漂移是影响相变存储的主要问题,其会使得相变存储器中相变材料的阻值会随着时间的推移而发生变化。这时,相邻存储状态所对应的阻值范围会出现一定交叠,存储时间越长,交叠部分越大,当读取的阻值位于交叠区域时,不能直接判定其存储状态,从而影响数据读取的可靠性。因此阻值漂移会给相变存储器的应用带来不利的影响,主要表示为对相变存储器的数据读取时误码率的增加,读出值判定错误等。在相变存储器中表示多位信息的存储单元中(即多值存储单元),由于其有效阻值范围被划分成多个小的区域来表示多个信息值,每个信息值对应的阻值范围成倍缩小,因此相对二值存储单元,阻值漂移现象对其造成的影响将更为显著,故而一个存储单元中存储的比特数越多则由于阻值漂移信息其造成的误码率越大。
目前针对上述问题提出的纠错方法有很多,其中一个纠错效果较好的方法是基于时称感知纠错的软判决方法,具体如下:
对待存入数据进行编码,将编码后的数据写入相变存储器中,同时保存写入时间,在读取数据时,通过上述写入时间计算出数据存储时间,根据存储时间计算出阻值分布的概率密函数,从而将整个阻值范围划分成大小相同的若干纠错区域以完成阻值量化,计算每一个数据比特的对数似然比,根据对数似然比进行纠错译码。
上述方法是将阻值分布范围均匀划分成若干范围大小相同的纠错区域(均匀量化纠错),为了保证在交叠比较大的部分也能够正常读取数据,保证误码率低于一可接接受的范围,需要将阻值分布范围均匀划分成数量较多的若干范围大小相同的纠错区域。因此,软判决译码需要的对数似然比信息也需要对相变存储单元进行高精度的阻值量化读取,从而导致相变存储器阵列与存储控制器之间传输延迟的增大。
发明内容
为解决上述均匀量化纠错的问题,本申请提供一种面向相变存储的非均匀纠错方法及相变存储装置。
根据本申请的第一方面,一种实施例提供一种面向相变存储的非均匀纠错方法,其包括以下步骤:
对待存入相变存储器的数据进行纠错编码;
将经过纠错编码的数据以及数据写入时间写入相变存储器;
当读取数据时,读取数据对应的写入时间;
根据写入时间计算出数据在相变存储器中的存储时间;
根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;
计算各阻值交叠区域的熵;
将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
计算各纠错区域的对数似然比;
判断读取的数据的阻值位于哪一区域,当位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
另一种实施例还提供另一种面向相变存储的非均匀纠错方法,包括以下步骤:
预先设置若干存储时间;
对于每一个预先设置的存储时间:根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;计算各阻值交叠区域的熵;将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;计算各纠错区域的对数似然比;
对待存入相变存储器的数据进行纠错编码;
将经过纠错编码的数据以及数据写入时间写入相变存储器;
当读取数据时,读取数据对应的写入时间;
根据写入时间计算出数据在相变存储器中的存储时间;
将所述计算出的存储时间,与预先设置的若干存储时间比较,得到一与所述计算出的存储时间最接近的预先设置的存储时间,并依此获得对应的纠错区域范围;
判断读取的数据的阻值位于所述最接近的预先设置的存储时间下的哪一区域,当位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
根据本申请的第二方面,一种实施例提供一种相变存储装置,包括:
纠错编码器,用于对待存入相变存储器的数据进行纠错编码;
存储控制器,用于将经过纠错编码的数据以及数据写入时间写入一相变存储器;
存储时间计算单元,用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间;
阻值交叠区确定单元,用于根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;
熵计算单元,用于计算各阻值交叠区域的熵;
纠错区域划分单元,用于将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
对数似然比计算单元,用于计算各纠错区域的对数似然比;
阻值量化单元,用于判断读取的数据的阻值位于哪一区域;
纠错译码器,用于当判断的结果为读取的数据的阻值位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
另一实施例提供另一种相变存储装置,包括:
纠错编码器,用于对待存入相变存储器的数据进行纠错编码;
存储控制器,用于将经过纠错编码的数据以及数据写入时间写入一相变存储器;
存储时间计算单元,用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间;
存储时间判断单元,预先设置若干存储时间,用于将所述计算出的存储时间,与预先设置的若干存储时间比较,得到一与所述计算出的存储时间最接近的预先设置的存储时间;
第一查找表,存储有每一个预先设置的存储时间下的纠错区域范围,其中,纠错区域范围通过以下方式计算:对于每一个预先设置的存储时间:根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;计算各阻值交叠区域的熵;将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
第二查找表,存储有与第一查找表中每一个预先设置的存储时间下的各纠错区域范围对应的对数似然比;
阻值量化单元,用于判断读取的数据的阻值位于所述第一查找表中所述最接近的预先设置的存储时间下的哪一区域;
纠错译码器,用于当判断的结果为读取的数据的阻值位于纠错区域时,根据所述第二查找表中此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
本申请的有益效果是:
依上述实施的面向面向相变存储的非均匀纠错方法及相变存储装置,通过计算确定阻值交叠区域以及各交叠区域的熵,将所有阻值交叠区域划分成熵大致相等的若干纠错区域,从而使得熵较大的交叠区域划分有较多的纠错区域,熵较小的交叠区域划分有较少的纠错区域,因此在相同误码率性能的要求下,本申请非均匀量化纠错所需的纠错区域少于均匀量化纠错,阻值量化后的数据长度更短,使得相同误码率性能的要求下,本申请延迟较小,同时硬件开销也小。
依上述实施的面向面向相变存储的非均匀纠错方法及相变存储装置,由于预先设置若干存储时间,并预先计算出每个存储时间点下的纠错区域的阻值范围以及相应的对数似然比,将计算结果存入查找表中,因此,在读取数据时直接根据查找表查找出相应的结果进行译码,从而减少了时间与硬件资源的消耗。
附图说明
图1为相变存储器的存储单元的一种典型结构示意图;
图2为本申请相变存储器与相变存储控制器的结构示意图;
图3为本申请一种实施例的面向相变存储的非均匀纠错方法的流程示意图;
图4为本申请一种实施例的相变存储装置的结构示意图;
图5为本申请一种实施例的终止译码单元的硬件结构示意图;
图6为本申请另一种实施例的面向相变存储的非均匀纠错方法的流程示意图;
图7为本申请另一种实施例的相变存储装置的结构示意图;
图8为本申请一种实施例中采用本申请的方案与传统的方案的读取级数仿真结果对比图;
图9为本申请一种实施例中采用本申请的方案与传统的方案的传输延迟仿真结果对比图。
具体实施方式
下面通过具体实施方式结合附图对本申请作进一步详细说明。
实施例一:
本申请的发明构思在于,采用非均匀纠错方法,在对多值相变存储单元的阻值漂移程序预测的基础上,按照信息熵的大小将阻值区域进行重新划分,在存储状态的阻值交叠区域,划分更多的量化级(即纠错区域),而在存储状态的阻值非交叠区域,不划分或划分较少的量化级。通过这种非均匀量化方式,在相同的误码率下,软件硬开销和延迟都较小,或者说,在软件硬开销和延迟一定的情况下,本申请的误码率更低,数据读取和存储的准确度更高。下面具体说明。
请参照图3,本实施例提出一种面向面向相变存储的非均匀纠错方法(以下简称非均匀纠错方法),包括以下步骤。
在写入数据时:
步骤S11、对待存入相变存储器的数据进行纠错编码。在一实施例中,纠错编码和译码所用的码字为LDPC码。
步骤S13、将经过纠错编码的数据以及数据写入时间写入相变存储器。为了保证数据写入时间的存储可靠性,在一实施例中,数据写入时间采用二值存储,数据采用二值或多值存储。因为数据写入时间采用每存储单元存储1比特数据的相变存储器行进行存储,其受到阻值漂移而导致的误码率比较小。
在读取数据时:
步骤S21、当读取数据时,读取数据对应的写入时间。
步骤S23、根据写入时间计算出数据在相变存储器中的存储时间。将当前读取数据的时间减去步骤S13中数据写入时间即可得到数据在相变存储器中的存储时间。
步骤S25、根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域。每个相变存储单元可以存储若干个状态,若可以存储2个状态,则其为二值存储,若可以存储2个以上状态,则为多值存储状态,具体地,每一个存储单元中可以存储n比特数据,则其存储状态数m=2n,其中n为正整数。
相变存储中相变材料的阻值漂移服从以下公式:
式(1);
其中,R0代表处于各个不同相的相变材料所具有的初始阻值,t0代表了初始时间,参数ν是相变材料的漂移参数。参数ν与初始阻值R0有关,拥有越大的初始阻值R0的存储状态受到阻值漂移的影响越大,其对应的漂移参数ν也越大,通过测试,发明人发现初始阻值R0以及漂移参数ν的分布近似服从高斯分布。令初始时间t0=1s,对式(1)两边取对数,可得到式(2):
lgR(t)=lgR(1)+νlgt 式(2);
可以看到,式(2)中,lgR(t)随着lgt线性增加,对每个存储单元中存储m个存储状态的相变存储单元,用lgRi来代表在对数域中处于第i个存储状态的阻值大小,其中i=1,2,3,…,m。可以知道,初始阻值lgRi与漂移参数ν分别服从高斯分布N(μRi,σRi 2)与N(μνi,σνi 2)。根据式(2)可知,阻值lgRi(td)也服从高斯分布N(μi(td),σRi 2(td)),其中td为存储时间,均值与方差计算公式见式(3):
式(3);
因此,各存储状态的阻值分布的交叠边界可由式(4)计算以确定,其中p由可接受的误码率确定:
式(4);
步骤S27、计算各阻值交叠区域的熵。具体地,在阻值交叠区域,对于读取到的lgR,通过下式(5)计算它的熵:
式(5);
为了衡量一个区域的不确定度,对此区域内的各阻值lgR的熵H(lgR)求积分,其中a,b为区域边界:
式(6);
因此,通过式(6)和式(4)中确定的各阻值交叠区域的边界,可以计算得到各阻值交叠的熵。
步骤S29、将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域。具体地,对于熵比较大的阻值交叠区域,其需要划分出更多的纠错区域,而对于熵比较小的区域只需要划分较少的纠错区域即可。由于,我们将所有的阻值交叠区域划分成若干熵大致相等的纠错区域,具体地,首先求出阻值交叠区域的总的熵的大小,根据所需要划分的纠错区域数量进行划分,划分区域时保持各纠错区域的熵大致相同。因此,在步骤29中将所有阻值交叠区域划分成熵大致相等的若干纠错区域,可以保证熵比较大的阻值交叠区域划分出更多的纠错区域,而熵比较小的阻值交叠区域划分出较少的纠错区域。
在一较优的实施例中,还可以包括一步骤:对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。由于读取的阻值位于各个区域(纠错区域和非纠错区域)的概率是不同的,对所有的区域根据概率的大小进行哈夫曼编码,从而可以进一步减少数据的传输量。
步骤S31、计算各纠错区域的对数似然比。对于每一个纠错区域,其内的各阻值对应相同的对数似然比。
步骤S33、判断读取的数据的阻值位于哪一区域,完成阻值量化过程。当判断结果为位于纠错区域时,进行步骤S35,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,进行步骤S37,对读取的数据不进行纠错。
在步骤S35或S37中进行纠错译码时,常用的终止译码准则两种,一种是通过检查上一轮译码结果是滞满足相应的校验式来判断是否终止译码,另一种是判断是否达到设定的最大迭代次数来终止译码。前一种方法,进行硬件实现时需要消耗大量的硬件资源,后一种方法,进行硬件实时比较简单,消耗的硬件资源较少,但是每次译码都需要迭代最大迭代译码次数,如果最大迭代译码次数设置较低,则不能保证译码的正确性,如果设置的最大迭代译码次数较高,则每次译码需要消耗大量的时间。因此,本实施提出一种终止译码准则,如下:
定义符号变化数量
其中k为迭代次数,n为码字的总位数,是第k次迭代结束后码字中第i位的硬判决结果;当符号变化数量SCN为0或译码迭代次数达到设置的最大迭代值时,停止迭代并输出译码结果。
相应地,本实施例还提出一种相变存储装置,如图4所示,其包括纠错编码器11、存储控制器12、存储时间计算单元13、阻值交叠区确定单元14、熵计算单元15、纠错区域划分单元16、对数似然比计算单元17、阻值量化单元18、纠错译码器19和相变存储器20。
纠错编码器11用于对待存入相变存储器的数据进行纠错编码。在一实施例中,纠错编码器11为LDPC编码器。
存储控制器12用于将经过纠错编码的数据以及数据写入时间写入相变存储器20中。在一较优的实施例中,为了保证数据写入时间的存储可靠性,相变存储器20包括二值存储单元21和多值存储单元22,二值存储单元21用于存储数据写入时间,多值存储单元22用于存储数据。
存储时间计算单元13用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间。
阻值交叠区确定单元14用于根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域。
熵计算单元15用于计算各阻值交叠区域的熵。
纠错区域划分单元16用于将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域。
对数似然比计算单元17用于计算各纠错区域的对数似然比。
阻值量化单元18用于判断读取的数据的阻值位于哪一区域。
纠错译码器19用于当判断的结果为读取的数据的阻值位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。在一较优的实施例中,纠错译码器19包括终止译码单元(未画出),用于判断符号变化数量SCN的大小以及译码迭代次数,当符号变化数量SCN为0或译码迭代次数达到设置的最大迭代值时,令纠错译码器停止迭代并输出译码结果,其中:
符号变化数量
k为迭代次数,n为码字的总位数,是第k次迭代结束后码字中第i位的硬判决结果。
具体算法流程如下:
输入:译码后硬判决结果O,最大迭代次数M
输出:结束迭代标志f,译码结果R
中间变量:C,Y
1.C=0;//C为译码迭代次数
2.C=C+1;
3.if C=M,then算法结束,f=0,R=O;//f为0时表示迭代译码结束
4.else Y=O^O’;
5.if Y=0,then算法结束,f=0,R=O;
6.else O’=O,f=1;
7.再次进行迭代译码;
在具体硬件实现时,终止译码单元的硬件结构如图5所示,通过D触发器以及或门来实现。当迭代终止标志输出1时,则表示本次译码结果与前次不同,需要再次进行迭代译码。当输出标示为0时,停止迭代译码,输出结果。
由于读取的阻值位于各个区域(纠错区域和非纠错区域)的概率是不同的,因此在一较优的实施例中,相变存储装置还可以包括一哈夫曼编码单元(未画出),对各纠错区域和非纠错区域进行哈夫曼编码以减少相变存储器20与纠错译码器19之间的传输数据量。
实施例二:
在实施例一中,如果进行数据读取译码时都要计算当前存储时间下的阻值交叠区域、划分纠错区域以及相应的对数似然比,其计算量无疑是相当巨大的,计算消耗的时间也是很长的,同时在硬件实现时会造成很大的硬件开销。
针对这个问题,考虑到相变存储的阻值漂移是一个渐变的过程,在短时间内阻值变化不会很大,于是可以预先设置若干存储时间,在一实施例中,比如将存储时间划分成1小时,1天,1星期,1月,1年和10年这6个时间点,在这6个时间点中可以分别取不同的纠错级数,存储时间越长,一般来讲,可以取越大的纠错级数。将每个时间点中各个纠错区域的范围预先划分好,同时对各个区域进行哈夫曼编码,得到编码后的码字,将以上信息存储于一个查找表LUT1中,在另一查找表LUT2中则存入每个时间点各区域哈夫曼编码码字及各个纠错区域对应的对数似然比。查找表LUT1位于相变存储器中,查找表LUT2位于存储控制器中。在读取数据时,首先根据当前时间与数据写入时间计算出数据在相变存储器中的存储时间。然后根据存储时间在查找表LUT1中进行近似查找,查找出这个时间点的各纠错区域范围。接着按照查找出的区域范围将读取到的阻值对应到相应的纠错区域中以完成阻值量化的过程。按照纠错区域信息查找LUT1中对应的哈夫曼编码码字,将其传送到存储控制器中。译码器根据接收到的哈夫曼编码码字在LUT2中查找到相应的对数似然比的值,根据得到的对数似然比进行译码。对数似然比信息可为一个6比特数据,哈夫曼编码后的码字平均长度也仅为数个比特,由此可以计算出LUT1与LUT2总共需要的存储空间为数千比特,与存储的容量相比,这是用户可以接受的。以下具体说明。
本实施例二提出一种面向相变存储的非均匀纠错方法,如图6所示,
步骤S41、预先设置若干存储时间。
步骤S43、对于每一个预先设置的存储时间:S431,根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;S433,计算各阻值交叠区域的熵;S435,将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;S437,计算各纠错区域的对数似然比。在步骤S43中,计算阻值分布的交叠边界、各阻值交叠区域的熵、划分纠错区域、计算各纠错区域的对数似然比的方法与实施例一中类似,在此不再赘述。
在一较优的实施例中,还可以包括一步骤:对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。由于读取的阻值位于各个区域(纠错区域和非纠错区域)的概率是不同的,对所有的区域根据概率的大小进行哈夫曼编码,从而可以进一步减少数据的传输量。
步骤S45、对待存入相变存储器的数据进行纠错编码。在一实施例中,纠错编码和译码所用的码字为LDPC码。需要说明的是,在图6中,步骤S43是在步骤S45之前,这只是表示时间上的先后,并不表示步骤S45中对数据进行纠错编码需要步骤S43的支持,从步骤S43和步骤S45的具体内容也可以清楚地明白这一点。
步骤S47、将经过纠错编码的数据以及数据写入时间写入相变存储器。为了保证数据写入时间的存储可靠性,在一实施例中,数据写入时间采用二值存储,数据采用二值或多值存储。因为数据写入时间采用每存储单元存储1比特数据的相变存储器行进行存储,其受到阻值漂移而导致的误码率比较小。
步骤S49、当读取数据时,读取数据对应的写入时间。
步骤S51、根据写入时间计算出数据在相变存储器中的存储时间。
步骤S53、将所述计算出的存储时间,与步骤S41中预先设置的若干存储时间比较,得到一与上述计算出的存储时间最接近的预先设置的存储时间。在一实施例中,得到一与上述计算出的存储时间最接近的预先设置的存储时间后,可依此获得与此最接近的存储时间对应的纠错区域范围。
步骤S55、判断读取的数据的阻值位于所述最接近的预先设置的存储时间下的哪一区域,当位于纠错区域时,进行步骤S57,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,进行步骤S59,对读取的数据不进行纠错。
在步骤S57或S59中采用的终止译码准则,可采用实施例一中的终止译码准则。
相应地,本实施例还提出一种相变存储装置,如图7所示,其包括存储控制器30、纠错编码器31、纠错译码器33、第二查找表35,以及相变存储器40、存储时间计算单元41、存储时间判断单元43、第一查找表45、阻值量化单元47。下面具体说明。
纠错编码器31用于对待存入相变存储器的数据进行纠错编码。一实施例中,纠错编码器31为LDPC编码器。
存储控制器30用于将经过纠错编码的数据以及数据写入时间写入相变存储器40中。在一较优的实施例中,为了保证数据写入时间的存储可靠性,相变存储器40包括二值存储单元48和多值存储单元49,二值存储单元48用于存储数据写入时间,多值存储单元49用于存储数据。
存储时间计算单元41用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间。
存储时间判断单元43预先设置若干存储时间,用于将计算出的存储时间,与预先设置的若干存储时间比较,得到一与计算出的存储时间最接近的预先设置的存储时间。
第一查找表45存储有每一个预先设置的存储时间下的纠错区域范围,其中,纠错区域范围通过以下方式计算:对于每一个预先设置的存储时间:根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;计算各阻值交叠区域的熵;将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域。
第二查找表35存储有与第一查找表中每一个预先设置的存储时间下的各纠错区域范围对应的对数似然比。
阻值量化单元47用于判断读取的数据的阻值位于第一查找表45中上述最接近的预先设置的存储时间下的哪一区域。
纠错译码器33,用于当判断的结果为读取的数据的阻值位于纠错区域时,根据第二查找表35中此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。在一实施例中,纠错译码器33包括一终止译码单元(未画出),其结构与实现原理与实施例一类似,在此不再赘述。
在一较优的实施例中,还可以包括一哈夫曼编码单元(未画出),将第一查找表45中每一个预先设置的存储时间点下的各纠错区域和非纠错区域进行哈夫曼编码,得到编码后的码字,存入第一查找表45中,同时在第二查找表35中存入每一个预先设置的存储时间点下的各区域的哈夫曼编码码字及各个纠错区域对应原对数似然比。
在一实施例中,纠错编码器31、纠错译码器33和第二查找表35可集成于存储控制器30中,存储时间计算单元41、存储时间判断单元43、第一查找表45和阻值量化单元47可集成于相变存储器40。
本申请提出的一种面向相变存储的非均匀纠错方法及相变存储装置,其提出的非均匀LDPC纠错技术可有效降低相变存储器的存储阵列与存储控制器之间的数据带宽,从而提高系统性能。
依本申请提出的面向相变存储的非均匀纠错方法及相变存储装置,分别对4值相变存储(即每单元中存储2比特数据的相变存储器)和8值相变存储(即每单元中存储3比特数据的相变存储器)与均匀量化的LDPC纠错方案进行对比实验,其中,所采用的4值相变存储和8值相变存储相应的阻值漂移参数如下表表1和表2所示。
表1
表2
对不同级数的均匀与非均匀纠错进行仿真,结果如图8所示,其中图8(a)为4值相变存储器的仿真结果,图8(b)为8值相变存储器的仿真结果。从图中可以看到,本申请的非均匀纠错方案的误码率性能明显优于传统的均匀纠错方案的误码率性能。对于4值相变存储器,采用本申请的方法和装置划分15级非均匀量化纠错区域,其误码率性能与传统方案采用31级均匀量化纠错区域的性能相仿;对于8值相变存储器,采用本申请的方法和装置划分31级非均匀量化纠错区域,其误码率性能与传统方案采用63级均匀量化纠错区域的性能相仿。在误码率性能一致的情况下,本申请的非均匀纠错相比传统的均匀纠错减少了一半的读取级数(即纠错区域数量),使得传输单个信息所需的数据位宽缩短了1位。
下面对使用本申请的非均匀纠错方案和传统方案所造成的传输延迟进行比较,以传输的数据位数作为衡量标准。存储7680000位数据时,在译码过程中所需传输的数据位数结果如图9所示,其中图9(a)为存储时间为一天时,读取数据译码时所需消耗的数据传输位数,图9(b)为存储时间为一个月时,读取数据译码时所需消耗的数据传输位数,其中4值相变存储器采用15级纠错区域,8值相变存储器采用31级纠错区域。从图中可以看出,与不使用不均匀纠错方案(即传统方案)相比,使用本申请的非均匀纠错方案(即不均匀纠错方案)至少减少了超过50%的数据传输量。
综上所述,本申请提出的面向相变存储的非均匀纠错方法及相变存储装置,其采用了本申请的非均匀纠错方案,通过计算出相变存储器阻值分布交叠区域的熵的大小,根据熵的大小划分纠错区域,对于熵较大的阻值交叠区域划分更多的纠错区域,对于熵较小的阻值交叠区域,划分较少的纠错区域,对于阻值未交叠区域,可以不划分纠错区域,不进行纠错,从而在相同误码率性能的要求下,本申请所需的纠错区域数量少于传统均匀量化纠错方案的纠错区域数量,使得阻值量化后的数据长度更短,使从相变存储器到存储控制器的数据传输位数和延迟减少。另外,对纠错区域进行哈夫曼编码,使从相变存储器到存储控制器的数据传输位数和延迟进一步减少。另外,在一实施例中,预先设置若干存储时间点,对于此预先设置的每个存储时间点,预先计算出其下的阻值交叠区域与熵,从而预先进行纠错区域的划分,同时预先计算出各纠错区域的对数似然比,将上述结果丰入一查找表中,在读取数据时根据查找表直接查找出相应结果,从而减少了时间与硬件资源的消耗。最后,选取一合适的终止译码准则和单元,以取代传统的终止译码准则,在保证误码率性能的情况,迭代次数大大减小,控制在2-8次之间,极大减少了时间和硬件资源的消耗。
以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。
Claims (14)
1.一种面向相变存储的非均匀纠错方法,其特征在于,包括以下步骤:
对待存入相变存储器的数据进行纠错编码;
将经过纠错编码的数据以及数据写入时间写入相变存储器;
当读取数据时,读取数据对应的写入时间;
根据写入时间计算出数据在相变存储器中的存储时间;
根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;
计算各阻值交叠区域的熵;
将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
计算各纠错区域的对数似然比;
判断读取的数据的阻值位于哪一区域,当位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
2.如权利要求1所述的面向相变存储的非均匀纠错方法,其特征在于,还包括步骤:对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。
3.如权利要求1所述的面向相变存储的非均匀纠错方法,其特征在于,数据写入时间采用二值存储,数据采用二值或多值存储。
4.一种面向相变存储的非均匀纠错方法,其特征在于,包括以下步骤:
预先设置若干存储时间;
对于每一个预先设置的存储时间:根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;计算各阻值交叠区域的熵;将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;计算各纠错区域的对数似然比;
对待存入相变存储器的数据进行纠错编码;
将经过纠错编码的数据以及数据写入时间写入相变存储器;
当读取数据时,读取数据对应的写入时间;
根据写入时间计算出数据在相变存储器中的存储时间;
将所述计算出的存储时间,与预先设置的若干存储时间比较,得到一与所述计算出的存储时间最接近的预先设置的存储时间,并依此获得对应的纠错区域范围;
判断读取的数据的阻值位于所述最接近的预先设置的存储时间下的哪一区域,当位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
5.如权利要求4所述的面向相变存储的非均匀纠错方法,其特征在于,还包括步骤:对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。
6.如权利要求4所述的面向相变存储的非均匀纠错方法,其特征在于,数据写入时间采用二值存储,数据采用二值或多值存储。
7.如权利要求1至6中任一项所述的面向相变存储的非均匀纠错方法,其特征在于,在对读取的数据进行纠错译码时,终止译码准则如下:
定义符号变化数量其中k为迭代次数,n为码字的总位数,是第k次迭代结束后码字中第i位的硬判决结果;当符号变化数量SCN为0或译码迭代次数达到设置的最大迭代值时,停止迭代并输出译码结果。
8.一种相变存储装置,其特征在于,包括:
纠错编码器,用于对待存入相变存储器的数据进行纠错编码;
存储控制器,用于将经过纠错编码的数据以及数据写入时间写入一相变存储器;
存储时间计算单元,用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间;
阻值交叠区确定单元,用于根据存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;
熵计算单元,用于计算各阻值交叠区域的熵;
纠错区域划分单元,用于将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
对数似然比计算单元,用于计算各纠错区域的对数似然比;
阻值量化单元,用于判断读取的数据的阻值位于哪一区域;
纠错译码器,用于当判断的结果为读取的数据的阻值位于纠错区域时,根据此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
9.如权利要求8所述的相变存储装置,其特征在于,还包括哈夫曼编码单元,用于对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。
10.如权利要求8所述的相变存储装置,其特征在于,所述相变存储器包括二值存储单元和多值存储单元,所述二值存储单元用于存储数据写入时间,所述多值存储单元用于存储数据。
11.一种相变存储装置,其特征在于,包括:
纠错编码器,用于对待存入相变存储器的数据进行纠错编码;
存储控制器,用于将经过纠错编码的数据以及数据写入时间写入一相变存储器;
存储时间计算单元,用于当读取数据时读取数据对应的写入时间,以根据写入时间计算出数据在相变存储器中的存储时间;
存储时间判断单元,预先设置若干存储时间,用于将所述计算出的存储时间,与预先设置的若干存储时间比较,得到一与所述计算出的存储时间最接近的预先设置的存储时间;
第一查找表,存储有每一个预先设置的存储时间下的纠错区域范围,其中,纠错区域范围通过以下方式计算:对于每一个预先设置的存储时间:根据此存储时间计算各存储状态的阻值分布的交叠边界,以确定阻值交叠区域;计算各阻值交叠区域的熵;将所有阻值交叠区域划分成熵大致相等的若干纠错区域,其中非阻值交叠区域为非纠错区域;
第二查找表,存储有与第一查找表中每一个预先设置的存储时间下的各纠错区域范围对应的对数似然比;
阻值量化单元,用于判断读取的数据的阻值位于所述第一查找表中所述最接近的预先设置的存储时间下的哪一区域;
纠错译码器,用于当判断的结果为读取的数据的阻值位于纠错区域时,根据所述第二查找表中此纠错区域的对数似然比,对读取的数据进行纠错译码;当位于非纠错区域时,对读取的数据不进行纠错。
12.如权利要求11所述的相变存储装置,其特征在于,还包括哈夫曼编码单元,用于对各纠错区域和非纠错区域进行哈夫曼编码以减少数据传输量。
13.如权利要求11所述的相变存储装置,其特征在于,所述相变存储器包括二值存储单元和多值存储单元,所述二值存储单元用于存储数据写入时间,所述多值存储单元用于存储数据。
14.如权利要求8至13中任一项所述的相变存储装置,其特征在于,所述纠错译码器包括终止译码单元,用于判断符号变化数量SCN的大小以及译码迭代次数,当符号变化数量SCN为0或译码迭代次数达到设置的最大迭代值时,令纠错译码器停止迭代并输出译码结果,其中符号变化数量k为迭代次数,n为码字的总位数,是第k次迭代结束后码字中第i位的硬判决结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510818957.1A CN105427892B (zh) | 2015-11-23 | 2015-11-23 | 一种面向相变存储的非均匀纠错方法及相变存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510818957.1A CN105427892B (zh) | 2015-11-23 | 2015-11-23 | 一种面向相变存储的非均匀纠错方法及相变存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105427892A CN105427892A (zh) | 2016-03-23 |
CN105427892B true CN105427892B (zh) | 2018-05-01 |
Family
ID=55506042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510818957.1A Active CN105427892B (zh) | 2015-11-23 | 2015-11-23 | 一种面向相变存储的非均匀纠错方法及相变存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105427892B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11183238B2 (en) | 2019-08-28 | 2021-11-23 | International Business Machines Corporation | Suppressing outlier drift coefficients while programming phase change memory synapses |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102203875A (zh) * | 2008-09-30 | 2011-09-28 | Lsi公司 | 使用参考单元的用于存储器器件的软数据生成的方法和装置 |
CN103917964A (zh) * | 2011-11-02 | 2014-07-09 | 国立大学法人东京大学 | 存储控制器和数据存储装置 |
CN104282340A (zh) * | 2014-09-30 | 2015-01-14 | 华中科技大学 | 一种固态盘闪存芯片阈值电压感知方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090282316A1 (en) * | 2008-05-07 | 2009-11-12 | Texas Instruments Incorporated | Memory Access in Low-Density Parity Check Decoders |
US20150294739A1 (en) * | 2014-04-10 | 2015-10-15 | Lsi Corporation | Online histogram and soft information learning |
-
2015
- 2015-11-23 CN CN201510818957.1A patent/CN105427892B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102203875A (zh) * | 2008-09-30 | 2011-09-28 | Lsi公司 | 使用参考单元的用于存储器器件的软数据生成的方法和装置 |
CN103917964A (zh) * | 2011-11-02 | 2014-07-09 | 国立大学法人东京大学 | 存储控制器和数据存储装置 |
CN104282340A (zh) * | 2014-09-30 | 2015-01-14 | 华中科技大学 | 一种固态盘闪存芯片阈值电压感知方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105427892A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Papandreou et al. | Programming algorithms for multilevel phase-change memory | |
KR102315294B1 (ko) | 솔리드-스테이트 스토리지 디바이스들에서의 판독 전압 계산 | |
Papandreou et al. | Drift-tolerant multilevel phase-change memory | |
Joshi et al. | Mercury: A fast and energy-efficient multi-level cell based phase change memory system | |
EP2353166B1 (en) | Memory reading method taking care of resistance drift effects | |
US9099185B2 (en) | Using different programming modes to store data to a memory cell | |
US8174905B2 (en) | Programming orders for reducing distortion in arrays of multi-level analog memory cells | |
KR101379543B1 (ko) | 감소된 감지 시간 판독을 하는 메모리 장치 | |
US20110055461A1 (en) | Systems and methods for pre-equalization and code design for a flash memory | |
US20100146192A1 (en) | Methods for adaptively programming flash memory devices and flash memory systems incorporating same | |
US8839075B2 (en) | Interference-aware assignment of programming levels in analog memory cells | |
WO2009037691A2 (en) | Programming orders for reducing distortion in arrays of multi-level analog memory cells | |
TWI546807B (zh) | 在讀取臨限值錯誤的存在下從類比記憶體胞之軟讀出 | |
US10037803B2 (en) | Apparatus and method for programming a multi-level phase change memory (PCM) cell based on an actual resistance value and a reference resistance value | |
US20220137815A1 (en) | Managing bin placement for block families of a memory device based on trigger metric values | |
US11727994B2 (en) | Performing threshold voltage offset bin selection by package for memory devices | |
US20120163080A1 (en) | Reducing Distortion Using Joint Storage | |
CN113889168A (zh) | 用于温度补偿的机器学习 | |
CN105427892B (zh) | 一种面向相变存储的非均匀纠错方法及相变存储装置 | |
US20130100727A1 (en) | Overwriting a memory array | |
Pozidis et al. | Phase change memory reliability: A signal processing and coding perspective | |
US20170011803A1 (en) | Adaptation of high-order read thresholds | |
US11210154B2 (en) | Data-structure based dynamic program targeting control | |
Yamazaki et al. | Reliability enhancement of 1Xnm TLC for cold flash and millennium memories | |
US11756636B2 (en) | Determining threshold values for voltage distribution metrics |
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 |