一种适用于MLCNAN闪存的LDPC码译码方法与流程

文档序号:17480439发布日期:2019-04-20 06:24阅读:257来源:国知局
一种适用于MLC NAN闪存的LDPC码译码方法与流程
本发明属于计算机存储纠错
技术领域
,更具体地,涉及一种适用于nandmlc闪存的ldpc码译码方法。
背景技术
:nand闪存是一种非易失性存储介质,基于其存储密度高、单位成本低、读写速度快等优点,nand闪存已经成为存储领域的应用主流。但是随着闪存工艺尺寸的缩小和存储密度的增加,nand闪存的误码率也不断增高,相比于传统的bch码,ldpc码在高噪声下依然具有强大的纠错能力,因而ldpc码越来越广泛地应用于nand闪存中。然而,ldpc码在数据读写的过程中会带来额外的读写延迟,从而降低nand闪存的性能。mlcnand闪存中,一个存储单元存储两位数据,这两位属于不同的数据页,分别是高页和低页,根据存储单元阈值电压的大小,存储单元被分为四个状态,并且这四个状态被编码为对应的数据“11”、“10”、“00”和“01”左边的是低页数据,右边的是高页数据。外围电路需要借助于一系列读参考电压确定存储单元存储的数据,将存储阈值电压和读参考电压比较大小就可以确定存储单元中的数据。闪存中的存储单元受到噪声的干扰后,阈值电压会发生变化,相邻的两个状态的阈值电压分布会发生重叠,使得读取出来的数据出现错误。mlcnand闪存受到干扰后的阈值电压模型如图1所示,实线代表的电压值verf1、vref2和vref3为默认的读参考电压,虚线代表的电压值为可改变的读参考电压。现有的ldpc码译码方法如图2所示,使用默认的三个读参考电压可以得到阈值电压的范围,读出数据后可使用ldpc硬判决译码。如果相邻状态的阈值电压分布发生重叠,会读出错误的数据。若ldpc硬判决译码失败,则应该改变读参考电压,得到更加精确的阈值电压范围,使用软判决译码得到正确数据。软判决译码失败后可以进一步改变读参考电压,进行下一轮的软判决译码,直到所有可用的读参考电压都被使用,无法再改变读参考电压。在ldpc码的译码过程中,需要先根据读取的数据确定对应的阈值电压范围,然后根据所确定的阈值电压范围计算对数似然比(log-likelihoodratio,llr)作为译码输入,所确定的阈值电压范围越小,获得的译码输入越精确,则ldpc码的译码效率越高。但要获得更小的阈值电压范围,需要多次改变读参考电压,从而导致ldpc码译码过程中的读延迟增加。技术实现要素:针对现有技术的缺陷和改进需求,本发明提供了一种适用于mlcnand闪存的ldpc码译码方法,其目的在于,降低mlcnand闪存中ldpc码的译码延迟,从而提高闪存的性能。为实现上述目的,本发明提供了一种适用于mlcnand闪存的ldpc码译码方法,包括如下步骤:(1)确定待译码数据所属页的类型,若为低页,则转入步骤(2);否则,转入步骤(3);(2)对待译码数据进行ldpc码译码,并保存译码结果;译码结束;(3)获得同一单元中译码后的低页数据,并根据低页数据对待译码数据进行ldpc码译码;译码结束。属于同一存储单元的两位数据,虽然属于不同的页,但是受到噪声干扰后出现的错误具有一定的关联性,而且由于编码的特性,低页的原始误码率低于高页的原始误码率,所以低页的译码成功率高于高页的译码成功率,并且在译码的过程中低页的译码先于高页的译码。在本发明中,对高页数据进行译码时,利用同一单元的低页译码信息辅助高页数据的译码,可根据高页数据与低页数据之间的关联性缩小阈值电压范围,获得更加精确的译码输入,从而提高译码成功率、减少译码迭代次数,达到降低译码延迟、提高闪存读性能的目的。进一步地,步骤(3)包括:根据低页数据和待译码数据确定存储单元的阈值电压范围;根据阈值电压范围计算对数似然比;以对数似然比为译码输入,对待译码数据进行ldpc码译码。更进一步地,若低页数据为“1”且在译码前后没有翻转,并且待译码数据为“1”,则阈值电压范围为(-∞,vref1],且对数似然比为:若低页数据为“1”且在译码前后没有翻转,并且待译码数据为“0”,则阈值电压范围为(vref1,vref2],且对数似然比为:若低页数据为“0”且在译码前后没有翻转,并且待译码数据为“1”,则阈值电压范围为(vref3,∞],且对数似然比为:若低页数据为“0”且在译码前后没有翻转,并且待译码数据为“0”,则阈值电压范围为(vref2,vref3],且对数似然比为:若低页数据在译码前后发生翻转,则对数似然比为:llr(msb)=llrmax;其中,er、p1、p2和p3分别为存储单元存储数据“11”、“10”、“00”和“01”时对应的存储单元状态,vref1、vref2和vref3均为默认读参考电压,且vref1<vref2<vref3,p(s)(x)表示阈值电压为x时待译码数据发生错误前存储单元状态为s的概率,s∈{er,p1,p2,p3},llrmax表示大于50的常数。对于存储单元中的高页数据,若读出数据为1,可以确定阈值电压范围为(-∞,vref1]∪(vref3,+∞],若读出数据为0,可以确定阈值电压范围为(vref1,vref3],仅根据高页数据确定的阈值电压范围较大;根据同一单元中低页数据的值,可以进一步确定阈值电压范围为(-∞,vref1]、(vref1,vref2]、(vref2,vref3]和(vref3,+∞)之中的某个范围,由此缩小了阈值电压范围,可以得到更加精确的译码输入。对于一个码字来说,如果译码前后在某一位上面发生翻转,则表明这一位所在的存储单元的阈值电压状态发生了偏移,导致读出数据错误。由于阈值电压状态偏移多偏移向相邻状态,且阈值电压相邻状态的编码为只相差一位的格雷码,所以若阈值电压状态偏移至相邻状态导致存储单元某一位发生翻转,则同单元的另一位数据是不变的。由于低页数据错误发生在p1和p2重叠区域,所以若存储单元低页数据译码前后发生翻转,则表明低页数据读取错误,阈值电压处于p1或p2状态。而p1和p2状态的高页数据都为0,所以同一单元高页数据有很大概率为0,llr可以设置为一个很大的值llrmax。总体而言,通过本发明所构思的以上技术方案,与现有技术相比,由于在对高页数据进行译码时,会结合同一单元中译码后的低页数据确定存储单元的阈值电压范围,由此能够有效缩小所确定的阈值电压范围,提供更为精确的译码输入,从而能够提高译码成功率、减少译码迭代次数,达到降低译码延迟、提高闪存读性能的目的。附图说明图1为现有的mlcnand闪存的存储单元阈值电压分布示意图;图2为现有的ldpc码译码方法示意图;图3为本发明实施例提供的使用于mlcnand闪存的ldpc码译码方法流程图;图4为本发明实施例提供的译码输入计算区域示意图;图5为采用传统译码方法及本发明提供的译码方法进行译码测试的测试结果。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。在详细介绍本发明的技术方案之前,先对作为译码输入的对数似然比llr的计算作一个简要说明。对数似然比为对应数据为0的概率与对应数据为1的概率之比再取对数,假设存储单元的阈值电压范围在(vref1,v1,2]中,则低页数据的对数似然比llr(lsb)和高页数据的对数似然比llr(msb)的计算公式分别为:llr的计算基于存储单元的阈值电压范围,读出的阈值电压范围越小,获得的译码输入信息llr越精确,则ldpc码译码效率越高。但要获得更小的阈值电压范围,需要多次改变读参考电压,从而导致ldpc码译码过程中的读延迟增加。本发明提供了一种适用于mlcnand闪存的ldpc码译码方法,其整体思路在于,利用同一存储单元中高页数据和低页数据之间的关联性以及低页数据的原始误码率低于高页数据的原始误码率这一特性,在对高页数据进行译码时,结合同一存储单元中低页数据确定存储单元的阈值电压范围,以缩小阈值电压范围,提供更为精确的译码输入,从而提高译码成功率、减少译码迭代次数,达到降低译码延迟、提高闪存读性能的目的。本发明所提供的适用于mlcnand闪存的ldpc码译码方法,如图3所示,包括如下步骤:(1)确定待译码数据所属页的类型,若为低页,则转入步骤(2);否则,转入步骤(3);(2)对待译码数据进行ldpc码译码,并保存译码结果;译码结束;(3)获得同一单元中译码后的低页数据,并根据低页数据对待译码数据进行ldpc码译码;译码结束;在一个可选的实施方式中,步骤(3)具体包括:根据低页数据和待译码数据确定存储单元的阈值电压范围;根据阈值电压范围计算对数似然比;以对数似然比为译码输入,对待译码数据进行ldpc码译码;根据高页数据(即待译码数据)和低页数据的具体取值,确定阈值电压范围并计算对数似然比的方法为:若低页数据为“1”且在译码前后没有翻转,并且待译码数据为“1”,则阈值电压范围为(-∞,vref1],且对数似然比为:若低页数据为“1”且在译码前后没有翻转,并且待译码数据为“0”,则阈值电压范围为(vref1,vref2],且对数似然比为:若低页数据为“0”且在译码前后没有翻转,并且待译码数据为“1”,则阈值电压范围为(vref3,∞],且对数似然比为:若低页数据为“0”且在译码前后没有翻转,并且待译码数据为“0”,则阈值电压范围为(vref2,vref3],且对数似然比为:若低页数据在译码前后发生翻转,则对数似然比为:llr(msb)=llrmax;其中,er、p1、p2和p3分别为存储单元存储数据“11”、“10”、“00”和“01”时对应的存储单元状态,vref1、vref2和vref3均为默认读参考电压,且vref1<vref2<vref3,p(s)(x)表示阈值电压为x时待译码数据发生错误前存储单元状态为s的概率,s∈{er,p1,p2,p3},llrmax表示大于50的常数。如图4所示,对于存储单元中的高页数据,若读出数据为1,可以确定阈值电压范围为(-∞,vref1]∪(vref3,+∞],若读出数据为0,可以确定阈值电压范围为(vref1,vref3],仅根据高页数据确定的阈值电压范围较大;根据同一单元中低页数据的值,可以进一步确定阈值电压范围为(-∞,vref1]、(vref1,vref2]、(vref2,vref3]和(vref3,+∞)之中的某个范围,由此缩小了阈值电压范围,可以得到更加精确的译码输入;对于一个码字来说,如果译码前后在某一位上面发生翻转,则表明这一位所在的存储单元的阈值电压状态发生了偏移,导致读出数据错误;由于阈值电压状态偏移多偏移向相邻状态,且阈值电压相邻状态的编码为只相差一位的格雷码,所以若阈值电压状态偏移至相邻状态导致存储单元某一位发生翻转,则同单元的另一位数据是不变的;由于低页数据错误发生在p1和p2重叠区域,所以若存储单元低页数据译码前后发生翻转,则表明低页数据读取错误,阈值电压处于p1或p2状态;而p1和p2状态的高页数据都为0,所以同一单元高页数据有很大概率为0,llr可以设置为一个很大的值llrmax,在以上实施例中,llrmax的取值范围为大于50。在本发明中,对高页数据进行译码时,利用同一单元的低页译码信息辅助高页数据的译码,可根据高页数据与低页数据之间的关联性缩小阈值电压范围,获得更加精确的译码输入,从而提高译码成功率、减少译码迭代次数,达到降低译码延迟、提高闪存读性能的目的。基于“exploitingmemorydevicewear-outdynamicstoimprovenandflashmemorysystemperformance”中的闪存错误模型及参数,分别采用传统的ldpc码译码方法(即没有辅助信息的译码)及本发明提供的适用于mlcnand闪存的ldpc码译码方法(即有辅助信息的译码)进行译码测试,设置ldpc码的码长为9216,信息长度为8192,码率为88.9%,最大译码迭代次数为50。测试样例擦写周期(pe)为2000-5000次,编程干扰次数为0-3次,保留时间为1个月到10年,闪存误码率为10-3到10-2级别。具体测试样例如表1所示,采用两种译码方法对表1所示测试样例进行译码测试的译码成功率及采用辅助信息的译码方法的高页误码率如图5所示。表1测试样例编号pecci干扰次数保留时间高页数据错误率1200016年8.55e-032500011月8.74e-033200017年9.26e-034200018年9.74e-035300022年9.75e-036300033年9.97e-037200003年1.02e-028300011年1.04e-029200019年1.05e-02102000110年1.09e-0211400031年1.16e-0212200004年1.20e-0213300023年1.20e-0214300035年1.21e-0215300036年1.28e-0216200005年1.34e-0217300037年1.36e-0218400021年1.40e-0219500001月1.41e-02根据图5所示的测试结果可知,相比于传统的ldpc码译码方法,本发明所提供的适用于mlcnand闪存的ldpc码译码方法最多提高了49%的译码成功率,减少了40%的译码迭代次数,能有效降低译码延迟。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1