JP2005149224A - ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路 - Google Patents

ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路 Download PDF

Info

Publication number
JP2005149224A
JP2005149224A JP2003386997A JP2003386997A JP2005149224A JP 2005149224 A JP2005149224 A JP 2005149224A JP 2003386997 A JP2003386997 A JP 2003386997A JP 2003386997 A JP2003386997 A JP 2003386997A JP 2005149224 A JP2005149224 A JP 2005149224A
Authority
JP
Japan
Prior art keywords
data
parity
circuit
index table
conversion
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.)
Granted
Application number
JP2003386997A
Other languages
English (en)
Other versions
JP4288486B2 (ja
Inventor
Eiji Kobayashi
栄治 小林
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 JP2003386997A priority Critical patent/JP4288486B2/ja
Priority to US10/989,439 priority patent/US7437658B2/en
Publication of JP2005149224A publication Critical patent/JP2005149224A/ja
Priority to US12/190,306 priority patent/US7681111B2/en
Application granted granted Critical
Publication of JP4288486B2 publication Critical patent/JP4288486B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity
    • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】RAID6を実現するディスクアレイ装置において確実にエラーが発見できる信頼性の高いRAID用パリティデータ生成回路を提供する。
【解決手段】ガロア体乗算を、ガロア体乗算表1−11から生成した索引テーブル情報によってデータ変換を行うことで実現し、RAID6用のデータを生成する。ガロア体乗算表1−11の縦方向の索引と横方向の索引との異なる方向から索引したものを使用して索引テーブル情報の不一致をあらかじめ検査するテーブルチェック回路1−14を用い、乗算を行うデータ1−2およびパリティ1−3を複数に分解し、それぞれ異なる索引テーブル情報を割り当てることにより、縦索引テーブル作成回路1−9および横索引テーブル作成回路1−10自身のチェックが行われる。
【選択図】図1

Description

本発明は、ディスクアレイ装置,RAID(Redundant
Array of Independent Disks)用パリティデータ生成回路およびガロア体乗算回路に関し、特に高信頼性や高性能が求められるRAID6のディスクアレイ装置,RAID用パリティデータ生成回路およびガロア体乗算回路に関する。
重要データを保存するようなディスクアレイ装置においては、従来から知られているRAID技術などによって信頼性が高められており、RAID0〜5の複数のRAID方式が定義されていたが、近年、これらを改良したRAID6の方式が登場し、さらなる信頼性の向上が求められている。
これと同時に、ディスクアレイ装置のハードウェア自身の信頼性も求められており、データ転送にはパリティやECC(Error Correcting Code)等のデータ保証のチェックコードを付加し、転送データが他のコードに化けることを防ぐような機構が必要不可欠となってきている。
特に、最近定義されたRAID6においては、データを扱うときにガロア体の乗算を行うことが必要となり、その演算結果に対してもデータの正当性を確保するためのパリティを反映させるなどの信頼性を向上させる新しい機構が必要となっている。
例えば、パリティの算出に16種類のデータを扱える拡大ガロア体GF(extension
Galois field)(2)を用いて、RAID6を実現するようにしたRAID装置が公知である(特許文献1参照)。以下、拡大ガロア体を、適宜、単にガロア体という。
図16は、従来の技術でRAID用パリティデータを生成する回路構成であり、メモリからの転送データ20−1においては、データ20−2およびパリティ20−3、そしてそのデータ20−2に対するガロア体の乗算係数20−4が転送される構成となり、データ20−2自身はパリティチェック回路20−5によってパリティチェックが行われる(非特許文献1等参照)。
そして、そのデータ20−2に対する乗算係数20−4の指定により、ガロア体乗算回路20−6による演算が行われてRAID用のデータ20−7の生成が行われ、その生成後にパリティ生成回路20−8によってデータ20−7に対するパリティを生成するものである。これにより、メモリからのデータ20−2の正当性はパリティチェック回路20−5によって保証されている構成をとる。
特開2000−259359号公報(第4〜5頁、図1) 「A Tutorial onReed-Solomon Coding for Fault-Tolerance in RAID-like Systems」James S. Plank,Department of Computer Science University of Tennessee, February 19, 1999
図16に挙げたような従来からの方法でのデータ保証回路では、論理的な故障等には効果があるが、LSI(Large Scaled Integration)の内部の経年変化による劣化やショートなど、故障するポイントがある1点に絞られた場合ではハードウェアの故障が発見できないケースが存在してしまうという問題点がある。
これは、図16の回路構成において説明すると、データの保証を行うためのパリティチェック回路20−5が故障した場合、パリティエラーが発生したとしてもエラーの検出ができないためにデータ20−2の保証が行われていない状態となるということである。
また、エラーチェック時には問題が無かったデータを使用したが、ガロア体乗算回路20−6が故障した場合、その演算結果が目的外のデータに変換されてしまうと同時に、その後に存在するパリティ生成回路20−8によって新しくパリティ20−12を付け直されてしまうという特徴があり、データ20−7が誤変換であったとしてもパリティエラーが検出されることはなく、最終的に生成されたRAID用パリティデータQがデータ化けの状態になってしまい、ディスクアレイシステムとしては致命傷になる。
これを防ぐためにガロア体乗算回路20−6自身を二重化し、お互いの演算結果を比較するなどの従来の技術も存在するが、比較結果を示すエラー信号自身がショート等により故障してしまった場合などにおいては、まったく効果が発揮できない構成となる。
高信頼性が求められるRAID6のディスクアレイ装置等では、これらの正常ではないデータを有効データと見なしてしまうようなことはあってはならない事象である。
本発明の第1の目的は、ガロア体乗算回路においてもデータに対するパリティ,ECC等のチェックコードによって確実にデータを保証できる、信頼性の高いRAID6のディスクアレイ装置を提供することにある。
本発明の第2の目的は、RAID6のディスクアレイ装置を実現するとともに、故障等も含めてデータ化けを確実に防ぎ、データの正当性をチェックするRAID用パリティデータ生成回路を提供することにある。
本発明の第3の目的は、RAID6のディスクアレイ装置を実現するRAID用パリティデータ生成回路に用いられて好適なガロア体乗算回路を提供することにある。
本発明の第4の目的は、RAID6のディスクアレイ装置を実現するとともに、故障等も含めてデータ化けを確実に防ぎ、データの正当性をチェックするRAID用パリティデータ生成方法を提供することにある。
本発明のディスクアレイ装置は、GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
また、本発明のディスクアレイ装置は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする。
さらに、本発明のディスクアレイ装置は、前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする。
さらにまた、本発明のディスクアレイ装置は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
また、本発明のディスクアレイ装置は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
さらに、本発明のディスクアレイ装置は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
さらにまた、本発明のディスクアレイ装置は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
また、本発明のディスクアレイ装置は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
さらに、本発明のディスクアレイ装置は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
さらにまた、本発明のディスクアレイ装置は、前記チェックコードが、前記データに対するECCであることを特徴とする。
一方、本発明のディスクアレイ装置は、GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
また、本発明のRAID用パリティデータ生成回路は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする。
さらに、本発明のRAID用パリティデータ生成回路は、前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成回路は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
また、本発明のRAID用パリティデータ生成回路は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
さらに、本発明のRAID用パリティデータ生成回路は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする。
また、本発明のRAID用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする。
さらに、本発明のRAID用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するECCをRAID用のデータに対するECCに変換するECC変換回路とを有することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成回路は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
また、本発明のRAID用パリティデータ生成回路は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
さらに、本発明のRAID用パリティデータ生成回路は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成回路は、前記チェックコードが、前記データに対するECCであることを特徴とする。
また、本発明のRAID用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した下位パリティの反転結果を得る下位パリティ反転回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してXOR論理演算を行うXOR回路と、前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファとを有することを特徴とする。
さらに、本発明のRAID用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した奇数パリティの反転結果を得る奇数パリティ反転回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してXOR論理演算を行うXOR回路と、前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファとを有することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、データの各分解データに対応するECC変換表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記ECC変換表を乗算係数を用いて索引してECC用変換テーブルを生成するECC索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、前記ECC索引テーブル作成回路で生成されたECC変換テーブルをデータの各分解データで選択してデータに対するECCをRAID用のデータに対するECCに変換するECC変換回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータならびに前記ECC変換回路で生成されたECCを用いてデータに対するECCをチェックするECCチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記ECC変換回路で生成されたECCに対してXOR論理演算を行うXOR回路と、前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファとを有することを特徴とする。
他方、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする。
また、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする。
さらに、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するECCをRAID用のデータに対するECCに変換するECC変換回路とを有することを特徴とする。
さらにまた、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した下位パリティの反転結果を得る下位パリティ反転回路とを有することを特徴とする。
また、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理し奇数パリティの反転結果を得る奇数パリティ反転回路とを有することを特徴とする。
さらに、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、データの各分解データに対応するECC変換表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記ECC変換表を乗算係数を用いて索引してECC用変換テーブルを生成するECC索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、前記ECC索引テーブル作成回路で生成されたECC変換テーブルをデータの各分解データで選択してデータに対するECCをRAID用のデータに対するECCに変換するECC変換回路とを有することを特徴とする。
加えて、本発明のRAID用パリティデータ生成方法は、GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
また、本発明のRAID用パリティデータ生成方法は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする。
さらに、本発明のRAID用パリティデータ生成方法は、前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値を検出することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成方法は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
また、本発明のRAID用パリティデータ生成方法は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
さらに、本発明のRAID用パリティデータ生成方法は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する工程とを含むことを特徴とする。
また、本発明のRAID用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する工程とを含むことを特徴とする。
さらに、本発明のRAID用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータをRAID用のデータに変換する工程と、データに対するECCをRAID用のデータに対するECCに変換する工程とを含むことを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成方法は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
また、本発明のRAID用パリティデータ生成方法は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
さらに、本発明のRAID用パリティデータ生成方法は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
さらにまた、本発明のRAID用パリティデータ生成方法は、前記チェックコードが、前記データに対するECCであることを特徴とする。
図1は、本発明のRAID6を実現するRAID用パリティデータ生成回路の回路構成を示す。
本発明では、ガロア体乗算回路1−21として、その内部にガロア体乗算表1−11を保有し、ガロア体乗算表1−11を乗算係数1−4を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路1−9と、同様にガロア体乗算表1−11を乗算係数1−4を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路1−10と、生成された索引テーブル情報からデータ1−2をRAID用のデータ1−12に変換するための上位データ変換回路1−5および下位データ変換回路1−6と、同様にデータ1−2に対するパリティ1−3をRAID用のデータ1−12に対するパリティ1−13に変換するための上位パリティ反転回路1−7および下位パリティ反転回路1−8とを有することを特徴とする。加えて、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路1−14を有することを特徴とする。
そして、縦方向から索引された索引テーブル情報によってデータ1−12の上位データ部とパリティ1−3の下位パリティ部とを変換し、横方向から索引された索引テーブル情報によってデータ1−12の下位データ部とパリティ1−3の上位パリティ部とを変換した結果であるデータ1−12とパリティ1−13とを検査するパリティチェック回路1―15を有することを特徴とする。これにより、間違いなくガロア体の乗算が行われたことをチェックでき、信頼性のあるRAID6用のデータを生成できるRAID用パリティデータ生成回路を提供する。
なお、本発明におけるRAID6の演算式自体については、以下の演算式(式1および式2)がベースとして用いられているが、これらの式そのものの定義等については非特許文献1などによりすでに既知であると同時に、ガロア体の乗算における演算式そのものは一般的に知られている演算であり、これらの詳細な式の証明や内容については記載しないものとする。
RAID6を実現するための式:
n個のデータ列をD0,D1,D2,…,D(n−1)としたとき、その2つのパリティデータPおよびパリティデータQは、以下の2式を使用する。
[式1]
P=D0+D1+D2+…+D(n−1)
[式2]
Q=D0+2D1+3D2+…+nD(n−1)
なお、上記式1および式2の表記において、乗算はガロア体の乗算を示し、加算はXOR論理による排他論理和を示す。
本発明の回路構成により、ガロア体の乗算を行う高信頼性のRAID6を実現するRAID用パリティデータ生成回路を提供できる。
1つのガロア体乗算表を縦方向の索引と横方向の索引とを同時に行って結果を比較する構成により、ガロア体乗算回路自身のハードウェア故障を発見できる。
また、データおよびそのパリティ,ECC等のチェックコードの変換において、異なる方向から索引した索引テーブル情報を使用する構成により、片方の索引結果が故障した場合でも確実にパリティエラー,ECCエラー等のエラーによってハードウェア故障を発見できる。
さらに、ガロア体の乗算を行った結果をチェックするパリティチェック回路等が故障し、かつ、そのときにガロア体乗算回路自身の故障が発生したとしても、変換する前のチェックコードが伝搬する形となっており、すべての故障要因は生成されたチェックコードに反映しているために出力データおよびチェックコードは完全に保証されており、回路故障によって誤って正しいデータと判断しない回路が得られ、より信頼性の高いRAID用パリティデータ生成回路が提供できる。
また、データが流れる経路においては、ガロア体乗算回路自身はセレクタ1段で実現されているため、非常に高速なデータ転送にも耐えられる。
以下、本発明の実施例について図面を参照して詳しく説明する。
図2は、本発明の実施例1に係るRAID用パリティデータ生成回路13を配設するディスクアレイシステムの構成を示すブロック図である。このディスクアレイシステムは、ホスト1と、システムメモリ2と、ホスト1およびシステムメモリ2が接続されたホスト側システムバス3と、ホスト側システムバス3に接続されたホスト側IO制御回路4と、ホスト側IO制御回路4に接続されたディスクアレイ装置5とから、その主要部が構成されている。
ディスクアレイ装置5は、ホスト側IO制御回路4に接続されたRAIDコントローラ6と、RAIDコントローラ6に接続されたRAID用キャッシュメモリ7と、RAIDコントローラ6が接続されたアレイ側システムバス8と、アレイ側システムバス8に接続されたSCSI(Small Computer System Interface)などのn台のIO制御回路9と、各IO制御回路9にそれぞれ接続されたn台のハードディスク装置10とから構成されている。
RAIDコントローラ6は、ホスト側IO制御回路4に接続された命令処理回路11と、命令処理回路11,アレイ側システムバス8およびRAID用キャッシュメモリ7に接続されたデータ転送制御回路12と、データ転送制御回路12に接続されたRAID用パリティデータ生成回路13とを含んで構成されている。
図1は、本発明の実施例1に係るRAID6を実現するRAID用パリティデータ生成回路13の構成を示す回路ブロック図である。
RAID用パリティデータ生成回路13は、データ1−2,パリティ1−3および乗算係数1−4を入力してガロア体乗算を行うガロア体乗算回路1−21と、ガロア体乗算回路1−21で生成された索引テーブル情報(図3に示すパリティ用縦反転テーブル3−12,データ用縦変換テーブル3−13,データ用横変換テーブル3−14,およびパリティ用横反転テーブル1−15)が正しいものであるかどうかをチェックするテーブルチェック回路1−14と、ガロア体乗算回路1−21で生成されたデータ1−12およびパリティ1−13を用いてパリティをチェックするパリティチェック回路1−15と、ガロア体乗算回路1−21で生成されたデータ1−12およびパリティ1−13に対してXOR論理演算を行う2つのXOR回路1−16と、XOR回路1−16での演算結果をRAID用パリティデータQとして蓄積するバッファ1−17とを含んで構成されている。
ガロア体乗算回路1−21は、ガロア体乗算表1−11と、ガロア体乗算表1−11を乗算係数1−4を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路1−9と、同様にガロア体乗算表1−11を乗算係数1−4を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路1−10と、生成された索引テーブル情報からデータ1−2をRAID用のデータ1−12に変換するための上位データ変換回路1−5および下位データ変換回路1−6と、同様にデータ1−2に対するパリティ1−3をRAID用のデータ1−12に対するパリティ1−13に変換するための上位パリティ反転回路1−7および下位パリティ反転回路1−8とから構成されている。
図3は、ガロア体乗算表1−11と、縦索引テーブル作成回路1−9と、横索引テーブル作成回路1−10との具体的な回路構成を示す。
まず、パリティの算出例について説明する。
各ハードディスク装置10は4ビット単位でブロック分割されているので、各ブロックには0〜15までの16種類のデータが格納可能である。
そこで、パリティの算出は、16種類のデータを扱える拡大ガロア体GF(extension Galois field)(2)を用いて計算する。この拡大ガロア体GF(2)は、定義された種類のデータ内で加算(減算)、乗算および除算を行うことができる。加算(減算)はXOR論理を用いて計算し、乗算は拡大ガロア体GF(2)の乗算結果であるデータ用変換表3−6を用いて計算する。なお、除算はデータ用変換表3−6を逆引きすることにより引用する。
データ用変換表3−6は、ガロア体GF(2)上の4次の規約多項式であるX+X+1を用いて拡大ガロア体GF(2)を計算した表である。
次に、拡大ガロア体GF(2)の簡単な説明およびデータ用変換表3−6の作成例について説明する。
ガロア体GF(2)は、0と1との2種類が元であり、その間で加減乗除を行うことができる。これに対し、拡大ガロア体GF(2)では2m個の元があり、その間で自由に加減乗除を行うことができる。2は、2のm乗を表している。
ところで、拡大ガロア体における4次の乗算について定義する。
ガロア体GF(2)の体となる0,1の2種類の元において、乗算結果であるGF(2)上の4次の規約多項式
+X+1=0
の根を考えると、0,1の何れの元を代入しても根が存在しない。そこで、このような規約多項式の根の1つをαと定義し体を拡大してみる。
その結果、αは、α+α+1=0を満たすので、
α=α+1
の関係式が得られ、αで表わされる4次以上の関係式は全て4次以下に置換することができる。
そこで、16種類のデータをαのn次で考えると、以下に示すような関係式で表すことができ、15種類の関係式以外には現れない。
1 α
2 α
3 α
4 α=α+1
5 α=α+α
6 α=α+α
7 α=α+α=α+α+1
8 α=α+α+α=α+1
9 α=α+α
A α10=α+α=α+α+1
B α11=α+α+α
C α12=α+α+α=α+α+α+1
D α13=α+α+α+α=α+α+1
E α14=α+α+α=α+1
F α15=α+α+1
以上の関係式から、当然αのn次どうしを乗算しても、15種類の何れかの関係式の中に納まることになる。例えば、
α+α14=α21=α=α+α
となり、15種類の中の式αに納まる。この関係式からデータの種類1〜Fで一巡するので、α16=αとなり、1にもどる。
ここで、上記する15種類の関係式につき、1〜Fに対応させることにより、データ用変換表3−6を作成できる。データ用変換表3−6は、αの指数を2進数の桁に対応させて数値化する。なお、データ用変換表3−6は、1〜Fに加えて0を含め、0〜Fの乗算結果を表す。
従って、データ用変換表3−6は、ガロア体GF(2)上の4次の規約多項式X+X+1を用いて、拡大ガロア体GF(2)による乗算結果であるが、以下に述べる合同式についても、特にことわりがない限り、全て拡大ガロア体GF(2)で計算しているものとする。
ガロア体乗算表1−11は、拡大ガロア体GF(2)のガロア体乗算により作成された縦横が対称となるデータ用変換表3−6と、パリティ用変換表3−5および3−7とを有し、ガロア体の乗算係数1−4によって示された1列分または1行分が、セレクタ3−8,3−9,3−10および3−11によりパリティ用縦反転テーブル3−12,データ用縦変換テーブル3−13,データ用横変換テーブル3−14,およびパリティ用横反転テーブル1−15として索引される。
データ用変換表3−6は、その特性から縦方向の索引と横方向の索引とが同じ結果となる表であり、縦索引テーブル作成回路1−9は、データ用変換表3−6からセレクタ3−9によってデータ用縦変換テーブル3−13を生成し、これを上位データ変換回路1−5に転送する。また、横索引テーブル作成回路1−10は、データ用変換表3−6からセレクタ3−10によってデータ用横変換テーブル3−14を生成し、これを下位データ変換回路1−6に転送する。
パリティ用変換表3−5および3−7は、互いに縦と横とを入れ替えた値を持ち、縦索引テーブル作成回路1−9は、パリティ用変換表3−5からセレクタ3−8によってパリティ用縦反転テーブル3−12を生成し、これを下位パリティ反転回路1−8に転送する。また、横索引テーブル作成回路1−10は、パリティ用変換表3−7からセレクタ3−11によってパリティ用横変転テーブル3−15を生成し、これを上位パリティ反転回路1−7に転送する。
図4は、データ1−2の変換を行う上位データ変換回路1−5および下位データ変換回路1−6の回路構成を示す。
上位データ変換回路1−5は、データ1−2に対して上位データ部の変換を行うものであり、データ1−2の上位データ部は4ビット単位の各分解データ4−2〜4−5に分解されてセレクタ4−10〜4−13のセレクト信号となり、縦索引テーブル作成回路1−9によって生成されたデータ用縦変換テーブル3−13を選択することで、ガロア体の乗算係数1−4に対する演算結果が得られる回路構成となっている。
下位データ変換回路1−6も、上位データ変換回路1−5と同様な回路構成であり、データ1−2の下位データ部は4ビット単位の各分解データ4−6〜4−9に分解されてセレクタ4−14〜4−17のセレクト信号となり、横索引テーブル作成回路1−10によって生成されたデータ用横変換テーブル3−14を選択することで、ガロア体の乗算係数1−4に対する演算結果が得られる回路構成となっている。
図5は、上位パリティ反転回路1−7および下位パリティ反転回路1−8の回路構成を示す。
上位パリティ反転回路1−7は、パリティ1−3に対して上位パリティ部の変換を行うものであり、パリティ1−3の上位パリティ部は1ビット単位のパリティビット5−4〜5−5に分解されてXOR回路5−24〜5−25に入力される。一方、データ1−2の上位データ部は4ビット単位の各分解データ4−2〜4−5に分解されてセレクタ5−16〜5−17のセレクト信号となり、横索引テーブル作成回路1−10によって生成されたパリティ用横反転テーブル3−15を選択した結果がXOR回路5−24〜5−25に入力される。そして、XOR回路5−24〜5−25の出力が上位パリティ部の反転した1ビット単位のパリティビット5−30〜5−31となる。
下位パリティ反転回路1−8も、上位パリティ反転回路1−7と同様な回路構成であり、パリティ1−3に対して下位パリティ部の変換を行うものであり、パリティ1−3の下位パリティ部は1ビット単位のパリティビット5−6〜5−7がXOR回路5−26〜5−27に入力される。一方、データ1−2の下位データ部は4ビット単位の各分解データ4−6〜4−9に分解されてセレクタ5−20〜5−23のセレクト信号となり、縦索引テーブル作成回路1−9によって生成されたパリティ用縦反転テーブル3−12を選択した結果がXOR回路5−26〜5−27に入力される。そして、XOR回路5−24〜5−25の出力がパリティ1−3の下位パリティ部の反転した1ビット単位のパリティビット5−32〜5−33となる。
これにより、各分解データ4−2〜4−9が誤ったものであると、そのパリティビット5−30〜5−33も誤ったものになり、パリティチェック時にはエラーが確認される。
図6および図7は、テーブルチェック回路1−14の詳細な回路構成を示す。
図6は、データ用縦変換テーブル3−13とデータ用横変換テーブル3−14とを比較してチェックするデータ変換用テーブルチェック回路6−1と、パリティ用縦反転テーブル3−12とパリティ用横反転テーブル3−15とを比較してチェックするパリティ反転用テーブルチェック回路6−2とを示す。
データ変換用テーブルチェック回路6−1は、縦索引テーブル作成回路1−9で生成されたデータ用縦変換テーブル3−13と横索引テーブル作成回路1−10で生成されたデータ用横変換テーブル3−14との一致を比較回路6−4で検査する構成をとり、パリティ反転用テーブルチェック回路6−2は、縦索引テーブル作成回路1−9で生成されたパリティ用縦反転テーブル3−12と横索引テーブル作成回路1−10で生成されたパリティ用横反転テーブル3−15との一致を比較回路6−7で検査する構成をとる。上記2種類のデータ変換用テーブルチェック回路6−1およびパリティ反転用テーブルチェック回路6−2により、データおよびパリティを変換するときのデータ用縦変換テーブル3−13,データ用横変換テーブル3−14,パリティ用縦反転テーブル3−12,およびパリティ用横反転テーブル3−15そのものが正しいものであるかどうかを検査できる構成となっている。
図7は、データ用縦変換テーブル3−13またはデータ用横変換テーブル3−14を入力して各ビット単位のXOR論理が“0”となることを検査するテーブルゼロチェック回路7−15と、パリティ用縦反転テーブル3−12またはパリティ用横反転テーブル3−15を入力してビット単位のXOR論理が“0”となることを検査するテーブルゼロチェック回路7−16とを示す。
テーブルゼロチェック回路7−15は、縦索引テーブル作成回路1−9および横索引テーブル作成回路1−10で生成されたデータ用縦変換テーブル3−13およびデータ用横変換テーブル3−14の各データをそれぞれビット7−2〜7−5に分解し、XOR回路7−8により同一ビット列のすべてのXOR論理をとることでその結果7−10〜7−13がすべて”0”になることを検査する。
テーブルゼロチェック回路7−16は、縦索引テーブル作成回路1−9および横索引テーブル作成回路1−10で生成されたパリティ用縦反転テーブル3−12またはパリティ用横反転テーブル3−15をビット単位7−7に分解し、XOR回路7−9によりビット列のすべてのXOR論理をとることでその結果7−14が”0”になることを検査する。これにより、ガロア体乗算表1−11自体が正しい値をもっているかどうかを検査できる構成となっている。
次に、このように構成された実施例1に係るRAID用パリティデータ生成回路13の動作について、図1ないし図7を参照しながら説明する。
図1〜図7において、データ32ビット・パリティ4ビットのケースでの動作の説明を行うが、そのビットの数においては一例であり、本発明においてビット数の制限は規定しない。
RAID5およびRAID6を構成する場合、その特性からRAIDのグループを構成するデータ列に対してXOR論理によってRAID用パリティデータを生成する。
このとき、RAID6用のパリティデータを生成する場合は、既述したように2種類のパリティデータPおよびQが必要となり、1つは従来から使用されているRAID5と同等のパリティデータPの生成であり、その生成方法は既知の技術で十分広まっているためにここでは記載せず、RAID6に特化して必要となるパリティデータQの生成について記載する。
なお、RAID6用に特化されるパリティデータQの演算については、前述の式2で示される。
図1において、データ1−2およびパリティ1−3とともに、ガロア体の乗算係数1−4が転送され、ここではデータ1−2は16進数表記で”12345678”という32ビット値を持ち、そのパリティ1−3は”B”という4ビットの奇数パリティの値をもち、このときの乗算係数1−4は”4”として説明する。
これは、式2中の「4D5」項の演算を行おうとしたときのものであり、「D5」が”12345678”という値となるときのガロア体の乗算を説明するものである。
乗算係数1−4が”4”であることから、縦索引テーブル作成回路1−9は、データ用変換表3−6から乗算係数1−4の”4”に該当する列をセレクタ3−9で選択して”048C37BF62EA51D9”の値を持つデータ用縦変換テーブル3−13を生成し、上位データ変換回路1−5へ転送する。これと同時に、縦索引テーブル作成回路1−9は、パリティ用変換表3−5から乗算係数1−4の”4”に該当する列をセレクタ3−8で選択して”0000111111110000”(2進表記)の値を持つパリティ用縦反転テーブル3−12を生成し、下位パリティ反転回路1−8へ転送する。
また、これと同じく、横索引テーブル作成回路1−10は、データ用変換表3−6から乗算係数1−4の”4”に該当する行をセレクタ3−10で選択して”048C37BF62EA51D9”の値を持つデータ用横変換テーブル3−14を生成し、下位データ変換回路1−6へ転送する。これと同時に、横索引テーブル作成回路1−10は、パリティ用変換表3−7から乗算係数1−4の”4”に該当する行をセレクタ3−11で選択して”0000111111110000”(2進表記)の値を持つパリティ用横反転テーブル3−15を生成し、上位パリティ反転回路1−7へ転送する。
これにより、データ用縦変換テーブル3−13およびデータ用横変換テーブル3−14ならびにパリティ用縦反転テーブル3−12およびパリティ用横反転テーブル3−15が生成され、テーブルチェック回路1−14のデータ変換用テーブルチェック回路6−1およびパリティ反転用テーブルチェック回路6−2,ならびにテーブルゼロチェック回路7−15および7−16によって値の正当性が確認される。
テーブルチェック回路1−14では、データ変換用テーブルチェック回路6−1が、縦索引テーブル作成回路1−9で生成されたデータ用縦変換テーブル3−13およびパリティ用縦反転テーブル3−12と、横索引テーブル作成回路1−10で生成されたデータ用横変換テーブル3−14およびパリティ用横反転テーブル3−15とをそれぞれ比較し、一致していない場合はディスクアレイシステムの故障の検出となる。
同じく、テーブルチェック回路1−14では、テーブルゼロチェック回路7−15が、データ用縦変換テーブル3−13およびデータ用横変換テーブル3−14のビット単位のXOR演算結果7−10〜7−13がオールゼロであるかどうかを検査し、ゼロ以外の値になった場合は、これもディスクアレイシステムの故障の検出となる。また、テーブルゼロチェック回路7−16が、パリティ用縦反転テーブル3−12およびパリティ用横反転テーブル3−15のXOR演算結果7−9がゼロであるかどうかを検査し、ゼロ以外の値になった場合は、これもディスクアレイシステムの故障の検出となる。
データ変換用テーブルチェック回路6−1およびパリティ反転用テーブルチェック回路6−2,ならびにテーブルゼロチェック回路7−15および7−16でエラーが検出されない場合は、実際のRAID用パリティデータQの生成となり、データ1−2およびパリティ1−3が上位データ変換回路1−5および下位データ変換回路1−6ならびに上位パリティ反転回路1−7および下位パリティ反転回路1−8に転送される。
上位データ変換回路1−5は、32ビットのデータ1−2の上位16ビット分となる”1234”の値を受け取り、これを4ビット単位の各分解データ4−2〜4−5に分解する。
これらの4ビット単位の各分解データ4−2〜4−5は、各々のセレクタ4−10〜4−13のセレクト信号となり、セレクタ4−10〜4−13は、データ用縦変換テーブル3−13の各値を選択することになる。
値が”1”となる分解データ4−2の場合は、データ用縦変換テーブル3−13において”1”の場所にある”4”が変換後の値となるために、生成されたRAID用パリティデータ4−20は”4”を示す。同様なことを各分解データ4−2〜4−5のすべてに対して行うと、RAID用パリティデータ4−20〜4−23が生成され、値が”48c3”となる。
また、データ1−2の下位16ビット分となる”5678”についても同様であり、こちらは横索引テーブル作成回路1−10で生成されたデータ用横変換テーブル3−14とセレクタ4−14〜4−17とによって変換が行われ、”7BF6”となるRAID用パリティデータ4−24〜4−27が生成され、データ1−2のデータ1−12への変換が修了する。
一方、データ1−2に対する奇数パリティ1−3は、2ビットずつのパリティビット5−4〜5−5およびパリティビット5−6〜5−7に分解されて、上位パリティ反転回路1−7および下位パリティ反転回路1−8でそれぞれ処理される。
上位パリティ反転回路1−7は、パリティ1−3の上位2ビットをさらに1ビットずつに分解し、パリティビット5−4および5−5として保持し、そのパリティビット5−4および5−5に対応した各分解データ4−2〜4−5によってパリティ用横反転テーブル3−15をセレクタ5−16〜5−19で選択し、その値とXOR回路5−24および5−25によってXOR論理をとることによってパリティの変換を行う。1ビット目のパリティビット5−4は、4ビット単位の分解データ4−2と分解データ4−3とのバイトパリティであるため、XOR回路5−24により分解データ4−2の”1”の値による選択結果”0”と、分解データ4−3の”2”の値による選択結果”0”とのすべてのXOR論理がとられるため、”1”XOR”0”XOR”0”の演算により、その結果は”1”の値を持つパリティビット5−30となる。
これをパリティビット5−5に同様に行うことで、パリティビット5−5をRAID用のパリティビット5−31に変換することができる。
下位パリティ反転回路1−8も、上位パリティ反転回路1−7と同様な処理により、パリティビット5−6および5−7をRAID用のパリティビット5−32および5−33に変換することができる。
これらの処理により、”12345678”の値を持つデータ1−2と”F”の値をもつパリティ1−3とは、”4”の値をもつ乗算係数1−4によって変換され、”48C37BF6”の値のデータ1−12とその値”F”のパリティ1−13となり、パリティチェック回路1−15によって正しいものと判断できるデータが生成されることになる。
そして、パリティチェック回路1−15によってパリティチェックされたデータ1−12とパリティ1−13とはバッファ1−17に格納され、このときに、バッファ1−17から前に格納したデータおよびパリティを読み出し、それとのXOR回路1−16によるXOR論理をとってバッファ1−17に書き戻すことで前述の式2の各項の積和を生成し、これらの動作を新しいデータ1−2や新しい乗算係数1−4にも適用してそれを繰り返すことで、式2におけるRAID用パリティデータQの生成が実現できる。
ここで、配線切断などにより、以下のハードウェアに故障があった場合の動作について説明する。
1)ガロア体乗算表1−11自体や、関連する回路が故障し、正しい変換表3−5〜3−7が索引できない場合。
1)の場合には、ガロア体乗算表1−11のある一部が電気的ショート等によって故障したようなケースや正しくテーブル3−12〜3−15の索引ができないケースなどであり、これには、データ変換用テーブルチェック回路6−1およびパリティ反転用テーブルチェック回路6−2や、テーブルゼロチェック回路7−15および7−16によって対応を行う。
これは、乗算係数1−4が”4”を示すケースにおいてガロア体乗算表1−11の索引を行った結果、データ用縦変換テーブル3−13が”048C37BF62EA51D9”と正しい値を示し、もう片方のデータ用横変換テーブル3−14が故障による影響を受けて”048C37BF62EA51D0”という、最後の4ビットが”9”から”0”に化けた数字を索引すれば、データ変換用テーブルチェック回路6−1よって比較エラーが検出される。
また、データ用変換表3−6を同じ乗算係数1−4で横方向および縦方向から同時に索引することから、必ず1つは同じ項(対角成分)を参照してしまう特性があるため、データ用縦変換テーブル3−13が値”048C07BF62EA51D9”、データ用横変換テーブル3−14も同じ値”048C07BF62EA51D9”と、同じ”3”を索引しなければならない項が”0”に化けたように故障したときには、データ変換用テーブルチェック回路6−1では検出できないが、テーブルゼロチェック回路7−15ではチェックできる。
これは、ビット単位によって演算を行った結果であり、その結果は”0011”(2進表記)を示し、”0000”を示さないことで発見できる。
2)パリティチェック回路1−15が故障により機能しない場合。
2)の場合は、パリティチェック回路1−15などのエラー検出回路が故障してエラーが発見できない場合であり、これは本実施例1に係るRAID用パリティデータ生成回路13自体ではエラーは発見できない。
これについては、上位データ変換回路1−5および下位データ変換回路1−6,ならびに上位パリティ反転回路1−7および下位パリティ反転回路1−8において、データ1−2の上位データ部とパリティ1−3の下位パリティ部とを縦索引テーブル作成回路1−6の結果で変換し、データ1−2の下位データ部とパリティ1−3の上位パリティ部とを横索引テーブル作成回路1−10の結果で変換する回路構成をとり、これらの変換回路の後にあるパリティチェック回路1−15が故障した場合においても、必ずRAID用パリティデータQ自身がパリティエラーとなり、誤ったデータと誤ったパリティとによって正しいデータであると判断できない回路が実現できるため、RAID用パリティデータQを扱う転送先のデバイスによりエラーの判断が可能となり、信頼性の高いディスアレイ装置5を提供することができる。
このように、本実施例1によれば、ガロア体乗算回路1−21自身のハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表1−11を縦索引テーブル1−9により縦方向に索引し、横索引テーブル1−10により横方向に索引し、索引結果をテーブルチェック回路1−14によりチェックするようにしたからである。
また、データおよびそのパリティの変換において、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表1−11を縦索引テーブル1−9により縦方向に索引し、横索引テーブル1−10により横方向に索引し、縦方向の索引結果を用いて上位データ変換および下位パリティ変換を行い、横方向の索引結果を用いて下位データ変換および上位パリティ変換を行い、パリティチェック回路1−15によりパリティエラーをチェックするようにしたからである。
さらに、回路故障によって誤って正しいデータと判断しない回路が得られ、より信頼性の高いRAID用パリティデータ生成回路13が提供できるという効果がある。その理由は、ガロア体の乗算を行った結果をチェックするパリティチェック回路1−15等が故障し、かつ、そのときにガロア体乗算回路1−21自身の故障が発生したとしても、変換する前のパリティが伝搬する形となっており、すべての故障要因が生成されたパリティに反映しているためである。
図8は、本発明の実施例2に係るRAID用パリティデータ生成回路13の構成を示すブロック図である。実施例2に係るRAID用パリティデータ生成回路13は、その基本的構成は図1に示した実施例1に係るRAID用パリティデータ生成回路13と同様であるが、図8におけるガロア体乗算回路8−21が、データ変換回路部分およびパリティ反転回路部分を、データ1−2の上位データ部/下位データ部に分けたものではなく、奇数データ位置/偶数データ位置に分けた構造を示す。
詳しくは、ガロア体乗算回路8−21は、ガロア体乗算表1−11と、ガロア体乗算表1−11を乗算係数1−4を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路1−9と、同様にガロア体乗算表1−11を乗算係数1−4を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路1−10と、生成された索引テーブル情報からデータ1−2をRAID用のデータ1−12に変換するための偶数データ変換回路8−7および奇数データ変換回路8−8と、同様にデータ1−2に対するパリティ1−3をRAID用のデータ1−12に対するパリティ1−13に変換するための偶数パリティ反転回路8−9および奇数パリティ反転回路8−10とから構成されている。
図9は、偶数データ変換回路8−7および奇数データ変換回路8−8を示す。偶数データ変換回路8−7および奇数データ変換回路8−8においては、図4の上位データ変換回路1−5および下位データ変換回路1−6と同様な回路構成ではあるが、同じデータ用縦変換テーブル3−13およびデータ用横変換テーブル3−14で変換するデータの位置が異なるだけとなる。
偶数データ変換回路8−7は、32ビットのデータ1−2の4ビット単位の各分解データ4−2〜4−9から偶数データ位置となる”1”,”3”,”5”,”7”の各値を受け取り、各セレクタ9−14〜9−17のセレクト信号とし、セレクタ9−14〜9−17は、データ用縦変換テーブル3−13の各値を選択することになる。これにより、RAID用パリティデータ4−20,4−22,4−24,4−26として、値がそれぞれ”4”,”C”,”7”,”F”となる。
また、奇数データ変換回路8−8は、32ビットのデータ1−2の4ビット単位の各分解データ4−2〜4−9から奇数データ位置となる”2”,”4”,”6”,”8”の各値を受け取り、各セレクタ9−10〜9−13のセレクト信号とし、セレクタ9−10〜9−13は、データ用横変換テーブル3−14の各値を選択することになる。これにより、RAID用パリティデータ4−21,4−23,4−25,4−27として、値がそれぞれ”8”,”3”,”B”,”6”となる。
図10は、偶数パリティ反転回路8−9および奇数パリティ反転回路8−10を示す。偶数パリティ反転回路8−9および奇数パリティ反転回路8−10も、図5の上位パリティ反転回路1−7および下位パリティ反転回路1−8と同様な回路構成であるが、同じ縦変換テーブル3−12および横変換テーブル3−15で変換するデータの位置が異なるだけとなる。
偶数パリティ反転回路8−9は、パリティ1−3の上位2ビットをさらに1ビットずつに分解し、パリティビット5−4および5−5として保持し、そのパリティビット5−4および5−5に対応した各分解データ4−2〜4−5によってパリティ用横反転テーブル3−15およびパリティ用縦反転テーブル3−12をセレクタ10−14〜10−15および10−16〜10−17で選択し、その値とXOR回路5−24および5−25によってXOR論理をとることによってパリティの変換を行う。1ビット目のパリティビット5−4は、4ビット単位の分解データ4−2と分解データ4−3とのバイトパリティであるため、XOR回路5−24により分解データ4−2の”1”の値による選択結果”0”と、分解データ4−3の”2”の値による選択結果”0”とのすべてのXOR論理がとられるため、”1”XOR”0”XOR”0”の演算により、その結果は”1”の値を持つパリティビット5−30となる。同様に、2ビット目のパリティビット5−5は、”0”の値を持つパリティビット5−31となる。
また、奇数パリティ反転回路8−10は、パリティ1−3の下位2ビットをさらに1ビットずつに分解し、パリティビット5−6および5−7として保持し、そのパリティビット5−6および5−7に対応した各分解データ4−6〜4−9によってパリティ用横反転テーブル3−15およびパリティ用縦反転テーブル3−12をセレクタ10−10〜10−11および10−14〜10−15で選択し、その値とXOR回路5−26および5−27によってXOR論理をとることによってパリティの変換を行う。3ビット目のパリティビット5−6は、4ビット単位の分解データ4−6と分解データ4−7とのバイトパリティであるため、XOR回路5−26により分解データ4−6の”5”の値による選択結果”0”と、分解データ4−7の”6”の値による選択結果”0”とのすべてのXOR論理がとられるため、”1”XOR”0”XOR”0”の演算により、その結果は”1”の値を持つパリティビット5−32となる。同様に、4ビット目のパリティビット5−7は、”1”の値を持つパリティビット5−33となる。
このように構成された実施例2に係るRAID用パリティデータ生成回路13でも、実施例1に係るRAID用パリティデータ生成回路13と同様の作用および効果が得られることは言うまでもないので、その詳しい動作の説明を省略する。
特に、本実施例2によれば、実施例1と異なるデータおよびそのパリティの変換でも、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表1−11を縦索引テーブル1−9により縦方向に索引し、横索引テーブル1−10により横方向に索引し、縦方向の索引結果を用いて偶数データ変換および奇数パリティ変換を行い、横方向の索引結果を用いて奇数データ変換および偶数パリティ変換を行い、パリティチェック回路1−15によりパリティエラーをチェックするようにしたからである。
図11は、本発明の実施例3に係るRAID用パリティデータ生成回路13の回路構成を示すブロック図である。実施例3に係るRAID用パリティデータ生成回路13は、その基本的構成は図1に示した実施例1に係るRAID用パリティデータ生成回路13と同様であるが、図11においては、チェックコードをパリティではなくECC11−3としたときの回路構成である。詳しくは、RAID用パリティデータ生成回路13は、データ1−2,ECC11−3および乗算係数1−4を入力してガロア体乗算を行うガロア体乗算回路11−21と、ガロア体乗算回路11−21で生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路11−14と、ガロア体乗算回路11−21で生成されたデータ1−12およびECC11−13を用いてECCをチェックするECCチェック回路11−15と、ガロア体乗算回路11−21で生成されたデータ1−12およびECC11−13に対してXOR論理演算を行う2つのXOR回路1−16と、XOR回路1−16での演算結果をRAID用パリティデータQとして蓄積するバッファ1−17とを含んで構成されている。
ガロア体乗算回路11−21は、ガロア体乗算表1−11と、ガロア体乗算表1−11を乗算係数1−4を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路1−9と、同様にガロア体乗算表1−11を乗算係数1−4を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路1−10と、生成された索引テーブル情報からデータ1−2をRAID用のデータ1−12に変換するための上位データ変換回路1−5および下位データ変換回路1−6と、同様にデータ1−2に対するECC11−3をRAID用のデータ1−12に対するECC11−13に変換するためのECC変換回路11−7と、ECC変換表11−22と、ECC変換表11−22を乗算係数1−4を用いて索引してECC用変換テーブルを生成するECC索引テーブル作成回路11−23とから構成されている。
図12および図13は、ECC変換表11−22中のすべての変換表12−0〜12−15およびこれらから索引されたすべてのR0〜R15の変換テーブル14−0〜14−15を例示する図である。各変換テーブル14−0〜14−15は、値”5”の乗算係数1−4をセレクト信号としてセレクタ13−0〜13−15によって各変換表12−0〜12−15から索引される。なお、R0〜R15については、図14で後述する。
図14は、ECC変換回路11−7の回路構成を示す。ECC変換回路11−7は、64ビットのデータ1−2を4ビット単位に分解したR0〜R15の分解データ15−0〜15−15をセレクト信号としてR0〜R15の変換テーブル14−0〜14−15を選択するセレクタ16−0〜16−15と、セレクタ16−0〜16−15の選択結果をXOR論理するXOR回路14−16と、XOR回路14−16の出力であるECC反転コード14−17とECC11−3とをXOR論理してRAID用のデータ1−12に対するECC11−13を出力するXOR回路14−18とから構成されている。
ECC変換回路11−7の回路構成は、図5の上位パリティ反転回路1−7および下位パリティ反転回路1−8と同様なものであるが、異なる点としてはECCの特性により、ビット毎に分解したR0〜R15のデータ15−0〜15−15に対し、1つ1つ対応した変換テーブル14−0〜14−15が必要となることである。
ECC変換回路11−7は、データ1−2に付随するECC11−13の変換においては、ECC11−13が変換後のECC反転コード14−17を生成するための回路であり、データ1−2を4ビット単位のR0〜R15のデータ15−0〜15−15に分解し、それぞれのデータ位置に対応する変換テーブル14−0〜14−15を使う回路となっていることである。
そして、それぞれの変換テーブル14−0〜14−15をデータ15−0〜15−15をセレクト信号とするセレクタ16−0〜16−15によって変換を行い、すべてのセレクタ16−0〜16−15の出力結果をXOR回路14−16によってXOR論理をとることで、ECC反転コード14−17が得られる。
ECC反転コード14−17を転送されたECC11−3とXOR論理をとることで変換されたECC11−13が生成される。
なお、データ1−2からXOR論理等による一定の演算によって導かれるチェックコードを使用している限り、そのチェックコードの論理に対応するガロア体乗算表1−11を用意することにより、パリティやECC以外のいかなるチェックコードでも実現が可能である。
図15は、変換テーブル14−0〜14−15についてのテーブルチェック回路11−14を示す。テーブルチェック回路11−14は、ECC索引テーブル作成回路11−23で生成されたR0〜R15の変換テーブル14−0〜14−15の各データをそれぞれビット16−0−16〜15に分解し、XOR回路17−0〜17−15により同一ビット列のすべてのXOR論理をとることでその結果18−0〜18−15がすべて”0”になることを検査する。
なお、上位データ変換回路1−5および下位データ変換回路1−6,ならびに縦索引テーブル作成回路1−9および横索引テーブル作成回路1−10については、図1に示した実施例1に係るRAID用パリティデータ生成回路13と同等であるため、ここでは説明を省くものとする。
次に、このように構成された実施例3に係るRAID用パリティデータ生成回路13の動作について説明する。
データ1−2に対するチェックコードとして存在するECC11−3を変換するためには、新しくECC変換表11−22と、ECC索引テーブル作成回路11−23とが必要となり、そのECC索引テーブル作成回路11−23で生成された索引テーブル情報から新しいECC11−13を生成するためのECC変換回路11−7が必要となる。
ECC変換表11−22は、データ1−2を4ビット単位で分解した数必要となり、データ1−2を64ビットと想定した場合には、ECC変換表11−22は、図12および図13に記載したように、16枚の変換表12−0〜12−15が用意される。
これらの変換表12−0〜12−15は、すべて図11におけるガロア体の乗算係数1−4をセレクト信号としてセレクタ13−0〜13−15によって選択され、R0〜R15までの変換テーブル14−0〜14−15が作成される。
そして、これらのECC索引テーブル作成回路11−23によって作成された変換テーブル14−0〜14−15が、ECC変換回路11−7に転送され、ここでECC11−3がECC11−13に変換される。
変換手順としては、データ1−2を4ビット単位に分解し、それぞれをR0〜R15までのデータ15−0〜15−15と定義する。
そして、それぞれのR0〜R15のデータ15−0〜15−15は、対応する変換テーブル14−0〜14−15を選択するセレクタ16−0〜16−15に入力され、変換テーブル14−0〜14−15から該当するECC変換コードを抜き出し、これらのECC変換コードをすべてXOR回路14−6によってXOR論理をとり、その結果をECC反転コード14−17として生成する。
次に、XOR回路14−18によりECC反転コード14−17を変換前のECC11−3に対してビット単位のXOR論理をとることにより、ガロア体の乗算が行われたデータ1−12に対するECC11−13が生成される。
実際の値を用いて説明する。
図11におけるデータ1−2を64ビットのデータとし、16進数で”0000111122223333”とすると、以下の式1−1により、D(19),D(23),D(27),D(31),D(34),D(38),D(42),D(46),D(50),D(51),D(54),D(55),D(58),D(59),D(62),D(63)の各ビットが”1”となるため、そのECC1−3は”17”となる。
[式1−1]
E(0)=D(0)+D(1)+D(2)+D(3)+D(4)+D(5)+D(6)+D(7)+D(10)+D(12)+D(20)+D(21)+D(22)+D(23)+D(24)+D(25)+D(26)+D(27)+D(32)+D(36)+D(40)+D(44)+D(52)+D(54)+D(58)+D(60)
E(1)=D(0)+D(1)+D(2)+D(3)+D(4)+D(7)+D(10)+D(13)+D(28)+D(29)+D(30)+D(31)+D(33)+D(37)+D(41)+D(45)+D(48)+D(49)+D(50)+D(51)+D(52)+D(53)+D(54)+D(55)+D(58)+D(61)
E(2)=D(4)+D(6)+D(7)+D(10)+D(14)+D(16)+D(17)+D(18)+D(19)+D(20)+D(21)+D(22)+D(23)+D(34)+D(38)+D(42)+D(46)+D(48)+D(49)+D(50)+D(51)+D(52)+D(55)+D(58)+D(59)+D(62)
E(3)=D(4)+D(6)+D(10)+D(11)+D(15)+D(16)+D(17)+D(18)+D(19)+D(24)+D(25)+D(26)+D(27)+D(28)+D(29)+D(30)+D(31)+D(35)+D(39)+D(43)+D(47)+D(52)+D(54)+D(55)+D(58)+D(63)
E(4)=D(0)+D(5)+D(8)+D(9)+D(11)+D(16)+D(20)+D(24)+D(28)+D(32)+D(33)+D(34)+D(35)+D(36)+D(37)+D(38)+D(39)+D(44)+D(45)+D(46)+D(47)+D(48)+D(52)+D(53)+D(56)+D(59)
E(5)=D(1)+D(4)+D(5)+D(9)+D(11)+D(12)+D(13)+D(14)+D(15)+D(17)+D(21)+D(25)+D(29)+D(40)+D(41)+D(42)+D(43)+D(44)+D(45)+D(46)+D(47)+D(49)+D(53)+D(56)+D(57)+D(59)
E(6)=D(2)+D(5)+D(8)+D(9)+D(10)+D(11)+D(12)+D(13)+D(14)+D(15)+D(18)+D(22)+D(26)+D(30)+D(32)+D(33)+D(34)+D(35)+D(50)+D(53)+D(57)+D(59)+D(60)+D(61)+D(62)+D(63)
E(7)=D(3)+D(5)+D(8)+D(11)+D(19)+D(23)+D(27)+D(31)+D(36)+D(37)+D(38)+D(39)+D(40)+D(41)+D(42)+D(43)+D(51)+D(53)+D(56)+D(57)+D(58)+D(59)+D(60)+D(61)+D(62)+D(63)
このとき、乗算係数1−4が”5”であるとすると、ECC索引テーブル作成回路11−23は、図12および図13のすべての変換表12−0〜12−15から、該当するテーブルを抜き出し、これを変換テーブル14−0〜14−15としてECC変換回路11−7に転送する。
ここで、データ1−2は”0000111122223333”であり、ECC11−3は”17”である。
すると、各4ビット単位に分解することで、R0〜R3には”0”が入り、R4〜R7には”1”が入り、R8〜R11には”2”が入り、R12〜R15には”3”が入ることで、各変換テーブル14−0〜14−15を選択するセレクタ13−0〜13−15で選択することで、以下のような変換コードが得られる。
R0の変換コード=”00”
R1の変換コード=”00”
R2の変換コード=”00”
R3の変換コード=”00”
R4の変換コード=”34”
R5の変換コード=”a4”
R6の変換コード=”94”
R7の変換コード=”54”
R8の変換コード=”8a”
R9の変換コード=”89”
R10の変換コード=”85”
R11の変換コード=”8c”
R12の変換コード=”0c”
R13の変換コード=”b7”
R14の変換コード=”0a”
R15の変換コード=”c0”
これをすべてXOR回路14−16によってXOR論理を実行すると、ECC反転コード14−17が生成され、”2B”というコードが出力される。
ECC反転コード14−17は、ガロア体の乗算前のECC11−3に対してXOR回路14−8によってXOR論理が実行され、最終的なECC11−13は、”17”と”2B”とのXOR論理により”3C”のコードとなる。
これは、データ1−2の”0000111122223333”に対する乗算係数”5”のガロア体の乗算結果である”00005555aaaaffff”に対するECCと一致し、正しいECCであることを示す。
また、同じデータ1−2を使用し、どのような値でも演算結果がオールゼロとなるガロア体の乗算係数”0”を設定してみると、
R0の変換コード=”00”
R1の変換コード=”00”
R2の変換コード=”00”
R3の変換コード=”00”
R4の変換コード=”31”
R5の変換コード=”a1”
R6の変換コード=”91”
R7の変換コード=”51”
R8の変換コード=”2a”
R9の変換コード=”29”
R10の変換コード=”25”
R11の変換コード=”2c”
R12の変換コード=”03”
R13の変換コード=”a0”
R14の変換コード=”de”
R15の変換コード=”30”
となることから、変換コードは”17”が得られる。
これは、ECC11−3と同じ値になったためにそのXOR論理をとることで出力されるECC11−13もゼロとなり、正しいECCが付けられていることを示す。
さらに、これらで使用された図12および図13の変換テーブル14−0〜14−15についてのテーブルチェック回路11−14は、図11で示されたテーブルチェック回路11−14と同等のことを行うことができ、すべてのビット単位のXOR論理をとることで、その出力18−0〜18−15がゼロとなることで正しいテーブル索引が行われたことをチェックする回路となる。
ここで、使用しているECCについて説明する。
まず、ECC自体は目的により様々なものがあり、今回は以下のようなものとして64ビットのデータに対して8ビットのECCを生成する論理として説明を行うが、ECCがデータのビットからXOR論理で演算されるコードであれば、どのようなコードでも対応が可能である。
[式2−1]
E(0)=D(0)+D(1)+D(2)+D(3)+D(4)+D(5)+D(6)+D(7)+D(10)+D(12)+D(20)+D(21)+D(22)+D(23)+D(24)+D(25)+D(26)+D(27)+D(32)+D(36)+D(40)+D(44)+D(52)+D(54)+D(58)+D(60)
E(1)=D(0)+D(1)+D(2)+D(3)+D(4)+D(7)+D(10)+D(13)+D(28)+D(29)+D(30)+D(31)+D(33)+D(37)+D(41)+D(45)+D(48)+D(49)+D(50)+D(51)+D(52)+D(53)+D(54)+D(55)+D(58)+D(61)
E(2)=D(4)+D(6)+D(7)+D(10)+D(14)+D(16)+D(17)+D(18)+D(19)+D(20)+D(21)+D(22)+D(23)+D(34)+D(38)+D(42)+D(46)+D(48)+D(49)+D(50)+D(51)+D(52)+D(55)+D(58)+D(59)+D(62)
E(3)=D(4)+D(6)+D(10)+D(11)+D(15)+D(16)+D(17)+D(18)+D(19)+D(24)+D(25)+D(26)+D(27)+D(28)+D(29)+D(30)+D(31)+D(35)+D(39)+D(43)+D(47)+D(52)+D(54)+D(55)+D(58)+D(63)
E(4)=D(0)+D(5)+D(8)+D(9)+D(11)+D(16)+D(20)+D(24)+D(28)+D(32)+D(33)+D(34)+D(35)+D(36)+D(37)+D(38)+D(39)+D(44)+D(45)+D(46)+D(47)+D(48)+D(52)+D(53)+D(56)+D(59)
E(5)=D(1)+D(4)+D(5)+D(9)+D(11)+D(12)+D(13)+D(14)+D(15)+D(17)+D(21)+D(25)+D(29)+D(40)+D(41)+D(42)+D(43)+D(44)+D(45)+D(46)+D(47)+D(49)+D(53)+D(56)+D(57)+D(59)
E(6)=D(2)+D(5)+D(8)+D(9)+D(10)+D(11)+D(12)+D(13)+D(14)+D(15)+D(18)+D(22)+D(26)+D(30)+D(32)+D(33)+D(34)+D(35)+D(50)+D(53)+D(57)+D(59)+D(60)+D(61)+D(62)+D(63)
E(7)=D(3)+D(5)+D(8)+D(11)+D(19)+D(23)+D(27)+D(31)+D(36)+D(37)+D(38)+D(39)+D(40)+D(41)+D(42)+D(43)+D(51)+D(53)+D(56)+D(57)+D(58)+D(59)+D(60)+D(61)+D(62)+D(63)
ただし、E(0−7)は、生成されるECC、D(0−63)は64ビットのデータである。
式2−1は、すべての演算がXOR論理であるため、以下のような式2−2に変形できる。
[式2−2]
E(i)=R0(i)+R1(i)+R2(i)+R3(i)+R4(i)+R5(i)+R6(i)+R7(i)+R8(i)+R9(i)+R10(i)+R11(i)+R12(i)+R13(i)+R14(i)+R15(i)
ただし、iは、ECCのビット幅を示し、0〜7の8ビットを示す。また、R0は式2−1においてD(0)〜D(3)のデータで生成される部分、R1は式2−1においてD(4)〜D(7)のデータで生成される部分、R2は式2−1においてD(8)〜D(11)のデータで生成される部分、…、R14は式2−1においてD(56)〜D(59)のデータで生成される部分、R15は式2−1においてD(60)〜D(63)のデータで生成される部分を示す。
これにより、R0(i)〜R15(i)については、次式となる。
[式3−1]
R0(0)=D(0)+D(1)+D(2)+D(3)
R0(1)=D(0)+D(1)+D(2)+D(3)
R0(2)=0
R0(3)=0
R0(4)=D(0)
R0(5)=D(1)
R0(6)=D(2)
R0(7)=D(3)
[式3−2]
R1(0)=D(4)+D(5)+D(6)+D(7)
R1(1)=D(4)+D(7)
R1(2)=D(4)+D(6)+D(7)
R1(3)=D(4)+D(6)
R1(4)=D(5)
R1(5)=D(4)+D(5)
R1(6)=D(5)
R1(7)=D(5)
[式3−3]
R2(0)=D(10)
R2(1)=D(10)
R2(2)=D(10)
R2(3)=D(10)+D(11)
R2(4)=D(8)+D(9)+D(11)
R2(5)=D(9)+D(11)
R2(6)=D(8)+D(9)+D(10)+D(11)
R2(7)=D(8)+D(11)
[式3−4]
R3(0)=D(12)
R3(1)=D(13)
R3(2)=D(14)
R3(3)=D(15)
R3(4)=0
R3(5)=D(12)+D(13)+D(14)+D(15)
R3(6)=D(12)+D(13)+D(14)+D(15)
R3(7)=0
[式3−5]
R4(0)=0
R4(1)=0
R4(2)=D(16)+D(17)+D(18)+D(19)
R4(3)=D(16)+D(17)+D(18)+D(19)
R4(4)=D(16)
R4(5)=D(17)
R4(6)=D(18)
R4(7)=D(19)
[式3−6]
R5(0)=D(20)+D(21)+D(22)+D(23)
R5(1)=0
R5(2)=D(20)+D(21)+D(22)+D(23)
R5(3)=0
R5(4)=D(20)
R5(5)=D(21)
R5(6)=D(22)
R5(7)=D(23)
[式3−7]
R6(0)=D(24)+D(25)+D(26)+D(27)
R6(1)=0
R6(2)=0
R6(3)=D(24)+D(25)+D(26)+D(27)
R6(4)=D(24)
R6(5)=D(25)
R6(6)=D(26)
R6(7)=D(27)
[式3−8]
R7(0)=0
R7(1)=D(28)+D(29)+D(30)+D(31)
R7(2)=0
R7(3)=D(28)+D(29)+D(30)+D(31)
R7(4)=D(28)
R7(5)=D(29)
R7(6)=D(30)
R7(7)=D(31)
[式3−9]
R8(0)=D(32)
R8(1)=D(33)
R8(2)=D(34)
R8(3)=D(35)
R8(4)=D(32)+D(33)+D(34)+D(35)
R8(5)=0
R8(6)=D(32)+D(33)+D(34)+D(35)
R8(7)=0
[式3−10]
R9(0)=D(36)
R9(1)=D(37)
R9(2)=D(38)
R9(3)=D(39)
R9(4)=D(36)+D(37)+D(38)+D(39)
R9(5)=0
R9(6)=0
R9(7)=D(36)+D(37)+D(38)+D(39)
[式3−11]
R10(0)=D(40)
R10(1)=D(41)
R10(2)=D(42)
R10(3)=D(43)
R10(4)=0
R10(5)=D(40)+D(41)+D(42)+D(43)
R10(6)=0
R10(7)=D(40)+D(41)+D(42)+D(43)
[式3−12]
R11(0)=D(44)
R11(1)=D(45)
R11(2)=D(46)
R11(3)=D(47)
R11(4)=D(44)+D(45)+D(46)+D(47)
R11(5)=D(44)+D(45)+D(46)+D(47)
R11(6)=0
R11(7)=0
[式3−13]
R12(0)=0
R12(1)=D(48)+D(49)+D(50)+D(51)
R12(2)=D(48)+D(49)+D(50)+D(51)
R12(3)=0
R12(4)=D(48)
R12(5)=D(49)
R12(6)=D(50)
R12(7)=D(51)
[式3−14]
R13(0)=D(54)
R13(1)=D(52)+D(53)+D(54)+D(55)
R13(2)=D(52)+D(55)
R13(3)=D(52)+D(54)+D(55)
R13(4)=D(52)+D(53)
R13(5)=D(53)
R13(6)=D(53)
R13(7)=D(53)
[式3−15]
R14(0)=D(58)
R14(1)=D(58)
R14(2)=D(58)+D(59)
R14(3)=D(58)
R14(4)=D(59)
R14(5)=D(56)+D(57)+D(59)
R14(6)=D(57)+D(59)
R14(7)=D(56)+D(57)+D(58)+D(59)
[式3−16]
R15(0)=D(60)
R15(1)=D(61)
R15(2)=D(62)
R15(3)=D(63)
R15(4)=0
R15(5)=0
R15(6)=D(60)+D(61)+D(62)+D(63)
R15(7)=D(60)+D(61)+D(62)+D(63)
ここで、式3−1〜3−16で示されたR0(i)〜R15(i)については、ガロア体乗算回路11−21により値が変更されたときに影響を受ける単位にまとめられたものとなるため、これらのR0(i)〜R15(i)の単位でガロア体の乗算時のECC変換を行えばよい。
以下に、R0(i)に関する変換テーブル作成方法を示す。
式3−1において、D(0)〜D(3)が16進数で”0”〜”F”の値を示すため、D(0)〜D(3)とR(0)〜R(7)との値の関係は、以下の表になる。
Figure 2005149224
ここで、表1は、データに対するECCの「コード表」であるため、これを「コード変換表」に変更する。
元々のデータをD(0−3)としたときの式3−1の結果をR0(0−7)とし、新しいデータD’(0−3)に対する式3−1の結果をR0’(0−7)とした場合、以下の式が成り立つようにする。
[式4]
R0'(0-7)=R(0-7)+S(0-7)
ここでのS(0−7)をコード変換値と呼ぶこととし、元々のECCR0(0−7)に対してXOR論理によって値を加えると、新しいECCR0’(0−7)を生成できるためのコードとなり、式4におけるS(0−7)を求めると、以下になる。
[式5]
S(0-7)=R(0-7)+R0'(0-7)
よって、変換コードは、元々のECCR0(0−7)と、新しいECCR0’(0−7)とをXOR論理によって求めることができる。その表を作成すると、以下のような表となる。
Figure 2005149224
このとき、ガロア体乗算回路11−21によって、データは、以下のように変換されることが明白となっている。
Figure 2005149224
ここで、表2と表3との関係を併せることで、ガロア体の乗算時におけるECC変換表が作成可能となる。
例をあげると、以下のようになる。
入力データが”2”、乗算係数が”1”であるとき、表3により乗算結果は”2”になる。このとき、ECCは”c2”から”c2”に変換する必要があるため、変換コードは表2により”00”となる。
入力データが”2”、乗算係数が”2”であるとき、表3により演算結果は”4”になる。このとき、ECCは”c2”から”c4”に変換する必要があるため、変換コードは表2により”06”となる。
入力データが”2”、乗算係数が”3”であるとき、表3により演算結果は”6”になる。このとき、ECCは”c2”から”06”に変換する必要があるため、変換コードは表2により”c4”となる。
これらを関係を、”0”〜”f”までのすべての入力データと、”0”〜”f”のすべてのガロア体の乗算係数1−4についてR0の変換コードを生成すると、以下のような表となり、これがガロア体の乗算時におけるECC変換コードとなる。
Figure 2005149224
表4−1については、式3−1のR0(0−7)が元となり生成されているECC変換表であるが、同様に式3−2から式3−16までのR1〜R15のECC変換表も求めることができ、これらについての演算結果は、以下になる。
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
Figure 2005149224
本実施例3によれば、実施例1および実施例2とは異なるデータおよびそのECCの変換でも、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表1−11を縦索引テーブル1−9により縦方向に索引し、横索引テーブル1−10により横方向に索引し、ECC変換表11−22をECC索引テーブル作成回路11−23により索引し、縦方向の索引結果を用いて上位データ変換回路1−5により上位データ変換を行い、横方向の索引結果を用いて下位データ変換回路1−6により下位データ変換を行い、ECC変換回路11−7によりECC変換を行い、ECCチェック回路11−15によりECCエラーをチェックするようにしたからである。
本発明の実施例1に係るRAID用パリティデータ生成回路の構成を示す回路ブロック図である。 本発明のRAID用パリティデータ生成回路が配設されるディスクアレイシステムの構成を示す回路ブロック図である。 図1中のガロア体乗算表ならびに縦索引テーブル作成回路および横索引テーブル作成回路の詳細を示す図である。 図1中の上位データ変換回路および下位データ変換回路の詳細を示す図である。 図1中の上位パリティ反転回路および下位パリティ反転回路の詳細を示す図である。 図1中のテーブルチェック回路におけるデータ変換用テーブルチェック回路およびパリティ反転用テーブルチェック回路の詳細を示す図である。 図1中のテーブルチェック回路におけるテーブルゼロチェック回路の詳細を示す図である。 本発明の実施例2に係るRAID用パリティデータ生成回路の構成を示す回路ブロック図である。 図8中の偶数データ変換回路および奇数データ変換回路の詳細を示す図である。 図8中の偶数パリティ反転回路および奇数パリティ反転回路の詳細を示す図である。 本発明の実施例3に係るチェックコードをECCで行うときのRAID用パリティデータ生成回路の構成を示す回路ブロック図である。 図11中の索引テーブル作成回路の詳細を示す図である。 図11中の索引テーブル作成回路の詳細を示す図である。 図11中のECC変換回路の詳細を示す図である。 図11中のテーブルチェック回路の詳細を示す図である。 従来の技術でのRAID用パリティデータの生成を行う回路構成を示す図である。
符号の説明
1 ホスト
2 システムメモリ
3 ホスト側システムバス
4 ホスト側IO制御装置
5 ディスクアレイ装置
6 RAIDコントローラ
7 RAID用キャッシュメモリ
8 アレイ側システムバス
9 IO制御回路
10 ハードディスク装置
11 命令処理回路
12 データ転送制御回路
13 RAID用パリティデータ生成回路
1−1 転送データ
1−2 データ
1−3 パリティ
1−4 乗算係数
1−5 上位データ変換回路
1−6 下位データ変換回路
1−7 下位パリティ反転回路
1−8 上位パリティ反転回路
1−9 縦索引テーブル作成回路
1−10 横索引テーブル作成回路
1−11 ガロア体乗算表
1−12 データ
1−13 パリティ
1−14 テーブルチェック回路
1−15 パリティチェック回路
1−16 XOR回路
1−17 バッファ
1−18 RAID用パリティデータ
1−19 パリティ
3−5 パリティ用変換表
3−6 データ用変換表
3−7 パリティ用変換表
3−8〜3−11 セレクタ
3−12 パリティ用縦反転テーブル
3−13 データ用縦変換テーブル
3−14 データ用横変換テーブル
3−15 パリティ用横反転テーブル
4−2〜4−9 データ
4−10〜4−17 セレクタ
4−20〜4−27 RAID用パリティデータ
5−4〜5−7 パリティ
5−16〜5−23 セレクタ
5−24〜5−27 XOR回路
5−30〜5−33 パリティ
6−1 データ変換用テーブルチェック回路
6−2 パリティ反転用テーブルチェック回路
6−4 比較回路
6−7 比較回路
7−2〜7−5 ビット
7−7 ビット
7−8〜7−9 XOR回路
7−10〜7−14 XOR論理結果
8−7 偶数データ変換回路
8−8 奇数データ変換回路
8−9 偶数パリティ反転回路
8−10 奇数パリティ反転回路
8−21 ガロア体乗算回路
11−3 ECC
11−7 ECC変換回路
11−13 ECC
11−15 ECCチェック回路
11−21 ガロア体乗算回路
11−22 ECC変換表
11−23 索引テーブル作成回路
11−19 ECC
12−0〜12−15 変換表
13−0〜13−15 セレクタ
14−0〜14−15 変換テーブル
15−0〜15−15 データ
16−0〜16−15 セレクタ
17−0〜17−15 XOR回路
18−0〜18−15 出力

Claims (45)

  1. GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするディスクアレイ装置。
  2. 前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする請求項1記載のディスクアレイ装置。
  3. 前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする請求項1または請求項2記載のディスクアレイ装置。
  4. ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項1ないし請求項3のいずれかに記載のディスクアレイ装置。
  5. ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項2ないし請求項4のいずれかに記載のディスクアレイ装置。
  6. 分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項5記載のディスクアレイ装置。
  7. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項1記載のディスクアレイ装置。
  8. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項2ないし請求項7のいずれかに記載のディスクアレイ装置。
  9. 前記チェックコードが、前記データに対するパリティであることを特徴とする請求項2ないし請求項8のいずれかに記載のディスクアレイ装置。
  10. 前記チェックコードが、前記データに対するECCであることを特徴とする請求項2ないし請求項8のいずれかに記載のディスクアレイ装置。
  11. GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするRAID用パリティデータ生成回路。
  12. 前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする請求項11記載のRAID用パリティデータ生成回路。
  13. 前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする請求項11または請求項12記載のRAID用パリティデータ生成回路。
  14. ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項11ないし請求項13のいずれかに記載のRAID用パリティデータ生成回路。
  15. ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項12ないし請求項14のいずれかに記載のRAID用パリティデータ生成回路。
  16. 分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項15記載のRAID用パリティデータ生成回路。
  17. 前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする請求項11ないし請求項16のいずれかに記載のRAID用パリティデータ生成回路。
  18. 前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする請求項11ないし請求項16のいずれかに記載のRAID用パリティデータ生成回路。
  19. 前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するECCをRAID用のデータに対するECCに変換するECC変換回路とを有することを特徴とする請求項11ないし請求項16のいずれかに記載のRAID用パリティデータ生成回路。
  20. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項11記載のRAID用パリティデータ生成回路。
  21. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項12ないし請求項18のいずれかに記載のRAID用パリティデータ生成回路。
  22. 前記チェックコードが、前記データに対するパリティであることを特徴とする請求項12ないし請求項16のいずれかに記載のRAID用パリティデータ生成回路。
  23. 前記チェックコードが、前記データに対するECCであることを特徴とする請求項12ないし請求項16のいずれかに記載のRAID用パリティデータ生成回路。
  24. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
    パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、
    パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した下位パリティの反転結果を得る下位パリティ反転回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してXOR論理演算を行うXOR回路と、
    前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファと
    を有することを特徴とするRAID用パリティデータ生成回路。
  25. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、
    パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、
    パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した奇数パリティの反転結果を得る奇数パリティ反転回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してXOR論理演算を行うXOR回路と、
    前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファと
    を有することを特徴とするRAID用パリティデータ生成回路。
  26. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    データの各分解データに対応するECC変換表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記ECC変換表を乗算係数を用いて索引してECC用変換テーブルを生成するECC索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
    前記ECC索引テーブル作成回路で生成されたECC変換テーブルをデータの各分解データで選択してデータに対するECCをRAID用のデータに対するECCに変換するECC変換回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のXOR論理がゼロであることをチェックする第1のテーブルゼロチェック回路と、
    前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のXOR論理がゼロであることをチェックする第2のテーブルゼロチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータならびに前記ECC変換回路で生成されたECCを用いてデータに対するECCをチェックするECCチェック回路と、
    前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記ECC変換回路で生成されたECCに対してXOR論理演算を行うXOR回路と、
    前記XOR回路での演算結果をRAID用パリティデータとして蓄積するバッファと
    を有することを特徴とするRAID用パリティデータ生成回路。
  27. ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とするガロア体乗算回路。
  28. ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とするガロア体乗算回路。
  29. ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するECCをRAID用のデータに対するECCに変換するECC変換回路とを有することを特徴とするガロア体乗算回路。
  30. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
    パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、
    パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをXOR論理した下位パリティの反転結果を得る下位パリティ反転回路と
    を有することを特徴とするガロア体乗算回路。
  31. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、
    パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、
    パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをXOR論理し奇数パリティの反転結果を得る奇数パリティ反転回路と
    を有することを特徴とするガロア体乗算回路。
  32. データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
    データの各分解データに対応するECC変換表と、
    前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
    前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
    前記ECC変換表を乗算係数を用いて索引してECC用変換テーブルを生成するECC索引テーブル作成回路と、
    前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
    前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
    前記ECC索引テーブル作成回路で生成されたECC変換テーブルをデータの各分解データで選択してデータに対するECCをRAID用のデータに対するECCに変換するECC変換回路と
    を有することを特徴とするガロア体乗算回路。
  33. GF(2)のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするRAID用パリティデータ生成方法。
  34. 前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との2種類を生成することを特徴とする請求項33記載のRAID用パリティデータ生成方法。
  35. 前記索引テーブル情報のビット単位のXOR論理を演算し、ゼロの値を検出することを特徴とする請求項33または請求項34記載のRAID用パリティデータ生成方法。
  36. ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項33ないし請求項35のいずれかに記載のRAID用パリティデータ生成方法。
  37. ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項34ないし請求項36のいずれかに記載のRAID用パリティデータ生成方法。
  38. 分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項37記載のRAID用パリティデータ生成方法。
  39. ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてRAID用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてRAID用のデータに対するパリティに変換する工程とを含むことを特徴とする請求項33ないし請求項38のいずれかに記載のRAID用パリティデータ生成方法。
  40. ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてRAID用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてRAID用のデータに対するパリティに変換する工程とを含むことを特徴とする請求項33ないし請求項38のいずれかに記載のRAID用パリティデータ生成方法。
  41. ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータをRAID用のデータに変換する工程と、データに対するECCをRAID用のデータに対するECCに変換する工程とを含むことを特徴とする請求項33ないし請求項38のいずれかに記載のRAID用パリティデータ生成方法。
  42. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項33記載のRAID用パリティデータ生成方法。
  43. 前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項34ないし請求項41のいずれかに記載のRAID用パリティデータ生成方法。
  44. 前記チェックコードが、前記データに対するパリティであることを特徴とする請求項33ないし請求項38のいずれかに記載のRAID用パリティデータ生成方法。
  45. 前記チェックコードが、前記データに対するECCであることを特徴とする請求項33ないし請求項38のいずれかに記載のRAID用パリティデータ生成方法。
JP2003386997A 2003-11-17 2003-11-17 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路 Expired - Fee Related JP4288486B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003386997A JP4288486B2 (ja) 2003-11-17 2003-11-17 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
US10/989,439 US7437658B2 (en) 2003-11-17 2004-11-17 Disk array device, parity data generating circuit for RAID and Galois field multiplying circuit
US12/190,306 US7681111B2 (en) 2003-11-17 2008-08-12 Disk array device, parity data generating circuit for RAID and Galois field multiplying circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003386997A JP4288486B2 (ja) 2003-11-17 2003-11-17 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路

Publications (2)

Publication Number Publication Date
JP2005149224A true JP2005149224A (ja) 2005-06-09
JP4288486B2 JP4288486B2 (ja) 2009-07-01

Family

ID=34567433

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003386997A Expired - Fee Related JP4288486B2 (ja) 2003-11-17 2003-11-17 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路

Country Status (2)

Country Link
US (2) US7437658B2 (ja)
JP (1) JP4288486B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008186400A (ja) * 2007-01-31 2008-08-14 Fujitsu Ltd Raid装置及びガロア体を用いたデータ復元装置
JP2012509523A (ja) * 2008-11-19 2012-04-19 エルエスアイ コーポレーション Raid情報のメモリ効率検査

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US20060123271A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US7343546B2 (en) * 2004-12-23 2008-03-11 Intel Corporation Method and system for syndrome generation and data recovery
US7689890B2 (en) * 2005-04-21 2010-03-30 Dell Products L.P. System and method for handling write commands to prevent corrupted parity information in a storage array
TWI285313B (en) * 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
TWI309364B (en) * 2005-09-02 2009-05-01 Infortrend Technology Inc Method and controller for processing data multiplication in raid system
US7738657B2 (en) 2006-08-31 2010-06-15 Intel Corporation System and method for multi-precision division
US7607068B2 (en) * 2006-08-31 2009-10-20 Intel Corporation Apparatus and method for generating a Galois-field syndrome
US7797612B2 (en) * 2006-12-29 2010-09-14 Intel Corporation Storage accelerator
JP4358869B2 (ja) * 2007-02-21 2009-11-04 富士通株式会社 ストレージ制御装置、ストレージ制御方法
US8359514B2 (en) * 2008-08-15 2013-01-22 Micron Technology, Inc. Data and error correction code mixing device and method
US8150031B2 (en) * 2008-12-19 2012-04-03 Intel Corporation Method and apparatus to perform redundant array of independent disks (RAID) operations
JP5278115B2 (ja) * 2009-03-31 2013-09-04 日本電気株式会社 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置
US8347169B1 (en) * 2010-03-01 2013-01-01 Applied Micro Circuits Corporation System and method for encoding using common partial parity products
CN102521067B (zh) * 2011-12-01 2013-07-24 华中科技大学 优化部分条带写性能的raid-6编码和重构方法
US9122399B2 (en) * 2013-04-18 2015-09-01 Hitachi, Ltd. Storage system and storage control method
CN104461373B (zh) * 2013-09-16 2018-01-09 杭州宏杉科技股份有限公司 一种raid数据处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218877A (ja) * 1996-02-13 1997-08-19 Fujitsu Ltd データ圧縮装置及び復元装置の辞書検索登録方法
JP2000259359A (ja) * 1999-03-04 2000-09-22 Toshiba Corp Raid装置および記録媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US6148430A (en) * 1998-05-15 2000-11-14 Quantum Corporation Encoding apparatus for RAID-6 system and tape drives
JP2000172520A (ja) * 1998-12-04 2000-06-23 Fujitsu Ltd ガロア体演算プロセッサ
US7003715B1 (en) * 2001-03-30 2006-02-21 Cisco Technology, Inc. Galois field multiply accumulator
US7133889B2 (en) * 2001-09-20 2006-11-07 Stmicroelectronics, Inc. Flexible galois field multiplier
US6823425B2 (en) * 2001-10-23 2004-11-23 Ivivity, Inc. System and method for implementing advanced RAID using a set of unique matrices as coefficients

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218877A (ja) * 1996-02-13 1997-08-19 Fujitsu Ltd データ圧縮装置及び復元装置の辞書検索登録方法
JP2000259359A (ja) * 1999-03-04 2000-09-22 Toshiba Corp Raid装置および記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JAMES S. PLANK: "A Tutorial onReed-Solomon Coding for Fault-Tolerance in RAID-like Systems", SOFTWARE-PRACTICE AND EXPERIENCE, vol. VOL.27(9), JPN7008007714, 30 September 1999 (1999-09-30), US, pages 1001 - 1007, ISSN: 0001162326 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008186400A (ja) * 2007-01-31 2008-08-14 Fujitsu Ltd Raid装置及びガロア体を用いたデータ復元装置
JP2012509523A (ja) * 2008-11-19 2012-04-19 エルエスアイ コーポレーション Raid情報のメモリ効率検査
JP2014041664A (ja) * 2008-11-19 2014-03-06 Lsi Corp Raid情報のメモリ効率検査
TWI498725B (zh) * 2008-11-19 2015-09-01 Lsi Corp 檢查獨立磁碟冗餘陣列(raid)資訊之方法及系統

Also Published As

Publication number Publication date
US20090024879A1 (en) 2009-01-22
US20050108613A1 (en) 2005-05-19
JP4288486B2 (ja) 2009-07-01
US7437658B2 (en) 2008-10-14
US7681111B2 (en) 2010-03-16

Similar Documents

Publication Publication Date Title
JP4288486B2 (ja) ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
CN104160452B (zh) 用于存储数据和对擦除进行纠正的方法、系统和装置
US8522122B2 (en) Correcting memory device and memory channel failures in the presence of known memory device failures
US6041430A (en) Error detection and correction code for data and check code fields
US7797609B2 (en) Apparatus and method for merging data blocks with error correction code protection
US7398449B1 (en) Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
Fu et al. On hamming product codes with type-II hybrid ARQ for on-chip interconnects
EP1828899B1 (en) Method and system for syndrome generation and data recovery
US7350126B2 (en) Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US8484506B2 (en) Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality
JP2006244259A (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
US20050188292A1 (en) Method and apparatus for encoding special uncorrectable errors in an error correction code
US5856987A (en) Encoder and decoder for an SEC-DED-S4ED rotational code
JP4836608B2 (ja) 半導体記憶装置
JPS63115239A (ja) エラ−検査訂正回路
EP0793174B1 (en) Error detection and correction method and apparatus for computer memory
US20050149834A1 (en) (18, 9) Error correction code for double error correction and triple error detection
JP2010122828A (ja) 誤り判定回路及び共有メモリシステム
JPS6349245B2 (ja)
US5761221A (en) Memory implemented error detection and correction code using memory modules
EP2326014B1 (en) Error detecting/correcting code generating circuit and method of controlling the same
Wang et al. Reliable and secure memories based on algebraic manipulation correction codes
US20020188909A1 (en) Symbol level error correction codes which protect against memory chip and bus line failures
JP2732862B2 (ja) データ伝送試験装置
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081222

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4288486

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120410

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130410

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140410

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees