用于二进制数据的错误纠正和错误检测的方法

文档序号:7534543阅读:334来源:国知局
专利名称:用于二进制数据的错误纠正和错误检测的方法
技术领域
本发明涉及用于光存储系统的错误纠正代码(ECC)的领域。其可以被应用于磁记 录存储设备、独立磁盘冗余阵列(RAID)系统和传输系统。
背景技术
H. Fujita等 人 的"Modified low-density MDS array codes for toleratingdouble disk failures in disk array,,,IEEE Trans C0MP_56,pp. 563_566呈 现了用于容忍磁盘阵列中的双磁盘失效(failure)的低密度MDS阵列代码的新的类别。所 提出的MDS阵列代码具有比Blaum等人的EVEN0DD代码更低的编码和解码复杂度。

发明内容
—种可高效地编码的准循环(quasi-cyclic)错误纠正代码的方法将在下面被 命名为"z阵列(zArray)代码"。z阵列代码基于已知的"阵列代码",如在R. J. G. Smith, "Easily Decodable Efficient Self-Orthogonal Block Codes,,, Electronics Letters, Vol 13No. 7,卯173-174, 1977中发表。z阵列代码以系统的方式构成具有LDPC即低密度奇 偶校验类型的ECC代码,所述ECC代码一方面即使在大的码字(codeword)长度下仍可高效 地编码,而另一方面具有在使用消息通过算法(message passing algorithm)被解码时的 好的性能。 通过下列步骤定义和生成z阵列代码的奇偶校验矩阵生成第一中间矩阵Hl,以 包括两行方形的、尺寸相同的二进制子矩阵,其中第一行包括P个具有尺寸P,P的单位矩阵 I,而第二行包括P个具有尺寸P'P的循环移位矩阵(cyclic shift matrix) o的增幂o u, 其中u = 0,. . . ,p-l。通过从第一中间矩阵HI的每个子矩阵中去除在列指数[r+2ri+i+q] 模P处的m个等距列,来从第一中间矩阵HI生成第二中间矩阵H2,其中i、 m、 p、 q为整数, 其中i = 0,. . . m-l,其中预定义m、p、q、r以使p = m+2mr,并且其中子矩阵内的列指数从0 开始。下面,向对应于ou的子矩阵施加该列去除的结果将被表示为ou'。通过从第二中 间矩阵H2的第一行子矩阵中删除由于去除步骤而只包含零的那些矩阵行,来从第二中间 矩阵H2生成第三中间矩阵H3。作为该删除的结果,第三中间矩阵H3的第一行包括p个具有 尺寸(Pi) (p-m)的小单位矩阵I。通过预设m-l个具有高度2p-m、具有权重(weight) 2 的二进制列矢量来从第三中间矩阵H3生成z阵列代码的奇偶校验矩阵H,其中列矢量在其 中子矩阵的并置[o001]具有行权重2的那些行范围中的中间行中具有"1"元素。后述二 进制列矢量一同被命名为"z"矩阵,因此有z阵列代码的名称。 下面,我们用z阵列码字的"符号(symbol)"来表示这些p-m个比特的元组 (tuple):所述p-m个比特对应于奇偶校验矩阵H的在列去除后包含循环移位子矩阵ou中 的一个的列的那些列。进一步地,我们用"符号x"或"第x符号"来表示元组中对应于列 o (x—"的那一个。注意在该命名法中,由于它们的编号,所以对应于奇偶校验矩阵H的z矩 阵部分的码字的m-l个最左边的比特通常不被视为符号。
Z阵列代码相比阵列代码的优点-通过作为列正则(regular) , z阵列代码使得能够具有比列非正则(irregular) 的阵列代码更好的消息通过解码性能; Z阵列代码维持随着码字长度而线性增长的编码时间; z阵列代码允许奇偶比特(parity bit)生成(即编码)被分割为可调整数目的独 立顺序任务,使能编码过程的并行化(parallelization)。 为了高效编码能力和好的消息通过解码性能而设计z阵列代码。但是,只在错误 由所接收的码字的低比特可靠性来反映时,消息通过解码是恰当的。这可能不是突发错误 (或代表具有已知位置的突发错误的擦除(erasure))或粒噪声(shot noise)事件的情况。 在同一符号内包括多个毁坏的比特的单个符号错误的情况中,消息通过解码很可能不能找 到正确的码字,尤其是在错误是由某形式的短错误突发导致的情况下。然后,可以执行用于 潜在单个符号错误的代数符号错误解码。 已经在1992年的M.Blaum的"A CODING TECHNIQUE F0RREC0VERY AGAINST DOUBLE DISK FAILURE IN DISK ARRAYS"中公开了单个错误纠正代码。也分别参见美国专 利No. 5,271,012或EP 0519669。这些代码具有最小距离3,并且因此可以纠正任何单个符 号错误。 在美国专利No. 5, 644, 695中公开了 Blaum的解码方法。它依靠广义阵列代码,所 述广义阵列代码如在美国专利No. 5, 351, 246、并且也包括美国专利No. 5, 271, 012中呈现。
尽管z阵列代码的大部分码字具有最小距离3,但它们中的一些具有最小距离2, 从而利用z编码并非所有单个符号错误是可纠正的。
关于解码z阵列编码数据-对于随机比特错误来说,可以有利地使用消息通过解码;-至少对于z阵列代码的子类来说,可以使用来自z阵列编码的一个处理步骤的
修改来纠正单擦除和双擦除(在码字内的已知位置处的错误符号)。这利用了该子类的结 构; 对于短突发错误(即在码字内的未知位置处的单个符号的若干比特被毁坏时)的 情形来说,到目前为止缺乏有效的解码(即纠正)方法。 来自现有技术,即US5, 271, 012/EP0519669、 US5, 644, 695和US5, 351, 246的解决 方案涉及不具有允许并行化编码的特征的不同的代码。 本发明提供代数单个符号错误纠正和错误检测方法。术语"代数解码"在错误
纠正领域中已知,其指其中与被称作"消息通过"的迭代方法相比、从一些给定的数据"计
算"正确数据的解码方法,在所述"消息通过"中,给定的错误数据在该方法中渐进地收敛
至正确数据。本发明提出并描述在Z阵列编码数据上,从现有技术已知的"多数逻辑解码
(Majority LogicDecoding)"的修改可以有效地被用于下列任务-纠正码字内(在已知位置处)的单个符号错误;-识别码字内的多个符号被不可纠正地毁坏的情况;-识别码字内的单个符号被不可纠正地毁坏的那些(少数)情况。 根据本发明的方法包含下列步骤-计算所接收的字的伴随(syndrome);
_将该伴随分割为两部分;-检查从这两个伴随部分计算的3个整数权重量;-将该伴随转换为与所接收的比特相关联的整数值"正交比特错误权重"矢量;
-切换(toggle)所接收的字的其中关联的"正交比特错误权重"在其可能值范围
的上半部分中的那些比特。
优点-为了 Z阵列编码数据而补足其他以前发明的解码方法。在一起使用时,这些解码 技术涵盖许多(如果不是大多数)在实际中重要的解码情景;-在z阵列编码数据上使用本方法时,本方法为US 5, 644, 695的解码方法的有利 的替代方案。 本发明解决纠正z阵列码字内的单个符号错误的问题。提出了一种用于纠正z阵 列码字内的单个符号错误的方法。该方法使用扩展的多数逻辑解码过程。除此之外,多个 符号错误和不可纠正的单个符号错误将被识别并且被标记为不可纠正。
Z阵列代码具有最小符号距离dmin = 2。因此,取决于符号中的错误比特的数目, 因为定位符号错误的位置不总是可行的,所以不能保证单个符号错误纠正。因此采取措施 (provision)以至少识别全部不可纠正的符号错误事件。将示出可以使用z阵列的所述设 计参数"P"来降低这些事件的概率。此外,将识别大多数多个符号错误。
根据本发明的方法的优点为-在单个z阵列代码符号的多个比特已经被毁坏的情况中,根据本发明的扩展多 数逻辑解码方法的错误纠正概率远高于软决定(soft decision)消息通过解码的错误纠正 概率;-与软决定消息通过解码相比,根据本发明的解码方法较不复杂,从而需要较少的 处理资源。这是由于其硬决定、非迭代的本质。-与美国专利No. 5, 644, 695相比,根据本发明的解码方法知晓不可纠正的符号错 误事件。对于具有最小符号距离3的阵列代码来说,全部单个符号错误都是可纠正的。上 面已经指出了 z阵列代码相比阵列代码的优点。 根据本发明,以字组织的二进制数据的错误纠正和错误检测包括步骤-从所接收的字r'计算二进制伴随矢量s;-将伴随矢量s分割为第一子矢量s0和第二子矢量si ;-从第一子矢量s0计算第一错误权重ws0,并且从第二子矢量si计算第二错误权 重wsl和第三错误权重wsl';-将伴随矢量s转换为正交比特错误权重矢量eow ;-经由多数决定,从正交比特错误权重矢量eow导出多数错误矢量emaj ;-从多数错误矢量emaj计算与所接收的字的符号相关联的符号错误权重矢量
一sym ;-从符号错误权重矢量esym导出潜在符号错误数nsym ;-通过与第一子矢量的s0的逐位(bitwise)XOR运算,来纠正其中导出了 nsym = l的那些所接收的字r'。
具体实施例方式
在下面的描述中更详细地解释本发明的示范实施例。 将具有指数x = 1, . . . , p的z阵列码字的符号(symbol)定义为包括z阵列码字 的p-m个比特的元组,所述p-m个比特为了奇偶校验而分别被z阵列代码的奇偶校验矩阵 H的子矩阵I和o(x—D'相乘。 在许多情况中,z阵列代码允许通过应用扩展多数逻辑解码策略来纠正单个符号 错误。单个符号错误被定义为在符号的p-m个比特中的至少l个处的毁坏。多个符号错误 是不可纠正的。假定在解码之前错误事件的种类是未知的。
肝m顿雜辭4if附广財腳车綱马 下面,到目前为止被表示为"H"的z阵列代码的奇偶校验矩阵将被表示为Hmz。
_步骤1:在6 2中从所接收的矢量(也被表示为所接收的字)r'来计算伴随W《。 _步骤2 :检查该伴随如果S = O成立,则相信所接收的矩阵r'等于所发送的码 字v;中断。 注意,将只对于非零伴随的情况执行下列步骤。-步骤3 :从s的对应于Hmz的前(upper) p_m行的那些p_m个比特来提取s。。从s
的对应于Hmz的后(lower)p行的p个比特来提取Sl。以使s = [s。sj 。-步骤4 :通过累加s。和Sl中的集合比特(set bit)来计算整数值错误权重ws。和 <formula>formula see original document page 6</formula> 通过累计sl中的集合比特同时忽略sl的那些元素来计算wsl',所述那些元素的 计算在步骤1中涉及Hmz的z矩阵部分中的"1"元素-步骤5 :检查错误权重等式如果Ws。 # Wsl,则已经检测到非单个符号错误;用下 列选项中断 选项5a:如果^。二^, 二0,这指示在r'中,只有与H的z矩阵部分相关联的部 分是错误的,而r'的信息部分u'和其他奇偶比特是无错误的。在该情况中,Vpw的重建 是可能的,但可能对其不感兴趣。 选项5b :否则,已经检测到不可纠正的多个符号错误。-步骤6 :用常规(即非GF2)矩阵乘法来计算正交比特错误权重矢量e。w : eow = sH迈z e。w具有与r'相同的维度(dimensionality)。由于Hmz的列权重和非GF2乘法, 所以e。J勺元素G {0,1,2}。-步骤7 :假设最大正交错误数为J,将正交比特错误权重矢量e。w的分量多数解 码为多数错误矩阵emaj。(根据Lin, Costello的"Error ControlCoding"的872页中的 17.6. l节来定义正交性)。这意味着,对于e。,的每个元素n来说,如果e。Jn) > [J/2],则 1被解码,否则0被解码。因此,对于J = 2的z阵列代码来说,多数错误矢量可以被写作
emaj的元素G {0,1}。(步骤6和7为传统的众所周知的多数逻辑解码步骤,从这些步骤可以解码-步骤8 :对于每个符号指数X = 1, . . . , p,通过计数每个符号内的多数错误矢量的"1 "元素来计算P符号错误权重 esyi = H々)
,=(")(p-m)+z+l 这忽略了对应于Hmz的z矩阵部分的那些来自emaj的z多数错误,因为它们不在每个定义中定义符号。 _步骤9 :对于每个符号x,检查是否e,(x) = ws。。错误权重ws0为能够出现的最大符号错误权重。 ews。=[esym/w,。], e{0, 1} ews。 (x) = 1指示符号指数x处的潜在错误。(该步骤可能被解释为基于第二符号的多数逻辑解码步骤,但不应与传统的两步多数逻辑解码器混淆。)-步骤10 :计数潜在符号错误的数目 "sym=Zews0O) _步骤11 :检查不可纠正的单个或多个符号错误。 a.如果n,二O,则已经探测到多个符号错误。所接收的矢量r'中的错误不可纠正;中断! b.如果11,> l,则已经探测到单个但不可纠正符号错误。所接收的矢量r'中的错误不可纠正;中断! 步骤12 :n, = 1。通过将所接收的矢量r'的错误符号与s。进行XOR,来纠正对应于符号指数Xdrf的单个符号错误,以接收r,对于所述x^来说e^(XdJ = l成立。
注意s。 = emaj((xdef-l) (p-m)+z+l:xdef(p-m)+z)成立。
(步骤8-12被视为扩展步骤) 也可以为了单个符号错误纠正而将根据本发明的扩展多数逻辑解码应用至根据美国专利No. 5, 271, 012的Blaum的阵列代码。在那里,因为代码不具有vparl部分,所以可以去掉步骤5。并且,因为阵列代码不遭受不可纠正的单个符号错误,所以步骤ll的选项b中的条件n, > 1将永不成立。 换言之,为了代数单个符号错误纠正和检测,提出了一种方法,其实现了纠正码字内的未知位置处的单个符号错误;识别码字内的多个符号被不可纠正地毁坏的情况;以及识别码字内的单个符号被不可纠正地毁坏的情况。该方法包括步骤计算所接收的字的伴随;将该伴随分割为两部分;检查从这两个伴随部分计算的3个整数权重量;将该伴随转换为与所接收的比特相关联的整数值"正交比特错误权重"矢量;以及切换所接收的字的其中关联的"正交比特错误权重"在其可能值范围的上半部分中的那些比特。
权利要求
一种用于二进制数据的错误纠正和错误检测的方法,所述二进制数据已经由LDPC代码进行了错误纠正编码,所述LDPC代码的奇偶校验矩阵等于以下步骤的结果生成第一中间矩阵,其包括两行方形的、尺寸相同的二进制子矩阵,其中第一行包括p个具有尺寸p·p的单位矩阵,第二行包括p个具有尺寸p·p的循环移位矩阵的增幂;通过从第一中间矩阵的每个子矩阵中去除在列指数[r+2ri+i+q]模p处的m个等距列,来从第一中间矩阵生成第二中间矩阵,其中i、m、p、q为整数,其中i=0,...m-1,其中预定义m、p、q、r以使p=m+2mr,并且其中子矩阵内的列指数从0开始;通过从第二中间矩阵H2的第一行子矩阵中删除只包含零的那些矩阵行,来从第二中间矩阵生成第三中间矩阵;向第三中间矩阵预设具有其中与移位矩阵的1次幂并置的移位矩阵的0次幂具有行权重2的那些行范围的中间行中的“1”元素的、具有高度2p-m的m-1个二进制列矢量;以字组织该二进制数据,字包括符号,该方法具有步骤从所接收的字和LDPC代码的奇偶校验矩阵来计算二进制伴随矢量;将伴随矢量分割为第一子矢量和第二子矢量;从第一子矢量计算第一错误权重,并且从第二子矢量计算第二错误权重和第三错误权重;将伴随矢量转换为正交比特错误权重矢量;经由多数决定,从正交比特错误权重矢量导出多数错误矢量;从多数错误矢量计算与所接收的字的符号相关联的符号错误权重矢量;从符号错误权重矢量导出潜在符号错误的数目;通过与第一子矢量的逐位XOR运算,来纠正其中潜在符号错误的数目被导出为1的那些所接收的字。
2. 根据权利要求l的方法,其中第一子矢量包括该伴随的p-m个比特,并且第二子矢量包括P个比特,并且其中通过计数除在元素2r j+j处之外的第二子矢量的集合比特,来从第二子矢量导出第三错误权重。
全文摘要
提供了一种用于二进制数据的错误纠正和错误检测的方法。为了代数单个符号错误纠正和检测,提出了一种方法,其实现了纠正码字内的未知位置处的单个符号错误;识别码字内的多个符号被不可纠正地毁坏的情况;以及识别码字内的单个符号被不可纠正地毁坏的情况。该方法包括步骤计算所接收的字的伴随;将该伴随分割为两部分;检查从这两个伴随部分计算的3个整数权重量;将该伴随转换为与所接收的比特相关联的整数值“正交比特错误权重”矢量;以及切换所接收的字的其中关联的“正交比特错误权重”在其可能值范围的上半部分中的那些比特。
文档编号H03M13/11GK101729077SQ20091020519
公开日2010年6月9日 申请日期2009年10月16日 优先权日2008年10月16日
发明者奥利弗·泰斯, 陈晓明, 马科·乔治 申请人:汤姆森特许公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1