CN101226492B - Raid系统和伽罗瓦域乘积计算方法 - Google Patents
Raid系统和伽罗瓦域乘积计算方法 Download PDFInfo
- Publication number
- CN101226492B CN101226492B CN2008100030529A CN200810003052A CN101226492B CN 101226492 B CN101226492 B CN 101226492B CN 2008100030529 A CN2008100030529 A CN 2008100030529A CN 200810003052 A CN200810003052 A CN 200810003052A CN 101226492 B CN101226492 B CN 101226492B
- Authority
- CN
- China
- Prior art keywords
- data
- symbol
- factor
- galois field
- alpha
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title description 38
- 238000004364 calculation method Methods 0.000 claims description 25
- 238000006073 displacement reaction Methods 0.000 claims description 14
- 238000013500 data storage Methods 0.000 claims 2
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 24
- 238000006467 substitution reaction Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 2
- 230000003750 conditioning effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- IXKSXJFAGXLQOQ-XISFHERQSA-N WHWLQLKPGQPMY Chemical compound C([C@@H](C(=O)N[C@@H](CC=1C2=CC=CC=C2NC=1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CC(C)C)C(=O)N1CCC[C@H]1C(=O)NCC(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CC(O)=O)C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCSC)C(=O)N[C@@H](CC=1C=CC(O)=CC=1)C(O)=O)NC(=O)[C@@H](N)CC=1C2=CC=CC=C2NC=1)C1=CNC=N1 IXKSXJFAGXLQOQ-XISFHERQSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 102000054766 genetic haplotypes Human genes 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及RAID系统和伽罗瓦域乘积计算方法。使用通过伽罗瓦域计算进行的数据奇偶计算来从RAID系统的双盘故障恢复数据。传统伽罗瓦域计算需要大量处理步骤和时间。希望减少伽罗瓦域计算的处理步骤的数量。提供了一种对数据执行伽罗瓦域乘积计算的装置。第一符号数据包括多个符号,各符号是要在伽罗瓦域中执行与因子α的乘积运算的位序列,其中α是伽罗瓦域的本原元素。通过对第一符号数据执行朝向高阶位位置的移位运算生成根据第一符号数据的第一掩码数据、通过计算第一掩码数据与第一符号修正值的逻辑AND来生成第一修正数据、通过计算第二符号数据与第一修正数据的XOR来生成因子α计算结果,从而执行针对第一符号数据的因子α计算。
Description
技术领域
本发明涉及用于通过伽罗瓦(Galois)域计算来计算数据奇偶的独立盘冗余阵列(RAID)系统,并且还涉及伽罗瓦域乘积计算方法。更具体地说,本发明涉及适于从双盘故障中恢复数据的RAID系统和伽罗瓦域乘积计算方法。
背景技术
一种用于从双盘故障中恢复数据的方法是RAID-6。在这种RAID-6方案中,举例来说,如在日本未审查专利申请公报第2000-259359号(图5和图6)中公开的,已经提出了线性冗余技术。
下面,在图14所示RAID-6系统的构造的情况下对这种技术进行描述。将三个数据盘单元(硬盘驱动器)101、102、以及103和两个奇偶盘单元(硬盘驱动器)(即,第一奇偶盘单元104和第二奇偶盘单元105)连接至RAID控制器110。
在线性冗余技术中,根据数据生成两个奇偶。在已知的RAID-5方案中,如图15所述,作为将数据项D1、D2以及D3相加(即,计算异或(XOR))的结果,生成第一奇偶P。将第一奇偶P存储在第一奇偶盘单元104中。图15所示“+”号表示XOR。
通过利用伽罗瓦域乘积计算对数据项D1、D2以及D3进行加权,并且通过计算所得值的XOR来生成第二奇偶Q。将第二奇偶Q存储在第二奇偶盘单元105中。
为数据盘单元101、102以及103中的各数据盘单元各分配一个伽罗瓦域生成器。为了从双盘故障中恢复数据,分别分配给数据单元101、102以及103的伽罗瓦域生成器必需彼此不同。例如,如图15所示,如果数据位数是16,则将216个有限元素设置为伽罗瓦域GF(216)。另外,可以根据预定规则对伽罗瓦域执行四则运算。这种线性冗余技术能够分散奇偶、有效检测发生的双盘故障、并且从这种故障中恢复数据。
如图15所示,在利用伽罗瓦域生成奇偶时,诸如数据和伽罗瓦域的两个变量是执行伽罗瓦域乘积计算所必需的。因此,与RAID-5方案的XOR计算(即,计算普通奇偶P)所需处理时间相比,需要更长处理时间来生成奇偶。因此,降低了性能。
为了简化伽罗瓦域乘积计算,举例来说,如在2006年10月26日得到的在线文件http://kernel.org/pub/linux/kernel/people/hpa/raid-6.pdf中,由H.Peter Anvin在“The mathematics of RAID-6”中公开的,已经提出了通过移位、AND、XOR运算,利用因子α来对多个数据段进行加权(乘积计算)的算法。在这个文件中,第4页到第5页公开了当使用8位数据时用于生成奇偶和用于恢复数据的表达式,并且从第6页的底栏到第7页采用C语言描述了利用因子α来进行加权(乘积计算)的算法。
下面,在4个符号数据(每一个符号都用8位表示)的情况下,参照图16和17,对采用C语言描述的算法进行说明。在图16中,v表示具有4个8位符号的对象数据(32位)。
在步骤S100中,将存储在盘单元中的具有4个8位符号的对象数据v加载到32位寄存器中。接着,在步骤S101中,将整个对象数据v向左(即,向更高阶)移位1位。所得数据v<<1的值是以32位为单位的对象数据v的值两倍大。
接着,在步骤S102中,对移位数据v<<1的因对数据v进行移位而影响了其它符号的位进行掩码。使用掩码值0xfefefefe,计算移位数据v<<1与掩码值的逻辑AND,以获取掩码数据vv。通过这种操作,将4个符号的最右位(即,因对数据v进行移位而受影响的位)的值设置成0。即,可以防止由于右相邻符号的最高有效位(MSB)对对象符号的最右位造成的影响,这种影响是因对所有32位进行移位而造成的。
随后,在步骤S103中,如图17所示,根据对象数据v生成掩码函数(MASK(v))。该MASK(v)函数按如果8位符号的最左位是1则在该符号中设置8位“11111111”,而如果8位符号的最左位是0则在该符号中设置8位“00000000”的方式生成。即,MASK(v)函数按其中通过对对象数据v进行移位而生成进位的符号设置8位1的方式和按其中通过对对象数据v进行移位而没有生成进位的符号设置8位0的方式生成。
图17的流程图给出了生成MASK(v)函数的细节。在步骤S110中,计算对象数据v与其中在8位间隔处呈现1而在其它位的位置中设置0的掩码值“0x80808080”的逻辑AND。这个掩码值提取各符号的MSB。
接着,在步骤S112中,将逻辑AND值向左移位1位,获得32位数据v<<1(加倍数据),而且将逻辑AND值向右移位7位,获得32位数据v>>7(1/128数据)。接着,从32位数据v<<1减去32位数据v>>7,获得掩模函数MASK(v)。这个函数用于区分MSB为1的符号与MSB不为1的符号。
在图16的步骤S104中,计算与用于生成8位伽罗瓦域GF(28)的多项式(=x8+x2+1)对应的系数值“0x1d1d1d1d”与掩模函数MASK(v)的逻辑AND。即,在4个符号中,仅MSB为1的符号被系数值“0x1d1d1d1d”的“00011101”代替。
在步骤S105中,计算逻辑AND结果与步骤S102中计算出的掩码对象数据vv的XOR,获得与因子α相乘了的对象数据v,即,α·v。通过再一次重复这些步骤,可以获取数据α2·v。类似地,可以获取αn·v,其中,n为重复上述步骤的次数。
在上述现有技术中,对几个符号(现有技术的示例中为4个符号)实现针对伽罗瓦域乘积计算的并行处理需要9个步骤,即,步骤S100中的代入步骤、步骤S101中的移位步骤、步骤S102中的AND步骤、步骤S103(图17)中的AND步骤、2个移位步骤以及1个减法步骤、步骤S104中的1个AND步骤以及步骤S105中的XOR步骤。
在上述现有技术伽罗瓦域乘积计算中,可以实现针对多个符号(现有技术的示例中为4个符号)的并行处理。然而,需要9个步骤来进行因子α与4个符号相乘。因此,为了进行因子αn与4个符号相乘,需要计算的数量达9·n个步骤。
具体来说,随着近来存储容量的增加,对象数据的符号数(数据盘单元数)也随之增加。例如,如果RAID-6系统按14个数据盘单元设置两个奇偶盘单元的方式进行设置,则符号需要与α13相乘,其意味着需要9·13=117个步骤。因而,希望缩减步骤数。
如果通过重复步骤来执行计算,则为了增加计算速度,需要将步骤的重复数或用于乘积计算的循环数变小。
不仅在数据生成处理中,而且在数据重建处理中,也希望缩减用于伽罗瓦域乘积计算的步骤的重复数,以获取较短的处理时间。
发明内容
因此,本发明的一个目的是提供一种可以缩减用于伽罗瓦域计算的处理时间的RAID系统和伽罗瓦域乘积计算方法。
本发明的另一目的是提供一种可以缩减用于伽罗瓦域计算的并行处理的步骤数的RAID系统和伽罗瓦域乘积计算方法。
本发明的又一目的是提供一种可以缩减用于伽罗瓦域计算的并行处理的步骤的重复数的RAID系统和伽罗瓦域乘积计算方法。
根据本发明的实施方式,提供了一种用于对数据执行伽罗瓦域乘积计算的方法。该方法包括以下步骤:获取包括多个符号的第一符号数据,每一个所述符号都是要在伽罗瓦域中执行使用因子α的乘积运算的位序列,其中,α是所述伽罗瓦域的本原元素;执行因子α计算,该执行因子α计算的步骤包括以下步骤:通过对所述第一符号数据执行朝向高阶位位置的移位运算来生成第二符号数据,通过将1代入所述第一符号数据中的通过所述移位运算会生成进位位的符号的所有位中,并且通过将0代入该第一符号数据的其它符号的所有位中,来生成所述第一符号数据的第一掩码数据,通过计算所述第一掩码数据与基于针对所述伽罗瓦域的本原多项式确定的第一符号修正值的逻辑AND来生成第一修正数据,通过计算所述第二符号数据与所述第一修正数据的XOR来生成因子α计算结果,该因子α计算结果包括多个符号,所述多个符号中的每一个符号都包括在所述伽罗瓦域中的乘积运算的结果的,即所述因子α和所述第一符号数据中包括的对应符号的乘积,以及将所述因子α计算结果存储到所述第一符号数据中,作为新的第一符号数据。接着,在所述第一符号数据上重复M次所述因子α的计算,其中,M是大于或等于0的整数,以使利用加权值因子αM对所述第一符号数据中包括的各符号进行加权。
根据本发明的另一实施方式,提供了一种方法,该方法包括以下步骤:执行因子α-1计算,该执行因子α-1计算的步骤包括以下步骤:通过在所述第一符号数据上执行朝向低阶位位置的移位运算来生成第三符号数据;通过将1代入所述第一符号数据的具有要通过所述移位运算生成的下溢位的符号的所有位中,并且通过将0代入该第一符号数据的其它符号的所有位中,来生成所述第一符号数据的第二掩码数据;通过计算所述第二掩码数据与基于所述伽罗瓦域的本原多项式确定的第二符号修正值的逻辑AND来生成第二修正数据;通过计算所述第二符号数据与所述第二修正数据的XOR来生成因子α-1计算结果,该因子α-1计算结果包括所述多个符号,所述多个符号中的每一个符号都包括所述伽罗瓦域中的乘积运算的结果,即所述因子α-1和所述第一符号数据中包括的对应符号的乘积。接着,对所述第一符号数据重复K次所述因子α-1计算,以利用因子α-K对所述第一符号数据中包括的各符号进行加权,其中,重复数K是大于或等于0的整数。
附图说明
图1是例示了根据本发明实施方式的RAID系统的框图;
图2例示了根据本发明实施方式的利用伽罗瓦域的奇偶计算处理;
图3是例示了利用图2所示奇偶Q的伽罗瓦域乘积计算的流程图;
图4是例示了图3所示伽罗瓦域乘积计算的细节的流程图;
图5例示了图4所示乘积计算的具体实施例;
图6例示了图5所示掩码生成处理;
图7是例示了根据本发明另一实施方式的伽罗瓦域乘积计算的流程图;
图8例示了图7所示的乘积计算处理;
图9是例示了利用图8所示的奇偶Q的乘积计算处理的流程图;
图10例示了用于图9所示乘积计算处理的操作;
图11是例示图9所示乘积计算处理的细节的流程图;
图12是例示根据本发明又一实施方式的伽罗瓦域乘积计算的流程图;
图13例示了图12所示乘积计算处理;
图14是例示现有技术RAID-6系统的示例的构造的框图;
图15例示了现有技术RAID-6系统的示例中采用的奇偶数据;
图16例示了现有技术伽罗瓦域乘积计算的示例;以及
图17例示了现有技术掩码生成处理的示例。
具体实施方式
下面,按RAID系统、根据一实施方式的伽罗瓦域乘积计算、根据另一实施方式的伽罗瓦域乘积计算、根据又一实施方式的伽罗瓦域乘积计算以及变型实施例的次序,对本发明进行说明。然而,本发明不限于这种构造。
图1是例示根据本发明一实施方式的RAID系统的框图。图2例示了图1所示RAID系统所执行的利用伽罗瓦域的奇偶计算。如图1所示,该RAID系统包括:连接至主计算机16的RAID控制器12、多个(在这种实施方式中为14个)数据盘单元(硬盘驱动器)10-1到10-14,以及第一奇偶盘单元(硬盘驱动器)10-15和第二奇偶盘单元(硬盘驱动器)10-16,它们例如利用光纤信道(FC)环路14连接至RAID控制器12并且被RAID控制器12控制。即,图1的RAID系统具有带双奇偶的RAID-6构造。
如图2所示,通过计算分别在数据盘单元10-1到10-14中的串数据(string data)D1到D14的XOR来生成第一奇偶P,并将该第一奇偶P存储在第一奇偶盘单元10-15的对应地址处。如图2所示,通过伽罗瓦域乘积计算分别对数据盘单元10-1到10-14中的串数据D1到D14进行加权并且通过计算所得加权数据的XOR来生成第二奇偶Q。将第二奇偶Q存储在第二奇偶盘单元10-16的对应地址处。即,第二奇偶Q用下面的等式(1)表达。
Q=α0×D1+α1×D2+α2×D3+…+α12×D13+α13×D14 …(1)
其中,等式(1)中的+号表示XOR计算。由RAID控制器12执行奇偶计算。如果1个符号具有16位,则伽罗瓦域为GF(216),并且本原多项式(primitive polynomial)用下面的等式(2)表达,并且在本实施方式中,将本原元素(primitive element)表达为α。
X16+X12+X3+X+1 …(2)
在这种实施方式中,将值“32768”(在该16位数据中,仅MSB为1)用于生成用于利用因子α的伽罗瓦域乘积计算的掩码数据(第一掩码数据)。通过将2代入等式(2)表达的本原多项式中的除了x16中的x以外的其它x中,来获取被用作第一符号修正值的值“4107”。
当将该数据写入到数据盘单元10-1到10-14中时,RAID控制器12通过XOR计算来计算第一奇偶P,并将计算出的第一奇偶P存储在第一奇偶盘单元10-15中,并且还通过执行下面讨论的伽罗瓦域乘积计算和XOR计算来计算第二奇偶Q,并将计算出的第二奇偶Q存储在第二奇偶盘单元10-16中。
图3是例示了根据本发明一种实施方式的伽罗瓦域乘积计算的流程图。图4是例示图3所示伽罗瓦域乘积计算的细节的流程图。图5例示了图3和4所示流程图的具体实施例。图6例示了针对生成进位的符号的乘积计算。
在图3到图6中,假定1个符号具有16位,而8个符号经受并行处理。例如,公司生成的CPU具有MMX指令集。MMX指令集使用xmm寄存器。通过使用xmm寄存器,执行并行处理。xmm寄存器长度为16位,因而,如果1个符号具有16位,则8个符号可以经受加权并行处理。
下面,参照图3的流程图,对用于伽罗瓦域乘积计算的基本处理进行讨论。
在步骤S10中,将8个符号(符号数据)加载到xmm1寄存器中。
接着,在步骤S12中,将xmm1寄存器中的各符号都向左移位1位,以使各符号的值加倍。
在步骤S14中,通过使用掩码值,检测其值因移位运算而变小的符号(即,在MSB中生成进位的符号)。
在步骤S16中,在移位运算之后,在8个符号中,计算预定值“4107”与其值变小的符号的XOR。
下面,参照图4的流程图,对利用MMX的加权处理的细节的实施例进行说明。
在图4所示实施例中,为便于说明,假定步骤S24到S26的处理、步骤S22的处理以及步骤S32的处理并行进行。然而,也可以通过在步骤S20与步骤S24之间插入步骤S22和具有添加了恰当条件分支步骤的步骤S32,来将加权处理设置为使上述三个处理串行进行。
下面,针对对数据盘号i=2进行利用伽罗瓦域的加权处理(这种处理被称为“伽罗瓦域乘积计算”)的情况,参照图5和6,对加权处理进行具体讨论。针对数据盘号i=2的情况,根据由等式(1)表达的用于生成第二奇偶Q的多项式,由因子α来对数据Di=2进行加权。
在步骤S20中,将包括多个符号的符号数据代入xmm1寄存器中,并且设置重复数MAX。例如,对于数据盘号i=2的情况来说,将MAX设置成1。将重复数指针i初始化成0。如果MAX为0,则将xmm1寄存器中设置的内容输出,并且不执行随后的步骤。例如,如图5所示,根据数据盘号i=2,提取8个要加权符号(每一个符号都具有16位),并且代入到xmm1寄存器中(图5中的xmm1表示)。
另外,制备8符号数据v32768和v4107,在符号数据v32768中,输入“32768”作为符号,在符号数据V4107中,输入“4107”作为符号。值“32768”表示仅第16位是1,并且被用于检测因移位运算而生成进位的符号。值“4107”是通过将x=2代入到16位伽罗瓦域GF(216)的本原多项式x16+x12+x3+x+1中的x12+x3+x+1而获取的值。即,4096+8+2+1=4107。8符号数据v4107变为第一符号修正值。
在步骤S22中,根据移动指令(MOVQ)将代入xmm1寄存器中的数据移至xmm2寄存器。接着,根据移位指令(PSLLW)将移至xmm2寄存器的符号数据中的每一个符号向左(向较高阶)移位1位,如图5的xmm2所示。因为这种移位运算,所以各符号的值加倍(与因子α相乘),并且因为每一个符号都具有16位,所以在因移位运算而生成进位的位中发生上溢。因此,如图5中xmm2所示,在移位运算之后,所得数据包含:其值加倍的符号(如单下划线所示)、以及其值比移位之前的值小的符号(如双下划线所示)。在其值小于移位之前的符号中发生了上溢。
在步骤S24中,计算值“4107”与其值减小的各符号的XOR。因此,首先提取其值减小的各符号,并且将该符号改变成全为1(即,65535)。将参照图4和图5,并且还参照图6,对其进行更详细说明。根据AND指令(PAND),计算xmm1寄存器中的各符号的值(图5中的xmm1)和x32768值(32768)的逻辑AND,从而可以更新xmm1寄存器。如图4和图5中的xmm1 & v32768所示,在8个符号中,仅发生上溢的符号(其值减小的符号)被32768替换,而没有发生上溢的符号被0替换。
接着,确定各符号的值是要被65535代替还是被0代替。即,根据比较/最大值设置指令(PCMPEQW),将作为计算xmm1与v32768的逻辑AND的结果的各符号的值与32768进行比较。如果两个值得相同,则将这种符号的所有16位都替换成1(=65535)。如果两个值不相同,则将这种符号的所有16位替换成0(=0)。结果,生成针对值4107的掩码或者说第一掩码数据。
接着,在步骤S26中,根据AND指令(PAND),计算xmm1寄存器中的各符号的值与v4107的逻辑AND,从而可以更新xmm1寄存器。利用这种操作,在xmm1寄存器中的8个符号中,仅其值减小的符号被4107代替,而其值没有减小的符号被0代替,即,在xmm1寄存器中设置第一修正数据。
在步骤S28中,根据XOR指令(PXOR),计算xmm1寄存器中更新后的符号的值(第一修正值)与步骤S22中获取的xmm2寄存器中对应符号的值的XOR,获得被因子α所加权的值。
在步骤S30中,当检测到“中断”消息时,终止处理,并且确定xmm1寄存器中符号的值。否则,处理返回至步骤S24。
当开始伽罗瓦域乘积计算时,即,在步骤S20之后,在步骤S32中,按1递增重复数指针i。接着,确定重复数指针i是否大于或等于重复数MAX。如果重复数指针i小于重复数MAX,则处理进行至步骤S24。
如果在步骤S32中确定重复数指针i大于或等于重复数MAX,则意味着已经达到了重复数MAX,因而处理进行至步骤S34。在步骤S34中,提供“中断”消息,并且输出xmm1,作为执行伽罗瓦域乘积计算的结果。
例如,如果将图5中的数据xmm1的第二符号值36934简单加倍,则所得值为73868。然而,因为将一个符号限制成16位,所以在所得值中发生上溢,从而按16位表示法,将73868减小至8332(=73868-65536)。然而,第二符号的加倍值的有效位是从第17位到第2位的16个位。为了进行针对有效位的修正,将修正值4107用于转换从8332到12423的第二符号。
步骤S22到S28都可以由具有较小执行时间(latency)(执行时间=2)的指令来执行,其显著缩减了处理时间。如果利用因子αj来执行加权,则将步骤S22到S28重复j次。
参照图6,对这种实施方式的掩码处理进行说明。图6例示了用于提取其值因移位运算而减小的符号的掩码处理。计算xmm1寄存器中各符号的值与v32768的逻辑AND,以区分发生上溢的符号和没有发生上溢的符号。接着,将各符号的值与值32768比较。如果两个值相同,则将这种符号的所有位都替换为1(=65535)。接着,生成第一掩码值。接着,计算xmm1寄存器中的各符号的值与v4107的逻辑AND,获得存储有第一修正数据的xmm1。
在现有技术掩码处理中,如图17所示,计算源符号v与值0x80808080的逻辑AND,以区分发生上溢的符号和没有发生上溢的符号。接着,将逻辑AND值向左移位1位,而且,还将逻辑AND值向右移位7位。接着,将两个结果之间的差用作掩码。
图6所示这种实施方式的掩码处理仅根据2个指令(如AND指令和比较指令)来执行。与此相反,图17所示现有技术掩码处理根据4个指令(如AND指令、两个移位指令,以及减法指令)来执行。
另外,如图5所示,在这种实施方式中,寄存器中的符号数据的各个符号都独立地向左移位。与此相反,如图16所示,在现有技术中,整个寄存器向左移位,即,全部4个符号移位一次。因而,在现有技术中,在移位运算之后,需要诸如将各符号的LSB强制替换为0的额外处理,以使各符号的LSB不受右相邻符号的MSB的影响。
因而,和现有技术的由9个指令执行的伽罗瓦域乘积计算对比,可以由6个指令执行这种实施方式的伽罗瓦域乘积计算。即,仅需要将2/3的处理时间用于数据和因子α的相乘。结果,可以实现快速的伽罗瓦域乘积计算。在现有技术中,例如,对于利用α13的乘积计算的情况来说,需要9×13=117个指令(步骤)。然而,在这种实施方式中,仅需要6×13=78个指令(步骤)。另外,在由等式(1)表达的乘积计算中,在现有技术中,需要9×(1+2+3+4+5+6+7+8+9+10+11+12+13=91)=819个指令。然而,在这种实施方式中,仅需要6×(1+2+3+4+5+6+7+8+9+10+11+12+13=91)=546个指令。因此,可以实现快速伽罗瓦域乘积计算。
另外,在这种实施方式中,可以对8个符号进行并行处理。因此,和其中仅可对4个符号进行并行处理的现有技术对比,可以使处理速率加倍。结果,可以仅利用1/3的处理时间来执行伽罗瓦域乘积计算。
图7是例示了根据本发明另一实施方式的伽罗瓦域乘积计算的流程图。图8例示了图7所示伽罗瓦域乘积计算中采用的加权处理。图9是例示图7所示伽罗瓦域乘积计算中利用因子α-1的乘积计算处理的流程图。图10例示了针对图9所示乘积计算处理的过程。图11是例示图9中流程图所示乘积计算处理的细节的流程图。
在上述实施方式中,缩减了用于针对伽罗瓦域乘积计算的一次运算的处理时间。在这种实施方式中,确定伽罗瓦域生成器,以可以减少针对乘积计算并行处理的算法循环数,并因此可以缩减整个伽罗瓦域乘积计算时间。
下面,如图1和2所示,假定设置14个数据盘单元。在这种情况下,如果数据盘号i(=1到14)是1到8中的一个,则根据图4到图6所示的加权计算,通过将数据乘以因子αi-1来执行加权处理。如果盘号i是9到14中的一个,则根据下面将参照图8到11所述的利用因子αi-1的加权算法,通过将数据乘以因子α-i+8来执行加权处理。
可以如下生成两种类型的加权处理。下面,假定设置有N个数据盘单元。在这种情况下,如果数据盘号i是1到S+1中的一个,其中,S表示大于(N-1)/2的最小整数,则根据图4到图6所示的加权计算,利用因子αi-1执行加权。如果数据盘号i是S+2到N中的一个,则利用因子α-i+S+1执行加权。
已经参照图4到图6讨论了根据因子α的加权处理,因此,在此省略对其的说明,并且下面仅参照图8到图11,对根据因子α-1的加权处理进行说明。
如图8所示,通过计算分别在数据盘单元10-1到10-14中的串数据D1到D14的XOR来生成第一奇偶P,并将该第一奇偶P存储在第一奇偶盘单元10-15的对应地址处。如图8所示,通过伽罗瓦域乘积计算分别对数据盘单元10-1到10-14中的串数据D1到D14进行加权并且通过计算所得加权数据的XOR来生成第二奇偶Q。将生成的第二奇偶Q存储在第二奇偶盘单元10-16的对应地址处。即,第二奇偶Q用下面的等式(3)表达。
Q=α0×D1+α1×D2+α2×D3+…+α7×D8
…(3)
+α-1×D9+…+α-6×D14
其中,等式(3)中的+号表示XOR计算。通过RAID控制器12执行奇偶计算。如果一个符号具有16位,则伽罗瓦域为GF(216),并且本原多项式用上述等式(2)表达。
将其中仅16位数据的LSB为1的值“1”用于生成针对利用因子α-1的伽罗瓦域乘积计算的的掩码数据(第二掩码数据)。通过将等式(2)表达的本原多项式除以x并且通过将2代入所得值的x中来生成被用作第二符号修正值的值“34821”。
当将该数据写入到数据盘单元10-1到10-14中时,RAID控制器12通过XOR计算来计算第一奇偶P,并将计算出的第一奇偶P存储在第一奇偶盘单元10-15中,并且还通过执行下面讨论的伽罗瓦域乘积计算和XOR计算来计算第二奇偶Q,并将计算出的第二奇偶Q存储在第二奇偶盘单元10-16中。
在图9到图11中,假定1个符号具有16位,并对8个符号进行并行处理。例如,公司生成的CPU具有MMX指令集。MMX指令集使用xmm寄存器。通过使用xmm寄存器,执行并行处理。xmm寄存器长度为16位,因而,如果1个符号具有16位,则可以对8个符号进行加权并行处理。
下面,参照图9的流程图,对利用因子α-1的伽罗瓦域乘积计算的基本处理进行讨论。
在步骤S40中,将8个符号加载到xmm1寄存器中。
接着,在步骤S42中,将xmm1寄存器中的各符号都向右(向较低阶)移位1位,以将各符号的值缩小1/2。
在步骤S44中,通过使用值v1,检测其中因移位运算而取消了一位位置的符号(即,LSB 1已经消失)。
在步骤S46中,在移位运算之后,计算预定值“34821”与这8个符号中其LSB已经消失了的符号的XOR。
下面,参照图11的流程图,对利用MMX的加权处理的细节的实施例进行说明。下面,还参照图10,针对对数据盘号i=9执行利用因子α-1的伽罗瓦域乘积计算的情况,对加权处理进行具体讨论。在数据盘号i=9的情况,根据由等式(3)表达的用于生成第二奇偶Q的多项式,使用因子α-1对数据Di=9进行加权。
在图11所示实施例中,为便于说明,假定步骤S54到S56的处理、步骤S52的处理以及步骤S62的处理并行进行。然而,也可以通过在步骤S50与步骤S54之间插入步骤S52和具有添加恰当条件分支步骤的步骤S62,将加权处理设置为使上述三个处理连续进行。
在步骤S50中,将数据盘号i=9的符号数据代入xmm1寄存器中,并且设置重复数MAX。例如,对于数据盘号i=9的情况来说,将MAX设置成1。将重复数指针i初始化成0。例如,按和图5所示方式类似的方式,根据数据盘号i=9,提取8个要加权符号(各符号都具有16位),并且代入到xmm1寄存器中(图10的(1)中的xmm1表示)。
另外,制备其中分别将“1”和“34821”输入的8符号数据v1和v34821。值“1”表示只有LSB是1,并且被用于检测因沿右向移位运算而造成LSB消失的符号。8符号数据v34821变为第二符号修正值。
值“34821”是通过从本原多项式x16+x12+x3+x+1去除1并且通过将所得值除以x以及还通过将x=2代入所得多项式x15+x11+x2+1中获取的值。这意味着根据16位伽罗瓦域GF(216)的本原多项式=α16+α12+α3+α+1=0的原理,α16+α12+α3+α=1保持为真。将2代入α获取69642=1。如果两侧都向右(较低阶)移位1位,则值“34821”消失。如果在右侧包含“1”时将16位数据向右移位,则右侧中的“1”消失。因此,计算数据与34821的XOR,可以修正该值。
在步骤S52中,根据移动指令(MOVQ)将代入xmm1寄存器中的数据移至xmm2寄存器。接着,根据移位指令(PSRLW)将移至xmm2寄存器的数据中的各符号向右(向较低阶)移位1位,如图10的(2)中的xmm2所示。因为这种移位运算,所以将各符号的值缩小1/2(因与因子α-1相乘),并且因为各符号都具有16位,所以在因移位运算而消失的位中发生下溢。因此,在移位运算之后,变为第三符号数据的所得数据包含其值缩小1/2的符号和其位已经消失的符号。
在步骤S54中,计算值“34821”与具有消失位的各符号的XOR。因此,首先提取具有消失位的各符号,并且将该符号改变成全为1(即,65535)。更具体地说,根据AND指令(PAND),计算xmm1寄存器(图5中的xmm1)中的各符号的值和x1值“1”的逻辑AND,从而可以更新xmm1寄存器。如xmm1 & v1所示,在8个符号中,仅其LSB为1的符号被1替换,而其它符号被0替换。
接着,确定各符号的值是要被65535代替还是要被0代替。即,根据比较/最大值设置指令(PCMPEQW),将作为计算xmm1与v1的逻辑AND的结果而获取的各符号的值和1比较。如果两个值相同,则将这种符号的所有16位替换为1(=65535)。如果两个值不相同,则将这种符号的所有16位替换为0(=0)。结果,生成具有值34821的掩码,或者说第二掩码数据。
接着,在步骤S56中,根据AND指令(PAND),计算xmm1寄存器中的各符号的值与v34821的逻辑AND,从而可以更新xmm1寄存器。利用这种操作,在xmm1寄存器中的8个符号中,仅其LSB为1的符号被34821代替,而其它符号被0代替,即,在xmm1寄存器中包括的这种数据变为第二修正数据。
在步骤S58中,根据XOR指令(PXOR),计算xmm1寄存器中更新的符号的值与步骤S52中获取的xmm2寄存器中对应符号的值的XOR,获得利用因子α-1所加权了的值。
在步骤S60中,当检测到“中断”消息时,终止处理,并且确定xmm1寄存器中符号的值。否则,处理返回至步骤S54。
当开始伽罗瓦域乘积计算时,即,在步骤S50之后,在步骤S62中,按1递增重复数指针i。接着,确定重复数指针i是否大于或等于重复数MAX。如果重复数指针i小于重复数MAX,则处理进行至步骤S54。
如果在步骤S62中确定重复数指针i大于或等于重复数MAX,则意指已经达到重复数MAX,并且处理进行至步骤S64。在步骤S64中,提供“中断”消息,并且输出xmm1作为执行伽罗瓦域乘积计算的结果。
如上所述,利用因子α-1的加权算法的特征在于,将代入到xmm寄存器中的值向右移位1位。基本概念和针对利用因子α的加权算法的基本概念相同。作为应用加权算法的结果,针对盘数i=9到14输出利用因子α-1(i-8)的乘法获取的加权结果。
按这种方式,只要分配给盘的伽罗瓦域生成器不同就足够了。不必一定要使用具有与盘号i成比例的功率的如等式(1)表达的伽罗瓦域生成器。使用这种特征,执行两种类型的利用因子α和α-1的加权处理,并且将使用因子αi-1和α-i+8所获取的加权结果分配给盘数i,以使重复数可以最小化。利用这种操作,如图7和图8所示,循环数最大为7。
如果采用图4所示伽罗瓦域乘积计算,则循环数最大为13。因而,通过这种实施方式,可以在缩减循环数方面产生相当大的效果。
另外,在这种实施方式中,已经在图11所示实施例的情况下,对利用因子α和α-1的加权处理进行了讨论。然而,通过重复1次来执行利用因子α的乘积计算和通过重复n次来执行利用因子α-n的乘积计算的另一方法也是可应用的。
如果采用图11所示的乘积计算,则可以利用6个指令执行伽罗瓦域乘积计算,并且仅需要将2/3的处理时间用于数据与α相乘。因而,可以实现伽罗瓦域乘积计算。另外,因为8个符号可以经受并行处理,所以与其中仅4个符号可以经受并行处理的现有技术的情况相比,处理速度几乎加倍。结果,可以利用1/3的处理时间执行伽罗瓦域乘积计算。
图12是例示了根据本发明又一实施方式的伽罗瓦域乘积计算的流程图。图13例示了图12所示伽罗瓦域乘积计算的实施例。在这种实施方式中,在图4到图6所示利用因子α执行伽罗瓦域乘积计算时,在重复数15之内计算特定的伽罗瓦域生成器αk,其中,k为任意自然数。当k为较大数字并且适于从双盘故障中恢复数据时,这种乘积计算有效。
下面,假定执行利用16位伽罗瓦域GF(216)的最大伽罗瓦域生成器α33653的加权处理,如图13所示。在这种情况下,如果使用利用图4所示的因子α的加权算法,则重复数变为33653。在这种情况下,如果使用利用图7所示的因子α-1的加权算法,则因为在16位伽罗瓦域GF(216)中α-31882=α33653,所以重复数变为31882。这是没有效率的。
因此,在这种情况下,使用针对任意伽罗瓦域生成器的加权算法。根据这种算法,采用向量表示来表达伽罗瓦域。该伽罗瓦域生成器可以用下面的等式(4)表达。
…(4)
αk=gfw(0)·α0+gfw(1)·α1+…+gfw(15)·α15
其中,gfw(i)为0或1。即,可以采用二进制向量表示的(gfw(0)、gfw(1)、…、gfw(15))来表达伽罗瓦域。
为了利用αk对一个符号D进行加权,可以建立分配律,如下面等式(5)所表达的。
αk·D=(gfw(0)·α0+gfw(1)·α1+…+gfw(15)·α15)·D
=gfw(0)·α0·D+gfw(1)·α1·D+…+gfw(15)·α15·D5 …(5)
利用这种分配律来执行图12和图13所示的加权处理。例如,当执行根据因子α33653的加权时,根据伽罗瓦域定律,下面的等式(6)可以保持为真。
α33653=α2+α0 …(6)
因而,采用上述二进制向量表示,
(gfw(0)、gfw(1)、…、gfw(15))=(1、0、1、0、…、0)。
因为将满足被设置了gfw(i)=1的条件的最大i用作重复数,所以将重复数MAX设置成2。这是因为不需要利用α3·D、α4·D的加权,并且,通过将重复数MAX设置成2,所以可以消除额外的重复处理,由此减少整体处理时间。
图13例示了利用因子α33653的针对8个符号数据(D1、D2、D3、D4、D5、D6、D7、D8)的加权处理的实施例。通过重复重复数MAX(2)次,可以生成加权数据α0=1、α1、以及α2。在生成的数据中,相加gfw(i)=1的情况下的αi加权数据。在这种情况下,相加(XOR)α0和α2。
根据这个操作,根据(α0·Dj+α2·Dj),可以获取目标加权数据α33653·Dj(j=1、2、…、8)。
下面,参照图12,对这个处理的细节的实施例进行说明。
在图12所示实施例中,为便于说明,假定步骤S74到S76的处理、步骤S72的处理以及XOR计算部(步骤S82到S90)的处理并行进行。然而,还可以通过在步骤S70与步骤S74之间插入步骤S72和具有添加恰当条件分支步骤的XOR计算部的处理,将加权处理设置为使上述三个处理串行进行。
在步骤S70中,将数据代入xmm1寄存器中,并且设置重复数MAX。将xmm2寄存器初始化成v0(全部为0)。还将重复数指针i初始化成0。如果MAX为0,则输出xmm1寄存器中设置的内容,并且不执行下面的步骤。接着,设置向量gfw。
另外,制备其中分别将“32768”和“4107”输入的8符号数据v32768和v4107,如图4所示。值“32768”表示仅第16位是1,并且被用于检测因移位运算而生成进位的符号。值“4107”是通过将x=2代入到16位伽罗瓦域GF(216)的本原多项式x16+x12+x3+x+1中的x12+x3+x+1中获取的值。即,4096+8+2+1=4107。
在步骤S72中,根据移动指令(MOVQ)将代入xmm1寄存器中的数据移至xmm3寄存器。接着,根据移位指令(PSLLW)将移至xmm3寄存器的数据中的各符号向左(向较高阶)移位1位。因为这种移位运算,所以各符号的值加倍(与因子α相乘),并且因为各符号都具有16位,所以在因移位运算而生成进位的位中发生上溢。因此,在移位运算之后,所得数据包含其值加倍的符号、以及和其值比移位之前的值小的符号。其值小于移位之前的符号中发生上溢。
在步骤S74中,计算值“4107”与其值减小的各符号的XOR。因此,首先提取其值减小的各符号,并且将该符号改变成全为1(即,65535)。更具体地说,根据AND指令(PAND),计算xmm1寄存器中的各符号的值与x32768值(32768)的逻辑AND,从而可以更新xmm1寄存器。在8个符号中,仅发生上溢的符号(其值减小的符号)被32768代替,而没有发生上溢的符号被0代替。
接着,确定各符号的值是要被65535代替还是要被0代替。即,根据比较/最大值设置指令(PCMPEQW),将作为计算xmm1与v32768的逻辑AND的结果的各符号的值和32768相比较。如果两个值得相同,则将这种符号的所有16位替换为1(=65535)。如果两个值不相同,则将这种符号的所有16位替换为0(=0)。结果,生成值为4107的掩码。
接着,在步骤S76中,根据AND指令(PAND),计算xmm1寄存器中的各符号的值与v4107的逻辑AND,从而可以更新xmm1寄存器。利用这种操作,在xmm1寄存器中的8个符号中,仅其值减小的符号被4107替换,而其值没有减小的符号被0替换。
在步骤S78中,根据XOR指令(PXOR),计算xmm1寄存器中更新的符号的值与步骤S72中获取的xmm3寄存器中对应符号的值的XOR,获得根据因子α所加权的值。
在步骤S80中,当检测到“中断”消息时,终止处理,并且确定xmm1寄存器中符号的值。否则,处理返回至步骤S74。
在步骤S82中,根据移动指令(MOVQ),将xmm1寄存器中的处理结果复制到xmm4寄存器。
接着,在步骤S84中确定该数据的gfw(i)是否为1。
如果gfw(i)为1,则使该数据经受XOR计算。因而,在步骤S86中,计算xmm2寄存器中的数据与xmm4寄存器中的数据的XOR,从而可以更新xmm2寄存器。
在步骤S88中,按1递增重复数指针i。
接着,在步骤S90中确定重复数指针i是否大于或等于重复数MAX。如果重复数指针i小于重复数MAX,则处理进行至步骤S74。
如果在步骤S90中确定出重复数指针i大于或等于重复数MAX,则意味着已经达到重复数MAX,并且处理进行至步骤S92。在步骤S92中,向α因子计算器的循环提供“中断”消息,并且输出xmm2作为执行伽罗瓦域乘积计算的结果。
如上所述,可以缩减针对利用因子αk的加权处理的最大重复数,这种缩减在k为较大值时有效。因而,这种处理适于允许快速从双盘故障中恢复数据。
在上述实施方式中,RAID-6系统具有14个数据盘单元和两个奇偶盘单元。然而,数据盘单元的数量和奇偶盘单元的数量是任意的。
可以通过由图4或图11的流程图所示的伽罗瓦域乘积计算来生成奇偶Q,并且可以通过由图12的流程图所示的伽罗瓦域乘积计算来执行利用两个奇偶P和Q从而根据双盘故障中恢复。因而,可以实现生成奇偶和恢复数据的快速执行。然而,可以通过图4或图11所示的伽罗瓦域乘积计算执行奇偶Q的生成,并且还可以通过图4或图11所示的伽罗瓦域乘积计算,利用两个奇偶P和Q,来进行从双盘故障的恢复。另选的是,可以通过图12所示的包含图4所述实施方式的伽罗瓦域乘积计算来执行生成奇偶Q,并利用奇偶P和Q从双盘故障中恢复。
虽然参照示范性实施方式,对本发明进行了说明,但应当明白,本发明不限于公开的示范性实施方式,而是在本发明的精神内,各种修改例都是可以的。
Claims (6)
1.一种用于存储数据的装置,该用于存储数据的装置包括:
N个数据存储部,所述N个数据存储部中的每一个数据存储部都存储有通过划分所述数据而生成的N个局部数据块中的一个局部数据块,其中,N为大于1的自然数;
奇偶存储部,该奇偶存储部用于存储第一奇偶数据和第二奇偶数据,所述第一奇偶数据通过组合所述N个局部数据块而生成,所述第二奇偶数据通过对所述N个局部数据块执行伽罗瓦域乘积计算而生成;
控制器,该控制器用于将所述数据划分成所述N个局部数据块,通过组合所述N个局部数据块生成所述第一奇偶数据,通过对所述N个局部数据块执行所述伽罗瓦域乘积计算生成所述第二奇偶数据,以及将生成的所述第一奇偶数据和所述第二奇偶数据存储到所述奇偶存储部中,
其中,所述控制器被设置用于执行包括以下步骤的所述伽罗瓦域乘积计算:
从所述N个局部数据块中的一个局部数据块中获取包括多个符号的第一符号数据,各所述符号都是要在伽罗瓦域中执行与因子α的乘积运算的位序列,其中,α是所述伽罗瓦域的本原元素;以及
对所述第一符号数据重复M次因子α计算,以利用加权因子αM对所述第一符号数据中的各符号进行加权,其中,M是大于或等于0的整数,
所述用于存储数据的装置的特征在于,所述控制器被进一步设置用于通过以下处理来执行所述因子α计算:
通过对所述第一符号数据执行朝向高阶位位置移位1位的移位运算来生成第二符号数据;
根据所述第一符号数据生成包括多个掩码位序列第一掩码数据,所述多个掩码位序列中的每一个掩码位序列都与所述第一符号数据中的所述多个符号中的每一个一一对应,各个掩码位序列通过以下处理而生成:
-在所述第一符号数据中的对应符号和第一固定值之间进行AND运算,以从该符号中提取最高位,以及
-在所述AND运算的结果和所述第一固定值之间进行比较运算,以在所述AND运算的结果等于所述第一固定值时将该掩码位序列的所有位设置为1,否则设置为0;
通过计算所述第一掩码数据与基于针对所述伽罗瓦域的本原多项式确定的第一符号修正值的逻辑AND来生成第一修正数据;
通过计算所述第二符号数据与所述第一修正数据的XOR来生成因子α计算结果,以使得该因子α计算结果包括多个符号,所述多个符号中的每一个符号都代表所述因子α和所述第一符号数据中的对应符号的乘积运算的结果;以及
将所述因子α计算结果存储到所述第一符号数据中,作为新的第一符号数据。
2.根据权利要求1所述的装置,其中,所述控制器被设置用于将加权编号i分配给所述N个局部数据块中的各局部数据块,并且利用加权因子αi对从具有加权编号i的局部数据块中获取的符号数据中的各符号进行加权,以使得M被设置为i,其中,i是0到N-1之间的整数。
3.根据权利要求1所述的装置,其中,所述控制器还被设置用于执行进一步包括以下步骤的所述伽罗瓦域乘积计算:
从所述N个局部数据块中的一个局部数据块获取包括多个符号的第三符号数据,各个符号都是要在伽罗瓦域中执行与因子α-1的乘积运算的位序列;以及
对所述第三符号数据重复K次因子α-1计算,以利用加权因子α-K对所述第三符号数据中的各符号进行加权,其中,K是大于或等于0的整数,所述因子α-1计算包括以下步骤:
通过对所述第三符号数据执行朝向低阶位位置移位1位的移位运算来生成第四符号数据,
根据所述第三符号数据生成包括多个掩码位序列的第二掩码数据,所述多个掩码位序列中的每一个掩码位序列都与所述第三符号数据中的所述多个符号中的每一个一一对应,各个掩码位序列通过以下处理而生成:
-在所述第三符号数据中的对应符号和第二固定值之间进行AND运算,以从该符号中提取最低位,以及
-在所述AND运算的结果和所述第二固定值之间进行比较运算,以在所述AND运算的结果等于所述第二固定值时将该掩码位序列的所有位设置为1,否则设置为0;
通过计算所述第二掩码数据与基于所述伽罗瓦域的本原多项式确定的第二符号修正值的逻辑AND来生成第二修正数据;
通过计算所述第四符号数据与所述第二修正数据的XOR来生成因子α-1计算结果,以使得该因子α-1计算结果包括多个符号,该多个符号中的每一个符号都代表所述因子α-1和所述第三符号数据中的对应符号的乘积运算的结果;以及
将所述因子α-1计算结果存储到所述第三符号数据中,作为新的第三符号数据。
4.根据权利要求3所述的装置,其中,所述控制器被设置用于将加权编号i分配给所述N个局部数据块中的各局部数据块,利用加权因子αi对从具有0到S之间的加权编号i的局部数据块中获取的所述第一符号数据中的各符号进行加权,以使得M被设置为i,并且利用加权因子α-i+S对从具有S+1到N-1之间的加权编号i的局部数据块中获取的所述第三符号数据中的各符号进行加权,以使得K被设置为-i+S,以便获得所述第二奇偶数据,其中,i是0到N-1之间的整数,S是超出(N-1)/2的最小自然数。
5.根据权利要求1所述的装置,其中,所述控制器被设置用于执行进一步包括以下步骤的所述伽罗瓦域乘积计算:
设置具有集合(1、α1、α2、…、αP-1)的向量空间作为伽罗瓦域的基础,其中,P是伽罗瓦域的本原多项式的最大阶;
所述伽罗瓦域中的因子αk用维度P的二进制向量表示,其中,k为自然数;
通过重复所述因子α计算j次来计算所述集合(1、α1、α2、…、αP-1)中包括的各因子αj,其中,j是0到P-1之间的整数;以及
基于所述二进制向量表示,在从所述集合中选定的一个或更多个因子αj之间执行XOR运算,来执行因子αk的伽罗瓦域计算。
6.根据权利要求1所述的装置,其中,所述控制器被设置用于在数据存储部故障的情况下,通过利用所述伽罗瓦域计算,利用所述第一奇偶数据、所述第二奇偶数据以及存储在故障的数据存储部以外的一个或更多个数据存储部中的数据来恢复所述数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007010204A JP4935367B2 (ja) | 2007-01-19 | 2007-01-19 | Raid装置及びガロア体の積演算処理方法 |
JP2007010204 | 2007-01-19 | ||
JP2007-010204 | 2007-01-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101226492A CN101226492A (zh) | 2008-07-23 |
CN101226492B true CN101226492B (zh) | 2010-06-02 |
Family
ID=39470201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100030529A Expired - Fee Related CN101226492B (zh) | 2007-01-19 | 2008-01-18 | Raid系统和伽罗瓦域乘积计算方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8131794B2 (zh) |
EP (1) | EP1947771B1 (zh) |
JP (1) | JP4935367B2 (zh) |
KR (1) | KR100953884B1 (zh) |
CN (1) | CN101226492B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269621B2 (en) * | 2004-03-31 | 2007-09-11 | Google Inc. | Method system and graphical user interface for dynamically updating transmission characteristics in a web mail reply |
JP4905161B2 (ja) * | 2007-01-31 | 2012-03-28 | 富士通株式会社 | Raid装置及びガロア体を用いたデータ復元装置 |
US8150031B2 (en) * | 2008-12-19 | 2012-04-03 | Intel Corporation | Method and apparatus to perform redundant array of independent disks (RAID) operations |
JP5278115B2 (ja) | 2009-03-31 | 2013-09-04 | 日本電気株式会社 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
TWI416347B (zh) * | 2009-06-22 | 2013-11-21 | Realtek Semiconductor Corp | 處理有限域運算之方法與運算電路 |
US9569771B2 (en) | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US9361479B2 (en) | 2011-04-29 | 2016-06-07 | Stephen Lesavich | Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks |
US9137250B2 (en) | 2011-04-29 | 2015-09-15 | Stephen Lesavich | Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks |
US9037564B2 (en) | 2011-04-29 | 2015-05-19 | Stephen Lesavich | Method and system for electronic content storage and retrieval with galois fields on cloud computing networks |
JP5730812B2 (ja) * | 2012-05-02 | 2015-06-10 | 日本電信電話株式会社 | 演算装置、その方法およびプログラム |
KR102572357B1 (ko) | 2016-02-03 | 2023-08-29 | 삼성전자주식회사 | Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US10831602B2 (en) * | 2018-04-06 | 2020-11-10 | International Business Machines Corporation | Dynamically merging parity data for multiple data stripes |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1589429A (zh) * | 2001-11-30 | 2005-03-02 | 阿纳洛格装置公司 | 伽罗瓦域乘法器系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR950010452B1 (ko) * | 1992-11-30 | 1995-09-18 | 삼성전자 주식회사 | 유한체상의 역수 산출방법 및 장치 |
US6148430A (en) * | 1998-05-15 | 2000-11-14 | Quantum Corporation | Encoding apparatus for RAID-6 system and tape drives |
JP2000259359A (ja) | 1999-03-04 | 2000-09-22 | Toshiba Corp | Raid装置および記録媒体 |
KR100386979B1 (ko) * | 2000-05-25 | 2003-06-09 | 주식회사데이콤 | 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기 |
US6779011B2 (en) * | 2001-02-28 | 2004-08-17 | Maxtor Corporation | System for performing multiplication and division in GF(22M) |
US7392458B2 (en) * | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for enhanced error identification with disk array parity checking |
JP4435705B2 (ja) * | 2005-03-14 | 2010-03-24 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US7664915B2 (en) * | 2006-12-19 | 2010-02-16 | Intel Corporation | High performance raid-6 system architecture with pattern matching |
-
2007
- 2007-01-19 JP JP2007010204A patent/JP4935367B2/ja not_active Expired - Fee Related
- 2007-12-19 EP EP07123711.9A patent/EP1947771B1/en active Active
- 2007-12-21 US US12/004,826 patent/US8131794B2/en not_active Expired - Fee Related
-
2008
- 2008-01-15 KR KR1020080004384A patent/KR100953884B1/ko active IP Right Grant
- 2008-01-18 CN CN2008100030529A patent/CN101226492B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1589429A (zh) * | 2001-11-30 | 2005-03-02 | 阿纳洛格装置公司 | 伽罗瓦域乘法器系统 |
Non-Patent Citations (4)
Title |
---|
H.Peter Anvin.The mathematics of RAID-6.http://web.archive.org/web/20070116231001/http://kernel.org/pub/linux/kernel/people/hpa/raid6.pdf.2007,1-8. * |
oldid=101581664.2007,全部. * |
不祥.RAID.http://en.wikipedia.org/w/index.php?title=RAID& * |
不祥.RAID.http://en.wikipedia.org/w/index.php?title=RAID&oldid=101581664.2007,全部. |
Also Published As
Publication number | Publication date |
---|---|
EP1947771B1 (en) | 2018-06-13 |
JP4935367B2 (ja) | 2012-05-23 |
CN101226492A (zh) | 2008-07-23 |
US20080177815A1 (en) | 2008-07-24 |
KR100953884B1 (ko) | 2010-04-22 |
EP1947771A1 (en) | 2008-07-23 |
US8131794B2 (en) | 2012-03-06 |
KR20080068555A (ko) | 2008-07-23 |
JP2008176621A (ja) | 2008-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101226492B (zh) | Raid系统和伽罗瓦域乘积计算方法 | |
EP1953920B1 (en) | RAID system and data recovery apparatus using galois field | |
CN108351761B (zh) | 将使用冗余表示的第一和第二操作数相乘的方法和装置 | |
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
CN102084335B (zh) | 任意伽罗瓦域算术在可编程处理器上的实施 | |
US8489663B2 (en) | Decimal floating-point adder with leading zero anticipation | |
US11816448B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
CN108351776B (zh) | 数据处理方法和装置 | |
CN108351762B (zh) | 使用重叠位的数值的冗余表示的方法和装置 | |
CN113076083B (zh) | 数据乘加运算电路 | |
US20160188295A1 (en) | Unified multiply unit | |
US20230056304A1 (en) | Using a low-bit-width dot product engine to sum high-bit-width numbers | |
US8099655B1 (en) | Galois field multiplier system and method | |
US8739006B2 (en) | Reduced circuit implementation of encoder and syndrome generator | |
CN108351763B (zh) | 用于重叠传播操作的方法和装置 | |
US8700688B2 (en) | Polynomial data processing operation | |
EP4148555A1 (en) | Computing device and method using multiplier-accumulator | |
JP5131379B2 (ja) | Raid装置及びガロア体の積演算処理方法 | |
CN116820391A (zh) | 一种乘法器的运算方法、运算装置、电子设备和存储介质 | |
PRIYA et al. | Implementation of Redundant Binary High Speed Multipliers with Efficient Partial Product Generator | |
JP2016025498A (ja) | 情報処理装置、及び、情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 |
|
CF01 | Termination of patent right due to non-payment of annual fee |