JP5131379B2 - RAID device and Galois field product operation processing method - Google Patents
RAID device and Galois field product operation processing method Download PDFInfo
- Publication number
- JP5131379B2 JP5131379B2 JP2011269776A JP2011269776A JP5131379B2 JP 5131379 B2 JP5131379 B2 JP 5131379B2 JP 2011269776 A JP2011269776 A JP 2011269776A JP 2011269776 A JP2011269776 A JP 2011269776A JP 5131379 B2 JP5131379 B2 JP 5131379B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- value
- parity
- symbol
- galois field
- 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
- 238000003672 processing method Methods 0.000 title claims description 19
- 238000004364 calculation method Methods 0.000 claims description 56
- 238000013500 data storage Methods 0.000 claims description 45
- 238000003860 storage Methods 0.000 claims description 11
- 239000000047 product Substances 0.000 description 93
- 238000000034 method Methods 0.000 description 55
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 239000006227 byproduct Substances 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Description
本発明は、ガロア体演算により、データのパリテイを計算するRAID装置及びガロア体の積演算方法に関し、特に、ディスク群の2重故障を復元するのに好適なRAID装置及びガロア体の積演算方法に関する。 The present invention relates to a RAID apparatus for calculating data parity by Galois field arithmetic and a Galois field product calculation method, and more particularly to a RAID apparatus and Galois field product calculation method suitable for restoring a double failure of a disk group. About.
ディスクの2重故障を復元できる方法として、RAID(Redundant Array of Independent Disks)6が知られている。このRAID6の方式として、1次元冗長方式が提案されている(例えば、特許文献1参照)。
RAID (Redundant Array of Independent Disks) 6 is known as a method that can restore a double disk failure. As this
図14のRAID6の構成で説明すると、RAIDコントローラ110に、3台のデータディスク装置(ハードディスクドライブ)101,102,103と、2台のパリテイディスク装置(ハードディスクドライブ)104,105が、接続される。
In the configuration of
1次元冗長方式は、データから2種類のパリテイを生成する。図15に示すように、1つ目のパリティPは、従来のRAID5と同じく、各データD1,D2,D3の足し算(XOR)を行った結果を、パリティとする。そして、このパリテイPは、第1のディスク装置104に保存する。尚、以下、「+」の記号は、XOR(排他的論理和)を示す。
The one-dimensional redundancy method generates two types of parity from data. As shown in FIG. 15, the first parity P is the parity obtained by adding (XOR) the data D1, D2, and D3, as in the conventional RAID5. The parity P is stored in the
2つ目のパリティQは、各データD1,D2,D3に対し、ガロア体の積演算による重み付け行った後、それらを足し合わせた結果(XOR)をパリティとする。そして、このパリテイQは、第2のディスク装置105に保存される。
The second parity Q is obtained by weighting each data D1, D2, D3 by Galois field product operation and adding them together (XOR) as a parity. This parity Q is stored in the
このガロア体は、各データディスク装置101,102,103に対して、1つ決定され、2重故障の復元のためには、各データディスク装置101,102,103で、異なっている必要がある。例えば、図15に示すように、データビット数を16ビットとすると、ガロア体GF(2^16)は、2の16乗個の有限個の点を取りうる。又、ガロア体の四則演算が、所定の法則で可能である。1次元冗長方式は、パリテイの分散が可能となり、2重故障の検出、復元に有効である。
One Galois field is determined for each
図15に示したように、ガロア体を利用したパリテイ生成においては、ガロア体の積演算として、データとガロア体の2つの変数を用いて、演算を行う必要がある。このため、RAID5のXOR演算(パリテイPの演算)に対し、パリテイ生成に処理時間を要し、性能が劣化する。
As shown in FIG. 15, in parity generation using a Galois field, it is necessary to perform an operation using two variables of data and a Galois field as a product operation of the Galois field. For this reason, processing time is required to generate parity for the XOR operation (parity P operation) of
このガロア体の積演算を簡略化するため、複数のデータをシフトやAND,XORを使用し、α倍の重み付け(積演算)のアルゴリズムが提案されている(例えば、非特許文献1参照)。この提案された論文では、その4頁から5頁に、データが8ビットの場合のパリテイ生成、データ復元の方程式を解説し、6頁の下欄から7頁に、α倍のアルゴリズムをC言語で開示している。
In order to simplify the product operation of the Galois field, an α-times weighting (product operation) algorithm using shift, AND, and XOR is proposed for a plurality of data (for example, see Non-Patent Document 1). In this proposed paper,
このC言語で記述されたアルゴリズムを、図16及び図17を用いて、各々8ビットの4シンボルのデータを対象として、説明する。図16の「v」は、8ビット、4シンボル(32ビット)の対象データを示す。 The algorithm described in the C language will be described with reference to FIG. 16 and FIG. “V” in FIG. 16 indicates 8-bit, 4-symbol (32-bit) target data.
先ず、ディスク装置の8ビットのデータを、4つ、32ビットのレジスタにロードする(S100)。この対象データv(32ビット)全体を、1ビット左(上位方向)にシフトする(S101)。1ビット左にシフトされたデータv<<1は、32ビット単位で、対象データvの2倍の値となる。 First, 8-bit data of the disk device is loaded into four 32-bit registers (S100). The entire target data v (32 bits) is shifted to the left by 1 bit (upper direction) (S101). The data v << 1 shifted to the left by 1 bit has a value twice as large as the target data v in units of 32 bits.
次に、シフトされたデータv<<1において、このデータvのシフトにより、他のシンボルへ影響したビットをマスクする。このため、マスク値「0xfefefefe」を用意し、シフトされたデータv<<1と、マスク値とのアンド(AND)演算を行い、マスクされたデータvvを得る(S102)。この操作により、8ビット間隔の右端(シフトにより影響されたビット)の値が、「0」に設定される。即ち、32ビット全体をシフトしているので、対象シンボルの右隣のシンボルの最上位ビットにより、対象シンボルの右端ビットが影響されることを防止する。 Next, in the shifted data v << 1, the bits that affected other symbols due to the shift of the data v are masked. Therefore, a mask value “0xfefefe” is prepared, and an AND operation is performed on the shifted data v << 1 and the mask value to obtain masked data vv (S102). By this operation, the value at the right end of the 8-bit interval (bits affected by the shift) is set to “0”. That is, since the entire 32 bits are shifted, the rightmost bit of the target symbol is prevented from being affected by the most significant bit of the symbol right next to the target symbol.
次に、対象データvからマスク(v)関数を、図17のように作成する(S103)。マスク(v)関数は、図17に示すように、32ビットの対象データvの8ビット間隔の左端が、「1」である場合には、8ビットの「11111111」を、左端が、「0」である場合には、8ビットの「00000000」を表す。即ち、シフトにより、桁上げされたシンボルには、8ビットのオール「1」を、桁上げされないシンボルには、8ビットのオール「0」を施すマスク(v)関数を作成する。 Next, a mask (v) function is created from the target data v as shown in FIG. 17 (S103). As shown in FIG. 17, when the left end of the 8-bit interval of the 32-bit target data v is “1”, the mask (v) function indicates “11111111” of 8 bits and “0” at the left end. ”Represents 8-bit“ 00000000 ”. That is, a mask (v) function is created that applies 8-bit all “1” to symbols carried by shift, and applies 8-bit all “0” to symbols not carried.
このため、マスク値「0x80808080」と、即ち、8ビット間隔で、「1」が現れ、その他は、「0」の値と、対象データvとの論理積(AND)をとる(S110)。このマスク値は、各シンボルの先頭ビットを抽出する。 For this reason, the mask value “0x80808080”, that is, “1” appears at an interval of 8 bits, and the others take the logical product (AND) of the value “0” and the target data v (S110). This mask value extracts the first bit of each symbol.
次に、論理積値を、左に1ビットシフトした32ビットデータv<<1(2倍データ)を演算し、且つ論理積値を、右に7ビットシフトした32ビットデータv>>7(1/128倍データ)を演算し,左に1ビットシフトした32ビットデータv<<1(2倍データ)から右に7ビットシフトした32ビットデータv>>7を差し引き、マスク(v)関数MASK(v)を得る(S112)。この関数は、先頭ビットが、「1」のシンボルと、それ以外を区別する役目を持つ。 Next, the 32-bit data v << 1 (double data) obtained by shifting the logical product value by 1 bit to the left is calculated, and the 32-bit data v >> 7 (7-bit data shifted by 7 bits to the right) Subtract 32-bit data v >> 7 shifted 7 bits to the right from 32-bit data v << 1 (double data) shifted by 1 bit to the left, and mask (v) function MASK (v) is obtained (S112). This function has a role of distinguishing a symbol whose first bit is “1” from the other symbols.
図16に戻り、8ビットのガロア体GF(2の8乗)の生成多項式(=x^8+x^2+1)に対応する係数値「0x1d1d1d1d」と、マスク(v)関数MASK(v)との論理積(AND)を演算する(S104)。即ち、4シンボルの内、先頭ビットが、「1」のシンボルのみに、係数値「0x1d1d1d1d」の「00011101」に置き換える。 Returning to FIG. 16, the logic of the coefficient value “0x1d1d1d1d” corresponding to the generator polynomial (= x ^ 8 + x ^ 2 + 1) of the 8-bit Galois field GF (2 to the 8th power) and the mask (v) function MASK (v) The product (AND) is calculated (S104). That is, of the four symbols, only the symbol having the leading bit “1” is replaced with “00011101” of the coefficient value “0x1d1d1d1d”.
この論理積結果と、ステップS102で、演算したマスクされた対象データvvとのXORを演算することにより、α倍された対象データα・vを得る(S105)。このα倍された対象データα・vに、これらのステップを再度繰り返すと、対象データvのαの二乗倍のデータが得られる。同様にして、対象データvのαの繰り返し倍のデータを演算できる。 XOR of the logical product result and the masked target data vv calculated in step S102 is obtained to obtain target data α · v multiplied by α (S105). If these steps are repeated for the α-folded target data α · v, data of the square of α of the target data v is obtained. Similarly, it is possible to calculate data that is a multiple of α of the target data v.
このように、従来技術では、ステップS100で、代入、シフト、ステップS101で、AND,ステップS103(図17)で、AND,2回シフト、減算、ステップS104で、AND,ステップS105で、XORの9回の操作で、数シンボル(ここでは、4シンボル)のガロア体積演算の並列処理を実現できる。 Thus, in the prior art, in step S100, substitution, shift, AND in step S101, AND, in step S103 (FIG. 17), AND, double shift, subtraction, in step S104, AND, in step S105, the XOR of By nine operations, parallel processing of Galois volume calculation of several symbols (here, 4 symbols) can be realized.
この従来のガロア体の積演算処理では、複数シンボル(上の例では、4シンボル)の並列処理を実現できるが、α倍するには、9ステップの演算が必要となる。従って、αのn乗倍を演算するには、9・nステップの演算回数が必要となる。 In this conventional Galois field product operation processing, parallel processing of a plurality of symbols (4 symbols in the above example) can be realized. However, in order to multiply by α, 9 steps of operation are required. Therefore, in order to calculate α times the power of n, 9 · n steps are required.
特に、近年の記憶容量の増大に伴い、対象データのシンボル数(データディスク装置の数)も増大する傾向にあり、例えば、2台のパリテイディスク装置に対し、14台のデータディスク装置を設けてRAID6を構成する場合には、αの13乗倍を演算する必要があり、9・13=117ステップの演算が必要となり、更なるステップ数の削減が望まれる。
In particular, with the recent increase in storage capacity, the number of symbols of target data (the number of data disk devices) also tends to increase. For example, 14 data disk devices are provided for two parity disk devices. In the case of configuring
又、繰り返しにより、演算する場合には、その繰り返し数又は反復回数(積演算アルゴリズムのループ回数)が少ないことが、高速化のため、望まれる。 In addition, in the case of calculating by repetition, it is desired for speeding up that the number of repetitions or the number of repetitions (the number of loops of the product operation algorithm) is small.
更に、生成処理のみならず、復元処理においても、ガロア体の積演算処理に、反復回数が少ないことが、処理時間短縮の点で、望まれる。 Further, not only in the generation process but also in the restoration process, it is desired that the number of iterations is small in the Galois field product calculation process from the viewpoint of shortening the processing time.
従って、本発明の目的は、ガロア体積演算の処理時間を短縮するためのRAID装置及びガロア体の積演算処理方法を提供することにある。 Accordingly, an object of the present invention is to provide a RAID device and a Galois field product operation processing method for shortening the processing time of Galois volume operation.
又、本発明の他の目的は、ガロア体積演算の並列処理のステップ数を低減するためのRAID装置及びガロア体の積演算処理方法を提供することにある。 Another object of the present invention is to provide a RAID apparatus and a Galois field product operation processing method for reducing the number of steps of parallel processing of Galois volume operation.
更に、本発明の他の目的は、ガロア体積演算の並列処理の繰り返し数を低減するためのRAID装置及びガロア体の積演算処理方法を提供することにある。 It is another object of the present invention to provide a RAID apparatus and Galois field product operation processing method for reducing the number of repetitions of parallel processing of Galois volume operations.
この目的の達成のため、本発明のRAID装置は、データをn分割し、分割されたデータを各々格納するn台のデータストレージユニットと、前記分割されたデータの組み合わせから得た第1のパリテイデータと、パリテイの生成方程式におけるガロア体の元を前記分割されたデータに積演算し、且つ積演算結果を用いて前記生成方程式を演算して得た第2のパリテイデータとを格納するパリテイストレージユニットと、前記データをn分割し、前記第1のパリテイデータと第2のパリテイデータとを演算し、前記第1のパリテイデータと第2のパリテイデータとを前記パリテイストレージユニットに格納する制御ユニットとを有し、前記制御ユニットは、前記n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、前記積演算を実行する。 In order to achieve this object, the RAID device according to the present invention divides data into n parts, n data storage units each storing the divided data, and a first Paris obtained from the combination of the divided data. Stores the tee data and second parity data obtained by multiplying the divided data with a Galois field element in the parity generation equation and calculating the generation equation using the product operation result. A parity storage unit, the data is divided into n, the first parity data and the second parity data are calculated, and the first parity data and the second parity data are And a control unit that stores data in a storage unit, and the control unit sets a minimum integer larger than (n−1) / 2 among the n data storage units to s Then, let α ^ (i−1) be the element of the Galois field of the data of the i = 1 to s + 1th data storage unit, and let the element of the Galois field of the data of the i = s + 2 to the nth data storage unit be The product operation is executed with α ^ (− i + s + 1) as a weight.
更に、本発明のガロア体の積演算処理方法は、データをn分割し、分割されたデータを各々格納するn台のデータストレージユニットのデータのパリテイデータをガロア体を用いて生成するためのガロア体積演算処理方法において、前記n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、積演算を実行するステップと、前記積演算結果で、前記パリテイのガロア体を用いた生成方程式を演算するステップを有する。 Further, the Galois field product operation processing method of the present invention is for dividing data into n parts and generating parity data of data of n data storage units each storing the divided data by using a Galois field. In the Galois volume calculation processing method, when the smallest integer larger than (n−1) / 2 among the n data storage units is s, the Galois field of data of i = 1 to s + 1th data storage unit Performing a product operation with α ^ (i−1) as the element of i = s + 2 to the Galois field element of the data in the n-th data storage unit and α ^ (− i + s + 1) as a weight. And calculating a generation equation using the parity Galois field with the product operation result.
更に、本発明では、好ましくは、前記制御ユニットは、前記n分割されたデータのシフト、シフトによる桁上がりデータの抽出、桁上がりデータのマスク作成、前記マスクを使用して、前記シフトされたデータと補正値とのXOR演算を行い、α倍の積演算結果を演算する。 In the present invention, it is preferable that the control unit shifts the n-divided data, extracts carry data by shift, creates a mask of carry data, and uses the mask to shift the shifted data. And the correction value are calculated, and the product operation result multiplied by α is calculated.
更に、本発明では、好ましくは、前記制御ユニットは、前記積演算を、m回繰り返し、α^m倍の積演算結果を演算する。 In the present invention, it is preferable that the control unit repeats the product operation m times and calculates a product operation result of α ^ m times.
更に、本発明では、好ましくは、前記制御ユニットは、前記データストレージユニットの任意のデータストレージユニットの障害時に、前記障害発生したデータストレージユニットのデータを未知データとし、前記第1のパリテイデータ及び第2のパリテイデータと、前記障害発生したデータストレージユニット以外の前記データストレージユニットのデータとを用いて、前記ガロア体の連立方程式から、前記未知データを復元する。 In the present invention, it is preferable that the control unit sets the data of the data storage unit in which the failure has occurred as unknown data when a failure occurs in any data storage unit of the data storage unit, and the first parity data and The unknown data is restored from the simultaneous equations of the Galois field using second parity data and data of the data storage unit other than the failed data storage unit.
n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、積演算を実行するので、少ない繰り返し回数で、各データのガロア体の積演算が可能となる。 Assuming that the smallest integer greater than (n−1) / 2 among n data storage units is s, i ^ (i) as the element of the Galois field of data of i = 1 to s + 1th data storage unit -1), i = s + 2 to the nth data storage unit data Galois field element, α ^ (− i + s + 1) is used as a weighting, and the product operation is executed. Galois field product operation is possible.
以下、本発明の実施の形態を、RAID装置、ガロア体積演算処理、他のガロア体積演算処理、更に他のガロア体積演算処理、他の実施の形態の順で説明するが、本発明は、この実施の形態に限られない。 Hereinafter, embodiments of the present invention will be described in the order of a RAID device, a Galois volume calculation process, another Galois volume calculation process, another Galois volume calculation process, and another embodiment. It is not limited to the embodiment.
(RAID装置)
図1は、本発明の一実施の形態のRAID装置の構成図、図2は、そのガロア体を用いたパリテイ演算の説明図である。図1に示すように、RAID装置は、ホストコンピュータ16に接続されたRAIDコントローラ12と、RAIDコントローラ12にFC(Fibre Channel)ループ14等により接続され、且つ制御される複数(ここでは、14台)のデータディスク装置(ハードディスクドライブ)10−1〜10−14と、2台のパリテイディスク装置(ハードディスクドライブ)10−15,10−16とからなる。即ち、2重パリテイを持つRAID6の構成である。
(RAID device)
FIG. 1 is a configuration diagram of a RAID device according to an embodiment of the present invention, and FIG. 2 is an explanatory diagram of parity calculation using the Galois field. As shown in FIG. 1, the RAID device includes a
図2に示すように、第1のパリテイPは、データディスク装置10−1〜10−14の列方向のデータD1〜D14のXORで生成され、第1のパリテイディスク装置10−15の対応アドレスに格納される。第2のパリテイQは、データディスク装置10−1〜10−14の列方向のデータD1〜D14を、ガロア体の積演算による重み付け後に、XORして生成され、第2のパリテイディスク装置10−16の対応アドレスに格納される。即ち、パリテイQは、下記式(1)で演算される。 As shown in FIG. 2, the first parity P is generated by XOR of the data D1 to D14 in the column direction of the data disk devices 10-1 to 10-14, and the correspondence of the first parity disk device 10-15. Stored in the address. The second parity Q is generated by XORing the data D1 to D14 in the column direction of the data disk devices 10-1 to 10-14 by weighting by product operation of Galois field, and the second parity disk device 10 Stored in the corresponding address of -16. That is, the parity Q is calculated by the following equation (1).
尚、記号「+」は、XOR演算を示す。これらのパリテイ演算は、RAIDコントローラ12が、実行する。ここで、1シンボルを16ビットとすると、ガロア体は、GF(2の16乗)であり、その原始多項式(生成多項式)は、下記式(2)で表される。
The symbol “+” indicates an XOR operation. These parity calculations are executed by the
又、この実施例で、ガロア体積演算に使用されるマスク値は、「32768」であり、16ビットのデータの最上位ビットのみが、「1」のデータである。又、値「4107」は、式(2)の原始多項式のxの16乗を除き、xに「2」を代入して得た値である。 In this embodiment, the mask value used for Galois volume calculation is “32768”, and only the most significant bit of 16-bit data is “1” data. Also, the value “4107” is a value obtained by substituting “2” into x, excluding the x16 power of the primitive polynomial in equation (2).
RAIDコントローラ12は、データをディスク装置10−1〜10−4にライト処理する際に、XOR演算により、パリテイPを計算し、第1のパリテイディスク装置10−15に格納し、以下で説明するガロア体の積演算処理とXOR演算を行い、パリテイQを計算し、第2のパリテイディスク装置10−16に格納する。
When the
(ガロア体積演算)
図3は、本発明の一実施の形態のガロア体積演算処理フロー図、図4は、図3の詳細処理フロー図、図5は、図3及び図4の具体例の説明図、図6は、桁上がりシンボルの積演算の説明図である。
(Galois volume calculation)
FIG. 3 is a Galois volume calculation processing flow diagram of one embodiment of the present invention, FIG. 4 is a detailed processing flow diagram of FIG. 3, FIG. 5 is an explanatory diagram of specific examples of FIGS. 3 and 4, and FIG. FIG. 10 is an explanatory diagram of a product operation of carry symbols.
図3以下では、1シンボルを16ビットとして、8シンボルを並列処理する例で説明する。例えば、インテル社(登録商標)のCPUでは、MMX命令セットが備わっている。MMX命令セットは、xmmレジスタを使用する。このxmmレジスタを用いて、並列処理を行う。xmmレジスタ長は、16Byteであり、1度に、1シンボルが16ビットの時、8シンボルのデータの重み付けの並列処理が行える。 In FIG. 3 and below, an example in which one symbol is 16 bits and 8 symbols are processed in parallel will be described. For example, an Intel (registered trademark) CPU has an MMX instruction set. The MMX instruction set uses xmm registers. Parallel processing is performed using this xmm register. The xmm register length is 16 bytes. When one symbol is 16 bits at a time, parallel processing of weighting of data of 8 symbols can be performed.
図3により、ガロア体積演算の基本的処理を説明する。 The basic processing of Galois volume calculation will be described with reference to FIG.
(S10)先ず、xmm1レジスタに、8シンボルをロードする。 (S10) First, 8 symbols are loaded into the xmm1 register.
(S12)次に、xmm1レジスタの各シンボルを、左に1ビットシフトし、各シンボルの値を2倍とする。 (S12) Next, each symbol in the xmm1 register is shifted to the left by 1 bit, and the value of each symbol is doubled.
(S14)マスク値を用いて、シフトにより値が小さくなるシンボル(即ち、最上位ビットの桁上がりが生じるシンボル)を検出する。 (S14) Using the mask value, a symbol whose value is reduced by the shift (that is, a symbol in which a carry of the most significant bit occurs) is detected.
(S16)シフトしたシンボルの内、値が小さくなったシンボルに、予め定めた値(「4107」)をXORする。 (S16) XOR a predetermined value (“4107”) to the symbol having a smaller value among the shifted symbols.
次に、図4により、MMXを用いた重み付け処理を詳細に説明する。又、図5、図6を用いて、データディスク番号i=2のガロア体の重み付け(ガロア体の積演算)処理を例に、具体的に説明を行う。データディスク番号i=2の場合には、式(1)のパリテイQの生成多項式から、データDi=2に、α倍の重みづけを行う。 Next, the weighting process using MMX will be described in detail with reference to FIG. In addition, a specific explanation will be given by taking, as an example, weighting of Galois field (product calculation of Galois field) of data disk number i = 2 with reference to FIGS. In the case of the data disk number i = 2, the data D i = 2 is weighted by α times from the parity Q generator polynomial of equation (1).
(S20)xmmレジスタに、データを代入し、処理すべき繰り返し回数MAXを設定する。例えば、ディスク番号i=2の場合には、MAX=1である。又、繰り返し回数ポインタiを「0」に初期化する。更に、MAX=0の場合には、xmmレジスタの内容を出力し、以下のステップを実行しないこととする。例えば、図5に示すように、データディスク番号i=2のディスクから、重み付けを行う8シンボル(1シンボル、16ビット)のデータ(Di=2データ)をピックアップし、これをxmm1レジスタに代入する(図5のxmm1)。 (S20) Data is substituted into the xmm register, and the number of repetitions MAX to be processed is set. For example, when the disk number i = 2, MAX = 1. Also, the repeat count pointer i is initialized to “0”. Further, when MAX = 0, the contents of the xmm register are output and the following steps are not executed. For example, as shown in FIG. 5, 8 symbols (1 symbol, 16 bits) of data to be weighted (Di = 2 data) are picked up from the disk of data disk number i = 2, and this is substituted into the xmm1 register. (Xmm1 in FIG. 5).
又、「32768」と「4107」の値が入力された8シンボルのデータv32768,v4107を用意する。値「32768」は、16ビット目のみに「1」の値があることを示し、シフトにより桁上げが生じるシンボルを検出するためのデータである。値「4107」は、16ビットのガロア体GF(2^16)の原始多項式(x^16+x^12+x^3+x+1)の(x^12+x^3+x+1)に、x=2を代入した値である。即ち、4096+8+2+1=4107である。 Also, 8-symbol data v32768 and v4107 into which the values “32768” and “4107” are input are prepared. The value “32768” indicates that there is a value of “1” only in the 16th bit, and is data for detecting a symbol that causes a carry by a shift. The value “4107” is (x ^ 12 + x ^ 3 + x + 1) of the primitive polynomial (x ^ 16 + x ^ 12 + x ^ 3 + x + 1) of the 16-bit Galois field GF (2 ^ 16) ) Is substituted by x = 2. That is, 4096 + 8 + 2 + 1 = 4107.
(S22)次に、移動命令(MOVQ)に応じて、xmm1レジスタに代入された値を、xmm2レジスタに移動する。シフト命令(PSLLW)に応じて、xmm2レジスタの各シンボルを、左に(上位方向に)1ビットシフトする(図5のxmm2)。これにより、各シンボルは、2倍(=α倍)されるが、1シンボルが、16ビットのため、桁上げされたビット部分は、オーバーフローする。このため、図5のxmm2に示すように、値が2倍になる箇所(一重下線)と、シフト前よりも値が小さくなる箇所(二重下線)がある。シフト前よりも値が小さくなる箇所は、オーバーフローした箇所である。 (S22) Next, the value assigned to the xmm1 register is moved to the xmm2 register in accordance with the move command (MOVQ). In response to the shift instruction (PSLLW), each symbol of the xmm2 register is shifted to the left (upward) by 1 bit (xmm2 in FIG. 5). Thereby, each symbol is doubled (= α times), but since one symbol is 16 bits, the carried bit portion overflows. For this reason, as shown by xmm2 in FIG. 5, there are a place where the value doubles (single underline) and a place where the value becomes smaller than before the shift (double underline). The place where the value is smaller than before the shift is the place where overflow has occurred.
(S24)この値が小さくなる箇所(シンボル)のみに、値「4107」のXORを行う。このため、先ず、値が小さくなったシンボルを抽出し、その抽出したシンボルの値を、オール「1」(即ち、65535)とする。図6も参照して、説明する。AND命令(PAND)に応じて、図5のxmm1レジスタの各シンボルの値と、v32768の値「32768」との論理積(AND)をとり、xmm1レジスタを更新する。図4及び図5の(xmm1&v32768)に示すように、8シンボルの内、オーバーフローしたシンボル(値が小さくなったシンボル)のみが、値「32768」に置き換えられ、オーバーフローしないシンボルは、値「0」に置き換えられる。 (S24) XOR of the value “4107” is performed only on the portion (symbol) where this value becomes small. For this reason, first, a symbol having a smaller value is extracted, and the value of the extracted symbol is all “1” (ie, 65535). This will be described with reference to FIG. In accordance with the AND instruction (PAND), the logical product (AND) of each symbol value of the xmm1 register of FIG. 5 and the value “32768” of the v32768 is obtained, and the xmm1 register is updated. As shown in (xmm1 & v32768) in FIGS. 4 and 5, only the overflowed symbol (the symbol whose value has decreased) among the 8 symbols is replaced with the value “32768”, and the symbol that does not overflow has the value “0”. Is replaced by
次に、8シンボルの値判定を行い、シンボルの値を、値「65535」又は値「0」に置き換える。即ち、比較及び最大値設定命令(PCMPEQW)に応じて、(xmm1&v32768)の各シンボルの値と、値「32768」を比較して、両者が一致すると、そのシンボルの16ビットを、オール「1」(=65535)に置き換え、両者が一致しないと、そのシンボルの16ビットを、オール「0」(=0)に置き換える。これにより、値「4107」のマスクを作成する。 Next, the value determination of 8 symbols is performed, and the value of the symbol is replaced with the value “65535” or the value “0”. That is, according to the comparison and maximum value setting command (PCMPEQW), the value of each symbol of (xmm1 & v32768) is compared with the value “32768”, and if both match, the 16 bits of the symbol are all “1”. If the two do not match, the 16 bits of the symbol are replaced with all “0” (= 0). As a result, a mask of value “4107” is created.
(S26)そして、AND命令(PAND)に応じて、このxmm1レジスタの各シンボルの値と、v4107の値「4107」の論理積(AND)をとり、xmm1レジスタを更新する。これにより、8シンボルのxmm1レジスタの内、値が小さくなったシンボルのみが、値「4107」に置き換えられ、値が小さくならないシンボルは、値「0」に置き換えられる。 (S26) Then, in accordance with the AND instruction (PAND), the logical product (AND) of the value of each symbol in the xmm1 register and the value “4107” of v4107 is obtained, and the xmm1 register is updated. Thus, only the symbol having a smaller value in the xmm1 register of 8 symbols is replaced with the value “4107”, and the symbol whose value is not decreased is replaced with the value “0”.
(S28)XOR命令(PXOR)に応じて、この更新されたxmm1レジスタの各シンボルの値と、ステップS22で得たxmm2レジスタの各シンボルの値とのXOR(排他的論理輪)をとり、α倍の重みづけを行った結果を得る。 (S28) In response to the XOR instruction (PXOR), the XOR (exclusive logical ring) between the updated value of each symbol in the xmm1 register and the value of each symbol in the xmm2 register obtained in step S22 is obtained. The result of double weighting is obtained.
(S30)「break」が、検出された時に、処理を停止し、xmm1の値を確定する。それ以外は、ステップS24に戻る。 (S30) When “break” is detected, the process is stopped and the value of xmm1 is determined. Otherwise, the process returns to step S24.
(S32)α倍計算処理開始にあたり、繰り返し回数ポインタiを、「1」インクリメントする。そして、繰り返し回数ポインタiが、設定繰り返し回数MAX以上であるかを判定する。繰り返し回数ポインタiが、設定繰り返し回数MAX以上でなければ、ステップS24に進む。 (S32) At the start of the α-fold calculation process, the repetition number pointer i is incremented by “1”. Then, it is determined whether the repetition number pointer i is equal to or larger than the set repetition number MAX. If the repeat count pointer i is not equal to or greater than the set repeat count MAX, the process proceeds to step S24.
(S34)一方、繰り返し回数ポインタiが、設定繰り返し回数MAX以上である場合には、設定した繰り返し回数が終了したので、「break」を通知し、xmm1を結果として、出力する。 (S34) On the other hand, when the repetition count pointer i is equal to or larger than the set repetition count MAX, the set repetition count is completed, so “break” is notified and xmm1 is output as a result.
例えば、図5において、第2番目のシンボルの値「36934」を単純に2倍すると、「73868」となるが、1シンボルが16ビットに制限されるため、オーバーフローが生じ、そのシンボルの値は、1ビットオーバーフローしているため、16ビット表示で、8332(=73868−65536)となる。しかし、第2番目のシンボルの2倍値の有意ビットは、17ビットから2ビット目の16ビットである。この有意ビットを補正するため、補正値「4107」を使用し、値「12423」に変換する。 For example, in FIG. 5, when the value “36934” of the second symbol is simply doubled, it becomes “73868”, but since one symbol is limited to 16 bits, overflow occurs, and the value of the symbol is Since it overflows by 1 bit, it is 8332 (= 73868-65536) in 16-bit display. However, the significant value of the double value of the second symbol is 16 bits from the 17th bit to the second bit. In order to correct this significant bit, the correction value “4107” is used and converted to the value “12423”.
ステップS22〜S28の処理は、どれもレイテンシが小さい(レイテンシ=2)命令で実現でき、処理時間を短くすることができる。α^j倍の重みづけでは、ステップS22〜S28の処理をj回繰り返す。 The processing in steps S22 to S28 can be realized by an instruction having a low latency (latency = 2), and the processing time can be shortened. In the weighting of α ^ j times, the processing of steps S22 to S28 is repeated j times.
ここで、この実施の形態のマスク処理を、図6で説明する。図6は、シフトにより値が小さくなったシンボルを抽出するマスク処理を示し、先ず、xmm1レジスタの値と、v32768のアンドで、オーバーフローシンボルと、オーバーフローしないシンボルを識別する。次に、これらのシンボルと、値「32768」を比較し、両者が一致するシンボルを、オール「1」(=65535)に置き換え、マスクを作成する。そして、値v4107とのアンドをとり、求めるxmm1を得る。 Here, the mask processing of this embodiment will be described with reference to FIG. FIG. 6 shows mask processing for extracting a symbol whose value has been reduced by shifting. First, an overflow symbol and a symbol that does not overflow are identified by the value of the xmm1 register and the AND of v32768. Next, these symbols are compared with the value “32768”, and a symbol that matches both is replaced with all “1” (= 65535) to create a mask. Then, AND with the value v4107 is obtained to obtain the desired xmm1.
一方、図17に示すように、従来技術では、元のシンボルvに、値「0x80808080」をアンドし、オーバーフローシンボルと、オーバーフローしないシンボルを識別する。次に、この結果から、マスクを作成するため、この結果を、左1ビットシフトしたものを作成し、且つ右に7ビットシフトしたものを作成し、これらのシフト結果を引き算する。 On the other hand, as shown in FIG. 17, in the prior art, the value “0x80808080” is added to the original symbol v, and an overflow symbol and a symbol that does not overflow are identified. Next, in order to create a mask from this result, a result obtained by shifting the result by 1 bit to the left and a value shifted by 7 bits to the right are created, and these shift results are subtracted.
即ち、本実施の形態では、図6のマスク処理は、マスク作成に、ANDと、比較命令の2命令で行っているのに対し、従来は、AND,シフト2回、引き算命令の4命令で実行している。 In other words, in the present embodiment, the mask processing of FIG. 6 is performed with two instructions of AND and a comparison instruction for mask creation, but conventionally with four instructions of AND, shift twice, and subtraction instruction. Running.
更に、本実施の形態では、図5に示すように、左シフトは、シンボル単位に、独立で行っているのに対し、従来技術では、図16に示すように、レジスタ全体、即ち、4シンボル単位で行っている。このため、従来技術では、シフト後、シンボルの右端が、右隣のシンボルの最上位ビットに影響されないように、シンボルの右端を、強制的に、「0」に置き換える処理が余分に必要である。 Furthermore, in this embodiment, as shown in FIG. 5, the left shift is performed independently for each symbol, whereas in the prior art, as shown in FIG. Done in units. For this reason, the prior art requires an extra process for forcibly replacing the right end of the symbol with “0” after the shift so that the right end of the symbol is not affected by the most significant bit of the right adjacent symbol. .
従って、従来は、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命令の実行で済み、高速に、ガロア体積演算を実行できる。 Therefore, what was conventionally executed with 9 instructions can be executed with 6 instructions in this embodiment. That is, it takes only 2/3 processing time to multiply by α, and Galois field product operation can be executed at high speed. For example, in the product operation of α to the 13th power, conventionally, 9 × 13 = 117 instructions (steps) are required, but in the present embodiment, 6 × 13 = 78 instructions (steps) are sufficient. Furthermore, in the product operation of Expression (1), conventionally, execution of 9 × (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 = 91) = 819 instructions is required, but in this embodiment, execution of 6 × (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 = 91) = 546 Galois volume calculation can be executed at high speed.
更に、本実施の形態では、8シンボルを並列処理できるため、従来の4シンボルの並列処理に比し、更に2倍の高速処理が可能となり、結果として、1/3の処理時間で、ガロア体積演算を実現できる。 Furthermore, in this embodiment, since 8 symbols can be processed in parallel, the processing speed can be doubled compared to the conventional 4-symbol parallel processing. As a result, the Galois volume can be obtained in 1/3 processing time. Calculation can be realized.
(他のガロア体積演算処理)
図7は、本発明のガロア体積演算処理の他の実施の形態の処理フロー図、図8は、図7の重み付け処理の説明図、図9は、図7のα−1倍の積演算処理フロー図、図10は、そのオペレーションの説明図、図11は、図9の詳細処理フロー図である。
(Other Galois volume calculation processing)
7 is a process flow diagram of another embodiment of the Galois volume calculation process of the present invention, FIG. 8 is an explanatory diagram of the weighting process of FIG. 7, and FIG. 9 is the product calculation process of α −1 times of FIG. FIG. 10 is an explanatory diagram of the operation, and FIG. 11 is a detailed processing flowchart of FIG.
前述の実施の形態は、ガロア体の積演算処理の1回の処理時間を短縮するものであったが、この実施の形態は、積演算処理の並列処理アルゴリズムのループ回数が少なくなるように、ガロア体の元を決定し、ガロア体の積演算処理時間を短縮するものである。 In the above-described embodiment, the processing time for one Galois field product operation process is shortened. However, in this embodiment, the number of loops of the parallel processing algorithm of the product operation process is reduced. The element of the Galois field is determined and the product operation processing time of the Galois field is shortened.
図7に示すように、図1乃至図2と同様に、データディスク装置を14台で構成した例とすると、データディスク番号 i (=1〜14)に対し、i=1〜8の場合は、αi−1倍による重み付けを行い、図4乃至図6の重み付け演算処理を行い、i=9〜14の場合は、α−i+8倍による重み付けを行い、図8以下で説明するα−1倍の重みづけアルゴリズムを使用する。 As shown in FIG. 7, similarly to FIGS. 1 and 2, assuming that the data disk device is composed of 14 units, when i = 1 to 8 for data disk number i (= 1 to 14), , Α i−1 times weighting, weighting calculation processing of FIGS. 4 to 6 is performed, and when i = 9 to 14, weighting by α− i + 8 times is performed, and α −1 described in FIG. Use a double weighting algorithm.
この重み付けの割り振りを一般化すると、データディスク装置をn台で構成した例とすると、(n−1)/2より大きな最小の整数をsとする時に、データディスク番号i=1〜s+1の場合は、α^(i−1)倍による重み付けを行い、図4乃至図6の重み付け演算処理を行い、i=s+2〜nの場合は、α−i+s+1倍による重み付けを行う。 When this weighting allocation is generalized, an example in which the data disk device is composed of n units, the case where the data disk number i = 1 to s + 1, where s is the smallest integer greater than (n−1) / 2. Performs weighting by α ^ (i−1) times, performs the weighting calculation processing of FIGS. 4 to 6, and when i = s + 2 to n, performs weighting by α− i + s + 1 times.
α倍の重みづけ処理は、図4乃至図6で説明したので、ここでは、説明を省略し、α−1倍の重み付け処理を、図8乃至図11で説明する。 Since the α-times weighting processing has been described with reference to FIGS. 4 to 6, the description thereof is omitted here, and the α- 1 times weighting processing is described with reference to FIGS. 8 to 11.
図8に示すように、第1のパリテイPは、データディスク装置10−1〜10−14の列方向のデータD1〜D14のXORで生成され、第1のパリテイディスク装置10−15の対応アドレスに格納される。第2のパリテイQは、データディスク装置10−1〜10−14の列方向のデータD1〜D14を、ガロア体の積演算による重み付け後に、XORして生成され、第2のパリテイディスク装置10−16の対応アドレスに格納される。即ち、パリテイQは、下記式(3)で演算される。 As shown in FIG. 8, the first parity P is generated by XOR of the data D1 to D14 in the column direction of the data disk devices 10-1 to 10-14, and the correspondence of the first parity disk device 10-15. Stored in the address. The second parity Q is generated by XORing the data D1 to D14 in the column direction of the data disk devices 10-1 to 10-14 by weighting by product operation of Galois field, and the second parity disk device 10 Stored in the corresponding address of -16. That is, the parity Q is calculated by the following equation (3).
尚、記号「+」は、XOR演算を示す。これらのパリテイ演算は、RAIDコントローラ12が、実行する。ここで、1シンボルを16ビットとすると、ガロア体は、GF(2の16乗)であり、その原始多項式(生成多項式)は、前記式(2)で表される。
The symbol “+” indicates an XOR operation. These parity calculations are executed by the
又、この実施例で、α−1倍のガロア体積演算に使用されるマスク値は、「1」であり、16ビットのデータの最下位ビットのみが、「1」のデータである。又、値「34821」は、式(2)の原始多項式をxで割り、割った式のxに「2」を代入して得た値である。 In this embodiment, the mask value used for α- 1 times Galois volume calculation is “1”, and only the least significant bit of 16-bit data is “1” data. Further, the value “34821” is a value obtained by dividing the primitive polynomial of Expression (2) by x and substituting “2” for x of the divided expression.
RAIDコントローラ12は、データをディスク装置10−1〜10−14にライト処理する際に、XOR演算により、パリテイPを計算し、第1のパリテイディスク装置10−15に格納し、以下で説明するガロア体の積演算処理とXOR演算を行い、パリテイQを計算し、第2のパリテイディスク装置10−16に格納する。
When the
図9以下でも、1シンボルを16ビットとして、8シンボルを並列処理する例で説明する。例えば、インテル社(登録商標)のCPUでは、MMX命令セットが備わっている。MMX命令セットは、xmmレジスタを使用する。このxmmレジスタを用いて、並列処理を行う。xmmレジスタ長は、16Byteであり、1度に、1シンボルが16ビットの時は、8シンボルのデータの重み付けの並列処理が行える。 Even in FIG. 9 and below, an example will be described in which one symbol is 16 bits and eight symbols are processed in parallel. For example, an Intel (registered trademark) CPU has an MMX instruction set. The MMX instruction set uses xmm registers. Parallel processing is performed using this xmm register. The xmm register length is 16 bytes. When one symbol is 16 bits at a time, parallel processing of weighting of data of 8 symbols can be performed.
図9により、α−1倍のガロア体積演算の基本的処理を説明する。 With reference to FIG. 9, basic processing of α- 1 times Galois volume calculation will be described.
(S40)先ず、xmm1レジスタに、8シンボルをロードする。 (S40) First, 8 symbols are loaded into the xmm1 register.
(S42)次に、xmm1レジスタの各シンボルを、右方向(最下位ビット方向)に1ビットシフトし、各シンボルの値を1/2倍とする。 (S42) Next, each symbol in the xmm1 register is shifted by one bit to the right (the least significant bit direction), and the value of each symbol is halved.
(S44)マスク値を用いて、シフトにより値の桁落ちが生じるシンボル(即ち、対象シンボルの最下位ビット「1」が、消失するシンボル)を検出する。 (S44) Using the mask value, a symbol whose value is lost due to the shift (that is, a symbol in which the least significant bit “1” of the target symbol disappears) is detected.
(S46)シフトしたシンボルの内、桁落ちしたシンボルに、予め定めた値(「34821」)をXORする。 (S46) XOR the predetermined value (“34821”) to the missing symbol among the shifted symbols.
次に、図11により、MMXを用いた重み付け処理を詳細に説明する。又、図10を用いて、データディスク番号i=9のα−1倍のガロア体の重み付け(ガロア体の積演算)処理を例に、具体的に説明を行う。データディスク番号i=9の場合には、式(3)のパリテイQの生成多項式から、データDi=9に、α−1倍の重みづけを行う。 Next, the weighting process using MMX will be described in detail with reference to FIG. Further, a specific explanation will be given with reference to FIG. 10, taking as an example weighting of Galois field (product calculation of Galois field) of α- 1 times the data disk number i = 9. In the case of the data disk number i = 9, the data D i = 9 is weighted by α −1 times from the parity Q generator polynomial in equation (3).
(S50)xmmレジスタに、データを代入し、処理すべき繰り返し回数MAXを設定する。例えば、ディスク番号i=9場合には、MAX=1である。又、繰り返し回数ポインタiを「0」に初期化する。例えば、図5と同様に、データディスク番号i=9のディスクから、重み付けを行う8シンボル(1シンボル、16ビット)のデータ(Di=9データ)をピックアップし、これをxmm1レジスタに代入する(図10の(1))。 (S50) Data is substituted into the xmm register, and the number of repetitions MAX to be processed is set. For example, when the disk number i = 9, MAX = 1. Also, the repeat count pointer i is initialized to “0”. For example, as in FIG. 5, 8 symbols (1 symbol, 16 bits) of data (Di = 9 data) to be weighted are picked up from the disk of data disk number i = 9, and this is substituted into the xmm1 register ( (1) of FIG.
又、「1」と「34821」の値が入力された8シンボルのデータv1,v34821を用意する。値「1」は、最下位である1ビット目のみに「1」の値があることを示し、左シフトにより桁落ちが生じるシンボルを検出するためのデータである。 Also, 8-symbol data v1 and v34821 to which the values “1” and “34821” are input are prepared. The value “1” indicates that only the lowest bit of the first bit has a value of “1”, and is data for detecting a symbol in which a digit is lost due to a left shift.
値「34281」は、16ビットのガロア体GF(2^16)の原始多項式(x^16+x^12+x^3+x+1)から「1」を除き、且つこの結果をxで割った多項式(x^15+x^11+x^2+1)に、x=2を代入した値である。この意味は、16ビットのガロア体GF(2^16)の原始多項式(α^16+α^12+α^3+α+1)=0の原則により、(α^16+α^12+α^3+α)=1が成立する。このαに「2」を代入すると、69642=1が得られる。両辺を右(最下位)方向に1ビットシフトすると、34821=値が消失、となる。16ビットデータの右辺に、「1」が有る場合に、右シフトすると、右辺の「1」が消失するため、「34821」をXORすることにより、値を補正するものである。 The value “34281” is obtained by subtracting “1” from the primitive polynomial (x ^ 16 + x ^ 12 + x ^ 3 + x + 1) of the 16-bit Galois field GF (2 ^ 16) and the result is x This is the value obtained by substituting x = 2 into the divided polynomial (x ^ 15 + x ^ 11 + x ^ 2 + 1). This means (α ^ 16 + α ^ 12 + based on the principle that the primitive polynomial (α ^ 16 + α ^ 12 + α ^ 3 + α + 1) = 0 of the 16-bit Galois field GF (2 ^ 16) α ^ 3 + α) = 1 holds. If “2” is substituted for α, 69642 = 1 is obtained. If both sides are shifted by one bit in the right (least significant) direction, 34821 = value disappears. If “1” is present on the right side of 16-bit data and the right shift is performed, “1” on the right side disappears. Therefore, the value is corrected by XORing “34821”.
(S52)次に、移動命令(MOVQ)に応じて、xmm1レジスタに代入された値を、xmm2レジスタに移動する。シフト命令(PSRLW)に応じて、xmm2レジスタの各シンボルを、右に(下位方向に)1ビットシフトする(図10の(2)のxmm2)。これにより、各シンボルは、1/2倍(=α−1倍)されるが、1シンボルが、16ビットのため、桁落ちされたビット部分は、アンダーフローする。このため、図5と同様に、値がそのまま2倍になる箇所と、桁落ちする箇所(アンダーフローした箇所)とが混在する。 (S52) Next, the value assigned to the xmm1 register is moved to the xmm2 register in accordance with the move command (MOVQ). In response to the shift instruction (PSRLW), each symbol of the xmm2 register is shifted to the right (lower direction) by 1 bit (xmm2 in (2) of FIG. 10). As a result, each symbol is halved (= α −1 ), but since one symbol is 16 bits, the dropped bit portion underflows. For this reason, as in FIG. 5, a place where the value is doubled as it is and a place where a digit is dropped (underflowed place) are mixed.
(S54)この桁落ちした箇所(シンボル)のみに、値「34821」のXORを行う。このため、先ず、桁落ちしたシンボルを抽出し、その抽出したシンボルの値を、オール「1」(即ち、65535)とする。即ち、AND命令(PAND)に応じて、図10のxmm1レジスタの各シンボルの値と、v1の値「1」との論理積(AND)をとり、xmm1レジスタを更新する。(xmm1&v1)は、8シンボルの内、最下位桁が「1」であるシンボルのみが、値「1」に置き換えられ、それ以外は、値「0」に置き換えられる。 (S54) XOR of the value “34821” is performed only on the place (symbol) where the digits are dropped. For this reason, first, a missing symbol is extracted, and the value of the extracted symbol is all “1” (ie, 65535). That is, in accordance with the AND instruction (PAND), the logical product (AND) of the value of each symbol in the xmm1 register of FIG. 10 and the value “1” of v1 is calculated, and the xmm1 register is updated. In (xmm1 & v1), only the symbol having the lowest digit “1” among the 8 symbols is replaced with the value “1”, and the others are replaced with the value “0”.
次に、8シンボルの値判定を行い、シンボルの値を、値「65535」又は値「0」に置き換える。即ち、比較及び最大値設定命令(PCMPEQW)に応じて、(xmm1&v1)の各シンボルの値と、値「1」を比較して、両者が一致すると、そのシンボルの16ビットを、オール「1」(=65535)に置き換え、両者が一致しないと、そのシンボルの16ビットを、オール「0」(=0)に置き換える。これにより、値「34821」のマスクを作成する。 Next, the value determination of 8 symbols is performed, and the value of the symbol is replaced with the value “65535” or the value “0”. That is, according to the comparison and maximum value setting command (PCMPEQW), the value of each symbol of (xmm1 & v1) is compared with the value “1”, and if both match, the 16 bits of the symbol are all set to “1”. If the two do not match, the 16 bits of the symbol are replaced with all “0” (= 0). As a result, a mask having a value “34821” is created.
(S56)そして、AND命令(PAND)に応じて、このxmm1レジスタの各シンボルの値と、v34821の値「34821」の論理積(AND)をとり、xmm1レジスタを更新する。これにより、8シンボルのxmm1レジスタの内、最下位桁が「1」のシンボルのみが、値「34821」に置き換えられ、それ以外のシンボルは、値「0」に置き換えられる。 (S56) Then, in response to the AND instruction (PAND), the logical product (AND) of the value of each symbol in the xmm1 register and the value “34821” of v34821 is calculated, and the xmm1 register is updated. As a result, only the symbol having the lowest digit “1” in the xmm1 register of 8 symbols is replaced with the value “34821”, and the other symbols are replaced with the value “0”.
(S58)XOR命令(PXOR)に応じて、この更新されたxmm1レジスタの各シンボルの値と、ステップS52で得たxmm2レジスタの各シンボルの値とのXOR(排他的論理輪)をとり、α−1倍の重みづけを行った結果を得る。 (S58) In response to the XOR instruction (PXOR), the XOR (exclusive logical ring) between the updated value of each symbol in the xmm1 register and the value of each symbol in the xmm2 register obtained in step S52 is obtained. The result of weighting by -1 is obtained.
(S60)「break」が、検出された時に、処理を停止し、xmm1の値を確定する。それ以外は、ステップS54に戻る。 (S60) When “break” is detected, the process is stopped and the value of xmm1 is determined. Otherwise, the process returns to step S54.
(S62)α^−1倍計算処理開始にあたり、繰り返し回数ポインタiを、「1」インクリメントする。そして、繰り返し回数ポインタiが、設定繰り返し回数MAX以上であるかを判定する。繰り返し回数ポインタiが、設定繰り返し回数MAX以上でなければ、ステップS54に進む。 (S62) At the start of the α ^ −1 times calculation process, the iteration number pointer i is incremented by “1”. Then, it is determined whether the repetition number pointer i is equal to or larger than the set repetition number MAX. If the repeat count pointer i is not equal to or greater than the set repeat count MAX, the process proceeds to step S54.
(S64)一方、繰り返し回数ポインタiが、設定繰り返し回数MAX以上である場合には、設定した繰り返し回数が終了したので、「break」を通知し、xmm1を結果として、出力する。 (S64) On the other hand, when the repetition count pointer i is equal to or larger than the set repetition count MAX, the set repetition count is completed, so “break” is notified and xmm1 is output as a result.
このように、このα−1倍の重み付けアルゴリズムの特徴は、xmmレジスタに代入された値を、右1ビットシフトする点であり、基本的な考え方はα倍の重みづけアルゴリズムと同じである。出力は、ディスク番号i=9〜14に対し、α^-(i-8)倍の重みづけ結果が出力される。 Thus, the feature of this α- 1 times weighting algorithm is that the value assigned to the xmm register is shifted by 1 bit to the right, and the basic idea is the same as the α times weighting algorithm. The output is a weighted result of α ^ − (i−8) times for the disk numbers i = 9 to 14.
このように、ガロア体の元は、各ディスクで異なれば良く、必ずしも、式(1)のように、ディスク番号iに比例する乗数を持つガロア体の元を使用しなくても良い。これを利用して、α倍と、α−1倍の重み付け処理を用い、且つ繰り返し数が最小となるディスク番号iで、使用するガロア体を、αi−1倍と、α−i+8倍の重みを割り振る。これにより、図7及び図8では、ループ回数が、最大7回となる。 In this way, the elements of the Galois field need only be different for each disk, and it is not always necessary to use the elements of the Galois field having a multiplier proportional to the disk number i as shown in equation (1). Using this, the Galois field to be used is α i−1 times and α −i + 8 times with the disk number i that uses the weighting process of α times and α −1 times and minimizes the number of repetitions. Allocate weights. Thereby, in FIGS. 7 and 8, the maximum number of loops is seven.
もし、図4の方法のみで行うと、ループ回数は、最大13回となり、この実施の形態による、ループ回数の削減の効果は、大きい。 If only the method of FIG. 4 is used, the number of loops is 13 at maximum, and the effect of reducing the number of loops according to this embodiment is great.
又、この実施の形態では、α倍と、α−1倍の重み付け処理を、図4の例で説明したが、他の1回の繰り返しでα倍、n回の繰り返しで、αn倍の積演算ができる他の方法も適用できる。 In this embodiment, the weighting processing of α times and α −1 times has been described in the example of FIG. 4. However, α times by another iteration and α n times by n iterations. Other methods that can perform product operations are also applicable.
勿論、図4の実施の形態の積演算処理を使用すれば、本実施の形態でも、6命令で実行でき、α倍するのに、2/3の処理時間で済み、高速に、ガロア体の積演算を実行できる。同様に、8シンボルを並列処理できるため、従来の4シンボルの並列処理に比し、更に2倍の高速処理が可能となり、結果として、1/3の処理時間で、ガロア体積演算を実現できる。 Of course, if the product operation processing of the embodiment of FIG. 4 is used, even in this embodiment, it can be executed with 6 instructions, and it takes 2/3 processing time to multiply by α. Can perform product operations. Similarly, since 8 symbols can be processed in parallel, the processing can be performed twice as fast as the conventional 4-symbol parallel processing. As a result, Galois volume calculation can be realized in 1/3 processing time.
(更に別のガロア体積演算処理)
図12は、本発明のガロア体積演算処理の更に別の実施の形態の処理フロー図、図13は、図12の処理の説明図である。この実施の形態は、図4乃至図6の実施の形態のα倍演算処理を使用した任意のガロア体の元α^k倍の重みづけ処理を示し、最大反復回数が15回で済むというメリットがある。この積演算処理は、特に、k倍のkが大きい時に、有効であり、ディスクの2重故障を復元させる際に使用することが好適である。
(Still another Galois volume calculation process)
FIG. 12 is a process flow diagram of still another embodiment of the Galois volume calculation process of the present invention, and FIG. 13 is an explanatory diagram of the process of FIG. This embodiment shows a weighting process of an element α ^ k times of an arbitrary Galois field using the α times arithmetic processing of the embodiments of FIGS. 4 to 6, and has a merit that the maximum number of iterations is 15 times. There is. This product operation processing is effective particularly when k times k is large, and it is preferable to use it when restoring a double disk failure.
図13に示すように、例えば、16ビットのガロア体GF(2^16)の最大のガロア体の元α^33653倍(αの33653乗)の重みづけを行う際に、図4のα倍の重みづけアルゴリズムを用いた場合では、反復回数が33653回、図7のα^(-1)倍の重みづけアルゴリズムを用いた場合では、反復回数が31882回必要となり、効率的とは言えない。 As shown in FIG. 13, for example, when weighting the element α ^ 33653 times (α raised to 33653) of the largest Galois field of the 16-bit Galois field GF (2 ^ 16), α times that in FIG. When the weighting algorithm is used, the number of iterations is 33653, and when the weighting algorithm of α ^ (-1) times in FIG. 7 is used, the number of iterations is 31882, which is not efficient. .
そこで、このようなケースでは、任意のガロア体重みづけアルゴリズムを使用する。このアルゴリズムは、ガロア体のベクトル表現を使用するところに特徴がある。任意のガロア体の元は、下記(4)式の関係がある。 Therefore, in such a case, an arbitrary Galois field weighting algorithm is used. This algorithm is characterized by the use of a Galois field vector representation. The element of an arbitrary Galois field has the relationship of the following formula (4).
但し、gfw(i)は、「0」又は「1」のいずれかである。即ち、任意のガロア体を、2進数のベクトル表現(gfw(0), gfw(1),・・・, gfw(15))で表すことができる。 However, gfw (i) is either “0” or “1”. That is, an arbitrary Galois field can be represented by a binary vector representation (gfw (0), gfw (1),..., Gfw (15)).
又、1シンボルDのα^k倍の重み付けは、下記(5)式のように、分配法則が成立する。 For the weighting of 1 symbol D by α ^ k, the distribution law is established as shown in the following equation (5).
図12及び図13の重み付け処理は、この分配法則を用いて重み付けを行う。例えば、α^33653倍の重みづけを行う場合には、ガロア体の法則から、下記(6)式の関係がある。 The weighting process of FIGS. 12 and 13 performs weighting using this distribution law. For example, when weighting α ^ 33653 times, there is a relationship of the following equation (6) from the Galois field law.
従って、前述のベクトル表現では、( gfw(0), gfw(1),・・・, gfw(15) ) = ( 1, 0, 1, 0, ・・・, 0 )となる。 Therefore, in the above-described vector expression, (gfw (0), gfw (1),..., Gfw (15)) = (1, 0, 1, 0,..., 0).
また、反復回数は、gfw(i)=1となる最大のiを設定値として使用するため、反復回数MAX=2と設定する。この理由は、α^3・D, α^4・D, ・・・ の重み付けを、必要としないため、反復回数MAXを「2」に指定することで、余分な反復回数を減らすことが可能となり、処理時間を短縮する効果がある。 The number of iterations is set to be the number of iterations MAX = 2 because the maximum i that satisfies gfw (i) = 1 is used as the setting value. The reason for this is that α ^ 3 · D, α ^ 4 · D, ... do not require weighting, so it is possible to reduce the number of extra iterations by specifying “2” as the number of iterations MAX. Thus, the processing time can be shortened.
図13は、8シンボルデータ(D1,D2,D3,D4,D5,D6,D7,D8)のα^33653倍の重みづけの例を示す。MAX=2回反復を繰り返すとき、α^0=1倍, α^1倍, α^2倍の重みづけデータが作成される。このうち、gfw(i)=1となるi回目のα^i倍重み付けデータを足し算(XOR)する。この例の場合には、0回目と2回目の重み付けデータを足し算(XOR)する。 FIG. 13 shows an example of weighting α ^ 33653 times of 8-symbol data (D1, D2, D3, D4, D5, D6, D7, D8). When MAX = 2 iterations are repeated, weighted data of α ^ 0 = 1 time, α ^ 1 time, and α ^ 2 times are created. Of these, the i-th α ^ i-fold weighted data satisfying gfw (i) = 1 is added (XOR). In this example, the zeroth and second weighting data are added (XOR).
これにより、目的の重み付けデータα^33653・Dj(j=1,2,・・、8)を、(α^0・Dj+α^2・Dj)により、得ることができる。
Accordingly, the target weighting data α ^ 33653 · Dj (j = 1, 2,..., 8) can be obtained by (
図12により処理を説明する。 The processing will be described with reference to FIG.
(S70)xmm1レジスタに、データを代入し、処理すべき繰り返し回数MAXを設定する。xmm2レジスタを、v0(オール「0」)に初期化する。又、繰り返し回数ポインタiを「0」に初期化する。更に、MAX=0の場合には、xmmレジスタ1の内容を出力し、以下のステップを実行しないこととする。そして、ベクトルgfwを設定する。
(S70) Data is substituted into the xmm1 register, and the number of repetitions MAX to be processed is set. The xmm2 register is initialized to v0 (all “0”). Also, the repeat count pointer i is initialized to “0”. Further, when MAX = 0, the contents of the
又、図4と同様に、「32768」と「4107」の値が入力された8シンボルのデータv32768,v4107を用意する。値「32768」は、16ビット目のみに「1」の値があることを示し、シフトにより桁上げが生じるシンボルを検出するためのデータである。値「4107」は、16ビットのガロア体GF(2^16)の原始多項式(x^16+x^12+x^3+x+1)の(x^12+x^3+x+1)に、x=2を代入した値である。即ち、4096+8+2+1=4107である。 Similarly to FIG. 4, 8-symbol data v32768 and v4107 into which the values “32768” and “4107” are input are prepared. The value “32768” indicates that there is a value of “1” only in the 16th bit, and is data for detecting a symbol that causes a carry by a shift. The value “4107” is (x ^ 12 + x ^ 3 + x + 1) of the primitive polynomial (x ^ 16 + x ^ 12 + x ^ 3 + x + 1) of the 16-bit Galois field GF (2 ^ 16) ) Is substituted by x = 2. That is, 4096 + 8 + 2 + 1 = 4107.
(S72)次に、移動命令(MOVQ)に応じて、xmm1レジスタに代入された値を、xmm3レジスタに移動する。シフト命令(PSLLW)に応じて、xmm3レジスタの各シンボルを、左に(上位方向に)1ビットシフトする。これにより、各シンボルは、2倍(=α倍)されるが、1シンボルが、16ビットのため、桁上げされたビット部分は、オーバーフローする。このため、値が2倍になる箇所と、シフト前よりも値が小さくなる箇所がある。シフト前よりも値が小さくなる箇所は、オーバーフローした箇所である。 (S72) Next, according to the move command (MOVQ), the value assigned to the xmm1 register is moved to the xmm3 register. In response to the shift instruction (PSLLW), each symbol in the xmm3 register is shifted to the left (upward) by 1 bit. Thereby, each symbol is doubled (= α times), but since one symbol is 16 bits, the carried bit portion overflows. For this reason, there are locations where the value is doubled and locations where the value is smaller than before the shift. The place where the value is smaller than before the shift is the place where overflow has occurred.
(S74)この値が小さくなる箇所(シンボル)のみに、値「4107」のXORを行う。このため、先ず、値が小さくなったシンボルを抽出し、その抽出したシンボルの値を、オール「1」(即ち、65535)とする。即ち、AND命令(PAND)に応じて、xmm1レジスタの各シンボルの値と、v32768の値「32768」との論理積(AND)をとり、xmm1レジスタを更新する。8シンボルの内、オーバーフローしたシンボル(値が小さくなったシンボル)のみが、値「32768」に置き換えられ、オーバーフローしないシンボルは、値「0」に置き換えられる。 (S74) XOR of the value “4107” is performed only on the portion (symbol) where the value becomes small. For this reason, first, a symbol having a smaller value is extracted, and the value of the extracted symbol is all “1” (ie, 65535). That is, in accordance with the AND instruction (PAND), the logical product (AND) of the value of each symbol of the xmm1 register and the value “32768” of the v32768 is calculated, and the xmm1 register is updated. Of the 8 symbols, only the overflowed symbol (the symbol whose value has decreased) is replaced with the value “32768”, and the non-overflowed symbol is replaced with the value “0”.
次に、8シンボルの値判定を行い、シンボルの値を、値「65535」又は値「0」に置き換える。即ち、比較及び最大値設定命令(PCMPEQW)に応じて、(xmm1&v32768)の各シンボルの値と、値「32768」を比較して、両者が一致すると、そのシンボルの16ビットを、オール「1」(=65535)に置き換え、両者が一致しないと、そのシンボルの16ビットを、オール「0」(=0)に置き換える。これにより、値「4107」のマスクを作成する。 Next, the value determination of 8 symbols is performed, and the value of the symbol is replaced with the value “65535” or the value “0”. That is, according to the comparison and maximum value setting command (PCMPEQW), the value of each symbol of (xmm1 & v32768) is compared with the value “32768”, and if both match, the 16 bits of the symbol are all “1”. If the two do not match, the 16 bits of the symbol are replaced with all “0” (= 0). As a result, a mask of value “4107” is created.
(S76)そして、AND命令(PAND)に応じて、このxmm1レジスタの各シンボルの値と、v4107の値「4107」の論理積(AND)をとり、xmm1レジスタを更新する。これにより、8シンボルのxmm1レジスタの内、値が小さくなったシンボルのみが、値「4107」に置き換えられ、値が小さくならないシンボルは、値「0」に置き換えられる。 (S76) Then, in response to the AND instruction (PAND), the logical product (AND) of the value of each symbol in the xmm1 register and the value “4107” of v4107 is obtained, and the xmm1 register is updated. Thus, only the symbol having a smaller value in the xmm1 register of 8 symbols is replaced with the value “4107”, and the symbol whose value is not decreased is replaced with the value “0”.
(S78)XOR命令(PXOR)に応じて、この更新されたxmm1レジスタの各シンボルの値と、ステップS72で得たxmm3レジスタの各シンボルの値とのXOR(排他的論理輪)をとり、α倍の重みづけを行った結果を得る。 (S78) In response to the XOR instruction (PXOR), the XOR (exclusive logical ring) between the updated value of each symbol in the xmm1 register and the value of each symbol in the xmm3 register obtained in step S72 is obtained, and α The result of double weighting is obtained.
(S80)「break」が、検出された時に、処理を停止し、xmm1の値を確定する。それ以外は、ステップS74に戻る。 (S80) When “break” is detected, the process is stopped and the value of xmm1 is determined. Otherwise, the process returns to step S74.
(S82)XOR計算部では、移動命令(MOVQ)に応じて、xmm1レジスタの処理結果を、xmm4レジスタに移動する。 (S82) The XOR calculation unit moves the processing result of the xmm1 register to the xmm4 register in accordance with the move command (MOVQ).
(S84)その処理時のgfw(i)が、「1」であるかを判定する。 (S84) It is determined whether gfw (i) at the time of the process is “1”.
(S86)gfw(i)が、「1」である場合には、前述のように、XORの対象であるため、xmm2レジスタの内容とxmm4レジスタの内容とのXORを演算し、演算結果で、xmm2レジスタを更新する。 (S86) When gfw (i) is “1”, as described above, since it is an XOR target, the XOR between the contents of the xmm2 register and the contents of the xmm4 register is calculated, Update the xmm2 register.
(S88)繰り返し回数ポインタiを、「1」インクリメントする。 (S88) The repeat count pointer i is incremented by “1”.
(S90)そして、繰り返し回数ポインタiが、設定繰り返し回数MAX以上であるかを判定する。繰り返し回数ポインタiが、設定繰り返し回数MAX以上でなければ、ステップS74に進む。 (S90) Then, it is determined whether the repetition number pointer i is equal to or larger than the set repetition number MAX. If the repeat count pointer i is not equal to or greater than the set repeat count MAX, the process proceeds to step S74.
(S92)一方、繰り返し回数ポインタiが、設定繰り返し回数MAX以上である場合には、設定した繰り返し回数が終了したので、「break」を、α倍計算部のループに通知し、xmm2を結果として、出力する。 (S92) On the other hand, when the repetition count pointer i is equal to or larger than the set repetition count MAX, the set repetition count is completed, so “break” is notified to the loop of the α-fold calculation unit, and xmm2 is obtained as a result. ,Output.
このように、α^k倍の重みづけ処理の最大反復回数を減少でき、kが大きい時に、有効であり、ディスクの2重故障を復元させる際に使用すると、高速に復元できる。 In this way, the maximum number of repetitions of the weighting process of α ^ k times can be reduced, which is effective when k is large, and can be restored at high speed when used to restore a double disk failure.
(他の実施の形態)
前述の実施の形態では、14台のデータディスク装置と2台のパリテイディスク装置とで構成されるRAID6のストレージ装置で、説明したが、他の台数の構成にも適用できる。
(Other embodiments)
In the above-described embodiment, the description has been given of the
又、パリテイQの生成は、図4の実施の形態又は図11の他の実施の形態のガロア体積演算処理を使用し、パリテイP、Qを使用した2重故障の復元には、図12の更に別の実施の形態のガロア体積演算処理を使用することが、パリテイ生成と復元の両方を高速に実行できる。しかし、パリテイQの生成は、図4の実施の形態又は図11の他の実施の形態のガロア体積演算処理を使用し、パリテイP,Qによる二重故障の復元も、図4の実施の形態又は図11の他の実施の形態のガロア体積演算処理を使用することもできる。又、パリテイQの生成及びパリテイP,Qによる二重故障の復元とも、図4の実施の形態を含む図12の更に別の実施の形態のガロア体積演算処理を使用することもできる。 Further, the generation of parity Q uses the Galois volume calculation processing of the embodiment of FIG. 4 or the other embodiment of FIG. 11, and the restoration of a double failure using the parity P, Q is shown in FIG. Furthermore, using the Galois volume calculation process of another embodiment can perform both parity generation and restoration at high speed. However, the generation of the parity Q uses the Galois volume calculation processing of the embodiment of FIG. 4 or the other embodiment of FIG. 11, and the restoration of the double fault by the parity P and Q is also the same as the embodiment of FIG. Alternatively, the Galois volume calculation process of another embodiment of FIG. 11 can be used. Further, the Galois volume calculation processing of still another embodiment of FIG. 12 including the embodiment of FIG. 4 can also be used for generation of parity Q and restoration of double failure by parity P, Q.
以上、本発明を、実施の形態で説明したが、本発明は、その趣旨の範囲内で種々の変形が可能であり、これを本発明の範囲から排除するものではない。 As mentioned above, although this invention was demonstrated by embodiment, this invention can be variously deformed within the range of the meaning, and this is not excluded from the scope of the present invention.
(付記1)データを分割し、分割されたデータを各々格納する複数のデータストレージユニットと、前記分割されたデータの組み合わせから得た第1のパリテイデータと、パリテイの生成法定式におけるガロア体の元を前記分割されたデータに積演算し、且つ積演算結果を用いて前記生成方程式を演算して得た第2のパリテイデータとを格納するパリテイストレージユニットと、前記データを分割し、前記第1のパリテイデータと第2のパリテイデータとを演算し、前記第1のパリテイデータと第2のパリテイデータとを前記パリテイストレージユニットに格納する制御ユニットとを有し、前記制御ユニットは、前記分割されたデータの各々をレジスタにロードし、且つレジスタの各データを上位桁方向にビットシフトし、前記ロードされたデータと前記シフトにより桁上がりビットを検出するための固定値との論理積をとり、且つ前記論理積の結果と前記固定値とを比較して、前記桁上がりビットを有するデータを、前記データの最大値に置き換え、マスクを作成し、前記マスクの最大値と前記桁上がりを補正する補正値との論理積を演算し、前記演算結果と前記シフトされたデータとの排他的論理和(XOR)を演算して、前記データを前記ガロア体の元で積演算した結果を得ることを特徴とするRAID装置。 (Supplementary note 1) A plurality of data storage units for dividing data and storing each of the divided data, first parity data obtained from a combination of the divided data, and a Galois field in a parity generation method formula A parity storage unit for storing the second parity data obtained by performing a product operation on the divided data and calculating the generation equation using a product operation result; and dividing the data A control unit that calculates the first parity data and the second parity data, and stores the first parity data and the second parity data in the parity storage unit. The control unit loads each of the divided data into a register, and bit-shifts each data of the register in the upper digit direction to load the loaded data. Data and a fixed value for detecting a carry bit by the shift, and comparing the result of the logical product with the fixed value to obtain the data having the carry bit as the data To create a mask, calculate a logical product of the maximum value of the mask and the correction value for correcting the carry, and perform an exclusive OR (XOR) of the operation result and the shifted data ) To obtain the result of product operation of the data under the Galois field.
(付記2)前記制御ユニットは、前記データストレージユニットの任意のデータストレージユニットの障害時に、前記障害発生したデータストレージユニットのデータを未知データとし、前記第1のパリテイデータ及び第2のパリテイデータと、前記障害発生したデータストレージユニット以外の前記データストレージユニットのデータとを用いて、前記ガロア体の連立方程式から、前記未知データを復元することを特徴とする付記1のRAID装置。
(Supplementary Note 2) When a failure occurs in any data storage unit of the data storage unit, the control unit sets the data in the failed data storage unit as unknown data, and the first parity data and the second parity data. The RAID apparatus according to
(付記3)前記制御ユニットは、最上位ビットのみが「1」である前記データのビット数と同一のビット数を有する前記固定値を使用することを特徴とする付記1のRAID装置。
(Supplementary note 3) The RAID device according to
(付記4)前記制御ユニットは、複数のデータを前記レジスタにロードし、前記複数のデータに対し、前記積演算処理を並列に実行することを特徴とする付記1のRAID装置。
(Supplementary note 4) The RAID device according to
(付記5)前記制御ユニットは、前記ガロア体の原始多項式から得た前記補正値を使用することを特徴とする付記1のRAID装置。
(Additional remark 5) The said control unit uses the said correction value obtained from the primitive polynomial of the said Galois field, The RAID apparatus of
(付記6)前記制御ユニットは、前記ガロア体の元の次数分、前記積演算を繰り返すことを特徴とする付記1のRAID装置。
(Supplementary note 6) The RAID device according to
(付記7)前記制御ユニットは、前記ガロア体の元を、ベクトル表現し、且つ分配法則を用いて、重み付け値を分配して、前記ガロア体の元の積演算を実行することを特徴とする付記1のRAID装置。
(Additional remark 7) The said control unit performs the vector operation of the element of the said Galois field, distributes a weight value using a distribution law, and performs the product operation of the element of the said Galois field, It is characterized by the above-mentioned.
(付記8)前記制御ユニットは、前記分配した第1の重み付け値の積演算を第1の重み付け値の回数分実行した後、前記実行結果を用いて、前記積演算を第2の重み付け値の回数分実行し、前記第1の重み付け値の積演算結果と、前記第2の重み付け値の積演算結果の排他的論理和をとり、前記ガロア体の元の積演算結果を得ることを特徴とする付記7のRAID装置。 (Supplementary note 8) The control unit executes the product operation of the distributed first weight values for the number of times of the first weight value, and then uses the execution result to execute the product operation of the second weight value. And the product operation result of the first weight value and the product operation result of the second weight value are exclusive-ORed to obtain the original product operation result of the Galois field. The RAID device of appendix 7.
(付記9)データをn分割し、分割されたデータを各々格納するn台のデータストレージユニットと、前記分割されたデータの組み合わせから得た第1のパリテイデータと、パリテイの生成方程式におけるガロア体の元を前記分割されたデータに積演算し、且つ積演算結果を用いて前記生成方程式を演算して得た第2のパリテイデータとを格納するパリテイストレージユニットと、前記データをn分割し、前記第1のパリテイデータと第2のパリテイデータとを演算し、前記第1のパリテイデータと第2のパリテイデータとを前記パリテイストレージユニットに格納する制御ユニットとを有し、前記制御ユニットは、前記n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、前記積演算を実行することを特徴とするRAID装置。 (Supplementary note 9) n data storage units that divide data into n and store the divided data, first parity data obtained from a combination of the divided data, and Galois in the parity generation equation A parity storage unit that stores a second parity data obtained by performing a product operation on the divided data and calculating the generation equation using a product operation result; and n A control unit that divides, calculates the first parity data and the second parity data, and stores the first parity data and the second parity data in the parity storage unit; The control unit has i = 1 to s + 1th data, where s is the smallest integer greater than (n−1) / 2 among the n data storage units. As a Galois field element of the storage unit data, α ^ (i−1), i = s + 2 to n-th data storage unit data Galois field element, α ^ (− i + s + 1) as a weight, A RAID apparatus that performs the product operation.
(付記10)前記制御ユニットは、前記n分割されたデータのシフト、シフトによる桁上がりデータの抽出、桁上がりデータのマスク作成、前記マスクを使用して、前記シフトされたデータと補正値とのXOR演算を行い、α倍の積演算結果を演算することを特徴とする付記9のRAID装置。
(Supplementary Note 10) The control unit shifts the n-divided data, extracts carry data by the shift, creates a mask of carry data, and uses the mask to convert the shifted data and the correction value. The RAID device according to
(付記11)前記制御ユニットは、前記積演算を、m回繰り返し、α^m倍の積演算結果を演算することを特徴とする付記10のRAID装置。 (Supplementary note 11) The RAID device according to Supplementary note 10, wherein the control unit repeats the product computation m times and computes a product computation result of α ^ m times.
(付記12)前記制御ユニットは、前記データストレージユニットの任意のデータストレージユニットの障害時に、前記障害発生したデータストレージユニットのデータを未知データとし、前記第1のパリテイデータ及び第2のパリテイデータと、前記障害発生したデータストレージユニット以外の前記データストレージユニットのデータとを用いて、前記ガロア体の連立方程式から、前記未知データを復元することを特徴とする付記9のRAID装置。
(Additional remark 12) When the failure of any data storage unit of the data storage unit, the control unit sets the data of the data storage unit in which the failure has occurred as unknown data, and the first parity data and the second parity data The RAID device according to
(付記13)分散されたデータの各々をレジスタにロードするステップと、前記レジスタの各データを上位桁方向にビットシフトするステップと、前記ロードされたデータと前記シフトにより桁上がりビットを検出するための固定値との論理積をとるステップと、前記論理積の結果と前記固定値とを比較して、前記桁上がりビットを有するデータを、前記データの最大値に置き換え、マスクを作成するステップと、前記マスクの最大値と前記桁上がりを補正する補正値との論理積を演算するステップと、前記演算結果と前記シフトされたデータとの排他的論理和(XOR)を演算して、前記データを前記ガロア体の元で積演算した結果を得るステップとからなることを特徴とするガロア体積演算処理方法。 (Supplementary Note 13) A step of loading each of the distributed data into a register, a step of bit-shifting each data of the register in the upper digit direction, and detecting a carry bit by the loaded data and the shift Taking a logical product with a fixed value of the data, comparing the result of the logical product with the fixed value, replacing the data having the carry bits with the maximum value of the data, and creating a mask; and Calculating a logical product of the maximum value of the mask and a correction value for correcting the carry, and calculating an exclusive OR (XOR) of the calculation result and the shifted data, A Galois volume arithmetic processing method, comprising: obtaining a result of product operation of an element of the Galois field.
(付記14)前記固定値との論理積ステップは、最上位ビットのみが「1」である前記データのビット数と同一のビット数を有する前記固定値を使用するステップからなることを特徴とする付記13のガロア体積演算処理方法。
(Supplementary Note 14) The logical product step with the fixed value includes a step of using the fixed value having the same number of bits as the number of bits of the data in which only the most significant bit is “1”. The Galois volume calculation processing method according to
(付記15)前記ロードステップは、複数のデータを前記レジスタにロードするステップからなり、前記複数のデータに対し、前記シフトステップ、論理積ステップ、作成ステップ、論理積ステップ、排他的論理和ステップを並列に実行することを特徴とする付記13のガロア体積演算処理方法。
(Supplementary Note 15) The load step includes a step of loading a plurality of data into the register, and the shift step, a logical product step, a creation step, a logical product step, and an exclusive logical sum step are performed on the plurality of data. The Galois volume arithmetic processing method according to
(付記16)前記補正値との論理積ステップは、前記ガロア体の原始多項式から得た前記補正値を使用するステップからなることを特徴とする付記13のガロア体積演算処理方法。
(Supplementary note 16) The Galois volume arithmetic processing method according to
(付記17)前記ガロア体の元の次数分、前記積演算を繰り返すステップを、更に、有することを特徴とする付記13のガロア体積演算処理方法。
(Additional remark 17) The Galois volume arithmetic processing method of
(付記18)前記ガロア体の元を、ベクトル表現し、且つ分配法則を用いて、重み付け値を分配して、前記ガロア体の元の積演算を実行するステップを、更に、有することを特徴とする付記13のガロア体積演算処理方法。
(Supplementary note 18) The method further includes the step of performing vector operation on the Galois field element and distributing the weighting value using a distribution law to perform a product operation of the Galois field element. The Galois volume calculation processing method according to
(付記19)前記実行ステップは、前記分配した第1の重み付け値の積演算を第1の重み付け値の回数分実行するステップと、前記実行結果を用いて、前記積演算を第2の重み付け値の回数分実行するステップと、前記第1の重み付け値の積演算結果と、前記第2の重み付け値の積演算結果の排他的論理和をとり、前記ガロア体の元の積演算結果を得るステップとからなることを特徴とする付記18のガロア体積演算処理方法。 (Supplementary Note 19) The execution step includes a step of executing a product operation of the distributed first weight values for the number of times of the first weight value, and a second weight value using the execution result. And the step of obtaining the original product operation result of the Galois field by taking the exclusive OR of the product operation result of the first weight value and the product operation result of the second weight value. The Galois volume calculation processing method according to appendix 18, characterized by comprising:
(付記20)データをn分割し、分割されたデータを各々格納するn台のデータストレージユニットのデータのパリテイデータをガロア体を用いて生成するためのガロア体積演算処理方法において、n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、積演算を実行するステップと、前記積演算結果で、前記パリテイのガロア体を用いた生成方程式を演算するステップを有することを特徴とするガロア体積演算処理方法。 (Supplementary note 20) In a Galois volume arithmetic processing method for generating parity data of data of n data storage units each storing divided data by using a Galois field, the n data Assuming that the smallest integer greater than (n−1) / 2 among the data storage units is s, α ^ (i−1) as the element of the Galois field of the data of i = 1 to s + 1th data storage unit. I = s + 2 to the nth data storage unit, the step of executing a product operation using α ^ (− i + s + 1) as the weight of the Galois field element of the data, and the product operation result, A Galois volume calculation processing method comprising a step of calculating a generation equation using a body.
(付記21)前記積演算ステップは、前記n分割されたデータのシフト、シフトによる桁上がりデータの抽出、桁上がりデータのマスク作成、前記マスクを使用して、前記シフトされたデータと補正値とのXOR演算を行い、α倍の積演算結果を演算するステップからなることを特徴とする付記20のガロア体積演算処理方法。 (Supplementary Note 21) The product calculation step includes shifting the n-divided data, extracting carry data by the shift, creating a mask of carry data, and using the mask, the shifted data and the correction value The Galois volume arithmetic processing method according to appendix 20, characterized by comprising the step of performing an XOR operation of the above and calculating a product operation result of α times.
(付記22)前記積演算を、m回繰り返し、α^m倍の積演算結果を演算するステップを、更に有することを特徴とする付記21のガロア体積演算処理方法。 (Supplementary note 22) The Galois volume arithmetic processing method according to supplementary note 21, further comprising a step of repeating the product computation m times and computing a product computation result of α ^ m times.
n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、積演算を実行するので、少ない繰り返し回数で、各データのガロア体の積演算が可能となる。 Assuming that the smallest integer greater than (n−1) / 2 among n data storage units is s, i ^ (i) as the element of the Galois field of data of i = 1 to s + 1th data storage unit -1), i = s + 2 to the nth data storage unit data Galois field element, α ^ (− i + s + 1) is used as a weighting, and the product operation is executed. Galois field product operation is possible.
10−1〜10−14 データディスク装置
10−15〜10−16 パリテイディスク装置
12 RAIDコントローラ
14 接続バス
16 ホスト
10-1 to 10-14 Data disk device 10-15 to 10-16
Claims (2)
前記分割されたデータの組み合わせから得た第1のパリテイデータと、パリテイの生成方程式におけるガロア体の元を前記分割されたデータに積演算し、且つ積演算結果を用いて前記生成方程式を演算して得た第2のパリテイデータとを格納するパリテイストレージユニットと、
前記データをn分割し、前記第1のパリテイデータと第2のパリテイデータとを演算し、前記第1のパリテイデータと第2のパリテイデータとを前記パリテイストレージユニットに格納する制御ユニットとを有し、
前記制御ユニットは、前記n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、前記積演算を実行する
ことを特徴とするRAID装置。 N data storage units that divide the data into n and store the divided data respectively;
The first parity data obtained from the combination of the divided data and the Galois field element in the parity generation equation are multiplied with the divided data, and the generation equation is calculated using the product calculation result. A parity storage unit for storing the second parity data obtained by
The data is divided into n, the first parity data and the second parity data are calculated, and the first parity data and the second parity data are stored in the parity storage unit. A control unit,
The control unit is a Galois field element of data of i = 1 to s + 1th data storage unit, where s is the smallest integer greater than (n−1) / 2 among the n data storage units. The product operation is executed by using α ^ (i-1) as the Galois field element of data of i = s + 2 to nth data storage unit and α ^ (-i + s + 1) as a weight. RAID device.
前記n台のデータストレージユニットの内、(n−1)/2より大きな最小の整数をsとする時に、i=1〜s+1番目のデータストレージユニットのデータのガロア体の元として、α^(i−1)を、i=s+2〜n番目のデータストレージユニットのデータのガロア体の元を、α^(−i+s+1)を、重み付けとして、積演算を実行するステップと、
前記積演算結果で、前記パリテイのガロア体を用いた生成方程式を演算するステップを有する
ことを特徴とするガロア体積演算処理方法。 In a Galois volume arithmetic processing method for generating parity data of data of n data storage units each storing divided data by using n Galois fields.
Assuming that the smallest integer greater than (n−1) / 2 among the n data storage units is s, as the element of the Galois field of data of i = 1 to s + 1th data storage unit, α ^ ( performing a product operation using i-1) as a weighting element of a Galois field of data of i = s + 2 to n-th data storage unit, α ^ (− i + s + 1),
A Galois volume calculation processing method comprising: calculating a generation equation using the parity Galois field based on the product calculation result.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011269776A JP5131379B2 (en) | 2011-12-09 | 2011-12-09 | RAID device and Galois field product operation processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011269776A JP5131379B2 (en) | 2011-12-09 | 2011-12-09 | RAID device and Galois field product operation processing method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007010204A Division JP4935367B2 (en) | 2007-01-19 | 2007-01-19 | RAID device and Galois field product operation processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012070434A JP2012070434A (en) | 2012-04-05 |
JP5131379B2 true JP5131379B2 (en) | 2013-01-30 |
Family
ID=46167069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011269776A Expired - Fee Related JP5131379B2 (en) | 2011-12-09 | 2011-12-09 | RAID device and Galois field product operation processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5131379B2 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2662472B2 (en) * | 1991-06-13 | 1997-10-15 | シャープ株式会社 | Syndrome operation circuit for error correction processing |
US5333143A (en) * | 1991-08-29 | 1994-07-26 | International Business Machines Corporation | Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array |
JP2005293263A (en) * | 2004-03-31 | 2005-10-20 | Nec Corp | Storage controller, information processor, storage control method, and storage control program |
-
2011
- 2011-12-09 JP JP2011269776A patent/JP5131379B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012070434A (en) | 2012-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4935367B2 (en) | RAID device and Galois field product operation processing method | |
EP1953920B1 (en) | RAID system and data recovery apparatus using galois field | |
US7219289B2 (en) | Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same | |
KR101522509B1 (en) | Efficient and scalable cyclic redundancy check circuit using galois-field arithmetic | |
US11848686B2 (en) | Accelerated polynomial coding system and method | |
JP5353655B2 (en) | Error detection / correction code generation circuit and control method thereof | |
US8099655B1 (en) | Galois field multiplier system and method | |
CN114389752A (en) | Cyclic redundancy check code generation method, apparatus, device, medium, and program product | |
US9935653B2 (en) | Enhanced cyclical redundancy check circuit based on galois-field arithmetic | |
JP5131379B2 (en) | RAID device and Galois field product operation processing method | |
JP5927323B1 (en) | Matrix action device, matrix action method, and program | |
US10067821B2 (en) | Apparatus and method for cyclic redundancy check | |
JP5278115B2 (en) | Redundant code generation method and apparatus, data restoration method and apparatus, and RAID storage device | |
KR20050036451A (en) | Method and apparatus for multiplication operation in finite field | |
CN106603085B (en) | Generating method and generating device for generating polynomial, encoder, controller and electronic equipment | |
CN108352845A (en) | Method for being encoded to storage data and device | |
US20140317162A1 (en) | Using Carry-less Multiplication (CLMUL) to Implement Erasure Code | |
JP2013069000A (en) | Parity prediction unit, carry-less multiplier, and arithmetic processing unit | |
US20210044306A1 (en) | Processing of data read from a memory | |
CN115499019A (en) | Hardware architecture and method for system erasure coding | |
US20190179617A1 (en) | Galois field pipelined multiplier with polynomial and beta input passing scheme | |
JP2016025498A (en) | Information processing apparatus and information processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121003 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121009 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121022 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151116 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5131379 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |