背景技术
低密度奇偶校验(LDPC)码最初由Gallager提出并通过MacKay和Meal变得重要起来,此类代码是强大的代码,允许快速且可靠地检索使用可接受的冗余级别编码的信息。因此,LDPC码广泛用于在存储器上存储信息或传输信息,因为它们需要的信息冗余以及纠正在写入和读取之间或发送和接收之间在信息中引入的错误所需的时间不会令人望而却步。
在存储器存储中,通道模型(广泛用于信息和编码理论的术语)是一种用于描述在读取的编码数据和要写入的编码数据之间观察到的错误的模型。根据此模型,当错误被引入数据时,一个数据块采用一个通道。通常,当数据块包括要在存储器上写入然后读取的位序列时,可以在写入期间或存储期间或甚至读取期间修改位的真实值(即,要写入的位的值)。可以使用不同的通道模型,具体取决于应用以及对错误原因做出的假设。广泛使用的通道包括加性白高斯通道(AWGN)和二进制对称通道(BSC)。
单层单元(SLC)闪存是包括可以在其上写入位的独立单元的存储器。因此每个单元表示一个位。闪存单元基于浮栅晶体管技术。换言之,在闪存单元的晶体管栅极上“捕获”的电荷确定在闪存单元上读取的逻辑级别(即,位的值)。稍微简单地说,闪存的工作方式可以描述为如下:当“擦除”单元时,将电荷放在栅极上并将单元读取为逻辑1(即,位的值是1)。在单元上“编程(即,写入)0”相当于对栅极进行放电,使逻辑值达到0。只可以对已被擦除(对应被充电)的单元进行编程(对应放电)。
闪存以页面和块布置,并且一个页面通常包括多个闪存单元(例如,4096个字节用于存储信息位,128个字节用于存储冗余位),一个块包括多个页面(例如64)。读取和写入操作通常针对页面级别执行,而擦除操作针对整个块执行。因为只对被写入0的位进行放电,所以剩余的位仍然保持充电。这意味着对于任何特定单元/位而言,导致的实际耗损与曾经在其上写入的0的数量成比例。通常,闪存单元具有10,000次擦除/写入循环的持久性规范,即,每个单元可以擦除和写入10,000次0。
因为充电/放电过程是闪存读取/写入/擦除操作固有的,所以可以认识到最常见的错误模式是不需要的1到0转换。这可以通过图1中所示的所谓二进制非对称通道(BAC)建模。参考图1,写入的1可以读出为1的概率是1-a,读出为0的错误概率是a,而存储的0可以读出为0的概率是1-a/b,读出为1的错误概率是1-a/b,其中a是小数,范围从10-3到10-5,b是大于1的实数,例如10。通过忽略从0到1的错误模式,闪存有时可以备选地通过如图2中所示的Z通道建模,但这是当b趋于无穷大时的BAC的特殊情况。
正如在其他通道模型上,可以在闪存上写入通过LDPC码编码的位序列。以下文档介绍非对称通道的LDPC编码:
-“LDPCcodesforbinaryasymmetricchannels(二进制非对称通道的LDPC码)”,作者Marina,N.,ICT2008。2008年度国际电信会议。2008年6月16-19日,第1-7页;
-“DoesthePerformanceofLDPCCodesDependontheChannel?(LDPC码的性能依赖于通道吗?)”,作者Franceschini,M.、Ferrari,G.、Raheli,R.,IEEE通信汇刊,第54卷第12期,2006年12月,第2129-2132页;
-“MaximumLikelihoodDecodingofCodesontheZ-channel(Z通道上的代码最大似然解码)”,作者Barbero,A.;Ellingsen,P.;Spinsante,S.;Ytrehus,O.,2006年度IEEE国际通信会议,第3卷,2006年6月,第1200-1205页;以及
-“Densityevolutionforasymmetricmemorylesschannels(非对称无记忆通道的密度演化)”,作者Wang,C.-C.;Kulkarni,S.R.、Poor,H.V.,IEEE信息理论汇刊,第51卷第12期,2005年12月,第4216-4236页。
使用实际解码算法对采用LDPC码编码的信息解码。这些算法包括诸如位翻转、GallagerA/B、置信度传播以及和-积之类的算法,它们针对长LDPC码执行,并证明可提供卓越的错误保护。在这些解码算法中,位翻转最简单并且易于实现。
位翻转算法的优点是关联的解码复杂性明显低于其他算法。将简要讨论例如通过FengGuo和LajosHanzol的标题为“ReliabilityRatioBasedWeightedBit-FlippingDecodingforLDPCcodes(LDPC码的基于可靠性比的加权位翻转解码)”的文档所公开的与和-积算法的比较。对于每个编码位的每次迭代,和-积算法需要2jq数量的加法和7jq/log2(q)次乘法,其中q是解码字段的大小,在此二进制方案中是2。如果块长度为1000个位并且最多为10次迭代,所需的算术运算的数量是200,000次加法和700,000次乘法。此外,位翻转算法不需要任何成本高昂的加法和乘法。位翻转算法通过评估校验子只需要逻辑运算,这需要很少的数字逻辑并可以极其快速。
以下文档涉及LDPC码迭代解码的各种版本的位翻转算法:
-“AnimprovementonthemodifiedweightedbitflippingdecodingalgorithmforLDPCcodes(有关LDPC码的已修改加权位翻转解码算法的改进)”,作者MingJiang;ChunmingZhao;ZhihuaShi;YuChen,IEEE通信快讯,第9卷第9期,2005年9月,第814-816页;
-“OntheErrorCorrectionofRegularLDPCCodesUsingtheFlippingAlgorithm(使用翻转算法对常规LDPC码进行错误纠正)”,作者Burshtein,D.,IEEE信息理论汇刊,第54卷第2期,2008年2月,第517-530页;
-“AModificationtoWeightedBit-FlippingDecodingAlgorithmforLDPCCodesBasedonReliabilityAdjustment(根据可靠性调整对LDPC码的加权位翻转解码算法的修改)”,作者Dajun,Qian;MingJiang;ChunmingZhao;XiaofuWu,2008年度IEEE国际通信会议。ICC’08,2008年5月19-23日,第1161-1165页。
以下描述位翻转算法的大概情况。
具有长度N和维度K的二进制(N,K)LDPC码通常由奇偶校验矩阵H定义。H具有N个列和M个行,并且M>=N-K。H的每个列对应于信息位或奇偶校验位,每个行对应于校验和。对于任何暂定位决策向量b,校验和或校验子的集合是向量s=bHT。
在位翻转算法中,解码器使用二进制输入序列b(即,读出的闪存页面)通过简单的“异或”运算(即s=bHT)计算每个奇偶校验。如果s中的对应位是0,则满足奇偶校验,如果对应位是1,则不满足。如果涉及位的不满足的校验的数量超过固定翻转阈值t,则计划翻转此位。然后在解码过程的下一次迭代中使用翻转后的位。当满足所有奇偶校验或达到预定最大迭代限制时,解码算法将停止。因此,生成的位翻转算法的伪代码可以包括以下步骤:
i.使用s=bHT计算奇偶校验。如果满足所有这些奇偶校验,则停止解码。
ii.否则,针对每个位找到不满足的奇偶校验的数量。依次将每个位视为目标。
iii.如果不满足目标位的大多数奇偶校验等式,则在下一次解码迭代之前翻转此位。
iv.重复步骤(i)到(iii)。
上述算法提供了在二进制对称通道上写入的LDPC码的满意解码结果。然而,需要提供一种改进LDPC码解码的方法。
发明内容
根据第一方面,本发明体现为一种用于对在诸如闪存的采用二进制非对称通道的存储器上写入的位序列进行解码的方法,所述位序列通过低密度奇偶校验码或LDPC码编码,由此所述序列的每个位具有通过所述LDPC码定义的对应奇偶校验,所述方法包括:
-提供包括第一状态和第二状态的位状态集合以及条件集合,其中当满足条件时,更改位状态,所述条件集合包括用于将位状态从所述第一状态更改为所述第二状态的第一条件和用于将位状态从所述第二状态更改为所述第一状态的第二条件,其中所述第一条件和所述第二条件不同,
-读取所述位序列的每个位的值,并根据所读取的值将每个位关联到所述集合的相应状态,
-对于所述位序列的目标位,评估条件,其中:
■根据所述目标位的状态从所述条件集合中选择条件,以及
■使用计算与所述目标位对应的奇偶校验的结果来评估所述条件,
-确定满足所述条件,
-作为满足所述条件的结果而更改所述目标位的状态,以及
-根据所述目标位的状态设置所述目标位的值。
在各实施例中,所述方法可以包括以下一个或多个特征:
-重复评估步骤,在所述评估步骤的每次重复中,所述目标位是所述序列的不同位;
-重复所述评估步骤,直到计算所述奇偶校验的结果指示满足所有奇偶校验或达到最大重复数为止;
-所述位状态集合包括所述第一状态和所述第二状态,所述条件集合包括所述第一条件和所述第二条件,在关联每个位的步骤中,如果读取的位的值是0,则将位关联到所述第一状态,如果读取的位的值是1,则关联到所述第二状态,在设置所述目标位的值的步骤中,如果所述目标位关联到所述第一状态,则将所述目标位的值设置为0,如果所述目标位关联到所述第二状态,则设置为1;
-只要不满足对应于所述目标位的大多数奇偶校验,则满足所述第一条件,而只要不满足对应于所述目标位的所有奇偶校验,则满足所述第二条件;
-只要不满足的对应于所述目标位的奇偶校验的数量高于第一阈值,则满足所述第一条件,而只要不满足的对应于所述目标位的奇偶校验的数量高于第二阈值,则满足所述第二条件,所述第一阈值和所述第二阈值不同;
-所述位状态集合还包括第三状态和第四状态,所述条件集合包括条件对的第一子集,其中对的一个条件是用于将位状态从第i状态更改为第j状态的条件,该对的另一条件是用于将位状态从所述第j状态更改为所述第i状态的条件,对的所述条件不同,并且所述第一条件和所述第二条件形成一对所述第一子集,所述条件集合还包括条件对的第二子集,其中对的一个条件是用于将位状态从第k状态更改为第l状态的条件,该对的另一条件是用于将位状态从所述第l状态更改为所述第k状态的条件,并且一对所述第二子集的所述条件相同;
-所述条件集合针对在所述条件集合中没有用于将位状态从第m状态更改为第n状态的条件还包括第三子集,所述第三子集包括用于将位状态从所述第m状态更改为所述第n状态的至少一个条件;
-其中只要不满足与所述目标位对应的所有奇偶校验中的全部或至少一个但少于大多数或大多数奇偶校验,或者满足与所述目标位对应的所有奇偶校验,则满足条件;
-所述第一位状态对应于要在所述存储器上写入的位的值是0的高置信度,所述第二状态对应于要在所述存储器上写入的位的值是0的低置信度,所述第三状态对应于要在所述存储器上写入的位的值是1的高置信度,所述第四状态对应于要在所述存储器上写入的位的值是1的低置信度,并且条件的所述第一子集包括:当不满足与所述目标位对应的所有奇偶校验中的至少一个但少于大多数奇偶校验时满足的所述第一条件、当不满足与所述目标位对应的所有奇偶校验时满足的所述第二条件、当不满足与所述目标位对应的所有奇偶校验中的至少一个但少于大多数奇偶校验时满足的用于将位从所述第三状态更改为所述第四状态的第三条件、当不满足与所述目标位对应的所有奇偶校验时满足的用于将位从所述第四状态更改为所述第三状态的第四条件,并且条件的所述第二子集包括:当不满足与所述目标位对应的所有奇偶校验的大多数时满足的用于将位状态从所述第二状态更改为所述第四状态的第五条件、当不满足与所述目标位对应的所有奇偶校验的大多数时满足的用于将位状态从所述第四状态更改为所述第二状态的第六条件,并且条件的所述第三子集包括:当不满足与所述目标位对应的所有奇偶校验的大多数时满足的用于将位状态从所述第一状态更改为所述第四状态的第七条件、当不满足与所述目标位对应的所有奇偶校验的大多数时满足的用于将位状态从所述第三状态更改为所述第二状态的第八条件;
-根据通过对应位状态确定的所述序列的位的值来执行计算与所述目标位对应的奇偶校验。
根据另一方面,本发明体现为一种具有记录在其上的计算机程序的计算机可读存储介质,所述计算机程序包括指令以便由计算机执行,所述指令包括用于执行上述方法的装置。
根据另一方面,本发明体现为一种系统,包括:
-适合于写入通过LDPC码编码的位序列的存储器,以及
-用于执行上述方法的装置。
在各实施例中,所述存储器是优选地基于浮栅晶体管技术的闪存。
参考下面列出的附图,从以下对作为非限制性实例提供的本发明的实施例的说明,本发明的进一步特性和优点将显而易见。
具体实施方式
提供了一种用于对在存储器上写入的位序列进行解码的计算机实现的方法。所述位序列通过低密度奇偶校验(或LDPC)码编码,由此所述序列的位具有通过所述LDPC码定义的对应奇偶校验。所述方法包括提供包括第一状态和第二状态的位状态集合以及条件集合。当满足条件时,更改位状态。所述条件集合包括至少第一条件和第二条件。所述第一条件用于将位状态从所述第一状态更改为所述第二状态。所述第二条件用于将位状态从所述第二状态更改为所述第一状态。所述第一条件和所述第二条件不同。所述方法包括读取所述存储器上的写入位序列的每个位的值,以及根据所读取的值将每个位关联到所述集合的相应状态。所述方法包括针对所述位序列的目标位评估条件。根据所述目标位的状态从所述条件集合中选择要评估的条件。所述评估步骤利用计算对应于所述目标位的奇偶校验的结果。所述方法包括确定满足所述条件以及作为满足所述条件的结果而更改所述目标位的状态的步骤。所述方法然后可以根据所述目标的状态设置所述目标的值。针对读取的位序列的每个位优选地重复所述方法。最后,根据每个位的相应状态设置所述序列的每个位的值。与传统的位翻转算法相比,此类方法为用于对通过LDPC码编码的位序列进行解码的解决方案提供更好的性能,且只是略微增加了复杂性。
通过对在存储器上写入的位序列进行解码,意味着所述方法尽可能接近要写入的位序列。所述解码方法可以是更广泛的方法的一部分,所述更广泛的方法不仅包括所述位序列的解码,而且还包括解码之后例如借助将所述LDPC码的位序列关联到字的字典来对所述位序列进行解释。
因为所述位序列通过LDPC码编码,这意味着要写入的位序列的值序列是由所述LDPC码授权的序列,所以所述序列的位具有由所述LDPC码定义的对应奇偶校验,如从LDPC编码本身所知道的那样。在下面,所述序列由(b1、…、bN)表示。对于所述序列的至少某些位bi,存在涉及bi和其他位的运算(即,奇偶校验),例如J个运算,每个运算涉及k(j)个其他位(b1 i、…、bk(j) i)并具有预期结果,并且j从1到J。运算是“异或”运算,它们可以写成bi+b1 i+…+bk(j) i并预计等于0。在下面,奇偶校验可以指运算的结果。当等于预期值时,认为满足奇偶校验,当等于意外值时,认为不满足奇偶校验。
所述方法包括提供位状态集合以及条件集合,所述位状态集合具有包括第一状态和第二状态的至少两个不同状态。当满足条件时,更改位状态。所述条件集合包括包含第一条件和第二条件的至少两个条件。所述第一条件是用于将位状态从所述第一状态更改为所述第二状态的条件。所述第二条件是用于将位状态从所述第二状态更改为所述第一状态的条件。所述第一条件和所述第二条件不同。状态是在所述方法中使用的中间变量并与位关联。位的状态链接到位的值,因此允许检索位的值,如在下面说明的那样。条件是用于更改位状态的先决条件。当评估为满足(即,履行)条件时,将位的状态从一个状态更改为另一个状态。对于状态为si的位bi,条件可以是布尔函数,具体取决于bi和/或si。当函数的求值结果是true(对应false)时,则认为满足(对应不满足)条件。在这种情况下,所述第一条件和所述第二条件不同的事实暗示至少两个函数是这样的函数:针对相同的输入,它们将提供不同的结果。
所述方法包括读取所述存储器上的写入位序列的每个位的值,以及根据所读取的值将每个位关联到所述集合的相应状态。位的值以传统方式定义:它是其逻辑级别并等于1或0。后面将提供有关如何执行关联的实例。
所述方法包括根据目标位的状态评估从所述条件集合选择的条件,所述目标位是所述序列的一个位,例如所述序列的第一位。根据所述目标位的状态执行所述选择将确保不评估没有将状态更改为另一个状态的条件,即,将状态更改为另一个状态的条件。这将防止评估不必要的条件并加快所述方法的速度。在各实施例中,所述评估步骤包括计算对应于所述目标位的奇偶校验。通常,在选择针对其评估条件的目标位之后执行计算所述奇偶校验。然而,在其他实施例中,计算与所述序列的所有位对应的奇偶校验可以在选择给定目标位之前执行,即基于由所涉及的位的对应状态确定的当前位值执行。因此,通常所述评估步骤可以被认为利用计算对应于(至少)所述目标位的奇偶校验的结果。具体地说,可以进行涉及不满足和/或满足的奇偶校验的数量的比较。例如,可以将不满足的奇偶校验和/或满足的奇偶校验的数量与阈值比较。以此方式,所述评估允许快速执行解码。
当评估为满足条件时,所述方法作为满足所述条件的结果而更改所述目标位的状态。这确保在所述方法结束时将最适当的状态关联到所述目标位。所述方法然后可以根据相应位的状态设置所述目标位(可能是所述序列的每个位)的值。此步骤实际上是确定要写入的位的值,而无论读取的内容为何。更改位以及将最适当的状态关联到位的可能性允许在设置每个位的值时,(至少部分地)检索位的“正确”值。
可以根据所述目标位的状态以及对应于所述目标位的奇偶校验中涉及的其他位的状态来执行奇偶校验的计算。在上面针对计算奇偶校验提供的公式bi+b1 i+…+bk(j) i中,使用的值bi、b1 i、…、bk(j) i可以是要根据对应位状态针对每个位设置的值。这将在后面进行说明。
如可以看到的,不需要求解复杂的方程。因此,与现有技术的位翻转算法相比,所述方法具有低复杂性并且尤其快速。
在现有技术的传统位翻转算法中,只要不满足对应于所述目标位的大多数奇偶校验,则翻转位的值。换言之,只存在一个条件。在本方法中,提供了一个条件集合,其具有至少两个不同的条件。具有不同的条件例如允许从通道的非对称性中受益。因此,根据位的当前状态,是否翻转位的决定是不同的。当针对位重复时,所述方法确保最后观察到的错误率(错误率表示在设置所述序列的目标位和/或其他位的值的步骤之后由所述方法输出的位序列与要写入的位序列之间的差异)低于传统的位翻转算法。因此,所述方法改进了位翻转算法(即,减少错误率),只是在复杂性方面具有线性变化。
如上所述,存储器可以采用二进制非对称通道。它例如可以是闪存。在这种情况下,参考图1和2,所述方法的非对称性(即,所述集合的两个条件不同的事实)尤其减少错误率。因此,条件可以适应于位的状态。其理念是,当读取1时,意味着要写入的位是1的可能性高。实际上,通道将0错误地转换为1的概率很低。在通常情况下,更好的是用于将1更改为0的条件不同于用于将0更改为1的条件。具有两个不同条件的条件集合确保已对此进行验证。原则上,可以在二进制非对称通道(BAC)上使用位翻转算法而无需修改,但由于BAC的特殊性质会出现明显的性能下降,尤其是在b相对较大时(如闪存的情况)。
参考图3,其示出本发明的一个实施例的流程图。首先,提供位状态集合10,其例如包括第一状态和第二状态。而且,提供条件集合20。如所述的那样,如此设计条件,以便在评估为满足条件时,更改位状态。条件至少包括:
-第一条件,即,关于是否将位状态从所述第一状态更改为所述第二状态,以及
-第二条件,用于将位状态从所述第二状态更改为所述第一状态。然而所述第二条件不同于所述第一条件。
如示出的,读取写入的位序列的每个位的值。然后根据所读取的位的值将对应的位关联到相应状态(步骤S100)。
然后,对于所述序列的给定目标位30,将评估条件(步骤S200)。要指出的是:
-根据所述目标位的状态,从条件集合20中选择所述条件;以及
-评估所述条件利用计算对应于所述目标位的奇偶校验的结果,如前所述。
要指出的是,可以在选择目标位30之前计算所有奇偶校验。相反,可以在选择所述目标位之后、在评估所述条件本身之前计算对应于所述目标位的奇偶校验。这将下面更详细地讨论。
接下来,如果确定(步骤S300)满足选定条件,则相应地更改所述目标位的状态(步骤S400)。否则,不更改所述目标位的状态(步骤S300a)。
最后,可以根据所述目标位的相应状态设置所述目标位的值(步骤S500)。
优选地,重复所述过程,如图3中所示(步骤S600)。于是在每次重复中目标位30都不同(例如,所述序列中的下一位),以便例如处理所述序列中的所有位。每次重复包括评估适当选择的条件、确定是否满足所述条件以及更改当前处理的位的状态(如有必要)。
在一个实施例中,每次重复需要计算对应于所述目标位的奇偶校验。如所述的那样,计算奇偶校验涉及可以从所述序列的位的当前状态中检索的位值。然后,可以根据目标位的当前状态(在完成所述重复时获得)设置当前目标位的值(如有必要)。此类实施例对应于图3的流程图。
在一种变型中,首先根据所述序列中的位的当前值计算奇偶校验,这些位的当前值自身通过对应状态确定。然后,可以重复地处理所述序列的所有位,即,每次重复包括评估适当选择的条件、确定是否满足所述条件以及更改当前处理的位的状态(如有必要)。最后,完成所述位重复时,根据每个位的当前状态设置所述序列的每个位的值。这具有的优点是不需要在所述位重复中针对每个位重复计算奇偶检验,从而节省时间。
在所有情况下,所述评估步骤都利用计算对应于所述目标位的奇偶校验的结果。
在各实施例中,进一步重复所述过程直到满足所有奇偶校验,即,如奇偶校验计算的结果所指示的那样。在变型中,重复所述过程直到达到最大重复数量,以便确保收敛。
因此,所述重复确保最后将所述序列的大多数位关联到最适当的状态。因此,在设置位的值的步骤中,设置的值可能是最准确的。
以下参考图4和5讨论所述方法的两个实施例,这两个实施例说明了相应的位状态集合以及条件集合的实际实施方式。
在图4的实例(也称为“修改的位翻转算法”)中,所述状态集合包括第一状态S1和第二状态S2。换言之,在此只有两个位状态。这允许位的状态和值之间的双射对应,假设位具有二进制值,例如1或0(这是在下面考虑的内容)。例如,S1对应于0,S2对应于1。所述条件集合包括第一条件C1和第二条件C2。将每个位关联到相应状态时,如果读取的位的值是0,则将位关联到第一状态S1,如果读取的位的值是1,则将位关联到第二状态S2。如上所述,依赖于两个条件。第一条件C1用于将位状态从S1更改为S2,第二条件C2用于将位状态从S2更改为S1。然而,所述第一条件和所述第二条件不同,例如以便从通道的非对称性中受益。完成评估过程时,如果所述目标位的状态是第一状态S1,则将所述目标位的值设置为0,如果所述目标位的状态是第二状态S2,则将所述目标位的值设置为1。此类解码方法具有尤其低的复杂性。因此,在此实例中,状态S1和S2是中间变量,并且在位值和状态之间具有完美对应。
更详细地说,只要不满足对应于所述目标位的大多数奇偶校验,或者只要不满足的对应于所述目标位的奇偶校验的数量高于第一阈值t1,则可满足第一条件C1。只要不满足对应于所述目标位的所有奇偶校验,或者只要不满足的对应于所述目标位的奇偶校验的数量高于第二阈值t2,则可满足第二条件C2。如果使用,则第一阈值t1和第二阈值t2不同。通常,因为S1对应于0而S2对应于1,所以t1<t2。备选地,可以将比例用于比较。可以在上述方法的范围内构想许多其他适合的条件。通常,只要不满足对应于所述目标位的所有奇偶校验的全部或至少一个但少于大多数或大多数,或者满足对应于所述目标位的所有奇偶校验,则也可满足条件。参考第二实例讨论其他类型的条件。应用于两个实例中任意一个的条件同样可以应用于另一实例。所述阈值的值可以依赖于通道的值a和b。这确保依赖于在其上执行所述方法的存储器而改变所述方法。
参考图5讨论执行所述方法的第二实例(也称为“2位–位翻转算法”)。如图5中所示,所述位状态集合还可以包括第三状态S3和第四状态S4。所述条件集合例如可以包括条件对的第一子集,例如{(C1,C2),(C3,C4)}。正式地说,一对(C1,C2)或(C3,C4)的一个条件(C1或C2)是用于将位状态从第i状态更改为第j状态的条件。该对的另一条件(C2或C4)是用于将位状态从所述第j状态更改为所述第i状态的条件。在此,一对的所述条件不同;第一条件C1和第二条件C2形成第一子集{(C1,C2),(C3,C4)}的一对(C1,C2)。所述第i状态可以是S1或S3,所述第j状态可以是S2或S4。
在图5的实例中,所述条件集合还包括条件对的第二子集,例如{(C5,C6)},其中对{(C5,C6)}的一个条件C5是用于将位状态从第k状态(例如S2)更改为第l状态(例如S4)的条件,另一条件C6是用于将位状态从所述第l状态更改为所述第k状态的条件。与所述条件对的第一子集不同,在此所述条件相同。在图5的情况中,第二子集只有一对(C5,C6)。因此,在此情况中参数k和l可以取值5或6。然而,所述第二子集通常可以具有多个对,例如如果存在多于四个状态。此类方法通过引入中间状态改善了状态之间的转变。所述第一子集在不同状态之间引入非对称性。非对称性和中间状态的组合允许达到更接近要写入的序列的最终结果。
所述条件集合还可以包括诸如{(C7,C8)}之类的第三子集,其包括用于将位状态从第m状态(例如S1或S3)更改为第n状态(例如分别为S4或S2)的至少一个条件C7或C8。要指出的是,在此情况中没有对应条件,即,用于将位状态从所述第m状态更改为所述第n状态的条件。这为所述方法引入进一步的非对称性,并进一步改进实践中的准确性。
如下表Ⅰ和图6中的情况,第一位状态S1可以对应于要在存储器上写入的位的值是0的高置信度。第二状态S2可以对应于要在存储器上写入的位的值是0的低置信度。第三状态S3可以对应于要在存储器上写入的位的值是1的高置信度。第四状态S4可以对应于要在存储器上写入的位的值是1的低置信度。在此类情况下,将每个位关联到所述集合的相应状态时,如果读取的位值是0,则可以将位关联到状态S1或S2,如果读取的位值是1,则关联到S3或S4。在设置所述序列的每个位的值的步骤中,如果位的状态是S1或S2,则可以将值设置为0,如果状态是S3或S4,则设置为1。如在图4的实例中,因此可以在位可以采取的状态和两个值0或1之间具有对应(通常将是这种情况)。
此对应可以进一步用于上面针对计算奇偶校验提供的公式bi+b1 i+…+bk(j) i中。实际上,如果位bi、b1 i、…、bk(j) i的状态是S1或S2,则使用的值可以是0,如果位bi、b1 i、…、bk(j) i的状态是S3或S4,则可以是1。如此第二实例和所述第一实例中所示,因此在通常情况下,可以根据例如由对应位状态确定的所述序列的位的值来执行计算对应于所述目标位的奇偶校验。
在所述方法的第二实例中,所述状态集合可以包括四个状态,在这种情况下,对于每个状态,可以通过两位逻辑实现位状态,从而与所述第一实例相比产生开销。
应指出,所述方法的第二实例可以通过相应地修改所述条件集合而用于诸如二进制对称通道(BSC)之类的其他通道模型。
下表Ⅰ针对特定实例提供了广泛的条件集合以及对应的状态集合。再次地,实现此类状态集合以及条件集合具有相对低的复杂性,并在实践中获得良好的效果。
表Ⅰ:一个实施例中广泛的条件集合以及对应的状态集合。
图6示出了随机常规LDPC码的仿真结果。代码长度是1908,列权重是4并且比率是0.8889。所述结果提供了使用四种不同解码方法的帧错误率对转换概率a。a的值是在图1的二进制非对称通道中使用的值并且b等于10。帧错误率是执行解码方法之后剩余的全局错误。换言之,它是由解码方法输出的位序列和要写入的位序列之间的差异。两种解码方法是现有技术GallagerB算法和前面提供的正常位翻转算法。两种其他解码方法的一种是对应于所述第一实例的“修改的位翻转算法”,其中根据a和b选择t1和t2。两种其他方法的另一种是对应于表Ⅰ的“2位–位翻转算法”。
如可以从所述结果中看到的,对于针对其提供仿真的所有a值,与现有技术算法相比,“2位–位翻转算法”和“修改的位翻转算法”都提供改进的解码,因为最终帧错误率每次都较低。
计算机程序可以包括指令以便由计算机化系统执行,所述指令包括用于执行上述方法的部分或全部的装置。此类计算机程序可以记录在计算机可读存储介质(例如CD、硬盘或闪存)上。
系统可以包括适合于写入通过LDPC码编码的位序列的存储器,以及适当地通过接口连接到所述存储器以便执行上述解码方法的装置。所述存储器可以是优选地基于浮栅晶体管技术的闪存。此类系统用于存储数据尤其可靠。实际上,由于用于执行所述解码方法的装置,检索修改/丢失的数据既快速又准确。
将理解,本发明可以体现为系统、方法或计算机程序产品。具体地说,本发明可以体现为计算机实现的方法。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些实施例在此通常可以被称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中包含计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电、磁、光、电磁、红外线或半导体系统、装置或设备或上述任意适合的组合。计算机可读存储介质的更具体的实例(非穷举列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述任意适合的组合。上述任一项都可以由专门设计的ASIC(专用集成电路)补充或结合在专门设计的ASIC中。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的有形介质。
计算机可读信号介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取各种形式中的任一种,包括但不限于电磁、光或它们任意适合的组合。计算机可读信号介质可以是任何不属于计算机可读存储介质并且能够传送、传播或传输由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述任意适合的组合)来传输包含在计算机可读介质中的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,或者可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。
图7是根据本发明的一个实施例的计算机硬件的方块图。根据本发明的一个实施例的计算机系统(501)包括连接到总线(500)的CPU(504)和主存储器(502)。总线(500)连接到显示控制器(512),显示控制器(512)连接到诸如LCD显示器之类的显示器(514)。显示器(514)用于显示有关计算机系统的信息。总线(500)还通过诸如IDE或SATA控制器之类的设备控制器(506)连接到诸如硬盘(508)或DVD(510)之类的存储设备。总线(500)还通过键盘/鼠标控制器(520)或USB控制器(未示出)连接到键盘(522)和鼠标(524)。所述总线还连接到例如遵循以太网协议的通信控制器(518)。通信控制器(518)用于将计算机系统(501)与网络(516)物理地连接。
上面参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行了描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令实现或至少触发。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的所述指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能(多个)的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为连续的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还将指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。