JP5278115B2 - 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 - Google Patents

冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 Download PDF

Info

Publication number
JP5278115B2
JP5278115B2 JP2009085416A JP2009085416A JP5278115B2 JP 5278115 B2 JP5278115 B2 JP 5278115B2 JP 2009085416 A JP2009085416 A JP 2009085416A JP 2009085416 A JP2009085416 A JP 2009085416A JP 5278115 B2 JP5278115 B2 JP 5278115B2
Authority
JP
Japan
Prior art keywords
data
bit
string
redundant code
exclusive
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.)
Active
Application number
JP2009085416A
Other languages
English (en)
Other versions
JP2010239404A (ja
Inventor
英泰 藤原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009085416A priority Critical patent/JP5278115B2/ja
Priority to US12/730,984 priority patent/US8499224B2/en
Publication of JP2010239404A publication Critical patent/JP2010239404A/ja
Application granted granted Critical
Publication of JP5278115B2 publication Critical patent/JP5278115B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、データに基づいて冗長符号を生成する方法及び装置と、冗長符号を用いて元のデータを復元する方法及び装置と、冗長符号を用いたRAID(Redundant Array of Inexpensive DisksあるいはRedundant Array of Independent Disks)記憶装置とに関する。
データにおいて発生し得る種々の誤り(エラー)を検出しその誤りを訂正する技術の一つとして、データに基づいて冗長符号を生成し、データにその冗長符号を付加する技術がある。冗長符号を用いて耐障害性を向上させる場合には、データにおいて誤りが生じていないときにはそのデータをそのまま使用し、データにおいて例えばブロック消失などの誤りが生じたときには冗長符号を用いて元のデータを復元するようにする。このような冗長符号は、例えば、RAIDシステムにおいて用いられている。
RAIDシステムは、複数のディスク装置を接続してディスクアレイとして構成した記憶装置であり、読み書きの高速化及び信頼性の向上のために、冗長性を持たせつつ複数台のディスク装置にデータを冗長かつ分散させて記録する。RAIDシステムでは、ディスク装置の故障に対する耐障害性も向上しており、例えばディスク装置の1台に故障が生じたとしても、データを正しく読み取ることができる。RAIDシステムは、その冗長構成によっていくつかのものに分類されるが、そのうちRAID6システムでは、非特許文献1,2などに示されるように、データをブロックに分割してディスク装置に分散配置する際に、ブロックからリード・ソロモン(Reed-Solomon)符号を計算し、ブロックに分割されたデータとともにそのリード・ソロモン符号をディスク装置に格納するようにしている。リード・ソロモン符号はガロア体(有限体)上での演算を利用した冗長符号である。詳しく言えば、RAID6システムは、最低6台のディスク装置を使用するものであって、それぞれP,Qと呼ばれる2種類のパリティ符号(冗長符号)を生成し、P符号データ列を1台のディスク装置に、Q符号データ列を別の1台のディスク装置に、残りのディスクにはデータを分散格納することによって、全体で2台のディスク装置の故障までに対応できるようにしたものである。
ガロア体演算を利用した冗長符号は、その冗長性が優れていることが知られている。しかしながら、ガロア体演算は、汎用のマイクロプロセッサあるいはCPU(中央処理ユニット;Central Processing Unit)にとっては、処理負荷が大きく、多大な計算時間を要するものである。図1は、本発明の関連技術における、リード・ソロモン符号である冗長符号を計算する処理を説明する図であり、24拡大ガロア体(GF(24))を使用した冗長符号列p,qをビット列から生成する処理を示している。ここでは、冗長符号列生成の対象となるデータが4つのビット列a,b,c,dに分割されている。ビット列aはビットa00,a01,a02,a03,…からなり、ビット列bはビットb00,b01,b02,b03,…からなる。ビット列c,dも同様である。また冗長符号列p,qもそれぞれビット列であり、冗長符号列pはビットP00,P01,P02,P03,…からなり、冗長符号列QはビットQ00,Q01,Q02,Q03,…からなる。
ここではGF(24)を使用することにより、冗長符号列の計算は、ビット列から4ビットずつ取り出して行われ、冗長符号列P,Qも図1に示した1回の計算によって4ビットずつ生成される。図1においてIは4×4の単位行列であり、Tは、GF(24)の原始多項式(x4+x+1=0)の同伴行列であって、式(1)に示される4×4の行列である。図面及び本明細書において、明示的な加算記号("+")は、通常の加算ではなく、排他的論理和(XOR;eXclusive OR)を示している。
Figure 0005278115
例えばQ00は、
00=a00+b03+c00+c03+d02 (2)
によって計算される。排他的論理和演算であるので、5つのビットa00,b03,c00,c03,d02のうち、"1"であるものが奇数個であれば、Q00は"1"となり、そうでなければQ00は"0"となる。
このように通常のガロア体演算は、ビット単位に行われる。冗長符号列を用いて元のデータを復元する場合にもガロア体演算を実行する。
ところで一般にCPUあるいはマイクロプロセッサは、8ビット(すなわち1バイト)、16ビット、32ビットなどを1ワードとして、ワード単位で演算処理を実行する。そして、排他的論理和演算についてもワード単位で実行し、その際、計算対象のワード間で、対応するビット同士の排他的論理和を演算する。すなわち、ワードA,Bについての排他的論理和の演算結果Cも1ワードのデータであって、ワードAの1ビット目とワードBの1ビット目の排他的論理和がワードCの1ビット目に格納され、ワードAの2ビット目とワードBの2ビット目の排他的論理和がワードCの2ビット目に格納される、というようになっている。
このようなCPUを用いて上述したガロア体演算を実行する場合、ビット列a〜dはいずれもワードデータとして扱うことができるが、例えば冗長符号列Qの算出に際しては、式(2)に示されるように、ビット列aの1ビット目であるビットa00とビット列bの4ビット目であるビットb03との排他的論理和の計算が必要となる。すなわち、データにおけるビットシフトを行う必要がある。さらに、ワード単位での排他的論理和の演算において、その時点での演算に無関係なビットによって演算結果が影響されることを防ぐために、ビット単位でのデータのマスク動作も行う必要がある。このようなビットシフトやデータマスクの実行回数は多数回に及ぶ。しかしながら汎用のCPUでは、そのアーキテクチャ上、ビットシフト命令やデータマスク命令などを効率的に実行することができず、そのため、これらの処理はCPUにとって処理負荷の高いものとなっている。
汎用のCPUを組み込んだ装置において、そのCPUによってよってガロア体演算を行わせた場合には、装置の処理性能に影響が及ぼされる可能性がある。そのため、本発明の関連技術においては、冗長符号列生成のためのガロア体演算を高速に行うためには、その演算に専用のなんらかのハードウェアが必要であるとされている。例えば特許文献1には、リード・ソロモン復号に必要なガロア体乗算回路を多数の構成要素からなるハードウェア回路で構成した例が示されている。
RAIDシステムにおいて各ディスク装置に格納されるデータを生成するために、汎用のCPUを使用し、ビットシフト演算、データマスク演算、論理積演算及び排他的論理和演算によってガロア体の積演算を行う例が、特許文献2に記載されている。また特許文献3には、特許文献2の手法により冗長符号が付加されたデータから元のデータを復元するために、ガロア体の積演算テーブルを参照することが記載されている。
特開2007−129618号公報 特開2008−176621号公報 特開2008−186400号公報
James S. Plank, "A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems," Technical Report UT-CS-96-332, University of Tennessee, July 1996 James S. Plank and Ying Ding, "Note: Correction to the 1997 Tutorial on Reed-Solomon Coding," Technical Report UT-CS-03-504, University of Tennessee, April 2003
特許文献2,3に示されるように汎用のマイクロプロセッサあるいはCPUを用いてガロア体演算を行わせる例は存在するものの、高速でガロア体演算を行わせる場合には、ビットシフトに相当する処理を高速に実行できる専用のハードウェアを用いる必要がある。しかしながら、ガロア体演算を高速に行わせるための専用ハードウェアは高価であるため、特殊なハードウェアを使用せず、汎用のCPUなどのみを用いて、ガロア体演算を高速に実行できる手法が求められている。
本発明の目的は、特殊なハードウェアを用いることなく、高速でガロア体演算を行うことができて冗長符号を生成する方法及び装置を提供することにある。
本発明の別の目的は、特殊なハードウェアを用いることなく、冗長符号に基づき、高速でガロア体演算を行うことができて元のデータを復元する方法及び装置を提供することにある。
本発明のさらに別の目的は、特殊なハードウェアを用いることなく、冗長符号の生成とデータの復元のために高速でガロア体演算を行うことができて性能が向上したRAID記憶装置を提供することにある。
本発明の冗長符号生成方法は、元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成方法であって、元データを複数のデータ列に分割することと、各データ列を、拡大ガロア体演算に応じた本数のビット列に分割することと、分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、所定の複数のビット数をデータ単位として、メモリに格納されている各ビット列から取り出されるデータ単位分のビットをベクトルとし、拡大ガロア体の原始多項式に対応する同伴行列を含み冗長符号データ列の生成に用いられる演算式に応じ、複数のベクトルの間で排他的論理和演算を実行することにより、ベクトル内でのビットシフトを行うことなく冗長符号データ列を構成するビット列を算出することと、を有する。
本発明の冗長符号生成装置は、元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成装置であって、少なくとも排他的論理和演算器を有する演算手段と、メモリと、演算手段とメモリとを接続するアドレスバス及びデータバスと、を有し、元データは複数のデータ列に分割され、各データ列は、拡大ガロア体演算に応じた本数のビット列に分割されて、メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、演算手段は、所定の複数のビット数をデータ単位として、拡大ガロア体の原始多項式に対応する同伴行列を含み冗長符号データ列の生成に用いられる演算式に応じたアドレス制御によりメモリに格納されている各ビット列からデータ単位分のビットをベクトルとして取り出し、複数のベクトルの間で排他的論理和演算を実行することにより、ベクトル内でのビットシフトを行うことなく、冗長符号データ列を構成するビット列を算出し、算出されたビット列をメモリにおける対応する記憶領域に格納する。
本発明のデータ復元方法は、元データが複数のデータ列に分割されかつ元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と冗長符号データ列とから、データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元方法であって、正常なデータ列と冗長符号データ列の各々を拡大ガロア体演算に応じた本数のビット列に分割することと、分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、所定の複数のビット数をデータ単位として、メモリに格納されている各ビット列から取り出されるデータ単位分のビットをベクトルとし、拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じ、複数のベクトルの間で排他的論理和演算を実行することにより、ベクトル内でのビットシフトを行うことなく復元データ列を構成するビット列を算出することと、を有する。
本発明のデータ復元装置は、元データが複数のデータ列に分割されかつ元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と冗長符号データ列とから、データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元装置であって、少なくとも排他的論理和演算器を有する演算手段と、メモリと、演算手段とメモリとを接続するアドレスバス及びデータバスと、を有し、正常なデータ列と冗長符号データ列の各々が拡大ガロア体演算に応じた本数のビット列に分割され、メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、演算手段は、所定の複数のビット数をデータ単位として、拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じたアドレス制御によりメモリに格納されている各ビット列からデータ単位分のビットをベクトルとして取り出し、複数のベクトルの間で排他的論理和演算を実行することにより、ベクトル内でのビットシフトを行うことなく、復元データ列を構成するビット列を算出し、算出されたビット列をメモリにおける対応する記憶領域に格納する。
本発明のRAID記憶装置は、複数のデータ記録媒体と、排他的論理和演算器と、を有し、元データが複数のデータ列に分割されてデータ記録媒体に分散格納されるとともに、元データから拡大ガロア体演算により求められた冗長符号データ列が少なくとも1つのデータ記録媒体に格納され、各データ列は、拡大ガロア体演算に応じた本数のビット列に分割され、排他的論理和演算器は、所定の複数のビット数をデータ単位として、冗長符号データ列の生成のための演算式またはデータ列復元のための演算式であって拡大ガロア体の原始多項式に対応する同伴行列を含む演算式に応じ、各ビット列からデータ単位分のビットをベクトルとして取り出して複数のベクトルの間で排他的論理和演算を実行することにより、ベクトル内でのビットシフトを行うことなく拡大ガロア体演算を行う。
本発明では、ビット単位ではなく、複数のビットによって構成されるデータ単位での排他的論理和演算を実行することにより、ビットシフトやデータマスクの演算などを行うことなくガロア体演算を実行することが可能になる。そのため、例えば汎用のCPUを用いて演算を実行する場合であっても、ビットシフト命令やデータマスク命令を用いる必要がなくなるので、高速でガロア体演算を行うことが可能になる。
関連技術における24拡大ガロア体(GF(24))を使用した冗長符号列生成の演算処理を説明する図である。 本発明の実施の一形態における冗長符号列生成の演算処理を説明する図である。 図2に示す演算処理の原理を図解する図である。 図2に示す冗長符号の生成と関連技術における冗長符号の生成とを対比して示す図である。 図2に示す冗長符号データ列生成の演算処理を実行するための基本的なハードウェア構成の一例を示すブロック図である。 実施の一形態におけるRAIDシステムの構成例を示すブロック図である。 図6に示したRAID装置の動作を説明する図である。 故障したディスク装置のデータの復旧のために用いられるガロア体乗算表の一例を示す図である。 本発明の実施の一形態におけるデータ復元のための演算処理の例を説明する図である。 RAIDシステムの別の構成例を示すブロック図である。 RAIDシステムのさらに別の構成例を示すブロック図である。
次に、本発明の実施の形態について説明する。最初に、本発明の実施の一形態における冗長符号の生成について、図2を用いて説明する。以下では、4台のデータ格納用のディクス装置と1台のP符号列格納用のディスク装置と1台のQ符号列格納用のディスク装置とを有するRAID6システムへの適用を念頭において、ガロア体GF(24)上の演算により、データから冗長符号データ列P,Qを生成する場合について説明する。ここでは冗長符号データ列生成の対象となるデータは、それぞれデータ格納用のディスク装置に対応する4つのデータ列a,b,c,dに分けられている。データ格納用のディクス装置の数が4台より多い場合には、それに応じて、データ列への分割数も増加させればよい。
さらに本実施形態では、ガロア体GF(24)演算を行うことに対応して、各データ列a〜dは、いずれもさらに4つのビット列に分けられている。具体的にはデータ列aは、ビット列a0,a1,a2,a3に分けられ、データ列bは、ビット列b0,b1,b2,b3に分けられている。データ列c,dについても同様である。ビット列a0は、ビットa00,a01,a02,a03,a04,…からなり、ビット列a1は、ビットa10,a11,a12,a13,a14,…からなる。他のビット列についても同様である。ここでは、冗長符号データ列の生成に用いられるガロア体はGF(24)としているが、冗長符号データ列の生成に用いられるガロア体はこれに限定されるものではなく、例えば、GF(216)やGF(28)などを使用することもできる。データ列を何個のビット列に分割するかは、ガロア体演算で使用するガロア体の大きさに依存するので、例えばGF(28)上でのガロア体演算を実行する場合には、1つのデータ列を8個のビット列に分割するようにする。
本実施形態では、CPUなどを用いた排他的論理和演算に適したビット幅のことをデータ単位と呼ぶ。データ単位は複数のビットからなり、例えば、CPU内での演算器のデータ処理の単位となるビット数に応じて設定される。現行のCPUでは、32ビットあるいは64ビット単位でデータを取り扱うものが多いが、32ビットあるいは64ビットのCPUであっても、8ビット(すなわち1バイト)単位あるいは16ビット単位を1ワードとしてデータ処理を行えるように構成されているので、データ単位のビット数は、例えば、8,16,32または64である。さらにデータ単位のビット数を多くすることも可能である。
生成されるべき冗長符号データ列Pも同様に4つのビット列P0,P1,P2,P3からなり、冗長符号データ列Qは4つのビット列Q0,Q1,Q2,Q3からなる。ビット列P0は、ビットP00,P01,P02,P03,P04,…からなり、ビット列Q1は、ビットQ10,Q11,Q12,Q13,Q14,…からなる。
本実施形態では、元のデータ側のビット列のそれぞれからデータ単位分のビットを取り出してガロア体演算を行うことにより、冗長符号データ側の各ビット列におけるデータ単位分の個数のビットの値を決定する。そのため、各ビット列a0,a1,…,b0,…,d3,P0,P1,…,Q3がいずれもデータ単位分の要素を有する横ベクトルであると考えることができる。これらの横ベクトルの各要素は1ビットの値であり、"0"また"1"で表される。
本実施形態では、このように各ビット列に対応するベクトルを考えることによって、図2に示すような行列演算を行うことによってガロア体演算を実行し、冗長符号データ列P,Qをデータ単位ごとに決定する。例えば、ベクトルとして表されるビット列Q0は、いずれもベクトルとして表されるビット列a0,b3,c0,c3,d2の排他的論理和演算("+")により、
0=a0+b3+c0+c3+d2 (3)
のように表される。ベクトル相互の排他的論理和演算とは、ベクトルの要素ごとに、ベクトル間での対応する要素同士での排他的論理和演算を実行することを意味する。ビット列における未処理のビットがなくなるまで、各ビット列からデータ単位分のビットを取り出して上述した排他的論理和演算を実行することを繰り返すことにより、元のデータ全体に対応した冗長符号データ列P,Qを得ることができる。図3は、ビット列をビットに展開して本実施形態での冗長符号データ列の算出を説明している。
図2及び図3を参照すればわかるように、本実施形態では、ビット列から取り出されたビットに対するビットシフトやデータマスク動作を行うことなく、ビット列をそのままベクトルとして扱ってベクトル間での排他的論理和計算を行うだけで、ガロア体演算を実行でき、冗長符号データ列P,Qを生成することができる。
図4は、図1に示した関連技術における冗長符号データ列の生成と本実施形態における冗長符号データ列の生成とを対比して示している。
図1に示す関連技術では、ガロア体演算は、通常、ビット単位に行われる。ビット単位でガロア体演算をCPUで行う場合には、図4(a)に示すように、データのビットシフトやデータに対するマスク演算を必要とする。
これに対して本実施形態によれば、図4(b)に示すように、ベクトルとして表されるビット列間での、ベクトル演算としての排他的論理和演算によって、ガロア体演算を行うことが可能になる。この際、ビットシフトやデータマスクなどの動作を行う必要はない。これにより、CPUで演算するに当たってビットシフト命令やデータマスク命令を実行しなくて済むことにより、本実施形態によれば、高速でガロア体演算を行うことが可能である。ガロア体演算を実行するための特殊なハードウェアがなくても、排他的論理和を演算することができるハードウェアを搭載していれば、それを利用してガロア体演算を行うことができる。さらに、上述した演算の過程においてどのビット列からデータ単位分のビットを取り出すかは、これらのビット列を格納しているメモリに対するアドレスを制御することによって選択することができる。一般に、メモリに対するデータバスのビット幅はCPUにおける演算処理単位のビット幅と同じにされ、また本実施形態におけるデータ単位のビット幅は例えばCPUにおける演算処理単位のビット幅と同じにされるので、結局、ビット列ごとに1回のメモリアクセスを行うことによって、データ単位分の冗長符号データ列におけるデータ単位分のビット列の計算に必要なデータを取り込むことができ、その点でも本実施形態によれば、ガロア体演算の高速化を達成することができる。
なお、ビット単位でガロア体演算を行うか、あるいは、ベクトル演算によってガロア体演算を行うかによって、同じデータに基づいて冗長符号データ列を生成しても、関連技術によって得られる冗長符号データ列と本実施形態によって得られる冗長符号データ列は、データ列として比較した場合には異なっている。しかしながら後述するように、本実施形態によって得られる冗長符号データ列も、関連技術と同様に、元のデータ列の復元に用いることができる。
なお上述の説明は、データ列a〜dに対してそれぞれ単位行列Iを対応させて冗長符号データ列Pを生成し、データ列a,b,c,dに対してそれぞれ行列I,T,T4,T2を対応させて冗長符号データ列Qを生成するものであるが、例えば非特許文献1,2に記載されるように、冗長符号列P,Qを生成する演算式はここで述べたものに限定されるものではない。例えば、冗長符号データ列Pの生成はここで述べたものと同じとし、データ列a,b,c,dに対してそれぞれ行列I,T,T2,T14を対応させて冗長符号データ列Qを生成するようにしてもよい。
図5は、本実施形態における冗長符号データ列生成の演算処理を実行するための基本的なハードウェア構成の一例を示すブロック図である。
このハードウェア構成は、演算手段として機能するCPU100と、メモリ110と、アドレスバス120と、データバス130とを備えている。CPU100は、アドレスバス120に対してアドレスデータを出力するアドレス制御ユニット101と、データバス130に接続する複数のレジスタ102と、レジスタ102内のデータに対して四則演算や論理演算を実行するする演算論理ユニット(ALU;Arithmetic Logic Unit)103とを少なくとも備えており、ALU103内には、その排他的論理和計算を実行する排他的論理和演算器(XOR)104が設けられている。ここでは、データバス130のビット幅と、CPU100における演算処理の単位となるビット幅すなわち1ワードのビット数とは一致しており、CPU100のビット幅をそのままガロア体演算でのデータ単位とする。
メモリ110は、アドレスバス120とデータバス130とに接続し、アドレスバス120上のアドレスデータによってメモリアドレスが指定されて、データバス130のビット幅単位でデータを読み書きできるようになっている。メモリ110の記憶領域は、データ列a,b,c,d及び冗長符号データ列P,Qをそれぞれ格納する領域に分けられており、さらに、データ列ごとの格納領域は、上述したそれぞれのビット列の格納領域に細分化されている。図において、メモリ110の記憶領域のうちの例えばa0と記載された領域は、ビット列a0が格納される領域である。
このハードウェア構成では、アドレスを指定することによってメモリ120からデータ単位分のビット列をCPU100のいずれかのレジスタ102に取り込むことができる。そこで、メモリ120に格納したビット列に対して上述した一連の排他的論理和演算が行われるように、アドレス制御ユニット101によりアドレスを順次指定しながらビット列を各レジスタ102に取り込み、各レジスタ102に格納されたビット列に対して排他的論理和演算器104が排他的論理和演算を実行することにより、冗長符号データ列を構成するビット列が生成される。すなわちアドレス制御ユニット101は、上記の演算式に基づく排他的論理和演算が行われるようにメモリ110からビット列が取り出されるように、アドレス制御を行う。冗長符号データ列を構成するビット列は、レジスタ102とデータバス130を介して、メモリ110の所定の記憶領域に書き込まれる。この場合、CPU100においてビットシフトやデータマスク動作は行われず、したがって、高速に冗長符号データ列を生成することができる。
次に、上述した冗長符号生成方法を適用しRAIDシステムの構成の一例について、図6を用いて説明する。
RAIDシステムには、Nを3以上の整数であるとして、それぞれデータ記録媒体であるN+1個のディスク装置Disk 0〜Disk Nが設けられており、これらのディスク装置は、ディスク制御部530を介してCPU510に接続している。CPU510は、上述した手法によってガロア体演算を行って冗長符号を生成するとともにディスク装置において障害が発生した場合に破損データの復元処理を行うものである。CPU510にはメモリ520が接続している。メモリ520は、CPU510においてガロア体演算を行う際のバッファとして使われる。以下では、RAIDシステムでの一般的な用語に従って、冗長符号データ列のことをパリティデータと呼ぶ。
このRAIDシステムでは、ディスク装置には、データ及びそのデータから生成された冗長符号データが書き込まれる。ディスク制御部530は、各ディスク装置の操作(ディスク装置へのデータ書き込み及びディスク装置からのデータ読み込み)を行うための制御部である。
次に、図6に示したRAID装置の動作について、図7を用いて説明する。ここでは6台のディスク装置(Disk0〜Disk3,DiskP及びDiskQ)が設けられるものとし、ここでDisk0〜Disk3はデータを分散格納するためのディスク装置であり、DiskP及びDiskQは冗長符号に基づくパリティデータ(P符号列及びQ符号列)がそれぞれ格納されるパリティディスク装置(冗長ディスク装置)である。
今回、動作を理解しやすくするために、以下の1バイト(=8ビット)データをDisk0〜Disk3に書き込む場合を想定する。また、パリティデータ生成のための演算式として、図2にある行列演算式を使用する。通常、CPUは32ビットもしくは64ビット単位でデータを扱うため、CPUの演算処理単位のビット幅に演算のデータ単位を合わせたほうがより効率的に演算できるが、4バイト(=32ビット)のデータとなると要素数が非常に大きくなって説明が複雑になりすぎるため、ここでは1バイトをデータ単位とする場合を例に挙げて説明する。演算のデータ単位を32ビット(=4バイト)や64ビット(=8バイト)とする場合に下記の例を拡張することは容易である。以下の説明において、「0x」で始まっている数値は、「0x」の次の2文字により16進表記で表されている各1バイトのデータである。ここでは、ディスクDisk0〜Disk3に以下のようにデータを分散配置するものとする。
Disk0:0x64,0x6F,0x40,0x48の4バイトのデータ(それぞれ、a0,a1,a2,a3とする),
Disk1:0x15,0x02,0x0F,0xD3の4バイトのデータ(それぞれ、b0,b1,b2,b3とする),
Disk2:0xE6,0x63,0x2C,0x08の4バイトのデータ(それぞれ、c0,c1,c2,c3とする),
Disk3:0x00,0x37,0x9B,0xACの4バイトのデータ(それぞれ、d0,d1,d2,d3とする).
パリティ生成時の動作は以下のようになる。
メモリ520は、上記データのパリティ算出のためのガロア体演算及びディスク書き込みを行う際のバッファとして使用される。CPU510はメモリ520からデータを読み込み、パリティ生成を行う。その際、上記データによって生成されるパリティは、図2に示した計算手法にしたがって、以下のように演算される。ここで"+"は排他的論理和を表す。
0=0x64+0x15+0xE6+0x00
=0x97,
1=0x6F+0x02+0x63+0x37
=0x39,
2=0x40+0x0F+0x2C+0x9B
=0xF8,
3=0x48+0xD3+0x08+0xAC
=0x3F,
0=0x64+0xD3+0xE6+0x08+0x9B
=0xC2,
1=0x6F+0x15+0xD3+0xE6+0x63+0x08+0x9B+0xAC
=0x13,
2=0x40+0x02+0x63+0x2C+0x00+0xAC
=0xA1,
3=0x48+0x0F+0x2C+0x08+0x37
=0x54.
CPU510は、演算したパリティをメモリ520にいったん格納し、次に、ディスク制御部530を通じて全データを各ディスク装置に格納する。その際、ビット列P0〜P3からなる冗長符号データ列PをDiskPに、ビット列Q0〜Q3からなる冗長符号データ列QをDiskQに書き込むようにする。ここでは説明の簡略化のためにどのディスク装置をパリティディスク装置にするかを固定しているが、パリティディスク装置を固定する必要は必ずしもない。
以上により、元のデータに基づいてパリティデータを生成することができ、パリティデータも含めてデータが各ディスク装置に分散配置されたことになる。
次に、図7を参照し、上述のようにデータが各ディスク装置に格納されているとして6台のディスク装置のうちの2台が故障した場合を想定し、残りのディスク装置からデータを復元することを考える。ここでは、Disk1及びDisk2が故障し、残りのDisk3、Disk4、DiskP及びDiskQからデータを復元することを考える。
Disk1及びDisk2が故障している状況において、CPU510は、ディスク制御部530を通じて、Disk2,Disk3,DiskP及びDiskQからデータを読み込み、メモリ520に格納する。次にCPU510は、メモリ520からデータを読み込み、ガロア体演算を行い、データを復元し、復元後のデータをメモリ520に格納する。図1に示す行列演算式を使用した場合の復元パターンは、図8で表される。図8は、図7に示す6台のディスク装置を有する構成において、任意の1台または2台のディスク装置が故障した場合に、故障したディスク装置のデータを他のディスク装置のデータからどのように復元するかを示すガロア体乗算表である。故障したディスク装置が存在しない場合については、「故障なし」の欄で示されている。当然のことながら、正常なディスク装置に格納されているデータは、当該ディスク装置からそのまま読み出すことができる。この表での乗算は、ガロア体乗算であり、その乗算の係数は、原始根のべき乗の指数では、原始多項式の根をベクトル表示した際の値となっている。
図8の乗算表を参照することから分かるように、Disk0及びDisk1が故障した場合に、他のディスク装置を用いてDisk0及びDisk1のデータを復旧するための用いられる復元行列は、図9で示されるものとなる。図9において、セクタ列cは、Disk2から読み出されたデータ列のことであり、ここではGF(24)上での演算を前提としているので、冗長符号データ列を生成する場合と同様に、ビット列c0,c1,c2,c3から構成されている。セクタ列d,P,Qも、それぞれ、Disk3,DiskP及びDiskQから読み出されたデータ列であって、いずれも4つのビット列から構成されている。これらのビット列は、上述したデータ単位分の要素を有する横ベクトルとして扱えるものである。そして、図9に示す式に従って演算を行うことにより、ビット列a0,a1,a2,a3からなるデータ列aと、ビット列b0,b1,b2,b3からなるデータ列とが復元されることとなり、Disk0及びDisk1に格納されていたデータが復元できたことになる。図9の復元行列を今回の場合に当てはめると、故障したディスク装置Disk0及びDisk1に格納されていたデータは、以下の式に示されるように復元される。
0=c1+c2+c3+d3+P0+P1+P2+P3+Q1+Q2+Q3
1=c0+c1+d0+d3+P0+Q0+Q1
2=c0+c1+c2+d1+P0+P1+Q0+Q1+Q2
3=c0+c1+c2+c3+d2+P0+P1+P2+Q0+Q1+Q2+Q3
0=c0+c1+c2+c3+d0+d3+P1+P2+P3+Q1+Q2+Q3
1=c0+d0+d1+d3+P0+P1+Q0+Q1
2=c0+c1+d1+d2+P0+P1+P2+Q0+Q1+Q2
3=c0+c1+c2+d2+d3+P0+P1+P2+P3+Q0+Q1+Q2+Q3
この復元式に対して具体的な数値を代入すると、以下のようになる。
0=0x63+0x2C+0x08+0xAC+0x97+0x39+0xF8+0x3F+0x13+0xA1+0x54
=0x64,
1=0xE6+0x63+0x00+0xAC+0x97+0xC2+0x13
=0x6F,
2=0xE6+0x63+0x2C+0x37+0x97+0x39+0xC2+0x13+0xA1
=0x40,
3=0xE6+0x63+0x2C+0x08+0x9B+0x97+0x39+0xF8+0xC2+0x13+0xA1+0x54
=0x48,
0=0xE6+0x63+0x2C+0x08+0x00+0xAC+0x39+0xF8+0x3F+0x13+0xA1+0x54
=0x15,
1=0xE6+0x00+0x37+0xAC+0x97+0x39+0xC2+0x13
=0x02,
2=0xE6+0x63+0x37+0x9B+0x97+0x39+0xF8+0xC2+0x13+0xA1
=0x0F,
3=0xE6+0x63+0x2C+0x9B+0xAC+0x97+0x39+0xF8+0x3F+0xC2+0x13+0xA1+0x54,
=0xD3.
以上により、Disk0及びDisk1が故障した場合に、残りのデータと本実施形態に基づく冗長符号生成によるパリティとを用いることにより、故障したディスク装置に格納されていたデータ(ビット列a0〜a3,b0〜b3)を復元できることが証明された。ここでは詳細を示さないが、本実施形態による冗長符号生成法によって生成したパリティデータを用いて上述と同様の演算を実行することにより、故障したディスク装置が2台以下であれば、どのディスク装置が故障したとしてもデータを復元することができる。
図9に示す演算式は、それぞれベクトルとしてビット列に対して作用される行列が異なっている点を除けば、図2に示した演算式と同様のものである。したがって、図9に基づきガロア体演算によってデータ列a,bを復元する場合には、ビットシフトやデータマスク動作などを行うことなく、排他的論理和のみでデータ列の復元を行えることが分かる。データ列の復元のための演算処理は、例えば、図5に示した構成のハードウェアを用いて実行することができる。
故障が発生したディスク装置Disk0及びDisk1が、図7の下段に示すように正常なディスク装置New Disk0及びNew Disk1にそれぞれ交換されると、ディスク制御部530は、復旧されたデータを交換後のNew Disk0及びNew Disk1に書き込む。これら一連の動作により、故障によって損失されたデータの復元が完了する。
以上、ディスク装置Disk0及びDisk1が故障したときのデータ復元動作を説明したが、図8に示すガロア体乗算表から明らかなように、図7に示す6台のディスク装置を有するRAIDシステムにおいて、任意の1台または2台のディスク装置が故障した場合には、ここで述べたものと同様の処理を行うことによって、故障したディスク装置に格納されていたデータを復元することができる。
図10は、RAIDシステムの別の構成例を示している。図10に示したものでは、CPU510の内部において、通常のALU(論理演算ユニット)とは別個に、排他的論理和演算器(XOR)540が搭載されている。冗長符号データ列の算出やデータ列の復元に際しては多数回の排他的論理和演算を行う必要があるが、CPU510においてALUとは別個に排他的論理和演算器540を設けることによって、CPU510において、ガロア体演算のために排他的論理和演算が、CPU510における他のプロセスの演算とは別個に行えるようになり、より高速にガロア体演算を実行することが可能になる。
図11は、RAIDシステムのさらに別の構成例を示している。図11に示したものでは、CPUの外部に、すなわちCPUとは別個に排他的論理和演算器(XOR)540が配置されている。この構成では、CPUではなく外部の演算器によって排他的論理和を計算するので、CPUの動作とは無関係にガロア体演算を行うことができ、さらに高速にガロア体演算を実行することが可能になる。なおこの構成では、ガロア体演算に用いられるビット列は、メモリ520から、例えばDMA(ダイレクト・メモリ・アクセス;Direct Memory Access)の手法を用いて排他的論理和演算器540に対して直接供給することができる。
100,510 CPU
101 アドレス制御ユニット
102 レジスタ
103 演算論理ユニット(ALU)
104,540 排他的論理和演算器(XOR)
110,520 メモリ
120 アドレスバス
130 データバス
530 ディスク制御部

Claims (15)

  1. 元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成方法であって、
    前記元データを複数のデータ列に分割することと、
    前記各データ列を、前記拡大ガロア体演算に応じた本数のビット列に分割することと、
    分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、
    所定の複数のビット数をデータ単位として、前記メモリに格納されている各ビット列から取り出される前記データ単位分のビットをベクトルとし、前記拡大ガロア体の原始多項式に対応する同伴行列を含み前記冗長符号データ列の生成に用いられる演算式に応じ、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記冗長符号データ列を構成するビット列を算出することと、
    を有する冗長符号生成方法。
  2. 前記排他的論理和演算をCPUにより実行し、前記データ単位は前記CPUでの演算のビット幅に一致させる、請求項1に記載の冗長符号生成方法。
  3. 前記排他的論理和演算を排他的論理和演算器により実行する、請求項1に記載の冗長符号生成方法。
  4. 元データから拡大ガロア体演算により冗長符号データ列を生成する冗長符号生成装置であって、
    少なくとも排他的論理和演算器を有する演算手段と、
    メモリと、
    前記演算手段と前記メモリとを接続するアドレスバス及びデータバスと、
    を有し、
    前記元データは複数のデータ列に分割され、前記各データ列は、前記拡大ガロア体演算に応じた本数のビット列に分割されて、前記メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、
    前記演算手段は、所定の複数のビット数をデータ単位として、前記拡大ガロア体の原始多項式に対応する同伴行列を含み前記冗長符号データ列の生成に用いられる演算式に応じたアドレス制御により前記メモリに格納されている各ビット列から前記データ単位分のビットをベクトルとして取り出し、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく、前記冗長符号データ列を構成するビット列を算出し、算出されたビット列を前記メモリにおける対応する記憶領域に格納する、冗長符号生成装置。
  5. 前記排他的論理和演算器と前記アドレスバスに対して前記アドレス制御を実行するアドレス制御ユニットとを有するCPUによって前記演算手段が構成されている、請求項4に記載の冗長符号生成装置。
  6. 前記データ単位は前記CPUでの演算のビット幅に一致している、請求項5に記載の冗長符号生成装置。
  7. 元データが複数のデータ列に分割されかつ前記元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と前記冗長符号データ列とから、前記データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元方法であって、
    前記正常なデータ列と前記冗長符号データ列の各々を前記拡大ガロア体演算に応じた本数のビット列に分割することと、
    分割により生成したそれぞれのビット列をメモリの異なる記憶領域に格納することと、
    所定の複数のビット数をデータ単位として、前記メモリに格納されている各ビット列から取り出される前記データ単位分のビットをベクトルとし、
    前記拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じ、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記復元データ列を構成するビット列を算出することと、
    を有するデータ復元方法。
  8. 前記排他的論理和演算をCPUにより実行し、前記データ単位は前記CPUでの演算のビット幅に一致させる、請求項7に記載のデータ復元方法。
  9. 前記排他的論理和演算を排他的論理和演算器により実行する、請求項7に記載のデータ復元方法。
  10. 元データが複数のデータ列に分割されかつ前記元データから拡大ガロア体演算により冗長符号データ列が生成されている場合に、正常なデータ列と前記冗長符号データ列とから、前記データ列のうちの誤りとなったデータ列を復元して復元データ列を生成するデータ復元装置であって、
    少なくとも排他的論理和演算器を有する演算手段と、
    メモリと、
    前記演算手段とメモリとを接続するアドレスバス及びデータバスと、
    を有し、
    前記正常なデータ列と前記冗長符号データ列の各々が前記拡大ガロア体演算に応じた本数のビット列に分割され、前記メモリは、分割により生成されたそれぞれのビット列を格納する複数の記憶領域を有し、
    前記演算手段は、所定の複数のビット数をデータ単位として、前記拡大ガロア体の原始多項式に対応する同伴行列を含みデータ列の復元に用いられる演算式に応じたアドレス制御により前記メモリに格納されている各ビット列から前記データ単位分のビットをベクトルとして取り出し、複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく、前記復元データ列を構成するビット列を算出し、算出されたビット列を前記メモリにおける対応する記憶領域に格納する、データ復元装置。
  11. 前記排他的論理和演算器と前記アドレスバスに対して前記アドレス制御を実行するアドレス制御ユニットとを有するCPUによって前記演算手段が構成されている、請求項10に記載のデータ復元装置。
  12. 前記データ単位は前記CPUでの演算のビット幅に一致している、請求項11に記載のデータ復元装置。
  13. 複数のデータ記録媒体と、
    排他的論理和演算器と、
    を有し、
    元データが複数のデータ列に分割されて前記データ記録媒体に分散格納されるとともに、前記元データから拡大ガロア体演算により求められた冗長符号データ列が少なくとも1つのデータ記録媒体に格納され、
    前記各データ列は、前記拡大ガロア体演算に応じた本数のビット列に分割され、
    前記排他的論理和演算器は、所定の複数のビット数をデータ単位として、冗長符号データ列の生成のための演算式またはデータ列復元のための演算式であって前記拡大ガロア体の原始多項式に対応する同伴行列を含む演算式に応じ、各ビット列から前記データ単位分のビットをベクトルとして取り出して複数の前記ベクトルの間で排他的論理和演算を実行することにより、前記ベクトル内でのビットシフトを行うことなく前記拡大ガロア体演算を行う、RAID記憶装置。
  14. 前記排他的論理和演算器を備えるCPUを有し、前記データ単位は前記CPUでの演算のビット幅に一致する、請求項13に記載のRAID記憶装置。
  15. CPUをさらに備え、前記排他的論理和演算器は前記CPUの外部に設けられる、請求項13に記載のRAID記憶装置。
JP2009085416A 2009-03-31 2009-03-31 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 Active JP5278115B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009085416A JP5278115B2 (ja) 2009-03-31 2009-03-31 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置
US12/730,984 US8499224B2 (en) 2009-03-31 2010-03-24 Redundant code generation method and device, data restoration method and device, and raid storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009085416A JP5278115B2 (ja) 2009-03-31 2009-03-31 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置

Publications (2)

Publication Number Publication Date
JP2010239404A JP2010239404A (ja) 2010-10-21
JP5278115B2 true JP5278115B2 (ja) 2013-09-04

Family

ID=42785826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009085416A Active JP5278115B2 (ja) 2009-03-31 2009-03-31 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置

Country Status (2)

Country Link
US (1) US8499224B2 (ja)
JP (1) JP5278115B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5440884B2 (ja) * 2011-09-29 2014-03-12 日本電気株式会社 ディスクアレイ装置およびディスクアレイ制御用プログラム
WO2014003599A1 (en) * 2012-06-29 2014-01-03 Ems Corparation Redundant disc encoding via erasure decoding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7804674A (nl) * 1978-05-02 1979-11-06 Philips Nv Geheugen met detektie en korrektie van fouten.
JPS56127908A (en) * 1980-03-10 1981-10-07 Victor Co Of Japan Ltd Wrong-correction preventing system for digital signal reproducer
JP2570251B2 (ja) * 1984-04-20 1997-01-08 ソニー株式会社 有限体の演算回路
US4706250A (en) * 1985-09-27 1987-11-10 International Business Machines Corporation Method and apparatus for correcting multibyte errors having improved two-level code structure
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
US6058500A (en) * 1998-01-20 2000-05-02 3Com Corporation High-speed syndrome calculation
US6671850B1 (en) * 2000-05-01 2003-12-30 International Business Machines Corporation On-the-fly algebraic error correction system and method for reducing error location search
JP4288486B2 (ja) * 2003-11-17 2009-07-01 日本電気株式会社 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
US7774679B2 (en) * 2005-02-14 2010-08-10 Hitachi Global Storage Technologies Netherlands B.V. Techniques for performing reduced complexity galois field arithmetic for correcting errors
JP4595055B2 (ja) 2005-11-07 2010-12-08 ルネサスエレクトロニクス株式会社 ガロア体のα乗算回路および演算回路
US8510608B2 (en) * 2006-11-06 2013-08-13 Panasonic Corporation Generating PUF error correcting code using redundant hardware
JP4935367B2 (ja) 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
JP4905161B2 (ja) 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置

Also Published As

Publication number Publication date
JP2010239404A (ja) 2010-10-21
US8499224B2 (en) 2013-07-30
US20100251071A1 (en) 2010-09-30

Similar Documents

Publication Publication Date Title
JP4905161B2 (ja) Raid装置及びガロア体を用いたデータ復元装置
Khan et al. Rethinking erasure codes for cloud file systems: minimizing I/O for recovery and degraded reads.
JP4935367B2 (ja) Raid装置及びガロア体の積演算処理方法
EP0031183A2 (en) Multi-processor computer system
KR20090028507A (ko) 비휘발성 메모리 에러 보정 시스템 및 방법
US20150100819A1 (en) Method of Recovering Data in a Storage Device
JP2013070122A (ja) 誤り訂正装置、誤り訂正方法及び演算装置
US20120198195A1 (en) Data storage system and method
CN105808170B (zh) 一种能够修复单磁盘错误的raid6编码方法
CN109358980B (zh) 一种对数据更新和单磁盘错误修复友好的raid6编码方法
WO2018000788A1 (zh) 一种数据存储方法和装置、一种数据恢复方法和装置
WO1997000559A1 (en) Dedicated alu architecture for 10-bit reed-solomon error correction module
JP5278115B2 (ja) 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置
JP5170010B2 (ja) ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム
US9400715B1 (en) System and method for interconnecting storage elements
WO2018165943A1 (zh) 存储控制器、数据处理芯片及数据处理方法
CN108352845B (zh) 用于对存储数据进行编码的方法以及装置
CN115113816A (zh) 一种纠删码数据处理系统、方法、计算机设备及介质
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法
JP5440884B2 (ja) ディスクアレイ装置およびディスクアレイ制御用プログラム
US10216929B2 (en) Chip and method for detecting a change of a stored data vector
WO2016038673A1 (ja) 誤り訂正装置、誤り訂正方法、及び誤り訂正システム
JP2005293263A (ja) 記憶制御装置、情報処理装置、記憶制御方法及び記憶制御プログラム
JP2007179297A (ja) Raid5のパリティチェック強化方法、装置及びプログラム
JP5131379B2 (ja) Raid装置及びガロア体の積演算処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

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: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130506

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5278115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150