高效容多错的快速恢复编码方法及其验证矩阵生成方法

文档序号:6523998阅读:215来源:国知局
高效容多错的快速恢复编码方法及其验证矩阵生成方法
【专利摘要】本发明公开了一种高效容多错的快速恢复编码及其验证矩阵生成方法,该编码是基于XOR运算的一种编码。且该编码是以编码单元为单位的编码。在一个编码单元中存在多个条带集,每个条带集之间存在着一定的联系。在该种编码中一个编码单元的前面Rp行存放着校验码,后面的Rp行存放着数据,Rp行中的数据通过一个或几个条带集中的一些数据块进行异或得到。同时还提供了一种验证该编码的容错能力的方法,用一个变换矩阵来表示从原始的数据块生成全部数据的过程,然后把变换矩阵中与失效块有关的行去掉得到一个降级的转换矩阵,通过验证该降级的变换矩阵的秩可以得出该编码的容错度。本发明能够解决现有技术中存在的容错能力低、降级读与重构的性能差的技术问题。
【专利说明】高效容多错的快速恢复编码方法及其验证矩阵生成方法
【技术领域】
[0001]本发明属于计算机存储领域,更具体地,涉及一种高效容多错的快速恢复编码方法及其验证矩阵生成方法。
【背景技术】
[0002]可靠性与可用性是衡量在线存储服务质量的重要标准。对于为商业与工业应用提供在线服务的系统,数据丢失以及时常间断的服务往往意味着经济损失。磁盘冗余阵列独立冗余磁盘阵列(Redundant Array of Independent Disk,简称RAID)是能够提供高可靠性与高可用性的主流选择之一。在早期的RAID规范中,例如RAID-O到RAID-5,其仅仅提供单盘容错能力。近年来,具有更高容错能力的各种RAID系统逐渐开始被采用,因其在两个或两个以上磁盘同时失效时仍然能够恢复所有丢失的数据,与此同时还能够提供不间断的在线服务。
[0003]但是现在很多存储系统中在发生磁盘失效后重构和降级读的速度都非常的慢。而且由于现在磁盘失效发生的概率越来越频繁,因此能够容一个或两个磁盘失效的RAIDs已经无法提供足够的安全性了。因此现在急需提出一种具有高容错性的编码。
[0004]Reed-Solomon编码是一种基于伽罗华域的编码,其主要的优势是能够容任意多的磁盘失效,但是由于伽罗华域上的运算开销非常的大,虽然现在Plank等人提出了一种采用Intel公式的SMD指令来加速伽罗华域上的乘法运算的方法,但是其计算开销相比异或运算来说还是很大。因此最近许多研究都是在基于异或运算的编码上进行的。
[0005]存储系统的存储效率与`纠删码的设计存在很大的关系。有一类编码叫做最大距离可分离(Maximum Distance Separable,简称MDS)编码,这种编码的存储效率是最高的。但是MDS编码存在很明显的缺点:容错能力差,且I/O开销和降级读与重构的计算复杂度很闻。

【发明内容】

[0006]针对现有技术的以上缺陷或改进需求,本发明提供了一种高效容多错的快速恢复编码方法及其验证矩阵生成方法。其目的在于,解决现有技术中存在的容错能力低、降级读与重构的性能差的技术问题。
[0007]为实现上述目的,按照本发明的一个方面,提供了高效容多错的快速恢复编码方法,包括以下步骤:
[0008](I)获取用户输入的系统参数,包括磁盘的大小S*C、一个条带中数据块的个数Rd、一个条带中校验快的个数2个,其中S表示条带集的数量,C表示每个条带集中条带的数量;
[0009](2)根据用户输入的系统参数建立快速恢复编码的第一行校验元素CGV rp0,Cp0) ,C(sp1; rp0, Cp1),…,Cd1, rV C1V1),其中s表示条带集在编码单元中的序号,A表示校验元素在条带集中的第一行,且^=0,c表示校验元素在条带集中的列序号,本步骤具体包括以下子步骤:
[0010](2-1)初始化 sPQ=0,Cp0=O ;
[0011](2-2)判断是否有心〈(:,若是则转入步骤(2-3),否则转入步骤(2-6);
[0012](2-3)将第G1VDs个条带集中的第<+2行的元素进行异或运算,以得到校验元素,并将该校验元素存放在C (Sptl, r, Cp0)中;
[0013](2-4)将第<SpQ+2>s个条带集中以C (<SpQ+2>s,2,<CpQ+l>c)为第一个元素,斜率为-1的Rd个元素进行异或,以得到一个数据,并把该数据与步骤(2-3)得到的校验元素进行异或,以得到最终的校验数据,并将该校验数据存放在C (sp0, r, Cp0)中;
[0014](2-5)设置 cpQ=cpQ+l,并返回步骤(2-2);
[0015](2-6)设置Spq=S1VLcpq=O,并判断是否有spQ〈S,若是则返回步骤(2_2),否则步骤
(2)结束。
[0016](3)根据用户输入的系统参数建立快速恢复编码的第二行校验元素CGV ,Cp0) ^ C(Sp1, Λ,Cp1),…,CGV1, Λ,C1V1),其中A表示校验元素在条带集中的第二行,且ri=o,本步骤具体包括以下子步骤:
[0017](3-1)初始化 SpQ=O, Cp0=O ;
[0018](3-2)判断是否有?C,若是则转入步骤(3-3),否则转入步骤(3-5);
[0019](3-3)将第〈SpQ-l>s个条带集中以C (〈SpQ-l>s,2,<cp0-l>c>为第一个元素,斜率为I的Rd个元素进行异或,以得`到一个数据,该数据就是C (sp0, , Cp0)的结果;
[0020](3-4)设置 cpQ=cpQ+l,并返回步骤(3-2);
[0021](3-5)设置^^。+!,(^^,并判断是否有必吼若是则返回步骤^夂否则过程结束。
[0022]按照本发明的另一方面,提供了一种快速恢复编码方法的验证矩阵生成方法,包括以下步骤:
[0023](I)设置一个变换矩阵m[S*0 (Rd+2), S*C*Rd],初始化该矩阵中全部的元素为O,同时设置数据元素C (sp,rp,cp)在全部数据元素中的位置为t= (rp-l)*S*C+ (sp-l)*C+cp,其中s表示条带集在编码单元中的序号,r表示数据元素在条带集中的行序号,c表示数据元素在条带集中的列序号;
[0024](2)根据数据元素C (sp, rp, cp)生成验证矩阵中的前S*C行,具体包括以下子步骤:
[0025](2-1)设置 sp=0,Cp=O ;
[0026](2-2)判断是否有c〈C,若是则转入步骤(2-3),否则转入步骤(2-6);
[0027](2-3)对第<sp+l>s个条带集中的第cp+2行的数据元素,计算其在全部数据元素中的位置t,同时置m[sp*C+cp, t]为I ;
[0028](2-4)对第<sp+2>s个条带集中以C (<sp+2>s,2,<cp+l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[sp*C+cp,t]为O ;
[0029](2-5)设置 cp=cp+l,然后返回步骤(2-2);
[0030](2-6 )设置sp=sp+l,Cp=O,并判断是佛有sp〈S,若是则返回步骤(2_2 ),否则步骤(2 )结束;
[0031](3)根据数据元素C (sp, rp, cp)生成验证矩阵中的S*C行至2S*C行,具体包括以下子步骤:
[0032](3-1)设置 sp=0,Cp=O ;
[0033](3-2)判断是否有cp〈C,若是则转入步骤(3-3),否则转到步骤(3-5);
[0034](3-3)对第<sp-l>s个条带集中以C (<sp-l>s,2,〈cp-l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[S*C+sp*C+cp, t]为I ;
[0035](3-4)设置 cp=cp+l,然后返回步骤(3-2);
[0036](3-5)设置sp=sp+l,cp=0,并判断是否有s〈S,若是则返回步骤(3_2),否则步骤(3)结束。
[0037](4)根据数据元素C (sp, rp,cp)生成验证矩阵中剩下的Rd*S*C行,具体包括以下子步骤:
[0038](4-1)设置 sp=0,cp=0,rp=0 ;
[0039](4-2)判断是否有rp〈Rd,如果是则转入步骤(4-3),否则过程结束;
[0040](4-3)判断是否有sp〈S,如果是则转入步骤(4-4),否则转入步骤(4-8);
[0041](4-4)判断是否有cp〈C,若是则转入步骤(4-5),否则转入步骤(4-7);
[0042](4-5)计算数据元素C (sp, rp, cp)在全部数据元素中的位置t,同时置变换矩阵m[2S*C+sp*C+cp, t]为 I ;
[0043](4-6)设置 cp=cp+l,然后返回步骤(4-4);
[0044](4-7)设置 sp=sp+l, cp=0,然后返回步骤(4-3);
[0045](4-8)设置 rp=rp+l, sp=0,然后返回步骤(4-2)。
[0046]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0047]1、本发明容错能力高:因为该编码结构使其能够容3错以上,因此其容错能力高。
[0048]2、本发明能够提升降级读与重构的性能:因为该编码全部采用的最简单的异或运算,所以能够提升降级读与重构的性能。
【专利附图】

【附图说明】
[0049]图1是本发明高效容多错的快速恢复编码方法的流程图。
[0050]图2示出本发明高效容多错的快速恢复编码方法的实例。
[0051]图3是本发明高效容多错的快速恢复编码方法的验证矩阵生成方法的流程图。
【具体实施方式】
[0052]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0053]以下首先就本发明的技术术语进行解释和说明:
[0054]元素(Element):元素是该编码中的基本单元,其大小可以从bit到许多连续的扇区。在该编码中有两种元素,即数据元素(data element)和校验元素(parity element)。
[0055]条带(Strip):—个条带是编码单元(Stripe)中一个盘上的连续元素集合。[0056]条带集(Strip-set):—个条带集是连续几个编码单元的集合。每个条带集是一个R*C个元素的阵列。
[0057]编码单元(Stripe): —个编码单元是该纠删码中能够容错的独立单元,由连续的几个条带集组成。
[0058]校验链(Parity Chain):—个校验链包含校验元素和所有参与生成该校验元素的元素。
[0059]校验链的长度(Length of Parity Chain):校验链中的元素个数。
[0060]C (sp, rp,cp):编码中一个元素的位置,表示该元素处于第Sp个条带集中,且位于在该条带集中的第rp行第Cp列。
[0061]<m>p:表示m模P的值,m的取值范围是O到p_l。
[0062]斜率(slope):斜率同样也在其余的编码中用到了。如斜率O就是RAID-4,RDP,EVEN0DD中的水平校验。斜率I就是RDP,EVEN0DD中的斜向校验。斜率_1就是X-code,H-code和HDP-code中的反斜向校验。
[0063]如图1所示,本发明高效容多错的快速恢复编码方法包括以下步骤:
[0064](I)获取用户输入的系统参数,包括磁盘的大小S*C、一个条带中数据块的个数Rd、一个条带中校验快的个数2个,其中S表示条带集的数量,C表示每个条带集中条带的数量;
[0065](2)根据用户输入`的系统参数建立快速恢复编码的第一行校验元素CGV rp0,Cp0) ,C(sp1; rp0, Cp1),…,Cd1, rV C1V1),其中s表示条带集在编码单元中的序号,A表示校验元素在条带集中的第一行,且^=0,c表示校验元素在条带集中的列序号,本步骤具体包括以下子步骤:
[0066](2-1)初始化 Spci=O, Cp0=O ;
[0067](2-2)判断是否有?C,若是则转入步骤(2-3),否则转入步骤(2-6);
[0068](2-3)将第G1VDs个条带集中的第<+2行的元素进行异或运算,以得到校验元素,并将该校验元素存放在C (Sptl, r, Cp0)中;
[0069](2-4)将第<SpQ+2>s个条带集中以C (<SpQ+2>s,2,<CpQ+l>c)为第一个元素,斜率为-1的Rd个元素进行异或,以得到一个数据,并把该数据与步骤(2-3)得到的校验元素进行异或,以得到最终的校验数据,并将该校验数据存放在C (sp0, r, Cp0)中;
[0070](2-5)设置 cpQ=cpQ+l,并返回步骤(2-2);
[0071](2-6)设置Spq=S1VLcpq=O,并判断是否有spQ〈S,若是则返回步骤(2_2),否则步骤
(2)结束。
[0072](3)根据用户输入的系统参数建立快速恢复编码的第二行校验元素CGV ,cp0) ^ C(sp1; Λ,Cp1),…,CGV1, Λ,C1V1),其中A表示校验元素在条带集中的第二行,且ri=0,本步骤具体包括以下子步骤:
[0073](3-1)初始化 Sp0=O, Cp0=O ;
[0074](3-2)判断是否有 <〈(:,若是则转入步骤(3-3),否则转入步骤(3-5);
[0075](3-3)将第〈SpQ-l>s个条带集中以C (〈SpQ-l>s,2,<cp0-l>c>为第一个元素,斜率为I的Rd个元素进行异或,以得到一个数据,该数据就是C (sp0, , Cp0)的结果;
[0076](3-4)设置 Cptl=Cpc^l,并返回步骤(3-2);[0077](3-5)设置Sptl=S1Vl, Cptl=O,并判断是否有sVS,若是则返回步骤(3-2),否则过程结束。
[0078]如图2所示,该图是本发明编码方法的一个实例,该图是整个存储系统中的一个编码单元,整个存储系统是由许多这样的编码单元组成的。可以发现该编码单元有4个条带集组成,每个条带集有5个条带组成。每个条带包含6个元素,其中2个为校验元素,其余为数据元素。同时我们可以发现校验元素在整个编码单元的前两行。
[0079]该编码实际上是一种循环的编码,其基本单元是条带集。并且以4个条带集为一个循环。在图1中条带集O中斜纹的区域的块就是斜率0,条带集I中斜纹的区域的块就是斜率-1,条带集2中反向斜纹的区域的块就是斜率1.对于该编码单元中的每个数据,我们用一组数字(s,r,c)来表示。其中s表示该数据在那个条带集。 表示该数据在这个条带集中的第几行,c表示第几列。如图1所示,行是从-2开始计数的。要注意的是在图1中O~3行的数据上标的3个数并不是表示其位置,而是表示其参与了哪几个校验码的生成。如图1所示,其中校验块16和36的位置分别为(3,-2,O)和(3,-1,O)。我们定义Ek(S,O, c)表示把从条带集s中第O行第c列的数据开始的斜率为的k的一组数据进行异或运算。如E0 (O, O, O)就是图1中条带集O中的斜纹的区域的块进行异或运算,Ε^α,Ο,I)就是图1中条带集I中斜纹的区域的块进行异或运算,E1OJ, 4)就是图1中条带集2中反向斜纹的区域的块进行异或运算。有了如上定义,可以看到校验块16是由EtlO), 0,O)和1(1,0,I)这两组数据进行异或得到的。校验块36是由E1^O, 4)这组数据进行异或得到的。可以得到一个通用的公式。对于-2行的校验码,可以得到如下的公式:
[0080](s, -2,c) =E0 (<s-3>4, O, O) +E_j (<s-2>4, O, <c+l>5) 式 I
[0081]对于-1行的校验码,可以得到如下的公式:
[0082](s, -1, c) =E1 (<s-l>4, O, <c-l>5)式 II
[0083]在这两个公式中的s都是模4的,c都是模5的。在式I中的加号表示异或运算。
[0084]通过这两个公式就可以对一个编码单元中的数据块生成其校验元素。
[0085]以下描述本发明高效容多错的快速恢复编码方法的验证矩阵生成方法,其整体思路在于,使用矩阵来模拟该编码方法出错的过程,对于一个编码单元中的数据块我们可以把其按顺序写成一个长度为S*C*Rd的列向量。然后根据上面给出的生成校验元素的公式可以得到一个变换矩阵,该矩阵是S*C* (Rd+2)行S*C*Rd列的矩阵,该变换矩阵乘以数据元素就可以得到该编码单元中的数据块和校验块了。该变换矩阵用O和I来表示每一个元素是否参与了校验。并且在该模拟中我们只考虑数据元素的位置,并不具体的考虑其中的数据。因为我们最后要验证的只是变换矩阵的秩。相应于失效时的情况,就是把失效元素位置的数据置为0,然后根据上面的矩阵变换解出失效元素的数据。为了验证其是否能够解出来失效元素数据。可以通过把失效元素对应的行重变换矩阵中去除,得到一个降级的变换矩阵,然后验证该变换矩阵是否是满秩的,如果是满秩的就表示可以恢复失效的数据。
[0086]如图3所示,本发明高效容多错的快速恢复编码方法的验证矩阵生成方法包括以下步骤:
[0087](I)设置一个变换矩阵m[S*0 (Rd+2), S*C*Rd],初始化该矩阵中全部的元素为O,同时设置数据元素C (sp,rp,cp)在全部数据元素中的位置为t= (rp-l)*S*C+ (sp-l)*C+cp,其中s表示条带集在编码单元中的序号,r表示数据元素在条带集中的行序号,c表示数据元素在条带集中的列序号;
[0088](2)根据数据元素C (sp, rp, cp)生成验证矩阵中的前S*C行,具体包括以下子步骤:
[0089](2-1)设置 sp=0,Cp=O ;
[0090](2-2)判断是否有c〈C,若是则转入步骤(2-3),否则转入步骤(2-6);
[0091](2-3)对第<sp+l>s个条带集中的第cp+2行的数据元素,计算其在全部数据元素中的位置t,同时置m[sp*C+cp, t]为I ;
[0092](2-4)对第<sp+2>s个条带集中以C (<sp+2>s,2,<cp+l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[sp*C+cp,t]为O ;
[0093](2-5)设置 cp=cp+l,然后返回步骤(2-2);
[0094](2-6 )设置sp=sp+l,Cp=O,并判断是佛有sp〈S,若是则返回步骤(2_2 ),否则步骤(2 )结束;
[0095](3)根据数据元素C (sp, rp, cp)生成验证矩阵中的S*C行至2S*C行,具体包括以下子步骤:
[0096](3-1)设置 sp=0,Cp=O ;
[0097](3-2)判断是否有cp〈C,若是则转入步骤(3-3),否则转到步骤(3-5);
[0098](3-3)对第<sp-l>s个条带集中以C (<sp-l>s,2,〈cp-l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[S*C+sp*C+cp, t]为I ;
[0099](3-4)设置 cp=cp+l,然后返回步骤(3-2);
[0100](3-5 )设置sp=sp+l,Cp=O,并判断是否有s〈S,若是则返回步骤(3_2 ),否则步骤(3 )结束。
[0101](4)根据数据元素C (sp, rp,cp)生成验证矩阵中剩下的Rd*S*C行,具体包括以下子步骤:
[0102](4-1)设置 sp=0,cp=0,rp=0;
[0103](4-2 )判断是否有rp〈Rd,如果是则转入步骤(4_3 ),否则过程结束;
[0104](4-3)判断是否有sp〈S,如果是则转入步骤(4-4),否则转入步骤(4-8);
[0105](4-4)判断是否有cp〈C,若是则转入步骤(4-5),否则转入步骤(4-7);
[0106](4-5)计算数据元素C (sp, rp, cp)在全部数据元素中的位置t,同时置变换矩阵m[2S*C+sp*C+cp, t]为 I ;
[0107](4-6)设置 cp=cp+l,然后返回步骤(4-4);
[0108](4-7)设置 sp=sp+l, cp=0,然后返回步骤(4-3);
[0109](4-8)设置 rp=rp+l, sp=0,然后返回步骤(4-2)。
[0110]为了验证该编码的可靠性,需要验证所有的失效情况下是否能恢复,由于失效的情况太多,我们需要对其进行分类。由于该条带存在对称性,因此很多种情况是重复的,我们只需要找出其中非重复的情况进行验证。对于图1中给出的编码我们可以发现其每个条带集中失效条带的数量存在3中情况,情况I是3个失效条带在同一个条带集中,情况2是2个失效条带在同一个条带集中,剩下的一个失效条带在另一个条带集中,最后一种情况3是每个失效条带只在一个条带集中。对于情况1,由于条带集的对称性,因此3个失效条带在那个条带集都是一样的,我们可以取其在第一个条带集的情况。在该条带集中取3个失效条带可以用排列组合的方法穷举,其有Cl种情况。对于情况2,由于对称性其中存在2个
失效条带的条带集和存在I个失效条带的条带集只存在相邻和中间隔着一个条带集这两种情况。对于存在一个失效条带的条带集,由于对称性,只存在一种情况。对于存在2个失效条带的条带集同样可以用排列组合的方法穷举。对于情况3可以发现只存在一种情况。通过如上的分析,就可以减少要验证的情况了。下面我们给出验证k从3~7时情况的分
类:
[0111]
【权利要求】
1.一种高效容多错的快速恢复编码方法,其特征在于,包括以下步骤: (1)获取用户输入的系统参数,包括磁盘的大小S*c、一个条带中数据块的个数Rd、一个条带中校验快的个数2个,其中S表示条带集的数量,C表示每个条带集中条带的数量; (2)根据用户输入的系统参数建立快速恢复编码的第一行校验元素CGVrp0, cp0),C(sp1; rp0, Cp1),…,Cd1, rp0, C1V1),其中s表示条带集在编码单元中的序号,r0表示校验元素在条带集中的第一行,且4=0,c表示校验元素在条带集中的列序号,本步骤具体包括以下子步骤:
(2-1)初始化 Sp0=O, Cp0=O ; (2-2)判断是否有?C,若是则转入步骤(2-3),否则转入步骤(2-6); (2-3)将第Gpc^Ds个条带集中的第<+2行的元素进行异或运算,以得到校验元素,并将该校验元素存放在C (Sptl, r, Cp0)中; (2-4)将第<SpQ+2>s个条带集中以C (〈SpQ+2>s,2,〈CpQ+l>c)为第一个元素,斜率为-1的Rd个元素进行异或,以得到一个数据,并把该数据与步骤(2-3)得到的校验元素进行异或,以得到最终的校验数据,并将该校验数据存放在C (sp0, r, Cp0)中; (2-5)设置cpQ=cpQ+l,并返回步骤(2-2);
(2-6)设置Sptl=S1Vl, Cptl=O,并判断是否有sVS,若是则返回步骤(2-2),否则步骤(2)结束。 (3)根据用户输入的系统参数建立快速恢复编码的第二行校验元素CGVrp1; Cp0),C(sp1; Λ,Cp1),…,Cd1, Λ,C1V1),其中A表示校验元素在条带集中的第二行,且6=0,本步骤具体包括以下子步骤:
(3-1)初始化 Sp0=O, Cp0=O ; (3-2)判断是否有?C,若是则转入步骤(3-3),否则转入步骤(3-5); (3-3)将第〈SpQ-l>s个条带集中以C (〈SpQ-l>s,2,〈CpQ-l>c)为第一个元素,斜率为I的Rd个元素进行异或,以得到一个数据,该数据就是C (sp0, , Cp0)的结果; (3-4)设置cpQ=cpQ+l,并返回步骤(3-2); (3-5)设置Sptl=S1Vl, <=0,并判断是否有sVS,若是则返回步骤(3-2),否则过程结束。
2.一种如权利要求1所述快速恢复编码方法的验证矩阵生成方法,其特征在于,包括以下步骤: (1)设置一个变换矩阵m[S*C*(Rd+2), S*C*Rd],初始化该矩阵中全部的元素为0,同时设置数据元素C (sp,rp,cp)在全部数据元素中的位置为t= (rp-l) *S*C+ (sp_l) *C+cp,其中s表示条带集在编码单元中的序号,r表示数据元素在条带集中的行序号,c表示数据元素在条带集中的列序号; (2)根据数据元素C(sp, rp, cp)生成验证矩阵中的前S*C行,具体包括以下子步骤: (2-1)设置 sp=0, Cp=O ; (2-2)判断是否有c〈C,若是则转入步骤(2-3),否则转入步骤(2-6); (2-3)对第<sp+l>s个条带集中的第cp+2行的数据元素,计算其在全部数据元素中的位置 t,同时置 m[sp*C+cp, t]为 I ; (2-4)对第<sp+2>s个条带集中以C (<sp+2>s,2, <cp+l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[sp*C+cp,t]为O ;(2-5)设置cp=cp+l,然后返回步骤(2-2); (2-6)设置sp=sp+l,cp=0,并判断是佛有sp〈S,若是则返回步骤(2-2),否则步骤(2)结束; (3)根据数据元素C(sp, rp, cp)生成验证矩阵中的S*C行至2S*C行,具体包括以下子步骤:
(3-1)设置 sp=0, Cp=O ; (3-2)判断是否有cp〈C,若是则转入步骤(3-3),否则转到步骤(3-5); (3-3)对第<sp-l>s个条带集中以C (<sp-l>s,2, <cp-l>c)为第一个元素,斜率为-1的Rd个元素,计算其在全部数据元素中的位置t,同时置变换矩阵m[S*C+sp*C+cp, t]为I ;(3-4)设置cp=cp+l,然后返回步骤(3-2); (3-5)设置sp=sp+l,cp=0,并判断是否有s〈S,若是则返回步骤(3-2),否则步骤(3)结束。(4)根据数据元素C(sp, rp, cp)生成验证矩阵中剩下的Rd*S*C行,具体包括以下子步骤:
(4-1)设置 sp=0, cp=0, rp=0 ; (4-2 )判断是否有rp〈Rd,如果是则转入步骤(4-3 ),否则过程结束; (4-3 )判断是否有sp〈S,如果是则转入步骤(4-4 ),否则转入步骤(4-8 ); (4-4 )判断是否有cp〈C,若是则转入步骤(4-5 ),否则转入步骤(4-7 ); (4-5)计算数据元素C (sp, rp, cp)在全部数据元素中的位置t,同时置变换矩阵m[2S*C+sp*C+cp, t]为 I ; (4-6)设置cp=cp+l,然后返回步骤(4-4); (4-7)设置sp=sp+l,cp=0,然后返回步骤(4-3); (4-8)设置rp=rp+l, sp=0,然后返回步骤(4-2)。
【文档编号】G06F11/20GK103809919SQ201310689402
【公开日】2014年5月21日 申请日期:2013年12月16日 优先权日:2013年12月16日
【发明者】曹强, 黄建忠, 万胜刚, 李诗逸, 宋驰, 谢长生 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1