CN108683423B - 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 - Google Patents
一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 Download PDFInfo
- Publication number
- CN108683423B CN108683423B CN201810468844.7A CN201810468844A CN108683423B CN 108683423 B CN108683423 B CN 108683423B CN 201810468844 A CN201810468844 A CN 201810468844A CN 108683423 B CN108683423 B CN 108683423B
- Authority
- CN
- China
- Prior art keywords
- variable nodes
- variable
- flash memory
- reference voltage
- sequence
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法及装置,其中方法包括:根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类;将变量节点的更新顺序按照变量节点类别进行排序;根据排序后的变量节点更新顺序进行调度译码。本发明通过将变量节点分类,并按照变量节点类别对变量节点的更新顺序进行排序,能够实现按照一定分类顺序进行变量节点的更新,在闪存经过一定擦除次数后时,能够通过不同类别的更新顺序使得类别较好的变量节点对类别不好的变量节点进行纠错,从而提高纠错性能和收敛速度,解决传统的Shuffled BP和IFS策略在闪存受到干扰时收敛和纠错性能较差的技术问题。
Description
技术领域
本发明涉及闪存技术领域,尤其涉及一种多级闪存信道下的LDPC码动态串行调度译码算法及装置。
背景技术
随着科技的发展,NAND闪存因其抗震性、快速读写等特性,越来越受到关注。现在人们使用的固态硬盘就是有4到16块NAND闪存组合而成。随着NAND闪存的崛起,广大广商和研究者致力与研究NAND闪存。NAND闪存技术也从最初每个闪存单元存储一个比特(SLC),慢慢发展成每个闪存单元存储两个比特(MLC)、三个比特(TLC)。这一技术的创新使得闪存具有更大的存储密度和减小了成本。但是闪存密度的增大也使闪存内部的干扰增大,从而影响其可靠性。
闪存的主要干扰有:单元间干扰(cell-to-cell interference)和持久性干扰(retention noise)。其中,单元间干扰是由于寄生电容耦合效应,使得闪存的阈值电压分布整体往右偏移;而持久性干扰则是因为隧道氧化层发生电荷泄漏,从而使得闪存的阈值电压分布整体往左偏移。同时,持久性干扰会因为编程擦除次数和数据保持时间的增加,而动态变化,使得闪存的可靠性不断减少。
图1为每个闪存单元存储2比特的多级闪存中Upper page的阈值电压分布示意图。我们假设S0、S1、S2、S3这四种存储状态的信息分别为“11”、“10”、“00”、“01”,它们分别对应图中的四个分布。而在这四种信息在闪存中是分为Upper page和Lower page存储的,这四种状态的第一位比特存储在Upper page,第二位比特存储在Lower page。以Upper page为例说明,对于Upper page,四个分布存储的信息按顺序为1、1、0、0。因此,对于Upper page,其干扰主要在第二个分布与第三个分布之间。因此参考电压也设置在第二个分布与第三个分布之间。其中,实竖线是硬判决参考电压(共有1个),虚竖线是软判决参考电压(共有2个)。(参考电压可设置一个或多个,本申请以3个为例)。闪存是根据参考电压来确定闪存单元的电压范围,如图1所示,3个参考电压将整个阈值电压分布分为①、②、③、④共4个部分。当闪存单元的阈值电压位于①区间时,其LLR=-10;当闪存单元的阈值电压位于②区间时,其LLR=-5;当闪存单元的阈值电压位于③区间时,其LLR=+5;当闪存单元的阈值电压位于④区间时,其LLR=+10;
从图1可以看出闪存在没有发生持久性干扰时,硬判决参考电压和其左边软判决参考电压之间的部分(即图1(1)的②区间)存储信息为“1”的可能性较大。但是在经过持久性干扰后,使得闪存阈值电压分布整体往左偏移,最终导致硬判决参考电压和其左边软判决参考电压之间的部分存储信息为“0”的可能性较大(如图1(2)所示)。而闪存译码的对数似然比(log likelihood ratio,LLR)是一开始就存储在查找表里的,这就导致闪存发生持久性干扰后,位于②区域节点的对数似然比与实际情况的不符合(如未发生持久性干扰前,根据查找表,位于②区域节点的对数似然比小于0,但是在发生持久性干扰后的实际情况是需要对数似然比大于0)。同理,当持久性干扰继续增大时,图1中位于①区域的节点也会发生②区域这种对数似然比与实际不符的事情。与Upper page类似,Lower page也会出现跟Upper page同样的情况。
现有技术一般用纠错码算法来保证闪存的可靠性。然而,随着MLC、TLC型NAND闪存的应用,其闪存内部干扰的增大,传统的BCH纠错码已经不再能保证闪存的可靠性。因为闪存作为一存储元件需要具备较高的可靠性。一般在闪存中,其误码率需要达到10-15。而具有接近香农限性能的LDPC纠错码逐渐被广大厂商和研究者应用在NAND闪存中。相较于BCH纠错码使用硬判决译码方法,LDPC纠错码使用软判决译码方法能大大减小误码率。从而保证闪存的误码率在10-15以下。
这些算法如今发展为在2017年提出的一种shuffled BP的改进方法——IFS策略。图3为IFS策略例子的原理示意图。图3中,实线边表示该边连接的节点信息未更新,而虚线边则是表示节点信息已更新;αi为第i个校验节点所连接虚线边数;βj为第j个变量节点所连接的校验节点对应的α之和。用图2的Tanner图来说明IFS策略,具体过程如图3所示(其中图3a的第1子图为初始状态):
①IFS策略选择更新变量节点所连接最大边数的v5(v5连接3条边),如图3b所示,v5的3条边已更新,为虚线。同时,更新α。例如:校验节点c1只连接一条虚线边,则αi=1。同理α2=0、α3=0、α4=1、α5=1;更新完α后,更新β。例如:变量节点v1连接校验节点c1和c3,则β1=α1+α3=1。同理,β2=α1+α2=1、β3=α1+α5=2、β4=α2+α4=2、β6=α2+α3+α5=1、β7=α3+α4+α5=2;接着选取最大的β7=2,更新对应的变量节点v7。
②图3c所示,变量节点v7已更新,则其连接的边用虚线表示。然后重新计算α、β。选取最大的β6=3,更新对应的变量节点v6。
③更新完变量节点v6后,其α、β如图3d所示。之后一直重复以上步骤,最后如图3e所示所有边都更新完毕。
④最终IFS策略变量节点的更新顺序为:v5、v7、v6、v3、v1、v2、v4。
然而,这种Shuffled BP和IFS策略都需要精确的先验信息LLR,而在闪存经过一定的擦除次数后,导致查找表里的LLR不精确,从而使Shuffled BP和IFS策略收敛和纠错性能较差,是本领域技术人员需要解决的技术问题。
发明内容
本发明提供了一种多级闪存信道下的LDPC码动态串行调度译码算法及装置,用于解决传统的Shuffled BP和IFS策略在闪存受到干扰时收敛和纠错性能较差的技术问题。
本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法,包括:
根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类;
将变量节点的更新顺序按照变量节点类别进行排序;
根据排序后的变量节点更新顺序进行调度译码。
优选地,所述将变量节点的更新顺序按照变量节点类别进行排序具体为:
按照变量节点类别中的变量节点发生错误的容易程度将变量节点类别进行排序,形成变量节点的更新顺序。
优选地,所述按照变量节点类别中的变量节点发生错误的容易程度将变量节点类别进行排序具体为按照变量节点类别中的变量节点发生错误的容易程度由容易到困难将变量节点类别进行排序。
优选地,所述变量节点发生错误的容易程度具体根据闪存单元的阈值电压范围确定。
优选地,所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类及将变量节点的更新顺序按照变量节点类别进行排序包括全串行算法,具体步骤为:
设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
获取闪存单元的阈值电压v的范围;
选择剩下的变量节点,将其序号存进向量S中;
将向量S中变量节点顺序作为变量节点的更新顺序;
所述第一循环步骤为:
判断k是否大于0,若是,则选择阈值电压在Vk<v<Vk+1的变量节点并将该变量节点的序号存进向量S中;
判断k是否等于0,若是,则选择阈值电压在v≤Vk+1的变量节点并将这个变量节点的序号存进向量S中;
将k减一的值赋给k。
优选地,所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类及将变量节点的更新顺序按照变量节点类别进行排序包括半串行算法,具体步骤为:
设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
获取闪存单元的阈值电压v的范围;
将向量S中变量节点顺序作为变量节点的更新顺序;
所述第二循环步骤为:
将k减一的值赋给k;
所述第三循环步骤为:
判断集合Bk是否选择串行译码,若是,则将更新顺序Bk存进向量S中;
判断集合Bk是否选择并行译码,若是,则将更新顺序<Bk>存进向量S中,符号<>表示集合内的节点同时更新;
将k加一的值赋给k。
优选地,所述预设参考电压具体设定为三个,包括:硬判决参考电压、第一软判决参考电压、第二软判决参考电压;
所述第一软判决参考电压小于所述硬判决参考电压,所述硬判决参考电压小于所述第二软判决参考电压;
所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类具体包括:
将阈值电压小于第一软判决参考电压的变量节点分为第一类;
将阈值电压大于第一软判决参考电压且小于硬判决参考电压的变量节点分为第二类;
将阈值电压大于硬判决参考电压且小于第二软判决参考电压的变量节点分为第三类;
将阈值电压大于第二软判决参考电压的变量节点分为第四类。
优选地,将变量节点的更新顺序按照变量节点类别进行排序具体包括:
判断闪存受到干扰后,将变量节点的更新顺序按照第二类变量节点、第一类变量节点、第三类和第四类合并变量节点的顺序进行排序。
优选地,所述根据排序后的变量节点更新顺序进行调度译码具体包括:
对第二类变量节点进行串行或并行更新;
对第一类变量节点进行串行或并行更新;
对第三类和第四类合并变量节点进行串行或并行更新。
本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码装置,包括:闪存管理模块;
所述闪存管理模块包括存储器和处理器;
所述存储器,用于存储指令;
所述处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的指令执行实现如上述的方法。
从以上技术方案可以看出,本发明具有以下优点:
本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法及装置,其中方法包括:根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类;将变量节点的更新顺序按照变量节点类别进行排序;根据排序后的变量节点更新顺序进行调度译码。本发明通过将变量节点分类,并按照变量节点类别对变量节点的更新顺序进行排序,能够实现按照一定分类顺序进行变量节点的更新,在闪存受到干扰时,能够通过不同类别的更新顺序使得类别较好的变量节点对类别不好的变量节点进行纠错,从而提高纠错性能和收敛速度,解决传统的Shuffled BP和IFS策略在闪存受到干扰时收敛和纠错性能较差的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为每个闪存单元存储2比特的多级闪存的阈值电压分布示意图,其中三条竖线代表三个参考电压,实竖线是硬判决参考电压,左边虚竖线是第一软判决参考电压,右边虚竖线是第二软判决参考电压;
图2为5×7校验矩阵及其Tanner图;
图3a、图3b、图3c、图3d、图3e为IFS策略例子的原理示意图;
图4为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的一个实施例的示意图;
图5为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例的示意图;
图6为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例的示意图;
图7为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例的示意图;
图8a为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的原理图;
图8b为现有技术中关于Shuffled BP算法的纠错性能低下的原理图;
图9a和图9b为本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法与与IFS策略的性能仿真图。
具体实施方式
本发明提供了一种多级闪存信道下的LDPC码动态串行调度译码算法及装置,用于解决传统的Shuffled BP和IFS策略在闪存受到干扰时收敛和纠错性能较差的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图4,本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的一个实施例,包括:
101、根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类;
一般来说,分类根据预设的参考电压进行分类,根据闪存的阈值电压分布,参考电压一般将阈值电压分成多个区域,对应与类别。如每个闪存单元存储2比特的闪存单元一般分为Upper page和Lower page,每个page被参考电压分为四个区域(参阅图1),即四个类别,如每个闪存单元存储3比特的闪存单元则有三个page,每个page被参考电压分为八个区域,即八个类别。
102、将变量节点的更新顺序按照变量节点类别进行排序;
具体为:按照变量节点类别中的变量节点发生错误的容易程度(由容易到困难)将变量节点类别进行排序,形成变量节点的更新顺序,这样,在IFS策略中就会先更新容易发生错误的一类变量节点,之后更新不容易发生错误的节点时能够通过正确节点的信息来纠正这些错误的节点。若有些算法是由先更新的节点纠正后更新的节点,则需要将顺序修改为由困难到容易。
103、根据排序后的变量节点更新顺序进行调度译码。
其中,变量节点发生错误的容易程度具体根据闪存单元及其受到的干扰类型确定。具体地,比如每个闪存单元存储2比特的多级闪存单元中的Upper page,其四种存储状态为1、1、0、0,并且通过硬判决参考电压和软判决参考电压将其分为①②③④四个类别,由于Upper page的存储状态为1、1、0、0,即②③两个类别之间容易发生错误,如当发生持久性干扰时,闪存阈值电压分布整体往左偏移,使得②类别容易发生错误,则将②类别的变量节点发生错误的容易程度设定为比较容易发生错误,其他类别如①是在持久性干扰继续增大时会变得容易发生错误,则将①类别的变量节点发生错误的容易程度设定为有可能发生错误,如③④两个类别,持久性干扰无论如何增大,这两个类别都不容易发生错误,则将其设定为不容易发生错误,这些容易程度可用参数设定,也可直接通过算法在排序上将容易发生错误的变量节点排在前面,此处不具体限定。
因此,本发明通过将变量节点分类,并按照变量节点类别对变量节点的更新顺序进行排序,能够实现按照一定分类顺序进行变量节点的更新,在闪存受到干扰时,能够通过不同类别的更新顺序使得类别较好的变量节点对类别不好的变量节点进行纠错,从而提高纠错性能和收敛速度,解决传统的Shuffled BP和IFS策略在闪存受到干扰时收敛和纠错性能较差的技术问题。
预设参考电压可以为三个,包括:硬判决参考电压、第一软判决参考电压、第二软判决参考电压,也可以为其他个数,此处不具体限定。
以上是对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的一个实施例进行详细的描述,以下将对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例进行详细的描述。
请参阅图5,本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例,具体为全串行译码算法,包括:
201、设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
202、获取闪存单元的阈值电压v的范围;
204、选择剩下的变量节点,将其序号存进向量S中;
205、将向量S中变量节点顺序作为变量节点的更新顺序;
206、根据变量节点的更新顺序进行调度译码。
第一循环步骤为:
判断k是否大于0,若是,则选择阈值电压在Vk<v<Vk+1的变量节点并将该变量节点的序号存进向量S中;
判断k是否等于0,若是,则选择阈值电压在v≤Vk+1的变量节点并将这个变量节点的序号存进向量S中;
将k减一的值赋给k。
该第一循环步骤相当于将阈值电压在参考电压的范围内的变量节点(即某类变量节点)放入向量S中,向量S的顺序即变量节点的更新顺序。
需要说明的是,例如向量S是(B1B2B3B4),则先根据向量B1的顺序进行串行译码,再根据向量B2的顺序进行串行译码,再根据向量B3的顺序进行串行译码,最后根据向量B4的顺序进行串行译码。
本实施例还可以用C语言说明如下:
设置参考电压Vk(k=1...Ω)在每个存储状态的重叠区域;
感知闪存单元的阈值电压v的范围;
选择剩下的变量节点,将其序号存进向量S中;
按照向量S中的顺序进行串行译码;
以上是对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例进行详细的描述,以下将对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例进行详细的描述。
请参阅图6,本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例,具体是半串行译码算法,具体包括:
301、设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
302、获取闪存单元的阈值电压v的范围;
306、将向量S中变量节点顺序作为变量节点的更新顺序;
307、根据变量节点更新顺序进行调度译码。
第二循环步骤为:
将k减一的值赋给k;
该第二循环步骤相当于将阈值电压在参考电压的范围内的变量节点(即某类变量节点)放入向量S中,向量S的顺序即变量节点的更新顺序(即排序)。
所述第三循环步骤为:
判断集合Bk是否选择串行译码,若是,则将更新顺序Bk存进向量S中;
判断集合Bk是否选择并行译码,若是,则将更新顺序<Bk>存进向量S中,符号<>表示集合内的节点同时更新;
将k加一的值赋给k。
需要说明的是,例如向量S是(B1B2<B3>B4),则先根据向量B1的顺序进行串行译码,再根据向量B2的顺序进行串行译码,再根据向量B3的顺序进行并行译码,最后根据向量B4的顺序进行串行译码。
本实施例还可以用C语言说明如下:
设置参考电压Vk(k=1...Ω)在每个存储状态的重叠区域;
感知闪存单元的阈值电压v的范围;
按照向量S中的顺序进行半串行译码。
以上是对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例进行详细的描述,以下将对本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例进行详细的描述。
请参阅图7本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码算法的另一个实施例,具体是针对每个闪存单元存储2比特的多级闪存单元中的Upper page受到持久性干扰时的具体实施例,本实施例中预设参考电压如图1所示,预设参考电压为三个,包括:硬判决参考电压(实竖线)、第一软判决参考电压(左边虚竖线)、第二软判决参考电压(右边虚竖线),本实施例包括以下步骤:
401、将阈值电压小于第一软判决参考电压的变量节点分为第一类;将阈值电压大于第一软判决参考电压且小于硬判决参考电压的变量节点分为第二类;将阈值电压大于硬判决参考电压且小于第二软判决参考电压的变量节点分为第三类;将阈值电压大于第二软判决参考电压的变量节点分为第四类。
402、判断闪存受到持久性干扰,将变量节点的更新顺序按照第二类变量节点、第一类变量节点、第三类和第四类合并变量节点的顺序进行排序。
403、对第二类变量节点进行串行或并行更新;对第一类变量节点进行串行或并行更新;对第三类和第四类合并变量节点进行串行或并行更新。
预设参考电压包括:硬判决参考电压、第一软判决参考电压、第二软判决参考电压;
步骤403中,全部类别都进行串行更新是最简单的方式,但是,为了提高纠错和收敛性能,可以将其中一些类别里面的变量节点同时进行并行更新,如可以同时对第一类里面的变量节点进行并行更新,更新完毕后,再同时对第二类的变量节点进行并行更新,如此类推。
就本实施例对本发明的原理进行解释:
本发明是根据持久性干扰动态变化的特性,来选择更新变量节点。这种动态串行调度的译码算法可以比Shuffled BP和IFS策略实现更好的收敛和纠错性能。下面介绍提出算法的原理:
先以Upper page为例说明,图1是其说明图。对于Upper page,四个分布存储的信息按顺序为1、1、0、0。因此,对于Upper page,其干扰主要在第二个分布与第三个分布之间。因此参考电压也设置在第二个分布与第三个分布之间。其中,实竖线是硬判决参考电压(共有1个),虚竖线是软判决参考电压(共有2个)。闪存是根据参考电压来确定闪存单元的电压范围,如图1所示,3个参考电压将整个阈值电压分布分为①、②、③、④共4个部分。当闪存单元的阈值电压位于①区间时,其LLR=-10;当闪存单元的阈值电压位于②区间时,其LLR=-5;当闪存单元的阈值电压位于③区间时,其LLR=+5;当闪存单元的阈值电压位于④区间时,其LLR=+10;
从图1可以看出闪存在没有发生持久性干扰时,硬判决参考电压和其左边软判决参考电压之间的部分(即图1(1)的②区间)存储信息为“1”的可能性较大。但是在经过持久性干扰后,使得闪存阈值电压分布整体往左偏移,最终导致硬判决参考电压和其左边软判决参考电压之间的部分存储信息为“0”的可能性较大(如图1(2)所示)。而闪存译码的对数似然比(log likelihood ratio,LLR)是一开始就存储在查找表里的,这就导致闪存发生持久性干扰后,位于②区域节点的对数似然比与实际情况的不符合(如未发生持久性干扰前,根据查找表,位于②区域节点的对数似然比小于0,但是在发生持久性干扰后的实际情况是需要对数似然比大于0)。同理,当持久性干扰继续增大时,图1中位于①区域的节点也会发生②区域这种对数似然比与实际不符的事情。与Upper page类似,Lower page也会出现跟Upper page同样的情况。以下提出的对Upper page多级闪存信道下的LDPC码动态串行调度译码算法,可以以同样的原理运用到Lower page中。
以图1的Uppper page和3个参考电压为例(即以本实施例为例),描述对应的应用例,包括以下步骤:
1、初始化n个变量节点的更新顺序为:S=[1,2,…,n];
2、假设有i个变量节点位于硬判决参考电压和其左边软判决参考电压之间的部分(即图1的②LLR=-5区域),这i个节点的位置是x1,x2,…,xi,则提出算法的前i个更新顺序为:S=[x1,x2,…,xi];
3、假设有j个变量节点位于图1的①LLR=-10区间,这j个节点的位置是y1,y2,…,yj,则提出算法的前i+j个更新顺序为:
S=[x1,x2,…,xi,y1,y2,…,yj];
4、剩余k个节点(即③LLR=+5和④LLR=+10区间),其的位置为z1,z2,…,zk则最终的n个节点更新顺序为:
S=[x1,x2,…,xi,y1,y2,…,yj,z1,z2,…,zk];
5、按照S=[x1,x2,…,xi,y1,y2,…,yj,z1,z2,…,zk]的顺序进行串行调度译码。
总的来说,因为3个参考电压将Upper page的阈值电压分布分为①、②、③、④共4个部分。而提出算法的调度顺序是节点更新按照位于②→①→其它(即③或④)区间的顺序更新。即首先先按顺序串行更新位于②区间的节点,然后是按顺序串行更新位于①区间的节点,最后是按顺序串行更新位于③或④区间的节点。
对于上述提出的多级闪存信道下的LDPC动态串行调度译码算法,这是全串行译码的,为了提高译码速度,可以参考Group shuffled BP这种半串行、半并行的译码算法。例如:上述算法是按照②→①→其它(即③或④)区间的顺序全串行更新。参考Groupshuffled BP译码算法,上述算法可以分为②→①→其它(即③或④)三组,组内并行,组外串行。这样则可以加快其译码速度。为了提高纠错和收敛性能,第一,可以对位于②组内的变量节点进行串行更新,位于①组内的变量节点进行并行更新,而位于其它(即③或④)组内的变量节点也是进行并行更新;第二,可以对位于②组内的变量节点进行串行更新,位于①组内的变量节点进行串行更新,而位于其它(即③或④)组内的变量节点也是进行并行更新。
因为持久性干扰的影响,闪存阈值电压分布会往左偏移,那么位于硬判决参考电压左边区域的节点容易发生错误。而提出的算法因为先更新这些节点,则能够别的正确节点的信息来纠正这个错误的节点。以图8为例子,假设变量节点v3是位于硬判决参考电压左边区域,且因为持久性干扰而发生错误。因为提出的算法先更新这个节点,则其能从v1和v2正确的节点信息来纠正该错误节点(如图8a所示)。而Shuffled BP它是按照v1、v2、v3的节点顺序来更新节点,则v3的错误信息则很大可能影响v1、v2的节点更新,最坏的可能是导致译码失败(如图8b所示)。
最后使用(2304,2048)LDPC码和(4544,4096)LDPC码对提出的算法和IFS策略进行比较。在仿真中,在每个存储状态的重叠区域的参考电压数Ω=5。其中,对于仿真图中,Flooding表示并行译码算法、IFS表示IFS策略、Proposed shuffled表示提出的动态串行调度译码算法并采用全串行的方式、Proposed group shuffled-4表示提出的算法变量节点分为四组,组内并行,组外串行、Proposed group shuffled-multi表示提出的算法变量节点分为多组,组内并行,组外串行。对于(2304,2048)LDPC码,闪存信道的信道参数为:单元间干扰因子(cell-to-cell coupling strength factor)为1.4,retention time=500hours,P/E cycles=1000。从图9a可以看出:提出的动态串行调度算法的收敛速度和纠错性能都比IFS策略好。对于(4544,4096)LDPC码,闪存信道的信道参数为:单元间干扰因子(cell-to-cell coupling strength factor)为1.4,retention time=1000hours,P/Ecycles=1000。从图9b可以看出:提出的动态串行调度算法的收敛速度和纠错性能都比IFS策略好。例如:第一,提出的算法在迭代次数为10的情况下就收敛了,而IFS策略则在迭代次数为40的情况下收敛。第二,在迭代次数同样在50的情况下,提出算法的误帧率(Frameerror ratio,FER)达到3.6×10-5,而IFS只有1.9×10-4。同时提出的半串行、半并行译码算法Proposed group shuffled-4、Proposed group shuffled-multi都比IFS和并行译码算法Flooding具有更快的译码收敛速度。
本发明提供的一种多级闪存信道下的LDPC码动态串行调度译码装置,包括:闪存管理模块;
闪存管理模块包括存储器和处理器;
存储器,用于存储指令;
处理器,耦合到存储器,处理器被配置为基于存储器存储的指令执行实现如上述实施例的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,包括:
根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类;其中,所述预设参考电压具体设定为三个,包括:硬判决参考电压、第一软判决参考电压和第二软判决参考电压;所述第一软判决参考电压小于所述硬判决参考电压,所述硬判决参考电压小于所述第二软判决参考电压;
所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类具体包括:
将阈值电压小于第一软判决参考电压的变量节点分为第一类;
将阈值电压大于第一软判决参考电压且小于硬判决参考电压的变量节点分为第二类;
将阈值电压大于硬判决参考电压且小于第二软判决参考电压的变量节点分为第三类;
将阈值电压大于第二软判决参考电压的变量节点分为第四类;
将变量节点的更新顺序按照变量节点类别进行排序;具体为,当闪存受到干扰时,将变量节点的更新顺序按照第二类变量节点第一位、第一类变量节点第二位、第三类和第四类合并变量节点第四位的顺序进行排序;
根据排序后的变量节点更新顺序进行调度译码;具体为,
首先对第二类变量节点进行串行或并行更新;
然后对第一类变量节点进行串行或并行更新;
最后对第三类和第四类合并变量节点进行串行或并行更新。
2.根据权利要求1所述的一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,所述将变量节点的更新顺序按照变量节点类别进行排序具体为:
按照变量节点类别中的变量节点发生错误的容易程度将变量节点类别进行排序,形成变量节点的更新顺序。
3.根据权利要求2所述的一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,所述按照变量节点类别中的变量节点发生错误的容易程度将变量节点类别进行排序具体为按照变量节点类别中的变量节点发生错误的容易程度由容易到困难将变量节点类别进行排序。
4.根据权利要求2所述的一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,所述变量节点发生错误的容易程度具体根据闪存单元的阈值电压范围确定。
5.根据权利要求1所述的一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类及将变量节点的更新顺序按照变量节点类别进行排序包括全串行算法,具体步骤为:
设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
获取闪存单元的阈值电压v的范围;
选择剩下的变量节点,将其序号存进向量S中;
将向量S中变量节点顺序作为变量节点的更新顺序;
所述第一循环步骤为:
判断k是否大于0,若是,则选择阈值电压在Vk<v<Vk+1的变量节点并将该变量节点的序号存进向量S中;
判断k是否等于0,若是,则选择阈值电压在v≤Vk+1的变量节点并将这个变量节点的序号存进向量S中;
将k减一的值赋给k。
6.根据权利要求1所述的一种多级闪存信道下的LDPC码动态串行调度译码方法,其特征在于,所述根据变量节点对应的阈值电压与预设参考电压的大小关系将变量节点分类及将变量节点的更新顺序按照变量节点类别进行排序包括半串行算法,具体步骤为:
设置参考电压Vk在每个存储状态的重叠区域,k=1...Ω,Ω为参考电压总数;
获取闪存单元的阈值电压v的范围;
将向量S中变量节点顺序作为变量节点的更新顺序;
所述第二循环步骤为:
将k减一的值赋给k;
所述第三循环步骤为:
判断向量Bk是否选择串行译码,若是,则将更新顺序Bk存进向量S中;
判断向量Bk是否选择并行译码,若是,则将更新顺序<Bk>存进向量S中,符号<>表示向量内的节点同时更新;
将k加一的值赋给k。
7.一种多级闪存信道下的LDPC码动态串行调度译码装置,其特征在于,包括:闪存管理模块;
所述闪存管理模块包括存储器和处理器;
所述存储器,用于存储指令;
所述处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的指令执行实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810468844.7A CN108683423B (zh) | 2018-05-16 | 2018-05-16 | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810468844.7A CN108683423B (zh) | 2018-05-16 | 2018-05-16 | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108683423A CN108683423A (zh) | 2018-10-19 |
CN108683423B true CN108683423B (zh) | 2022-04-19 |
Family
ID=63806632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810468844.7A Active CN108683423B (zh) | 2018-05-16 | 2018-05-16 | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108683423B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111147084B (zh) * | 2018-11-06 | 2023-12-19 | 北京忆芯科技有限公司 | 多通道并行译码器及其译码方法 |
CN110011670B (zh) * | 2019-03-27 | 2023-04-28 | 深圳忆联信息***有限公司 | 基于ssd数据保护的ldpc译码方法和装置 |
CN110098895B (zh) * | 2019-04-11 | 2020-10-23 | 中山大学 | 基于变量节点动态分块更新的ldpc码译码方法 |
CN110752850B (zh) * | 2019-08-27 | 2023-04-07 | 广东工业大学 | 一种mlc闪存芯片ldpc码快速迭代的方法 |
CN111446971A (zh) * | 2020-02-11 | 2020-07-24 | 上海威固信息技术股份有限公司 | 一种基于共享子矩阵的自适应低密度奇偶校验码编码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202549A (zh) * | 2007-08-14 | 2008-06-18 | 东南大学 | 一种提高标准置信度传播译码性能的方法 |
CN103186352A (zh) * | 2011-12-30 | 2013-07-03 | 三星电子株式会社 | 从存储设备读取数据的方法、纠错设备和存储*** |
CN106992026A (zh) * | 2017-03-20 | 2017-07-28 | 中山大学 | 一种针对NAND‑Flash存储介质的LDPC码快速信息恢复的译码方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100539440C (zh) * | 2006-06-09 | 2009-09-09 | 东南大学 | 低密度奇偶校验码迭代排序统计译码方法 |
US7630252B2 (en) * | 2007-06-25 | 2009-12-08 | Sandisk Corporation | Systems for programming multilevel cell nonvolatile memory |
KR100938045B1 (ko) * | 2008-03-14 | 2010-01-21 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 테스트 방법 |
CN101478313B (zh) * | 2009-01-23 | 2011-12-28 | 清华大学 | 一种ldpc译码器的最小值计算装置及其构造方法 |
JP2012181761A (ja) * | 2011-03-02 | 2012-09-20 | Toshiba Corp | 半導体メモリ装置および復号方法 |
CN104205235B (zh) * | 2012-03-29 | 2017-08-08 | 英特尔公司 | 用于处理从非易失性存储器阵列检索的状态置信度数据的方法和设备 |
US8839073B2 (en) * | 2012-05-04 | 2014-09-16 | Lsi Corporation | Zero-one balance management in a solid-state disk controller |
CN102664638A (zh) * | 2012-05-31 | 2012-09-12 | 中山大学 | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 |
JP5591876B2 (ja) * | 2012-06-22 | 2014-09-17 | 株式会社東芝 | 誤り訂正装置、誤り訂正方法およびプログラム |
CN103354101B (zh) * | 2013-05-31 | 2015-10-21 | 上海华力创通半导体有限公司 | 一种用于快闪存储器纠错的ldpc码解码装置 |
TWI619353B (zh) * | 2013-07-03 | 2018-03-21 | Lsi公司 | 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制 |
US9202584B1 (en) * | 2014-05-08 | 2015-12-01 | Freescale Semiconductor, Inc. | Power supply slew rate detector |
US9576673B2 (en) * | 2014-10-07 | 2017-02-21 | Sandisk Technologies Llc | Sensing multiple reference levels in non-volatile storage elements |
KR102265220B1 (ko) * | 2015-03-09 | 2021-06-16 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10148293B2 (en) * | 2015-03-17 | 2018-12-04 | SK Hynix Inc. | Incremental LLR generation for flash memories |
CN106197543B (zh) * | 2016-07-13 | 2019-01-11 | 北方***科技有限公司 | 一种水声环境监测的无线通信***与方法 |
JP6164713B1 (ja) * | 2016-08-24 | 2017-07-19 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
CN106685431B (zh) * | 2016-12-05 | 2019-10-18 | 华南理工大学 | 基于Nand Flash的LDPC获取软信息译码方法及编译码器 |
CN107863128B (zh) * | 2017-11-28 | 2020-07-10 | 广东工业大学 | 一种多级闪存单元纠错方法、***、装置及可读存储介质 |
-
2018
- 2018-05-16 CN CN201810468844.7A patent/CN108683423B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202549A (zh) * | 2007-08-14 | 2008-06-18 | 东南大学 | 一种提高标准置信度传播译码性能的方法 |
CN103186352A (zh) * | 2011-12-30 | 2013-07-03 | 三星电子株式会社 | 从存储设备读取数据的方法、纠错设备和存储*** |
CN106992026A (zh) * | 2017-03-20 | 2017-07-28 | 中山大学 | 一种针对NAND‑Flash存储介质的LDPC码快速信息恢复的译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108683423A (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683423B (zh) | 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置 | |
US9502117B2 (en) | Cell-level statistics collection for detection and decoding in flash memories | |
US10510405B2 (en) | Soft information module | |
US8429501B2 (en) | Memory storage device, memory controller thereof, and method thereof for generating log likelihood ratio | |
US20130163328A1 (en) | Inter-cell interference algorithms for soft decoding of ldpc codes | |
CN104601178B (zh) | 解码方法、解码电路、存储器存储装置与控制电路单元 | |
CN105989891A (zh) | 用于增强的闪存性能的读取级别分组 | |
US20150293813A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN106371943A (zh) | 一种基于flash编程干扰错误感知的LDPC译码优化方法 | |
Jarollahi et al. | Architecture and implementation of an associative memory using sparse clustered networks | |
CN107395214B (zh) | 一种基于闪存页错误特性降低ldpc译码延迟的方法 | |
CN111145820B (zh) | 一种数据读取方法及装置、存储介质和设备 | |
CN107863128A (zh) | 一种多级闪存单元纠错方法、***、装置及可读存储介质 | |
CN102893529B (zh) | 用于ldpc码的解码的方法和*** | |
CN109660263B (zh) | 一种适用于mlc nand闪存的ldpc码译码方法 | |
CN109471808A (zh) | 具有数据可靠性机制的存储***及其操作方法 | |
CN109901945A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN108809330B (zh) | 一种针对NAND-Flash存储介质的LDPC码译码方法 | |
KR101631128B1 (ko) | 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 | |
Peng et al. | Dynamic LLR scheme based on EM algorithm for LDPC decoding in NAND flash memory | |
CN105575440B (zh) | 错误处理方法、存储器储存装置及存储器控制电路单元 | |
CN110098895B (zh) | 基于变量节点动态分块更新的ldpc码译码方法 | |
CN103973316A (zh) | 具有使用定标常数的可变节点更新器的ldpc解码器 | |
CN110970080B (zh) | 训练人工智能估测存储装置的感测电压的方法 | |
CN105320573B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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: 20220608 Address after: 518000 zone a, floor 1, building A1, Shenzhen digital technology park, No. 17, Gaoxin South seventh Road, high tech Zone community, Yuehai street, Nanshan District, Shenzhen, Guangdong Patentee after: SHENZHEN SILICONGO MICROELECTRONICS Co.,Ltd. Address before: No.729, Dongfeng East Road, Yuexiu District, Guangzhou City, Guangdong Province 510060 Patentee before: GUANGDONG University OF TECHNOLOGY |
|
TR01 | Transfer of patent right |