(57)【要約】【課題】ＲＡＩＤ６を実現するディスクアレイ装置において確実にエラーが発見できる信頼性の高いＲＡＩＤ用パリティデータ生成回路を提供する。【解決手段】ガロア体乗算を、ガロア体乗算表１−１１から生成した索引テーブル情報によってデータ変換を行うことで実現し、ＲＡＩＤ６用のデータを生成する。ガロア体乗算表１−１１の縦方向の索引と横方向の索引との異なる方向から索引したものを使用して索引テーブル情報の不一致をあらかじめ検査するテーブルチェック回路１−１４を用い、乗算を行うデータ１−２およびパリティ１−３を複数に分解し、それぞれ異なる索引テーブル情報を割り当てることにより、縦索引テーブル作成回路１−９および横索引テーブル作成回路１−１０自身のチェックが行われる。【選択図】図１
2005149224.tif 000002
【特許請求の範囲】
【請求項１】
ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするディスクアレイ装置。
【請求項２】
前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする請求項１または請求項２記載のディスクアレイ装置。
【請求項４】
ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項１ないし請求項３のいずれかに記載のディスクアレイ装置。
【請求項５】
ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項２ないし請求項４のいずれかに記載のディスクアレイ装置。
【請求項６】
分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項５記載のディスクアレイ装置。
【請求項７】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項１記載のディスクアレイ装置。
【請求項８】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項２ないし請求項７のいずれかに記載のディスクアレイ装置。
【請求項９】
前記チェックコードが、前記データに対するパリティであることを特徴とする請求項２ないし請求項８のいずれかに記載のディスクアレイ装置。
【請求項１０】
前記チェックコードが、前記データに対するＥＣＣであることを特徴とする請求項２ないし請求項８のいずれかに記載のディスクアレイ装置。
【請求項１１】
ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするＲＡＩＤ用パリティデータ生成回路。
【請求項１２】
前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする請求項１１記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１３】
前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする請求項１１または請求項１２記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１４】
ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項１１ないし請求項１３のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１５】
ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項１２ないし請求項１４のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１６】
分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項１５記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１７】
前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする請求項１１ないし請求項１６のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１８】
前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする請求項１１ないし請求項１６のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項１９】
前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路とを有することを特徴とする請求項１１ないし請求項１６のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項２０】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項１１記載のＲＡＩＤ用パリティデータ生成回路。
【請求項２１】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項１２ないし請求項１８のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項２２】
前記チェックコードが、前記データに対するパリティであることを特徴とする請求項１２ないし請求項１６のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項２３】
前記チェックコードが、前記データに対するＥＣＣであることを特徴とする請求項１２ないし請求項１６のいずれかに記載のＲＡＩＤ用パリティデータ生成回路。
【請求項２４】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、
パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した下位パリティの反転結果を得る下位パリティ反転回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してＸＯＲ論理演算を行うＸＯＲ回路と、
前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファと
を有することを特徴とするＲＡＩＤ用パリティデータ生成回路。
【請求項２５】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、
パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、
パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した奇数パリティの反転結果を得る奇数パリティ反転回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してＸＯＲ論理演算を行うＸＯＲ回路と、
前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファと
を有することを特徴とするＲＡＩＤ用パリティデータ生成回路。
【請求項２６】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
データの各分解データに対応するＥＣＣ変換表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記ＥＣＣ変換表を乗算係数を用いて索引してＥＣＣ用変換テーブルを生成するＥＣＣ索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
前記ＥＣＣ索引テーブル作成回路で生成されたＥＣＣ変換テーブルをデータの各分解データで選択してデータに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、
前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータならびに前記ＥＣＣ変換回路で生成されたＥＣＣを用いてデータに対するＥＣＣをチェックするＥＣＣチェック回路と、
前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記ＥＣＣ変換回路で生成されたＥＣＣに対してＸＯＲ論理演算を行うＸＯＲ回路と、
前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファと
を有することを特徴とするＲＡＩＤ用パリティデータ生成回路。
【請求項２７】
ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とするガロア体乗算回路。
【請求項２８】
ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とするガロア体乗算回路。
【請求項２９】
ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路とを有することを特徴とするガロア体乗算回路。
【請求項３０】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、
パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した下位パリティの反転結果を得る下位パリティ反転回路と
を有することを特徴とするガロア体乗算回路。
【請求項３１】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、
パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、
パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理し奇数パリティの反転結果を得る奇数パリティ反転回路と
を有することを特徴とするガロア体乗算回路。
【請求項３２】
データ用変換表およびパリティ用変換表を有するガロア体乗算表と、
データの各分解データに対応するＥＣＣ変換表と、
前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、
前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、
前記ＥＣＣ変換表を乗算係数を用いて索引してＥＣＣ用変換テーブルを生成するＥＣＣ索引テーブル作成回路と、
前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、
前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、
前記ＥＣＣ索引テーブル作成回路で生成されたＥＣＣ変換テーブルをデータの各分解データで選択してデータに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路と
を有することを特徴とするガロア体乗算回路。
【請求項３３】
ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とするＲＡＩＤ用パリティデータ生成方法。
【請求項３４】
前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする請求項３３記載のＲＡＩＤ用パリティデータ生成方法。
【請求項３５】
前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値を検出することを特徴とする請求項３３または請求項３４記載のＲＡＩＤ用パリティデータ生成方法。
【請求項３６】
ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする請求項３３ないし請求項３５のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項３７】
ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする請求項３４ないし請求項３６のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項３８】
分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする請求項３７記載のＲＡＩＤ用パリティデータ生成方法。
【請求項３９】
ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する工程とを含むことを特徴とする請求項３３ないし請求項３８のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４０】
ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する工程とを含むことを特徴とする請求項３３ないし請求項３８のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４１】
ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータをＲＡＩＤ用のデータに変換する工程と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換する工程とを含むことを特徴とする請求項３３ないし請求項３８のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４２】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする請求項３３記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４３】
前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする請求項３４ないし請求項４１のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４４】
前記チェックコードが、前記データに対するパリティであることを特徴とする請求項３３ないし請求項３８のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【請求項４５】
前記チェックコードが、前記データに対するＥＣＣであることを特徴とする請求項３３ないし請求項３８のいずれかに記載のＲＡＩＤ用パリティデータ生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置，ＲＡＩＤ（Redundant
Array of Independent Disks）用パリティデータ生成回路およびガロア体乗算回路に関し、特に高信頼性や高性能が求められるＲＡＩＤ６のディスクアレイ装置，ＲＡＩＤ用パリティデータ生成回路およびガロア体乗算回路に関する。
【背景技術】
【０００２】
重要データを保存するようなディスクアレイ装置においては、従来から知られているＲＡＩＤ技術などによって信頼性が高められており、ＲＡＩＤ０〜５の複数のＲＡＩＤ方式が定義されていたが、近年、これらを改良したＲＡＩＤ６の方式が登場し、さらなる信頼性の向上が求められている。
【０００３】
これと同時に、ディスクアレイ装置のハードウェア自身の信頼性も求められており、データ転送にはパリティやＥＣＣ（Error Correcting Code）等のデータ保証のチェックコードを付加し、転送データが他のコードに化けることを防ぐような機構が必要不可欠となってきている。
【０００４】
特に、最近定義されたＲＡＩＤ６においては、データを扱うときにガロア体の乗算を行うことが必要となり、その演算結果に対してもデータの正当性を確保するためのパリティを反映させるなどの信頼性を向上させる新しい機構が必要となっている。
【０００５】
例えば、パリティの算出に１６種類のデータを扱える拡大ガロア体ＧＦ（extension
Galois field）（２４）を用いて、ＲＡＩＤ６を実現するようにしたＲＡＩＤ装置が公知である（特許文献１参照）。以下、拡大ガロア体を、適宜、単にガロア体という。
【０００６】
図１６は、従来の技術でＲＡＩＤ用パリティデータを生成する回路構成であり、メモリからの転送データ２０−１においては、データ２０−２およびパリティ２０−３、そしてそのデータ２０−２に対するガロア体の乗算係数２０−４が転送される構成となり、データ２０−２自身はパリティチェック回路２０−５によってパリティチェックが行われる（非特許文献１等参照）。
【０００７】
そして、そのデータ２０−２に対する乗算係数２０−４の指定により、ガロア体乗算回路２０−６による演算が行われてＲＡＩＤ用のデータ２０−７の生成が行われ、その生成後にパリティ生成回路２０−８によってデータ２０−７に対するパリティを生成するものである。これにより、メモリからのデータ２０−２の正当性はパリティチェック回路２０−５によって保証されている構成をとる。
【特許文献１】特開２０００−２５９３５９号公報（第４〜５頁、図１）
【非特許文献１】「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
【発明の開示】
【発明が解決しようとする課題】
【０００８】
図１６に挙げたような従来からの方法でのデータ保証回路では、論理的な故障等には効果があるが、ＬＳＩ（Large Scaled Integration）の内部の経年変化による劣化やショートなど、故障するポイントがある１点に絞られた場合ではハードウェアの故障が発見できないケースが存在してしまうという問題点がある。
【０００９】
これは、図１６の回路構成において説明すると、データの保証を行うためのパリティチェック回路２０−５が故障した場合、パリティエラーが発生したとしてもエラーの検出ができないためにデータ２０−２の保証が行われていない状態となるということである。
【００１０】
また、エラーチェック時には問題が無かったデータを使用したが、ガロア体乗算回路２０−６が故障した場合、その演算結果が目的外のデータに変換されてしまうと同時に、その後に存在するパリティ生成回路２０−８によって新しくパリティ２０−１２を付け直されてしまうという特徴があり、データ２０−７が誤変換であったとしてもパリティエラーが検出されることはなく、最終的に生成されたＲＡＩＤ用パリティデータＱがデータ化けの状態になってしまい、ディスクアレイシステムとしては致命傷になる。
【００１１】
これを防ぐためにガロア体乗算回路２０−６自身を二重化し、お互いの演算結果を比較するなどの従来の技術も存在するが、比較結果を示すエラー信号自身がショート等により故障してしまった場合などにおいては、まったく効果が発揮できない構成となる。
【００１２】
高信頼性が求められるＲＡＩＤ６のディスクアレイ装置等では、これらの正常ではないデータを有効データと見なしてしまうようなことはあってはならない事象である。
【００１３】
本発明の第１の目的は、ガロア体乗算回路においてもデータに対するパリティ，ＥＣＣ等のチェックコードによって確実にデータを保証できる、信頼性の高いＲＡＩＤ６のディスクアレイ装置を提供することにある。
【００１４】
本発明の第２の目的は、ＲＡＩＤ６のディスクアレイ装置を実現するとともに、故障等も含めてデータ化けを確実に防ぎ、データの正当性をチェックするＲＡＩＤ用パリティデータ生成回路を提供することにある。
【００１５】
本発明の第３の目的は、ＲＡＩＤ６のディスクアレイ装置を実現するＲＡＩＤ用パリティデータ生成回路に用いられて好適なガロア体乗算回路を提供することにある。
【００１６】
本発明の第４の目的は、ＲＡＩＤ６のディスクアレイ装置を実現するとともに、故障等も含めてデータ化けを確実に防ぎ、データの正当性をチェックするＲＡＩＤ用パリティデータ生成方法を提供することにある。
【課題を解決するための手段】
【００１７】
本発明のディスクアレイ装置は、ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
【００１８】
また、本発明のディスクアレイ装置は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする。
【００１９】
さらに、本発明のディスクアレイ装置は、前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする。
【００２０】
さらにまた、本発明のディスクアレイ装置は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
【００２１】
また、本発明のディスクアレイ装置は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
【００２２】
さらに、本発明のディスクアレイ装置は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
【００２３】
さらにまた、本発明のディスクアレイ装置は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
【００２４】
また、本発明のディスクアレイ装置は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
【００２５】
さらに、本発明のディスクアレイ装置は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
【００２６】
さらにまた、本発明のディスクアレイ装置は、前記チェックコードが、前記データに対するＥＣＣであることを特徴とする。
【００２７】
一方、本発明のディスクアレイ装置は、ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
【００２８】
また、本発明のＲＡＩＤ用パリティデータ生成回路は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする。
【００２９】
さらに、本発明のＲＡＩＤ用パリティデータ生成回路は、前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値以外であることを検出することにより回路の故障を検出することを特徴とする。
【００３０】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成回路は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
【００３１】
また、本発明のＲＡＩＤ用パリティデータ生成回路は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
【００３２】
さらに、本発明のＲＡＩＤ用パリティデータ生成回路は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
【００３３】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする。
【００３４】
また、本発明のＲＡＩＤ用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする。
【００３５】
さらに、本発明のＲＡＩＤ用パリティデータ生成回路は、前記ガロア体乗算回路が、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路とを有することを特徴とする。
【００３６】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成回路は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
【００３７】
また、本発明のＲＡＩＤ用パリティデータ生成回路は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
【００３８】
さらに、本発明のＲＡＩＤ用パリティデータ生成回路は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
【００３９】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成回路は、前記チェックコードが、前記データに対するＥＣＣであることを特徴とする。
【００４０】
また、本発明のＲＡＩＤ用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した下位パリティの反転結果を得る下位パリティ反転回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してＸＯＲ論理演算を行うＸＯＲ回路と、前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファとを有することを特徴とする。
【００４１】
さらに、本発明のＲＡＩＤ用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した奇数パリティの反転結果を得る奇数パリティ反転回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティを用いてデータのパリティをチェックするパリティチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記上位パリティ反転回路および前記下位パリティ反転回路で生成されたパリティに対してＸＯＲ論理演算を行うＸＯＲ回路と、前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファとを有することを特徴とする。
【００４２】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、データの各分解データに対応するＥＣＣ変換表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記ＥＣＣ変換表を乗算係数を用いて索引してＥＣＣ用変換テーブルを生成するＥＣＣ索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、前記ＥＣＣ索引テーブル作成回路で生成されたＥＣＣ変換テーブルをデータの各分解データで選択してデータに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルと前記横索引テーブル作成回路で生成されたデータ用横変換テーブルとを比較してチェックするデータ変換用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルと前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルとを比較してチェックするパリティ反転用テーブルチェック回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルまたは前記横索引テーブル作成回路で生成されたデータ用横変換テーブルの各ビット列のＸＯＲ論理がゼロであることをチェックする第１のテーブルゼロチェック回路と、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルまたは前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルのビット列のＸＯＲ論理がゼロであることをチェックする第２のテーブルゼロチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータならびに前記ＥＣＣ変換回路で生成されたＥＣＣを用いてデータに対するＥＣＣをチェックするＥＣＣチェック回路と、前記上位データ変換回路および前記下位データ変換回路で生成されたデータおよび前記ＥＣＣ変換回路で生成されたＥＣＣに対してＸＯＲ論理演算を行うＸＯＲ回路と、前記ＸＯＲ回路での演算結果をＲＡＩＤ用パリティデータとして蓄積するバッファとを有することを特徴とする。
【００４３】
他方、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する上位パリティ反転回路および下位パリティ反転回路とを有することを特徴とする。
【００４４】
また、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する偶数データ変換回路および奇数データ変換回路と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する偶数パリティ反転回路および奇数パリティ反転回路とを有することを特徴とする。
【００４５】
さらに、本発明のガロア体乗算回路は、ガロア体乗算表と、該ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路と、該ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する上位データ変換回路および下位データ変換回路と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路とを有することを特徴とする。
【００４６】
さらにまた、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した上位パリティ部の反転結果を得る上位パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの上位データ部の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した下位パリティの反転結果を得る下位パリティ反転回路とを有することを特徴とする。
【００４７】
また、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの偶数データ位置の各分解データで選択してガロア体の乗算結果を得る偶数データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの奇数データ位置の各分解データで選択してガロア体の乗算結果を得る奇数データ変換回路と、パリティの上位パリティ部の各分解パリティと、前記横索引テーブル作成回路で生成されたパリティ用横反転テーブルをデータの偶数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理した偶数パリティの反転結果を得る偶数パリティ反転回路と、パリティの下位パリティ部の各分解パリティと、前記縦索引テーブル作成回路で生成されたパリティ用縦反転テーブルをデータの奇数データ位置の各分解データで選択したガロア体の乗算結果とをＸＯＲ論理し奇数パリティの反転結果を得る奇数パリティ反転回路とを有することを特徴とする。
【００４８】
さらに、本発明のガロア体乗算回路は、データ用変換表およびパリティ用変換表を有するガロア体乗算表と、データの各分解データに対応するＥＣＣ変換表と、前記ガロア体乗算表を乗算係数を用いて縦方向から索引してパリティ用縦反転テーブルおよびデータ用縦変換テーブルを生成する縦索引テーブル作成回路と、前記ガロア体乗算表を乗算係数を用いて横方向から索引してデータ用横変換テーブルおよびパリティ用横反転テーブルを生成する横索引テーブル作成回路と、前記ＥＣＣ変換表を乗算係数を用いて索引してＥＣＣ用変換テーブルを生成するＥＣＣ索引テーブル作成回路と、前記縦索引テーブル作成回路で生成されたデータ用縦変換テーブルをデータの上位データ部の各分解データで選択してガロア体の乗算結果を得る上位データ変換回路と、前記横索引テーブル作成回路で生成されたデータ用横変換テーブルをデータの下位データ部の各分解データで選択してガロア体の乗算結果を得る下位データ変換回路と、前記ＥＣＣ索引テーブル作成回路で生成されたＥＣＣ変換テーブルをデータの各分解データで選択してデータに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換するＥＣＣ変換回路とを有することを特徴とする。
【００４９】
加えて、本発明のＲＡＩＤ用パリティデータ生成方法は、ＧＦ（２４）のガロア体の乗算により作成された縦横が対称となるガロア体乗算表を用いてデータの変換を行い、前記ガロア体乗算表から横方向の索引テーブル情報および縦方向の索引テーブル情報を抜き出し、両索引テーブル情報を比較することにより回路の故障を検出することを特徴とする。
【００５０】
また、本発明のＲＡＩＤ用パリティデータ生成方法は、前記索引テーブル情報として、乗算を行うデータ用の索引テーブル情報と、該データに付随するチェックコード用の索引テーブル情報との２種類を生成することを特徴とする。
【００５１】
さらに、本発明のＲＡＩＤ用パリティデータ生成方法は、前記索引テーブル情報のビット単位のＸＯＲ論理を演算し、ゼロの値を検出することを特徴とする。
【００５２】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成方法は、ガロア体の乗算を行うデータを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解データと、前記横方向の索引テーブル情報を使って変換を行う分解データとに分けて処理を行うことを特徴とする。
【００５３】
また、本発明のＲＡＩＤ用パリティデータ生成方法は、ガロア体の乗算を行うデータに付随するチェックコードを複数に分解し、前記縦方向の索引テーブル情報を使って変換を行う分解チェックコードと、前記横方向の索引テーブル情報を使って変換を行う分解チェックコードとに分けて処理を行うことを特徴とする。
【００５４】
さらに、本発明のＲＡＩＤ用パリティデータ生成方法は、分解データを横方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを縦方向の索引テーブル情報を使って変換を行い、分解データを縦方向の索引テーブル情報を使って変換を行う場合には該分解データに対する分解チェックコードを横方向の索引テーブル情報を使って変換を行うことにより、対になっている分解データと分解チェックコードとをそれぞれが異なる索引テーブル情報を使って変換することを特徴とする。
【００５５】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを上位データ部および下位データ部に分けてＲＡＩＤ用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを上位パリティ部および下位パリティ部に分けてＲＡＩＤ用のデータに対するパリティに変換する工程とを含むことを特徴とする。
【００５６】
また、本発明のＲＡＩＤ用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータを偶数データ位置および奇数データ位置に分けてＲＡＩＤ用のデータに変換する工程と、生成された索引テーブル情報からデータに対するパリティを偶数パリティ位置および奇数パリティ位置に分けてＲＡＩＤ用のデータに対するパリティに変換する工程とを含むことを特徴とする。
【００５７】
さらに、本発明のＲＡＩＤ用パリティデータ生成方法は、ガロア体乗算表を乗算係数を用いて縦方向から索引して縦方向の索引テーブル情報を生成する工程と、前記ガロア体乗算表を乗算係数を用いて横方向から索引して横方向の索引テーブル情報を生成する工程と、生成された索引テーブル情報が正しいものであるかどうかをチェックする工程と、生成された索引テーブル情報からデータをＲＡＩＤ用のデータに変換する工程と、データに対するＥＣＣをＲＡＩＤ用のデータに対するＥＣＣに変換する工程とを含むことを特徴とする。
【００５８】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成方法は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルであることを特徴とする。
【００５９】
また、本発明のＲＡＩＤ用パリティデータ生成方法は、前記縦方向の索引テーブル情報がデータ用縦変換テーブルおよびチェックコード用縦反転テーブルであり、前記横方向の索引テーブル情報がデータ用横変換テーブルおよびチェックコード用横反転テーブルであることを特徴とする。
【００６０】
さらに、本発明のＲＡＩＤ用パリティデータ生成方法は、前記チェックコードが、前記データに対するパリティであることを特徴とする。
【００６１】
さらにまた、本発明のＲＡＩＤ用パリティデータ生成方法は、前記チェックコードが、前記データに対するＥＣＣであることを特徴とする。
【００６２】
図１は、本発明のＲＡＩＤ６を実現するＲＡＩＤ用パリティデータ生成回路の回路構成を示す。
【００６３】
本発明では、ガロア体乗算回路１−２１として、その内部にガロア体乗算表１−１１を保有し、ガロア体乗算表１−１１を乗算係数１−４を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路１−９と、同様にガロア体乗算表１−１１を乗算係数１−４を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路１−１０と、生成された索引テーブル情報からデータ１−２をＲＡＩＤ用のデータ１−１２に変換するための上位データ変換回路１−５および下位データ変換回路１−６と、同様にデータ１−２に対するパリティ１−３をＲＡＩＤ用のデータ１−１２に対するパリティ１−１３に変換するための上位パリティ反転回路１−７および下位パリティ反転回路１−８とを有することを特徴とする。加えて、生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路１−１４を有することを特徴とする。
【００６４】
そして、縦方向から索引された索引テーブル情報によってデータ１−１２の上位データ部とパリティ１−３の下位パリティ部とを変換し、横方向から索引された索引テーブル情報によってデータ１−１２の下位データ部とパリティ１−３の上位パリティ部とを変換した結果であるデータ１−１２とパリティ１−１３とを検査するパリティチェック回路１―１５を有することを特徴とする。これにより、間違いなくガロア体の乗算が行われたことをチェックでき、信頼性のあるＲＡＩＤ６用のデータを生成できるＲＡＩＤ用パリティデータ生成回路を提供する。
【００６５】
なお、本発明におけるＲＡＩＤ６の演算式自体については、以下の演算式（式１および式２）がベースとして用いられているが、これらの式そのものの定義等については非特許文献１などによりすでに既知であると同時に、ガロア体の乗算における演算式そのものは一般的に知られている演算であり、これらの詳細な式の証明や内容については記載しないものとする。
【００６６】
ＲＡＩＤ６を実現するための式：
ｎ個のデータ列をＤ０，Ｄ１，Ｄ２，…，Ｄ（ｎ−１）としたとき、その２つのパリティデータＰおよびパリティデータＱは、以下の２式を使用する。
【００６７】
［式１］
Ｐ＝Ｄ０＋Ｄ１＋Ｄ２＋…＋Ｄ（ｎ−１）
【００６８】
［式２］
Ｑ＝Ｄ０＋２Ｄ１＋３Ｄ２＋…＋ｎＤ（ｎ−１）
【００６９】
なお、上記式１および式２の表記において、乗算はガロア体の乗算を示し、加算はＸＯＲ論理による排他論理和を示す。
【発明の効果】
【００７０】
本発明の回路構成により、ガロア体の乗算を行う高信頼性のＲＡＩＤ６を実現するＲＡＩＤ用パリティデータ生成回路を提供できる。
【００７１】
１つのガロア体乗算表を縦方向の索引と横方向の索引とを同時に行って結果を比較する構成により、ガロア体乗算回路自身のハードウェア故障を発見できる。
【００７２】
また、データおよびそのパリティ，ＥＣＣ等のチェックコードの変換において、異なる方向から索引した索引テーブル情報を使用する構成により、片方の索引結果が故障した場合でも確実にパリティエラー，ＥＣＣエラー等のエラーによってハードウェア故障を発見できる。
【００７３】
さらに、ガロア体の乗算を行った結果をチェックするパリティチェック回路等が故障し、かつ、そのときにガロア体乗算回路自身の故障が発生したとしても、変換する前のチェックコードが伝搬する形となっており、すべての故障要因は生成されたチェックコードに反映しているために出力データおよびチェックコードは完全に保証されており、回路故障によって誤って正しいデータと判断しない回路が得られ、より信頼性の高いＲＡＩＤ用パリティデータ生成回路が提供できる。
【００７４】
また、データが流れる経路においては、ガロア体乗算回路自身はセレクタ１段で実現されているため、非常に高速なデータ転送にも耐えられる。
【発明を実施するための最良の形態】
【００７５】
以下、本発明の実施例について図面を参照して詳しく説明する。
【実施例１】
【００７６】
図２は、本発明の実施例１に係るＲＡＩＤ用パリティデータ生成回路１３を配設するディスクアレイシステムの構成を示すブロック図である。このディスクアレイシステムは、ホスト１と、システムメモリ２と、ホスト１およびシステムメモリ２が接続されたホスト側システムバス３と、ホスト側システムバス３に接続されたホスト側ＩＯ制御回路４と、ホスト側ＩＯ制御回路４に接続されたディスクアレイ装置５とから、その主要部が構成されている。
【００７７】
ディスクアレイ装置５は、ホスト側ＩＯ制御回路４に接続されたＲＡＩＤコントローラ６と、ＲＡＩＤコントローラ６に接続されたＲＡＩＤ用キャッシュメモリ７と、ＲＡＩＤコントローラ６が接続されたアレイ側システムバス８と、アレイ側システムバス８に接続されたＳＣＳＩ（Small Computer System Interface）などのｎ台のＩＯ制御回路９と、各ＩＯ制御回路９にそれぞれ接続されたｎ台のハードディスク装置１０とから構成されている。
【００７８】
ＲＡＩＤコントローラ６は、ホスト側ＩＯ制御回路４に接続された命令処理回路１１と、命令処理回路１１，アレイ側システムバス８およびＲＡＩＤ用キャッシュメモリ７に接続されたデータ転送制御回路１２と、データ転送制御回路１２に接続されたＲＡＩＤ用パリティデータ生成回路１３とを含んで構成されている。
【００７９】
図１は、本発明の実施例１に係るＲＡＩＤ６を実現するＲＡＩＤ用パリティデータ生成回路１３の構成を示す回路ブロック図である。
【００８０】
ＲＡＩＤ用パリティデータ生成回路１３は、データ１−２，パリティ１−３および乗算係数１−４を入力してガロア体乗算を行うガロア体乗算回路１−２１と、ガロア体乗算回路１−２１で生成された索引テーブル情報（図３に示すパリティ用縦反転テーブル３−１２，データ用縦変換テーブル３−１３，データ用横変換テーブル３−１４，およびパリティ用横反転テーブル１−１５）が正しいものであるかどうかをチェックするテーブルチェック回路１−１４と、ガロア体乗算回路１−２１で生成されたデータ１−１２およびパリティ１−１３を用いてパリティをチェックするパリティチェック回路１−１５と、ガロア体乗算回路１−２１で生成されたデータ１−１２およびパリティ１−１３に対してＸＯＲ論理演算を行う２つのＸＯＲ回路１−１６と、ＸＯＲ回路１−１６での演算結果をＲＡＩＤ用パリティデータＱとして蓄積するバッファ１−１７とを含んで構成されている。
【００８１】
ガロア体乗算回路１−２１は、ガロア体乗算表１−１１と、ガロア体乗算表１−１１を乗算係数１−４を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路１−９と、同様にガロア体乗算表１−１１を乗算係数１−４を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路１−１０と、生成された索引テーブル情報からデータ１−２をＲＡＩＤ用のデータ１−１２に変換するための上位データ変換回路１−５および下位データ変換回路１−６と、同様にデータ１−２に対するパリティ１−３をＲＡＩＤ用のデータ１−１２に対するパリティ１−１３に変換するための上位パリティ反転回路１−７および下位パリティ反転回路１−８とから構成されている。
【００８２】
図３は、ガロア体乗算表１−１１と、縦索引テーブル作成回路１−９と、横索引テーブル作成回路１−１０との具体的な回路構成を示す。
【００８３】
まず、パリティの算出例について説明する。
【００８４】
各ハードディスク装置１０は４ビット単位でブロック分割されているので、各ブロックには０〜１５までの１６種類のデータが格納可能である。
【００８５】
そこで、パリティの算出は、１６種類のデータを扱える拡大ガロア体ＧＦ(extension  Galois  field）(２４)を用いて計算する。この拡大ガロア体ＧＦ(２４)は、定義された種類のデータ内で加算(減算)、乗算および除算を行うことができる。加算（減算)はＸＯＲ論理を用いて計算し、乗算は拡大ガロア体ＧＦ(２４)の乗算結果であるデータ用変換表３−６を用いて計算する。なお、除算はデータ用変換表３−６を逆引きすることにより引用する。
【００８６】
データ用変換表３−６は、ガロア体ＧＦ（２）上の４次の規約多項式であるＸ４＋Ｘ＋１を用いて拡大ガロア体ＧＦ（２４）を計算した表である。
【００８７】
次に、拡大ガロア体ＧＦ（２４）の簡単な説明およびデータ用変換表３−６の作成例について説明する。
【００８８】
ガロア体ＧＦ（２）は、０と１との２種類が元であり、その間で加減乗除を行うことができる。これに対し、拡大ガロア体ＧＦ（２ｍ）では２ｍ個の元があり、その間で自由に加減乗除を行うことができる。２ｍは、２のｍ乗を表している。
【００８９】
ところで、拡大ガロア体における４次の乗算について定義する。
【００９０】
ガロア体ＧＦ（２）の体となる０，１の２種類の元において、乗算結果であるＧＦ（２）上の４次の規約多項式
Ｘ４＋Ｘ＋１＝０
の根を考えると、０，１の何れの元を代入しても根が存在しない。そこで、このような規約多項式の根の１つをαと定義し体を拡大してみる。
【００９１】
その結果、αは、α４＋α＋１＝０を満たすので、
α４＝α＋１
の関係式が得られ、αで表わされる４次以上の関係式は全て４次以下に置換することができる。
【００９２】
そこで、１６種類のデータをαのｎ次で考えると、以下に示すような関係式で表すことができ、１５種類の関係式以外には現れない。
【００９３】
１  α
２  α２
３  α３
４  α４＝α＋１
５  α５＝α２＋α
６  α６＝α３＋α２
７  α７＝α４＋α３＝α３＋α＋１
８  α８＝α４＋α２＋α＝α２＋１
９  α９＝α３＋α
Ａ  α１０＝α４＋α２＝α２＋α＋１
Ｂ  α１１＝α３＋α２＋α
Ｃ  α１２＝α４＋α３＋α２＝α３＋α２＋α＋１
Ｄ  α１３＝α４＋α３＋α２＋α＝α３＋α２＋１
Ｅ  α１４＝α４＋α３＋α＝α３＋１
Ｆ  α１５＝α４＋α＋１
【００９４】
以上の関係式から、当然αのｎ次どうしを乗算しても、１５種類の何れかの関係式の中に納まることになる。例えば、
α７＋α１４＝α２１＝α６＝α３＋α２
となり、１５種類の中の式α６に納まる。この関係式からデータの種類１〜Ｆで一巡するので、α１６＝αとなり、１にもどる。
【００９５】
ここで、上記する１５種類の関係式につき、１〜Ｆに対応させることにより、データ用変換表３−６を作成できる。データ用変換表３−６は、αの指数を２進数の桁に対応させて数値化する。なお、データ用変換表３−６は、１〜Ｆに加えて０を含め、０〜Ｆの乗算結果を表す。
【００９６】
従って、データ用変換表３−６は、ガロア体ＧＦ（２）上の４次の規約多項式Ｘ４＋Ｘ＋１を用いて、拡大ガロア体ＧＦ（２４）による乗算結果であるが、以下に述べる合同式についても、特にことわりがない限り、全て拡大ガロア体ＧＦ（２４）で計算しているものとする。
【００９７】
ガロア体乗算表１−１１は、拡大ガロア体ＧＦ（２４）のガロア体乗算により作成された縦横が対称となるデータ用変換表３−６と、パリティ用変換表３−５および３−７とを有し、ガロア体の乗算係数１−４によって示された１列分または１行分が、セレクタ３−８，３−９，３−１０および３−１１によりパリティ用縦反転テーブル３−１２，データ用縦変換テーブル３−１３，データ用横変換テーブル３−１４，およびパリティ用横反転テーブル１−１５として索引される。
【００９８】
データ用変換表３−６は、その特性から縦方向の索引と横方向の索引とが同じ結果となる表であり、縦索引テーブル作成回路１−９は、データ用変換表３−６からセレクタ３−９によってデータ用縦変換テーブル３−１３を生成し、これを上位データ変換回路１−５に転送する。また、横索引テーブル作成回路１−１０は、データ用変換表３−６からセレクタ３−１０によってデータ用横変換テーブル３−１４を生成し、これを下位データ変換回路１−６に転送する。
【００９９】
パリティ用変換表３−５および３−７は、互いに縦と横とを入れ替えた値を持ち、縦索引テーブル作成回路１−９は、パリティ用変換表３−５からセレクタ３−８によってパリティ用縦反転テーブル３−１２を生成し、これを下位パリティ反転回路１−８に転送する。また、横索引テーブル作成回路１−１０は、パリティ用変換表３−７からセレクタ３−１１によってパリティ用横変転テーブル３−１５を生成し、これを上位パリティ反転回路１−７に転送する。
【０１００】
図４は、データ１−２の変換を行う上位データ変換回路１−５および下位データ変換回路１−６の回路構成を示す。
【０１０１】
上位データ変換回路１−５は、データ１−２に対して上位データ部の変換を行うものであり、データ１−２の上位データ部は４ビット単位の各分解データ４−２〜４−５に分解されてセレクタ４−１０〜４−１３のセレクト信号となり、縦索引テーブル作成回路１−９によって生成されたデータ用縦変換テーブル３−１３を選択することで、ガロア体の乗算係数１−４に対する演算結果が得られる回路構成となっている。
【０１０２】
下位データ変換回路１−６も、上位データ変換回路１−５と同様な回路構成であり、データ１−２の下位データ部は４ビット単位の各分解データ４−６〜４−９に分解されてセレクタ４−１４〜４−１７のセレクト信号となり、横索引テーブル作成回路１−１０によって生成されたデータ用横変換テーブル３−１４を選択することで、ガロア体の乗算係数１−４に対する演算結果が得られる回路構成となっている。
【０１０３】
図５は、上位パリティ反転回路１−７および下位パリティ反転回路１−８の回路構成を示す。
【０１０４】
上位パリティ反転回路１−７は、パリティ１−３に対して上位パリティ部の変換を行うものであり、パリティ１−３の上位パリティ部は１ビット単位のパリティビット５−４〜５−５に分解されてＸＯＲ回路５−２４〜５−２５に入力される。一方、データ１−２の上位データ部は４ビット単位の各分解データ４−２〜４−５に分解されてセレクタ５−１６〜５−１７のセレクト信号となり、横索引テーブル作成回路１−１０によって生成されたパリティ用横反転テーブル３−１５を選択した結果がＸＯＲ回路５−２４〜５−２５に入力される。そして、ＸＯＲ回路５−２４〜５−２５の出力が上位パリティ部の反転した１ビット単位のパリティビット５−３０〜５−３１となる。
【０１０５】
下位パリティ反転回路１−８も、上位パリティ反転回路１−７と同様な回路構成であり、パリティ１−３に対して下位パリティ部の変換を行うものであり、パリティ１−３の下位パリティ部は１ビット単位のパリティビット５−６〜５−７がＸＯＲ回路５−２６〜５−２７に入力される。一方、データ１−２の下位データ部は４ビット単位の各分解データ４−６〜４−９に分解されてセレクタ５−２０〜５−２３のセレクト信号となり、縦索引テーブル作成回路１−９によって生成されたパリティ用縦反転テーブル３−１２を選択した結果がＸＯＲ回路５−２６〜５−２７に入力される。そして、ＸＯＲ回路５−２４〜５−２５の出力がパリティ１−３の下位パリティ部の反転した１ビット単位のパリティビット５−３２〜５−３３となる。
【０１０６】
これにより、各分解データ４−２〜４−９が誤ったものであると、そのパリティビット５−３０〜５−３３も誤ったものになり、パリティチェック時にはエラーが確認される。
【０１０７】
図６および図７は、テーブルチェック回路１−１４の詳細な回路構成を示す。
【０１０８】
図６は、データ用縦変換テーブル３−１３とデータ用横変換テーブル３−１４とを比較してチェックするデータ変換用テーブルチェック回路６−１と、パリティ用縦反転テーブル３−１２とパリティ用横反転テーブル３−１５とを比較してチェックするパリティ反転用テーブルチェック回路６−２とを示す。
【０１０９】
データ変換用テーブルチェック回路６−１は、縦索引テーブル作成回路１−９で生成されたデータ用縦変換テーブル３−１３と横索引テーブル作成回路１−１０で生成されたデータ用横変換テーブル３−１４との一致を比較回路６−４で検査する構成をとり、パリティ反転用テーブルチェック回路６−２は、縦索引テーブル作成回路１−９で生成されたパリティ用縦反転テーブル３−１２と横索引テーブル作成回路１−１０で生成されたパリティ用横反転テーブル３−１５との一致を比較回路６−７で検査する構成をとる。上記２種類のデータ変換用テーブルチェック回路６−１およびパリティ反転用テーブルチェック回路６−２により、データおよびパリティを変換するときのデータ用縦変換テーブル３−１３，データ用横変換テーブル３−１４，パリティ用縦反転テーブル３−１２，およびパリティ用横反転テーブル３−１５そのものが正しいものであるかどうかを検査できる構成となっている。
【０１１０】
図７は、データ用縦変換テーブル３−１３またはデータ用横変換テーブル３−１４を入力して各ビット単位のＸＯＲ論理が“０”となることを検査するテーブルゼロチェック回路７−１５と、パリティ用縦反転テーブル３−１２またはパリティ用横反転テーブル３−１５を入力してビット単位のＸＯＲ論理が“０”となることを検査するテーブルゼロチェック回路７−１６とを示す。
【０１１１】
テーブルゼロチェック回路７−１５は、縦索引テーブル作成回路１−９および横索引テーブル作成回路１−１０で生成されたデータ用縦変換テーブル３−１３およびデータ用横変換テーブル３−１４の各データをそれぞれビット７−２〜７−５に分解し、ＸＯＲ回路７−８により同一ビット列のすべてのＸＯＲ論理をとることでその結果７−１０〜７−１３がすべて”０”になることを検査する。
【０１１２】
テーブルゼロチェック回路７−１６は、縦索引テーブル作成回路１−９および横索引テーブル作成回路１−１０で生成されたパリティ用縦反転テーブル３−１２またはパリティ用横反転テーブル３−１５をビット単位７−７に分解し、ＸＯＲ回路７−９によりビット列のすべてのＸＯＲ論理をとることでその結果７−１４が”０”になることを検査する。これにより、ガロア体乗算表１−１１自体が正しい値をもっているかどうかを検査できる構成となっている。
【０１１３】
次に、このように構成された実施例１に係るＲＡＩＤ用パリティデータ生成回路１３の動作について、図１ないし図７を参照しながら説明する。
【０１１４】
図１〜図７において、データ３２ビット・パリティ４ビットのケースでの動作の説明を行うが、そのビットの数においては一例であり、本発明においてビット数の制限は規定しない。
【０１１５】
ＲＡＩＤ５およびＲＡＩＤ６を構成する場合、その特性からＲＡＩＤのグループを構成するデータ列に対してＸＯＲ論理によってＲＡＩＤ用パリティデータを生成する。
【０１１６】
このとき、ＲＡＩＤ６用のパリティデータを生成する場合は、既述したように２種類のパリティデータＰおよびＱが必要となり、１つは従来から使用されているＲＡＩＤ５と同等のパリティデータＰの生成であり、その生成方法は既知の技術で十分広まっているためにここでは記載せず、ＲＡＩＤ６に特化して必要となるパリティデータＱの生成について記載する。
【０１１７】
なお、ＲＡＩＤ６用に特化されるパリティデータＱの演算については、前述の式２で示される。
【０１１８】
図１において、データ１−２およびパリティ１−３とともに、ガロア体の乗算係数１−４が転送され、ここではデータ１−２は１６進数表記で”１２３４５６７８”という３２ビット値を持ち、そのパリティ１−３は”Ｂ”という４ビットの奇数パリティの値をもち、このときの乗算係数１−４は”４”として説明する。
【０１１９】
これは、式２中の「４Ｄ５」項の演算を行おうとしたときのものであり、「Ｄ５」が”１２３４５６７８”という値となるときのガロア体の乗算を説明するものである。
【０１２０】
乗算係数１−４が”４”であることから、縦索引テーブル作成回路１−９は、データ用変換表３−６から乗算係数１−４の”４”に該当する列をセレクタ３−９で選択して”０４８Ｃ３７ＢＦ６２ＥＡ５１Ｄ９”の値を持つデータ用縦変換テーブル３−１３を生成し、上位データ変換回路１−５へ転送する。これと同時に、縦索引テーブル作成回路１−９は、パリティ用変換表３−５から乗算係数１−４の”４”に該当する列をセレクタ３−８で選択して”００００１１１１１１１１００００”（２進表記）の値を持つパリティ用縦反転テーブル３−１２を生成し、下位パリティ反転回路１−８へ転送する。
【０１２１】
また、これと同じく、横索引テーブル作成回路１−１０は、データ用変換表３−６から乗算係数１−４の”４”に該当する行をセレクタ３−１０で選択して”０４８Ｃ３７ＢＦ６２ＥＡ５１Ｄ９”の値を持つデータ用横変換テーブル３−１４を生成し、下位データ変換回路１−６へ転送する。これと同時に、横索引テーブル作成回路１−１０は、パリティ用変換表３−７から乗算係数１−４の”４”に該当する行をセレクタ３−１１で選択して”００００１１１１１１１１００００”（２進表記）の値を持つパリティ用横反転テーブル３−１５を生成し、上位パリティ反転回路１−７へ転送する。
【０１２２】
これにより、データ用縦変換テーブル３−１３およびデータ用横変換テーブル３−１４ならびにパリティ用縦反転テーブル３−１２およびパリティ用横反転テーブル３−１５が生成され、テーブルチェック回路１−１４のデータ変換用テーブルチェック回路６−１およびパリティ反転用テーブルチェック回路６−２，ならびにテーブルゼロチェック回路７−１５および７−１６によって値の正当性が確認される。
【０１２３】
テーブルチェック回路１−１４では、データ変換用テーブルチェック回路６−１が、縦索引テーブル作成回路１−９で生成されたデータ用縦変換テーブル３−１３およびパリティ用縦反転テーブル３−１２と、横索引テーブル作成回路１−１０で生成されたデータ用横変換テーブル３−１４およびパリティ用横反転テーブル３−１５とをそれぞれ比較し、一致していない場合はディスクアレイシステムの故障の検出となる。
【０１２４】
同じく、テーブルチェック回路１−１４では、テーブルゼロチェック回路７−１５が、データ用縦変換テーブル３−１３およびデータ用横変換テーブル３−１４のビット単位のＸＯＲ演算結果７−１０〜７−１３がオールゼロであるかどうかを検査し、ゼロ以外の値になった場合は、これもディスクアレイシステムの故障の検出となる。また、テーブルゼロチェック回路７−１６が、パリティ用縦反転テーブル３−１２およびパリティ用横反転テーブル３−１５のＸＯＲ演算結果７−９がゼロであるかどうかを検査し、ゼロ以外の値になった場合は、これもディスクアレイシステムの故障の検出となる。
【０１２５】
データ変換用テーブルチェック回路６−１およびパリティ反転用テーブルチェック回路６−２，ならびにテーブルゼロチェック回路７−１５および７−１６でエラーが検出されない場合は、実際のＲＡＩＤ用パリティデータＱの生成となり、データ１−２およびパリティ１−３が上位データ変換回路１−５および下位データ変換回路１−６ならびに上位パリティ反転回路１−７および下位パリティ反転回路１−８に転送される。
【０１２６】
上位データ変換回路１−５は、３２ビットのデータ１−２の上位１６ビット分となる”１２３４”の値を受け取り、これを４ビット単位の各分解データ４−２〜４−５に分解する。
【０１２７】
これらの４ビット単位の各分解データ４−２〜４−５は、各々のセレクタ４−１０〜４−１３のセレクト信号となり、セレクタ４−１０〜４−１３は、データ用縦変換テーブル３−１３の各値を選択することになる。
【０１２８】
値が”１”となる分解データ４−２の場合は、データ用縦変換テーブル３−１３において”１”の場所にある”４”が変換後の値となるために、生成されたＲＡＩＤ用パリティデータ４−２０は”４”を示す。同様なことを各分解データ４−２〜４−５のすべてに対して行うと、ＲＡＩＤ用パリティデータ４−２０〜４−２３が生成され、値が”４８ｃ３”となる。
【０１２９】
また、データ１−２の下位１６ビット分となる”５６７８”についても同様であり、こちらは横索引テーブル作成回路１−１０で生成されたデータ用横変換テーブル３−１４とセレクタ４−１４〜４−１７とによって変換が行われ、”７ＢＦ６”となるＲＡＩＤ用パリティデータ４−２４〜４−２７が生成され、データ１−２のデータ１−１２への変換が修了する。
【０１３０】
一方、データ１−２に対する奇数パリティ１−３は、２ビットずつのパリティビット５−４〜５−５およびパリティビット５−６〜５−７に分解されて、上位パリティ反転回路１−７および下位パリティ反転回路１−８でそれぞれ処理される。
【０１３１】
上位パリティ反転回路１−７は、パリティ１−３の上位２ビットをさらに１ビットずつに分解し、パリティビット５−４および５−５として保持し、そのパリティビット５−４および５−５に対応した各分解データ４−２〜４−５によってパリティ用横反転テーブル３−１５をセレクタ５−１６〜５−１９で選択し、その値とＸＯＲ回路５−２４および５−２５によってＸＯＲ論理をとることによってパリティの変換を行う。１ビット目のパリティビット５−４は、４ビット単位の分解データ４−２と分解データ４−３とのバイトパリティであるため、ＸＯＲ回路５−２４により分解データ４−２の”１”の値による選択結果”０”と、分解データ４−３の”２”の値による選択結果”０”とのすべてのＸＯＲ論理がとられるため、”１”ＸＯＲ”０”ＸＯＲ”０”の演算により、その結果は”１”の値を持つパリティビット５−３０となる。
【０１３２】
これをパリティビット５−５に同様に行うことで、パリティビット５−５をＲＡＩＤ用のパリティビット５−３１に変換することができる。
【０１３３】
下位パリティ反転回路１−８も、上位パリティ反転回路１−７と同様な処理により、パリティビット５−６および５−７をＲＡＩＤ用のパリティビット５−３２および５−３３に変換することができる。
【０１３４】
これらの処理により、”１２３４５６７８”の値を持つデータ１−２と”Ｆ”の値をもつパリティ１−３とは、”４”の値をもつ乗算係数１−４によって変換され、”４８Ｃ３７ＢＦ６”の値のデータ１−１２とその値”Ｆ”のパリティ１−１３となり、パリティチェック回路１−１５によって正しいものと判断できるデータが生成されることになる。
【０１３５】
そして、パリティチェック回路１−１５によってパリティチェックされたデータ１−１２とパリティ１−１３とはバッファ１−１７に格納され、このときに、バッファ１−１７から前に格納したデータおよびパリティを読み出し、それとのＸＯＲ回路１−１６によるＸＯＲ論理をとってバッファ１−１７に書き戻すことで前述の式２の各項の積和を生成し、これらの動作を新しいデータ１−２や新しい乗算係数１−４にも適用してそれを繰り返すことで、式２におけるＲＡＩＤ用パリティデータＱの生成が実現できる。
【０１３６】
ここで、配線切断などにより、以下のハードウェアに故障があった場合の動作について説明する。
【０１３７】
１）ガロア体乗算表１−１１自体や、関連する回路が故障し、正しい変換表３−５〜３−７が索引できない場合。
【０１３８】
１）の場合には、ガロア体乗算表１−１１のある一部が電気的ショート等によって故障したようなケースや正しくテーブル３−１２〜３−１５の索引ができないケースなどであり、これには、データ変換用テーブルチェック回路６−１およびパリティ反転用テーブルチェック回路６−２や、テーブルゼロチェック回路７−１５および７−１６によって対応を行う。
【０１３９】
これは、乗算係数１−４が”４”を示すケースにおいてガロア体乗算表１−１１の索引を行った結果、データ用縦変換テーブル３−１３が”０４８Ｃ３７ＢＦ６２ＥＡ５１Ｄ９”と正しい値を示し、もう片方のデータ用横変換テーブル３−１４が故障による影響を受けて”０４８Ｃ３７ＢＦ６２ＥＡ５１Ｄ０”という、最後の４ビットが”９”から”０”に化けた数字を索引すれば、データ変換用テーブルチェック回路６−１よって比較エラーが検出される。
【０１４０】
また、データ用変換表３−６を同じ乗算係数１−４で横方向および縦方向から同時に索引することから、必ず１つは同じ項（対角成分）を参照してしまう特性があるため、データ用縦変換テーブル３−１３が値”０４８Ｃ０７ＢＦ６２ＥＡ５１Ｄ９”、データ用横変換テーブル３−１４も同じ値”０４８Ｃ０７ＢＦ６２ＥＡ５１Ｄ９”と、同じ”３”を索引しなければならない項が”０”に化けたように故障したときには、データ変換用テーブルチェック回路６−１では検出できないが、テーブルゼロチェック回路７−１５ではチェックできる。
【０１４１】
これは、ビット単位によって演算を行った結果であり、その結果は”００１１”（２進表記）を示し、”００００”を示さないことで発見できる。
【０１４２】
２）パリティチェック回路１−１５が故障により機能しない場合。
【０１４３】
２）の場合は、パリティチェック回路１−１５などのエラー検出回路が故障してエラーが発見できない場合であり、これは本実施例１に係るＲＡＩＤ用パリティデータ生成回路１３自体ではエラーは発見できない。
【０１４４】
これについては、上位データ変換回路１−５および下位データ変換回路１−６，ならびに上位パリティ反転回路１−７および下位パリティ反転回路１−８において、データ１−２の上位データ部とパリティ１−３の下位パリティ部とを縦索引テーブル作成回路１−６の結果で変換し、データ１−２の下位データ部とパリティ１−３の上位パリティ部とを横索引テーブル作成回路１−１０の結果で変換する回路構成をとり、これらの変換回路の後にあるパリティチェック回路１−１５が故障した場合においても、必ずＲＡＩＤ用パリティデータＱ自身がパリティエラーとなり、誤ったデータと誤ったパリティとによって正しいデータであると判断できない回路が実現できるため、ＲＡＩＤ用パリティデータＱを扱う転送先のデバイスによりエラーの判断が可能となり、信頼性の高いディスアレイ装置５を提供することができる。
【０１４５】
このように、本実施例１によれば、ガロア体乗算回路１−２１自身のハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表１−１１を縦索引テーブル１−９により縦方向に索引し、横索引テーブル１−１０により横方向に索引し、索引結果をテーブルチェック回路１−１４によりチェックするようにしたからである。
【０１４６】
また、データおよびそのパリティの変換において、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表１−１１を縦索引テーブル１−９により縦方向に索引し、横索引テーブル１−１０により横方向に索引し、縦方向の索引結果を用いて上位データ変換および下位パリティ変換を行い、横方向の索引結果を用いて下位データ変換および上位パリティ変換を行い、パリティチェック回路１−１５によりパリティエラーをチェックするようにしたからである。
【０１４７】
さらに、回路故障によって誤って正しいデータと判断しない回路が得られ、より信頼性の高いＲＡＩＤ用パリティデータ生成回路１３が提供できるという効果がある。その理由は、ガロア体の乗算を行った結果をチェックするパリティチェック回路１−１５等が故障し、かつ、そのときにガロア体乗算回路１−２１自身の故障が発生したとしても、変換する前のパリティが伝搬する形となっており、すべての故障要因が生成されたパリティに反映しているためである。
【実施例２】
【０１４８】
図８は、本発明の実施例２に係るＲＡＩＤ用パリティデータ生成回路１３の構成を示すブロック図である。実施例２に係るＲＡＩＤ用パリティデータ生成回路１３は、その基本的構成は図１に示した実施例１に係るＲＡＩＤ用パリティデータ生成回路１３と同様であるが、図８におけるガロア体乗算回路８−２１が、データ変換回路部分およびパリティ反転回路部分を、データ１−２の上位データ部／下位データ部に分けたものではなく、奇数データ位置／偶数データ位置に分けた構造を示す。
【０１４９】
詳しくは、ガロア体乗算回路８−２１は、ガロア体乗算表１−１１と、ガロア体乗算表１−１１を乗算係数１−４を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路１−９と、同様にガロア体乗算表１−１１を乗算係数１−４を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路１−１０と、生成された索引テーブル情報からデータ１−２をＲＡＩＤ用のデータ１−１２に変換するための偶数データ変換回路８−７および奇数データ変換回路８−８と、同様にデータ１−２に対するパリティ１−３をＲＡＩＤ用のデータ１−１２に対するパリティ１−１３に変換するための偶数パリティ反転回路８−９および奇数パリティ反転回路８−１０とから構成されている。
【０１５０】
図９は、偶数データ変換回路８−７および奇数データ変換回路８−８を示す。偶数データ変換回路８−７および奇数データ変換回路８−８においては、図４の上位データ変換回路１−５および下位データ変換回路１−６と同様な回路構成ではあるが、同じデータ用縦変換テーブル３−１３およびデータ用横変換テーブル３−１４で変換するデータの位置が異なるだけとなる。
【０１５１】
偶数データ変換回路８−７は、３２ビットのデータ１−２の４ビット単位の各分解データ４−２〜４−９から偶数データ位置となる”１”，”３”，”５”，”７”の各値を受け取り、各セレクタ９−１４〜９−１７のセレクト信号とし、セレクタ９−１４〜９−１７は、データ用縦変換テーブル３−１３の各値を選択することになる。これにより、ＲＡＩＤ用パリティデータ４−２０，４−２２，４−２４，４−２６として、値がそれぞれ”４”，”Ｃ”，”７”，”Ｆ”となる。
【０１５２】
また、奇数データ変換回路８−８は、３２ビットのデータ１−２の４ビット単位の各分解データ４−２〜４−９から奇数データ位置となる”２”，”４”，”６”，”８”の各値を受け取り、各セレクタ９−１０〜９−１３のセレクト信号とし、セレクタ９−１０〜９−１３は、データ用横変換テーブル３−１４の各値を選択することになる。これにより、ＲＡＩＤ用パリティデータ４−２１，４−２３，４−２５，４−２７として、値がそれぞれ”８”，”３”，”Ｂ”，”６”となる。
【０１５３】
図１０は、偶数パリティ反転回路８−９および奇数パリティ反転回路８−１０を示す。偶数パリティ反転回路８−９および奇数パリティ反転回路８−１０も、図５の上位パリティ反転回路１−７および下位パリティ反転回路１−８と同様な回路構成であるが、同じ縦変換テーブル３−１２および横変換テーブル３−１５で変換するデータの位置が異なるだけとなる。
【０１５４】
偶数パリティ反転回路８−９は、パリティ１−３の上位２ビットをさらに１ビットずつに分解し、パリティビット５−４および５−５として保持し、そのパリティビット５−４および５−５に対応した各分解データ４−２〜４−５によってパリティ用横反転テーブル３−１５およびパリティ用縦反転テーブル３−１２をセレクタ１０−１４〜１０−１５および１０−１６〜１０−１７で選択し、その値とＸＯＲ回路５−２４および５−２５によってＸＯＲ論理をとることによってパリティの変換を行う。１ビット目のパリティビット５−４は、４ビット単位の分解データ４−２と分解データ４−３とのバイトパリティであるため、ＸＯＲ回路５−２４により分解データ４−２の”１”の値による選択結果”０”と、分解データ４−３の”２”の値による選択結果”０”とのすべてのＸＯＲ論理がとられるため、”１”ＸＯＲ”０”ＸＯＲ”０”の演算により、その結果は”１”の値を持つパリティビット５−３０となる。同様に、２ビット目のパリティビット５−５は、”０”の値を持つパリティビット５−３１となる。
【０１５５】
また、奇数パリティ反転回路８−１０は、パリティ１−３の下位２ビットをさらに１ビットずつに分解し、パリティビット５−６および５−７として保持し、そのパリティビット５−６および５−７に対応した各分解データ４−６〜４−９によってパリティ用横反転テーブル３−１５およびパリティ用縦反転テーブル３−１２をセレクタ１０−１０〜１０−１１および１０−１４〜１０−１５で選択し、その値とＸＯＲ回路５−２６および５−２７によってＸＯＲ論理をとることによってパリティの変換を行う。３ビット目のパリティビット５−６は、４ビット単位の分解データ４−６と分解データ４−７とのバイトパリティであるため、ＸＯＲ回路５−２６により分解データ４−６の”５”の値による選択結果”０”と、分解データ４−７の”６”の値による選択結果”０”とのすべてのＸＯＲ論理がとられるため、”１”ＸＯＲ”０”ＸＯＲ”０”の演算により、その結果は”１”の値を持つパリティビット５−３２となる。同様に、４ビット目のパリティビット５−７は、”１”の値を持つパリティビット５−３３となる。
【０１５６】
このように構成された実施例２に係るＲＡＩＤ用パリティデータ生成回路１３でも、実施例１に係るＲＡＩＤ用パリティデータ生成回路１３と同様の作用および効果が得られることは言うまでもないので、その詳しい動作の説明を省略する。
【０１５７】
特に、本実施例２によれば、実施例１と異なるデータおよびそのパリティの変換でも、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表１−１１を縦索引テーブル１−９により縦方向に索引し、横索引テーブル１−１０により横方向に索引し、縦方向の索引結果を用いて偶数データ変換および奇数パリティ変換を行い、横方向の索引結果を用いて奇数データ変換および偶数パリティ変換を行い、パリティチェック回路１−１５によりパリティエラーをチェックするようにしたからである。
【実施例３】
【０１５８】
図１１は、本発明の実施例３に係るＲＡＩＤ用パリティデータ生成回路１３の回路構成を示すブロック図である。実施例３に係るＲＡＩＤ用パリティデータ生成回路１３は、その基本的構成は図１に示した実施例１に係るＲＡＩＤ用パリティデータ生成回路１３と同様であるが、図１１においては、チェックコードをパリティではなくＥＣＣ１１−３としたときの回路構成である。詳しくは、ＲＡＩＤ用パリティデータ生成回路１３は、データ１−２，ＥＣＣ１１−３および乗算係数１−４を入力してガロア体乗算を行うガロア体乗算回路１１−２１と、ガロア体乗算回路１１−２１で生成された索引テーブル情報が正しいものであるかどうかをチェックするテーブルチェック回路１１−１４と、ガロア体乗算回路１１−２１で生成されたデータ１−１２およびＥＣＣ１１−１３を用いてＥＣＣをチェックするＥＣＣチェック回路１１−１５と、ガロア体乗算回路１１−２１で生成されたデータ１−１２およびＥＣＣ１１−１３に対してＸＯＲ論理演算を行う２つのＸＯＲ回路１−１６と、ＸＯＲ回路１−１６での演算結果をＲＡＩＤ用パリティデータＱとして蓄積するバッファ１−１７とを含んで構成されている。
【０１５９】
ガロア体乗算回路１１−２１は、ガロア体乗算表１−１１と、ガロア体乗算表１−１１を乗算係数１−４を用いて縦方向から索引して縦方向の索引テーブル情報を生成する縦索引テーブル作成回路１−９と、同様にガロア体乗算表１−１１を乗算係数１−４を用いて横方向から索引して横方向の索引テーブル情報を生成する横索引テーブル作成回路１−１０と、生成された索引テーブル情報からデータ１−２をＲＡＩＤ用のデータ１−１２に変換するための上位データ変換回路１−５および下位データ変換回路１−６と、同様にデータ１−２に対するＥＣＣ１１−３をＲＡＩＤ用のデータ１−１２に対するＥＣＣ１１−１３に変換するためのＥＣＣ変換回路１１−７と、ＥＣＣ変換表１１−２２と、ＥＣＣ変換表１１−２２を乗算係数１−４を用いて索引してＥＣＣ用変換テーブルを生成するＥＣＣ索引テーブル作成回路１１−２３とから構成されている。
【０１６０】
図１２および図１３は、ＥＣＣ変換表１１−２２中のすべての変換表１２−０〜１２−１５およびこれらから索引されたすべてのＲ０〜Ｒ１５の変換テーブル１４−０〜１４−１５を例示する図である。各変換テーブル１４−０〜１４−１５は、値”５”の乗算係数１−４をセレクト信号としてセレクタ１３−０〜１３−１５によって各変換表１２−０〜１２−１５から索引される。なお、Ｒ０〜Ｒ１５については、図１４で後述する。
【０１６１】
図１４は、ＥＣＣ変換回路１１−７の回路構成を示す。ＥＣＣ変換回路１１−７は、６４ビットのデータ１−２を４ビット単位に分解したＲ０〜Ｒ１５の分解データ１５−０〜１５−１５をセレクト信号としてＲ０〜Ｒ１５の変換テーブル１４−０〜１４−１５を選択するセレクタ１６−０〜１６−１５と、セレクタ１６−０〜１６−１５の選択結果をＸＯＲ論理するＸＯＲ回路１４−１６と、ＸＯＲ回路１４−１６の出力であるＥＣＣ反転コード１４−１７とＥＣＣ１１−３とをＸＯＲ論理してＲＡＩＤ用のデータ１−１２に対するＥＣＣ１１−１３を出力するＸＯＲ回路１４−１８とから構成されている。
【０１６２】
ＥＣＣ変換回路１１−７の回路構成は、図５の上位パリティ反転回路１−７および下位パリティ反転回路１−８と同様なものであるが、異なる点としてはＥＣＣの特性により、ビット毎に分解したＲ０〜Ｒ１５のデータ１５−０〜１５−１５に対し、１つ１つ対応した変換テーブル１４−０〜１４−１５が必要となることである。
【０１６３】
ＥＣＣ変換回路１１−７は、データ１−２に付随するＥＣＣ１１−１３の変換においては、ＥＣＣ１１−１３が変換後のＥＣＣ反転コード１４−１７を生成するための回路であり、データ１−２を４ビット単位のＲ０〜Ｒ１５のデータ１５−０〜１５−１５に分解し、それぞれのデータ位置に対応する変換テーブル１４−０〜１４−１５を使う回路となっていることである。
【０１６４】
そして、それぞれの変換テーブル１４−０〜１４−１５をデータ１５−０〜１５−１５をセレクト信号とするセレクタ１６−０〜１６−１５によって変換を行い、すべてのセレクタ１６−０〜１６−１５の出力結果をＸＯＲ回路１４−１６によってＸＯＲ論理をとることで、ＥＣＣ反転コード１４−１７が得られる。
【０１６５】
ＥＣＣ反転コード１４−１７を転送されたＥＣＣ１１−３とＸＯＲ論理をとることで変換されたＥＣＣ１１−１３が生成される。
【０１６６】
なお、データ１−２からＸＯＲ論理等による一定の演算によって導かれるチェックコードを使用している限り、そのチェックコードの論理に対応するガロア体乗算表１−１１を用意することにより、パリティやＥＣＣ以外のいかなるチェックコードでも実現が可能である。
【０１６７】
図１５は、変換テーブル１４−０〜１４−１５についてのテーブルチェック回路１１−１４を示す。テーブルチェック回路１１−１４は、ＥＣＣ索引テーブル作成回路１１−２３で生成されたＲ０〜Ｒ１５の変換テーブル１４−０〜１４−１５の各データをそれぞれビット１６−０−１６〜１５に分解し、ＸＯＲ回路１７−０〜１７−１５により同一ビット列のすべてのＸＯＲ論理をとることでその結果１８−０〜１８−１５がすべて”０”になることを検査する。
【０１６８】
なお、上位データ変換回路１−５および下位データ変換回路１−６，ならびに縦索引テーブル作成回路１−９および横索引テーブル作成回路１−１０については、図１に示した実施例１に係るＲＡＩＤ用パリティデータ生成回路１３と同等であるため、ここでは説明を省くものとする。
【０１６９】
次に、このように構成された実施例３に係るＲＡＩＤ用パリティデータ生成回路１３の動作について説明する。
【０１７０】
データ１−２に対するチェックコードとして存在するＥＣＣ１１−３を変換するためには、新しくＥＣＣ変換表１１−２２と、ＥＣＣ索引テーブル作成回路１１−２３とが必要となり、そのＥＣＣ索引テーブル作成回路１１−２３で生成された索引テーブル情報から新しいＥＣＣ１１−１３を生成するためのＥＣＣ変換回路１１−７が必要となる。
【０１７１】
ＥＣＣ変換表１１−２２は、データ１−２を４ビット単位で分解した数必要となり、データ１−２を６４ビットと想定した場合には、ＥＣＣ変換表１１−２２は、図１２および図１３に記載したように、１６枚の変換表１２−０〜１２−１５が用意される。
【０１７２】
これらの変換表１２−０〜１２−１５は、すべて図１１におけるガロア体の乗算係数１−４をセレクト信号としてセレクタ１３−０〜１３−１５によって選択され、Ｒ０〜Ｒ１５までの変換テーブル１４−０〜１４−１５が作成される。
【０１７３】
そして、これらのＥＣＣ索引テーブル作成回路１１−２３によって作成された変換テーブル１４−０〜１４−１５が、ＥＣＣ変換回路１１−７に転送され、ここでＥＣＣ１１−３がＥＣＣ１１−１３に変換される。
【０１７４】
変換手順としては、データ１−２を４ビット単位に分解し、それぞれをＲ０〜Ｒ１５までのデータ１５−０〜１５−１５と定義する。
【０１７５】
そして、それぞれのＲ０〜Ｒ１５のデータ１５−０〜１５−１５は、対応する変換テーブル１４−０〜１４−１５を選択するセレクタ１６−０〜１６−１５に入力され、変換テーブル１４−０〜１４−１５から該当するＥＣＣ変換コードを抜き出し、これらのＥＣＣ変換コードをすべてＸＯＲ回路１４−６によってＸＯＲ論理をとり、その結果をＥＣＣ反転コード１４−１７として生成する。
【０１７６】
次に、ＸＯＲ回路１４−１８によりＥＣＣ反転コード１４−１７を変換前のＥＣＣ１１−３に対してビット単位のＸＯＲ論理をとることにより、ガロア体の乗算が行われたデータ１−１２に対するＥＣＣ１１−１３が生成される。
【０１７７】
実際の値を用いて説明する。
【０１７８】
図１１におけるデータ１−２を６４ビットのデータとし、１６進数で”００００１１１１２２２２３３３３”とすると、以下の式１−１により、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”となるため、そのＥＣＣ１−３は”１７”となる。
【０１７９】
［式１−１］
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)=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(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は、ＥＣＣのビット幅を示し、０〜７の８ビットを示す。また、Ｒ０は式２−１においてＤ（０）〜Ｄ（３）のデータで生成される部分、Ｒ１は式２−１においてＤ（４）〜Ｄ（７）のデータで生成される部分、Ｒ２は式２−１においてＤ（８）〜Ｄ（１１）のデータで生成される部分、…、Ｒ１４は式２−１においてＤ（５６）〜Ｄ（５９）のデータで生成される部分、Ｒ１５は式２−１においてＤ（６０）〜Ｄ（６３）のデータで生成される部分を示す。
【０１９７】
これにより、Ｒ０（ｉ）〜Ｒ１５（ｉ）については、次式となる。
【０１９８】
［式３−１］
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)
【０１９９】
［式３−２］
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)
【０２００】
［式３−３］
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)
【０２０１】
［式３−４］
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
【０２０２】
［式３−５］
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)
【０２０３】
［式３−６］
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)
【０２０４】
［式３−７］
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)
【０２０５】
［式３−８］
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)
【０２０６】
［式３−９］
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
【０２０７】
［式３−１０］
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)
【０２０８】
［式３−１１］
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)
【０２０９】
［式３−１２］
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
【０２１０】
［式３−１３］
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)
【０２１１】
［式３−１４］
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)
【０２１２】
［式３−１５］
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)
【０２１３】
［式３−１６］
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)
【０２１４】
ここで、式３−１〜３−１６で示されたＲ０（ｉ）〜Ｒ１５（ｉ）については、ガロア体乗算回路１１−２１により値が変更されたときに影響を受ける単位にまとめられたものとなるため、これらのＲ０（ｉ）〜Ｒ１５（ｉ）の単位でガロア体の乗算時のＥＣＣ変換を行えばよい。
【０２１５】
以下に、Ｒ０（ｉ）に関する変換テーブル作成方法を示す。
【０２１６】
式３−１において、Ｄ（０）〜Ｄ（３）が１６進数で”０”〜”Ｆ”の値を示すため、Ｄ（０）〜Ｄ（３）とＲ（０）〜Ｒ（７）との値の関係は、以下の表になる。
【０２１７】
【表１】
2005149224.tif 000003
【０２１８】
ここで、表１は、データに対するＥＣＣの「コード表」であるため、これを「コード変換表」に変更する。
【０２１９】
元々のデータをＤ（０−３）としたときの式３−１の結果をＲ０（０−７）とし、新しいデータＤ’（０−３）に対する式３−１の結果をＲ０’（０−７）とした場合、以下の式が成り立つようにする。
【０２２０】
［式４］
R0'(0-7)=R(0-7)+S(0-7)
【０２２１】
ここでのＳ（０−７）をコード変換値と呼ぶこととし、元々のＥＣＣＲ０（０−７）に対してＸＯＲ論理によって値を加えると、新しいＥＣＣＲ０’（０−７）を生成できるためのコードとなり、式４におけるＳ（０−７）を求めると、以下になる。
【０２２２】
［式５］
S(0-7)=R(0-7)+R0'(0-7)
【０２２３】
よって、変換コードは、元々のＥＣＣＲ０（０−７）と、新しいＥＣＣＲ０’（０−７）とをＸＯＲ論理によって求めることができる。その表を作成すると、以下のような表となる。
【０２２４】
【表２】
2005149224.tif 000004
【０２２５】
このとき、ガロア体乗算回路１１−２１によって、データは、以下のように変換されることが明白となっている。
【０２２６】
【表３】
2005149224.tif 000005
【０２２７】
ここで、表２と表３との関係を併せることで、ガロア体の乗算時におけるＥＣＣ変換表が作成可能となる。
【０２２８】
例をあげると、以下のようになる。
【０２２９】
入力データが”２”、乗算係数が”１”であるとき、表３により乗算結果は”２”になる。このとき、ＥＣＣは”ｃ２”から”ｃ２”に変換する必要があるため、変換コードは表２により”００”となる。
【０２３０】
入力データが”２”、乗算係数が”２”であるとき、表３により演算結果は”４”になる。このとき、ＥＣＣは”ｃ２”から”ｃ４”に変換する必要があるため、変換コードは表２により”０６”となる。
【０２３１】
入力データが”２”、乗算係数が”３”であるとき、表３により演算結果は”６”になる。このとき、ＥＣＣは”ｃ２”から”０６”に変換する必要があるため、変換コードは表２により”ｃ４”となる。
【０２３２】
これらを関係を、”０”〜”ｆ”までのすべての入力データと、”０”〜”ｆ”のすべてのガロア体の乗算係数１−４についてＲ０の変換コードを生成すると、以下のような表となり、これがガロア体の乗算時におけるＥＣＣ変換コードとなる。
【０２３３】
【表４−１】
2005149224.tif 000006
【０２３４】
表４−１については、式３−１のＲ０（０−７）が元となり生成されているＥＣＣ変換表であるが、同様に式３−２から式３−１６までのＲ１〜Ｒ１５のＥＣＣ変換表も求めることができ、これらについての演算結果は、以下になる。
【０２３５】
【表４−２】
2005149224.tif 000007
【０２３６】
【表４−３】
2005149224.tif 000008
【０２３７】
【表４−４】
2005149224.tif 000009
【０２３８】
【表４−５】
2005149224.tif 000010
【０２３９】
【表４−６】
2005149224.tif 000011
【０２４０】
【表４−７】
2005149224.tif 000012
【０２４１】
【表４−８】
2005149224.tif 000013
【０２４２】
【表４−９】
2005149224.tif 000014
【０２４３】
【表４−１０】
2005149224.tif 000015
【０２４４】
【表４−１１】
2005149224.tif 000016
【０２４５】
【表４−１２】
2005149224.tif 000017
【０２４６】
【表４−１３】
2005149224.tif 000018
【０２４７】
【表４−１４】
2005149224.tif 000019
【０２４８】
【表４−１５】
2005149224.tif 000020
【０２４９】
【表４−１６】
2005149224.tif 000021
【０２５０】
本実施例３によれば、実施例１および実施例２とは異なるデータおよびそのＥＣＣの変換でも、確実にパリティエラーによってハードウェア故障を発見できるという効果がある。その理由は、ガロア体乗算表１−１１を縦索引テーブル１−９により縦方向に索引し、横索引テーブル１−１０により横方向に索引し、ＥＣＣ変換表１１−２２をＥＣＣ索引テーブル作成回路１１−２３により索引し、縦方向の索引結果を用いて上位データ変換回路１−５により上位データ変換を行い、横方向の索引結果を用いて下位データ変換回路１−６により下位データ変換を行い、ＥＣＣ変換回路１１−７によりＥＣＣ変換を行い、ＥＣＣチェック回路１１−１５によりＥＣＣエラーをチェックするようにしたからである。
【図面の簡単な説明】
【０２５１】
【図１】本発明の実施例１に係るＲＡＩＤ用パリティデータ生成回路の構成を示す回路ブロック図である。
【図２】本発明のＲＡＩＤ用パリティデータ生成回路が配設されるディスクアレイシステムの構成を示す回路ブロック図である。
【図３】図１中のガロア体乗算表ならびに縦索引テーブル作成回路および横索引テーブル作成回路の詳細を示す図である。
【図４】図１中の上位データ変換回路および下位データ変換回路の詳細を示す図である。
【図５】図１中の上位パリティ反転回路および下位パリティ反転回路の詳細を示す図である。
【図６】図１中のテーブルチェック回路におけるデータ変換用テーブルチェック回路およびパリティ反転用テーブルチェック回路の詳細を示す図である。
【図７】図１中のテーブルチェック回路におけるテーブルゼロチェック回路の詳細を示す図である。
【図８】本発明の実施例２に係るＲＡＩＤ用パリティデータ生成回路の構成を示す回路ブロック図である。
【図９】図８中の偶数データ変換回路および奇数データ変換回路の詳細を示す図である。
【図１０】図８中の偶数パリティ反転回路および奇数パリティ反転回路の詳細を示す図である。
【図１１】本発明の実施例３に係るチェックコードをＥＣＣで行うときのＲＡＩＤ用パリティデータ生成回路の構成を示す回路ブロック図である。
【図１２】図１１中の索引テーブル作成回路の詳細を示す図である。
【図１３】図１１中の索引テーブル作成回路の詳細を示す図である。
【図１４】図１１中のＥＣＣ変換回路の詳細を示す図である。
【図１５】図１１中のテーブルチェック回路の詳細を示す図である。
【図１６】従来の技術でのＲＡＩＤ用パリティデータの生成を行う回路構成を示す図である。
【符号の説明】
【０２５２】
１  ホスト
２  システムメモリ
３  ホスト側システムバス
４  ホスト側ＩＯ制御装置
５  ディスクアレイ装置
６  ＲＡＩＤコントローラ
７  ＲＡＩＤ用キャッシュメモリ
８  アレイ側システムバス
９  ＩＯ制御回路
１０  ハードディスク装置
１１  命令処理回路
１２  データ転送制御回路
１３  ＲＡＩＤ用パリティデータ生成回路
１−１  転送データ
１−２  データ
１−３  パリティ
１−４  乗算係数
１−５  上位データ変換回路
１−６  下位データ変換回路
１−７  下位パリティ反転回路
１−８  上位パリティ反転回路
１−９  縦索引テーブル作成回路
１−１０  横索引テーブル作成回路
１−１１  ガロア体乗算表
１−１２  データ
１−１３  パリティ
１−１４  テーブルチェック回路
１−１５  パリティチェック回路
１−１６  ＸＯＲ回路
１−１７  バッファ
１−１８  ＲＡＩＤ用パリティデータ
１−１９  パリティ
３−５  パリティ用変換表
３−６  データ用変換表
３−７  パリティ用変換表
３−８〜３−１１  セレクタ
３−１２  パリティ用縦反転テーブル
３−１３  データ用縦変換テーブル
３−１４  データ用横変換テーブル
３−１５  パリティ用横反転テーブル
４−２〜４−９  データ
４−１０〜４−１７  セレクタ
４−２０〜４−２７  ＲＡＩＤ用パリティデータ
５−４〜５−７  パリティ
５−１６〜５−２３  セレクタ
５−２４〜５−２７  ＸＯＲ回路
５−３０〜５−３３  パリティ
６−１  データ変換用テーブルチェック回路
６−２  パリティ反転用テーブルチェック回路
６−４  比較回路
６−７  比較回路
７−２〜７−５  ビット
７−７  ビット
７−８〜７−９  ＸＯＲ回路
７−１０〜７−１４  ＸＯＲ論理結果
８−７  偶数データ変換回路
８−８  奇数データ変換回路
８−９  偶数パリティ反転回路
８−１０  奇数パリティ反転回路
８−２１  ガロア体乗算回路
１１−３  ＥＣＣ
１１−７  ＥＣＣ変換回路
１１−１３  ＥＣＣ
１１−１５  ＥＣＣチェック回路
１１−２１  ガロア体乗算回路
１１−２２  ＥＣＣ変換表
１１−２３  索引テーブル作成回路
１１−１９  ＥＣＣ
１２−０〜１２−１５  変換表
１３−０〜１３−１５  セレクタ
１４−０〜１４−１５  変換テーブル
１５−０〜１５−１５  データ
１６−０〜１６−１５  セレクタ
１７−０〜１７−１５  ＸＯＲ回路
１８−０〜１８−１５  出力
【図１】
2005149224.tif 000022
【図２】
2005149224.tif 000023
【図３】
2005149224.tif 000024
【図４】
2005149224.tif 000025
【図５】
2005149224.tif 000026
【図６】
2005149224.tif 000027
【図７】
2005149224.tif 000028
【図８】
2005149224.tif 000029
【図９】
2005149224.tif 000030
【図１０】
2005149224.tif 000031
【図１１】
2005149224.tif 000032
【図１２】
2005149224.tif 000033
【図１３】
2005149224.tif 000034
【図１４】
2005149224.tif 000035
【図１５】
2005149224.tif 000036
【図１６】
2005149224.tif 000037