(57)【要約】【課題】  低価格でありながら信頼性が高く、かつ、１６ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置及びそのメモリ訂正方法を提供する。【解決手段】  データをメモリ１０に書き込むときや該データをメモリ１０から読み出すときに１つのワードデータ毎に１つのチェックコードを付加するデータ処理装置において、前記チェックコードとしてパリティデータを用い、メモリ１０にデータ３を書き込むときは該データ３のパリティデータをパリティ生成回路５で生成して該データ８にパリティデータ９付加しメモリ１０に書き込み、メモリ１０からデータを読み出すときは該データ１２と該データ１２に付随するパリティデータ１１とを読み出し該データ１２をパリティデータ１１でチェック１５し、誤りがある時はモディファイ回路１８でデータ訂正を行いホスト１に転送する。【選択図】  図１
2006323434.tif 000002
【特許請求の範囲】
【請求項１】
データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に１つのワードデータ毎に１つのチェックコードを付加し前記データをチェックするデータ処理装置において、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とするデータ処理装置。
【請求項２】
一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すＣＲＣチェックコードを付加すると共に、付加した前記ＣＲＣチェックコードを１ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に１つのワードデータ毎に１つのチェックコードを付加し前記データをチェックするデータ処理装置のメモリ訂正方法において、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とするメモリ訂正方法。
【請求項５】
一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すＣＲＣチェックコードを付加すると共に、付加した前記ＣＲＣチェックコードを１ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする請求項４に記載のメモリ訂正方法。
【請求項６】
前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする請求項４または請求項５に記載のメモリ訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ保全を目的としているサーバー装置やディスクアレイ装置など高信頼性が求められるデータ処理装置等に関し、特に、エラーチェックコードを用いてメモリ訂正を行いデータの信頼性向上を図るデータ処理装置及びそのメモリ訂正方法に関する。
【背景技術】
【０００２】
図７は、従来のメモリ訂正の説明図であり、ホスト１００からメモリモジュール１１０へのデータ書き込み時のデータ経路、および、リードデータをメモリモジュール１１０からホスト１００に対して転送する時のデータ経路を示す図である。
【０００３】
ホスト１００がホストバス１０２を介してメモリモジュール１１０へデータ書き込みを実行する場合には、１２８ビットのライトデータ１０３に対して１６ビットのＥＣＣコードをＥＣＣ生成回路１０４で生成し、ライトバッファ１０６やライトバック用セレクタ１０７を経由したのち、ライトデータ１０８に対してＥＣＣコード１０９を付加した状態で、最終的にメモリモジュール１１０に書き込む。
【０００４】
ホスト１００からリード要求があった場合には、メモリモジュール１１０からリードデータ１１１及び該データ１１１に付属するリードＥＣＣコード１１２を読み出す。ＥＣＣチェック回路１１３はエラーチェックを行い、エラーを検出した場合には、リードデータ１１１及びリードＥＣＣコード１１２をシンドローム生成回路１１４に入れ、訂正場所を示すシンドロームを生成する。そして、生成されたシンドロームによって、モディファイ回路１１５がリードデータ１１１のデータ訂正を行うことで、正常にデータを復元する。
【０００５】
この時、信頼性が高いサーバー装置などにおいては、図７のメモリモジュール１１０に格納されるライトＥＣＣコード１０９は、ライトデータ１０８が１２８ビットに対して１６ビットであるようなＳ４ＥＣ−Ｄ４ＥＤ符号がとられており、４ビットを１ブロックとした１ブロック訂正・２ブロックエラー検出の機能を有するものが使われる。上記のコード以外においても、データ幅が少ない６４ビットデータである場合などにおいては、８ビットのＥＣＣコードをもち、１ビット訂正・２ビットエラー検出を行うＳＥＣ−ＤＥＤ符号などがある。
【０００６】
上記の「ＳＥＣ−ＤＥＤ」は、Ｓｉｎｇｌｅ  ｂｉｔ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ−Ｄｏｕｂｌｅ  ｂｉｔ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇの略であり、ハミング符号をもとにした１ビット誤り訂正・２ビット誤り検出符号である。また、「Ｓ４ＥＣ−Ｄ４ＥＤ」は、リードソロモン符号をもとにしたＳｂＥＣ−ＤｂＥＤ（Ｓｉｎｇｌｅ  ｂ−ｂｉｔ  ｂｙｔｅ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ−Ｄｏｕｂｌｅ  ｂ−ｂｉｔ  ｂｙｔｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ）符号のうち、４ビット（ｂ＝４）を１バイトとして訂正可能にする単一バイト誤り訂正・２重バイト誤り検出符号である。
【０００７】
尚、上述した従来技術の様に、チェックコードを用いてメモリデータのチェックを行うものとして、下記特許文献１記載のものがある。
【０００８】
【特許文献１】特開平８−１３８３９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、６４ビットのデータで８ビットのＥＣＣコードを付加できるＳＥＣ−ＤＥＤ符号では、１ビット訂正が行えるのみで、４ビットのエラー訂正はできない。４ビットの訂正が可能なＳ４ＥＤ−Ｄ４ＥＤ符号を６４ビットデータに対して使ったとすると、１２ビットのＥＣＣコードを付加することが必要となり、一般的に普及している７２ビットの汎用メモリモジュールでは対応ができない。
【００１０】
また、サーバー装置などにおいては、７２ビットの汎用メモリモジュールを２つ並列に使うことが一般的になっているが、この場合には、見かけ上１２８ビットのデータに対し１６ビットのＥＣＣコードを付加できる。しかし、使用できる符号はＳ４ＥＤ−Ｄ４ＥＤ符号なため、４ビット訂正までは可能であるが、８ビット以上の訂正はできない。
【００１１】
１２８ビットのデータに対して８ビットのエラー訂正を行うには、磁気テープ等でよく使用されているＳ８ＥＣ符号がよく知られているが、こちらでもＥＣＣコードは最低２４ビットを必要としている為、１４４ビットでは足らず汎用メモリを使用することができない。
【００１２】
また、Ｓ４ＥＣ−Ｄ４ＥＤ符号を使用し、汎用メモリモジュールを２枚並列に使用して４ビットの故障に耐えられる信頼性を準備したとしても、安価に製造されているメモリモジュールでは１つのメモリチップが持つビット幅が８ビットや１６ビットである為に、チップ故障時には訂正能力を超える故障となってしまい、装置としての信頼性が落ちてしまう。
【００１３】
これと同時に、４ビット幅のメモリチップを使用したメモリモジュールしか使えないという制限が生じ、メモリチップが沢山載っている高価なメモリモジュールを使う装置、特に、沢山のメモリモジュールを使う装置においては、装置の価格を下げることができないという問題が生じる。
【００１４】
これらの問題を解決する一つの方法として、ブロック訂正の方式を採用し、ＥＣＣコードとして１ワードのデータに付随するコードを使わずにデータを特定のブロック単位の大きさにまとめ、そのブロック単位に多ビットのＥＣＣコードを使って訂正能力を広げる方法も存在する。
【００１５】
しかし、この場合、チェックコードとしてのＥＣＣコードがブロック単位に存在する為、小さいワード単位にデータを読みたい場合にはエラーのチェックができず、必ずブロック単位まではすべて読み込みを行わなければならず、メモリのアクセス効率が落ちてしまうという別の問題が生じる。
【００１６】
このため、安価で汎用的な７２ビットのメモリモジュールが使用でき、７２ビットのメモリモジュールでは８ビット以上の訂正機能を実現でき、２つ並列に使った１４４ビットのメモリモジュールでは１６ビット以上の訂正機能を有する新規な技術の開発が望まれている。
【００１７】
本発明の目的は、低価格でありながら信頼性が高く、かつ、汎用の１６ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置及びそのメモリ訂正方法を提供することにある。
【００１８】
本発明の別の目的は、データを読み込む時においては、必ずメモリの１ワードでエラー検出を可能とし、読込時の効率を高く保ったまま８ビットや１６ビットの訂正を実現できる高信頼なデータ処理装置及びそのメモリ訂正方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明のデータ処理装置及びそのメモリ訂正方法は、データをメモリに書き込むときのデータ転送時と該データを前記メモリから読み出すときのデータ転送時に１つのワードデータ毎に１つのチェックコードを付加し前記データをチェックするに際し、前記チェックコードとしてパリティデータを用い故障が発生したデータを訂正し復元することを特徴とする。
【００２０】
本発明のデータ処理装置及びそのメモリ訂正方法は、一定の大きさの単位で前記データ転送を行うとき、転送ブロック単位にデータの正当性を示すＣＲＣチェックコードを付加すると共に、付加した前記ＣＲＣチェックコードを１ワードのバイトもしくは複数の固定されたバイト数単位に設け、前記転送ブロックの故障位置を検出して前記パリティデータで該当データを訂正し復元することを特徴とする。
【００２１】
本発明のデータ処理装置及びそのメモリ訂正方法は、前記復元するデータのビット幅が前記パリティデータのビット幅と一致することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、低価格でありながら信頼性が高く、かつ、汎用の１６ビットの幅を持つメモリチップを使用しても信頼性が低下しないデータ処理装置やメモリ訂正方法を提供することができ、また、データを読み込む時においては、必ずメモリの１ワードでエラー検出を可能とし、読込時の効率を高く保ったまま８ビットや１６ビットの訂正を実現できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の一実施形態について、図面を参照して説明する。
【００２４】
図１は、本発明の一実施形態に係るデータ処理装置の要部構成図であり、ホスト１からメモリモジュール１０へのデータ書き込み時のデータ経路、および、リードデータをメモリモジュール１０からホスト１に対して転送する時のデータ経路を示す図である。
【００２５】
ホスト１からメモリモジュール１０に対してデータ転送を行う場合、ホスト１からホストバス２を介してライトデータ３がデータ転送される。このライトデータ３は、ライトバッファ６及びライトバック用セレクタ７を経由してメモリモジュール１０に転送されるが、このとき、本実施形態では、ＣＲＣ生成回路４及びパリティ生成回路５もライトデータ３を取り込み、以下の処理を行う。
【００２６】
ＣＲＣ生成回路４は、後述する様に、ライトデータ３がライトバッファ６に格納されるたびにデータバイト数をカウントし、５１２バイト転送される毎に得られたＣＲＣ結果（ＣＲＣコード）をライトバッファ６に格納する。パリティ生成回路５は、後述する様に、バイト単位にライトデータ３を区切り、ＥＸＯＲ（イクスクルーシブオア：排他論理和）演算によるパリティデータを生成する。
【００２７】
ホスト１からの要求により、メモリモジュール１０のデータをホスト１に対してデータ転送を行う場合には、メモリモジュール１０から読み出されたリードデータ１２と、リードパリティデータ１１とが、データ復元回路１３に入力される。
【００２８】
データ復元回路１３には、リードデータ１２とリードパリティデータ１１のパリティチェックを行うパリティチェック回路１５と、ＣＲＣコードをチェックするＣＲＣチェック回路１４の２つのチェック回路が設けられている。
【００２９】
データ復元回路１３は、２つのチェック回路１５，１４のチェック結果からエラーバイトを特定し、どのバイト位置のデータが訂正対象かをエラーバイトテーブル１６に書き込み、エラーを検出している間、リードデータ１２およびリードパリティデータ１１をテンポラリバッファ１７に一時的に保管し、エラーバイトテーブル１６によって指示されたバイト位置の書き換えをモディファイ回路１８が行い、モディファイ回路１８によってエラー箇所が書き換えられたリードデータ１２及びリードパリティデータ１１がリードバッファ１９に格納され、その後、リードデータ２０としてホスト１に転送される。
【００３０】
図２は、図１のＣＲＣ生成回路４の詳細図である。ＣＲＣ生成回路４は、ライトデータ３を２バイト単位のバイトデータ３−０〜３−７に分割し、それぞれ独立したＣＲＣ演算回路４ａ−０〜４ａ−７によってＣＲＣコード４ｂ−０〜４ｂ−７を生成する。
【００３１】
このとき、ライトデータ３が５１２バイト転送したことをカウンタ４ｃ，４ｄによりカウントし、カウンタが５１２バイトを示すたびにセレクタ４ｅがＣＲＣ演算結果をライトバッファ６に転送する。
【００３２】
図３は、図１のパリティ生成回路５の詳細図である。パリティ生成回路５では、１２８ビットのライトデータ３が、１６ビット単位に区切ったバイトデータ３−０〜３−７に分割される。この時、バイトデータ３−０〜３−７は、すべてビット単位にＥＸＯＲ回路５ａ−０〜５ａ−６によってＥＸＯＲ演算され、パリティデータ９が生成される。
【００３３】
図４は、図１のデータ復元回路１３内に設けられるＣＲＣチェック回路１４，パリティチェック回路１５，エラーバイトテーブル１６で構成されるエラーバイト特定回路の詳細図である。リードデータ１２は２バイト単位のバイトデータ１２−０〜１２−７に分割され、リードパリティデータ１１（１２−８）を含めて、それぞれ独立したＣＲＣ演算回路１４ａ−０〜１４ａ−７，１５ａによりＣＲＣデータ１４ｂ−０〜１４ｂ−７，１５ｂのＣＲＣチェックが行われる。そして、そのチェック結果が、エラーフラグ１４ｃ−０〜１４ｃ−７，１５ｃとして、５１２バイトカウンタ１４ｄに従って９ビットのエラーバイトテーブル１６に保存される。
【００３４】
図５は、図１のモディファイ回路１８の詳細図である。テンポラリバッファ１７から読み出されたリードデータ１２及びリードパリティ１１は、それぞれ２バイト単位のデータ１２−０〜１２−８に分割され、図２と同じ構造を持つパリティ生成回路１８ａによって生成パリティデータ１８ｂが生成される。
【００３５】
生成された生成パリティデータ１８ｂと、テンポラリバッファ１７から読み出されたパリティデータ１１とはＥＸＯＲ演算回路１８ｃに入力され、ＥＸＯＲ演算回路１８ｃからＤＩＦＦコード１８ｄが出力される。
【００３６】
２バイト単位の各データ１２−０〜１２−８とＤＩＦＦコード１８ｄとが夫々ＥＸＯＲ回路１８ｅ−０〜１８ｅ−８に入力され、各ＥＸＯＲ回路１８ｅ−０〜１８ｅ−８の出力と２バイト単位のデータ１２−０〜１２−８とが夫々セレクタ１８ｆ−０〜１８ｆ−８に入力される。各セレクタ１８ｆ−０〜１８ｆ−８には、セレクト信号として、エラーバイトテーブル１６に書き込まれているバイト位置信号ＥＲＲ１〜ＥＲＲ８が印加される。これにより、モディファイ（訂正）されたリードデータ１２’とパリティ１１’が生成され、リードバッファ１９に書き込まれ、これが図１のリードデータ２０となる。
【００３７】
次に、上述したデータ処理装置における動作を説明する。ホスト１からメモリモジュール１０にデータ転送し、メモリモジュール１０にデータを保存する場合には、ホスト１からライトデータ３が５１２バイト転送されるたびに、８バイトのＣＲＣチェックコードをＣＲＣ生成回路４が生成し、ライトデータ３の後にＣＲＣコードを付加する。この動作を図２で説明する。
【００３８】
図２において、ライトデータ３は２バイトのデータ単位に分割され、それぞれのデータ３−０〜３−７の単位に、ＣＲＣ演算回路４ａ−０〜４ａ−７によって、ＣＲＣコード４ｂ−０〜４ｂ−７が生成される。この時、ＣＲＣコードは、以下の式を２回実行することによって、２バイトのデータを１バイトのＣＲＣコードとして生成する。
【００３９】
尚、Ｃｉ＋１（ｘ）は生成する新しいＣＲＣコードを意味し、Ｄｉ（ｘ）は入力するデータ、Ｃｉ（ｘ）はデータを入力する時の元のＣＲＣデータである。
【００４０】
Ｃｉ＋１（７）＝Ｃｉ（０）＋Ｄｉ（０）
Ｃｉ＋１（６）＝Ｃｉ（７）＋Ｄｉ（７）
Ｃｉ＋１（５）＝Ｃｉ（６）＋Ｄｉ（６）＋Ｃｉ（０）＋Ｄｉ（０）
Ｃｉ＋１（４）＝Ｃｉ（５）＋Ｄｉ（５）＋Ｃｉ（０）＋Ｄｉ（０）
Ｃｉ＋１（３）＝Ｃｉ（４）＋Ｄｉ（４）＋Ｃｉ（０）＋Ｄｉ（０）
Ｃｉ＋１（２）＝Ｃｉ（３）＋Ｄｉ（３）
Ｃｉ＋１（１）＝Ｃｉ（２）＋Ｄｉ（２）
Ｃｉ＋１（０）＝Ｃｉ（１）＋Ｄｉ（１）
この演算は、２バイトのデータ３−０〜３−７毎に実行される。
【００４１】
そして、ライトデータ３をライトバッファ６に格納しながら５１２バイト転送したことをカウンタ４ｃで検出すると、そのデータの書き込みの後に、ライトバッファ６に対し、ＣＲＣコード４ｂ−０〜４ｂ−７を書き込む。これにより、以後のデータ転送時に、ＣＲＣコード４ｂ−０〜４ｂ−７によるデータチェックが可能になる。
【００４２】
また、転送するライトデータ３およびＣＲＣデータ４ｂ−０〜４ｂ−７をライトバッファ６に格納するときには、パリティ生成回路５によって、１６バイトを１ワードとし、１ワード毎に２バイトのパリティデータが付けられる。これを図３により説明する。
【００４３】
図３において、ライトデータ３は、２バイト単位のデータ３−０〜３−７に分割され、全ての２バイトデータ３−０〜３−７の排他論理をＥＸＯＲ演算回路５ａ−０〜５ａ−６でとる。つまり、生成するパリティデータ９のビット“０”は、データ３−０〜３−７のビット０，１６，３２，４８，６４，７２，９６，１１２の８ビットのＥＸＯＲ論理となる。
【００４４】
パリティデータ９のビット“１”は、データ３−０〜３−７のビット１，１７，３３，４９，６５，７３，９７，１１３の８ビットのＥＸＯＲ論理となり、パリティデータ９のビット“２”は、データ３−０〜３−７のビット２，１８，３４，５０，６６，７４，９８，１１４の８ビットのＥＸＯＲ論理となり、以下同様に、全てのビットがＥＸＯＲ論理によって生成される。
【００４５】
生成されたパリティデータ９は、データ３とＥＸＯＲ論理を再度取るとゼロとなるため、データ３の正当性をチェックすることが可能となる。このパリティデータ９は、データ３と共にライトバッファ６を経由してメモリモジュール１０に格納され、これでライト動作が完了する。
【００４６】
次に、ホスト１に対してメモリモジュール１０から読み出したリードデータ１２を転送する動作を説明する。
【００４７】
メモリモジュール１０からリードデータ１２とそれに対するリードパリティデータ１１を読み出すと、これらはモディファイ回路１３に転送される。この時、リードデータ１２とパリティデータ１１とをパリティチェック回路１３によってチェックしながらテンポラリバッファ１７にセクタの最後のＣＲＣデータが入るまで格納する。
【００４８】
そして、パリティチェック回路１３によってエラーが確認されなければ、テンポラリバッファ１７に格納されたデータはそのままリードバッファ１９を経由してホスト１に転送する。
【００４９】
もし、パリティチェック回路１３によってエラーが確認されたならば、演算していたＣＲＣチェック回路１４によってエラーバイトの位置を特定する。図４は、リードデータ１２とパリティデータ１１によって、エラーバイトテーブル１６を生成するエラーバイト特定回路である。
【００５０】
リードデータ１２とパリティデータ１１は、それぞれ２バイトのデータ１２−０〜１２−７，１２−８に区切られ、それぞれのＣＲＣ演算回路１４ａ−０〜１４ａ−７，１５ａによってチェックされる。この時、ＣＲＣエラー６−０〜６−８が発生した場合には、エラーバイトテーブル１６にエラー箇所を書き込む。なお、この時、エラーバイトテーブル１６は９ビットのデータとして存在するが、どれか１ビットしか立てられない構造となり、２ビットのエラーが発生した場合には訂正不能となる。そして、エラーバイトテーブル１６が確定した段階で、図５のモディファイ回路１８に処理が受け渡される。
【００５１】
図５のモディファイ回路１８では、エラーバイトテーブル１６が確定した段階で、テンポラリバッファ１７からリードデータ１２およびパリティデータ１１を読み出す。
【００５２】
この時、リードデータ１２は、２バイト単位に扱われ、パリティ生成回路１８ａにおいて生成パリティデータ１８ｂを作成し、転送されるリードパリティデータ１１と排他論理をとることでＤＩＦＦコード１８ｄが生成される。
【００５３】
ＤＩＦＦコード１８ｄは、リードパリティデータ１１とリードデータ１２のパリティ生成関係において、正しいコードに変更する為の訂正コードとなる。このＤＩＦＦコード１８ｄは、前述のエラーバイトテーブル１６で示された箇所に対してデータ１２−０〜１２−８にＥＸＯＲ論理を実行することでデータの訂正を行い、正しい位置に訂正されたデータ１２’とパリティ１１’が生成されてリードバッファ１９に保存される。
【００５４】
リードバッファ１９に格納されたデータは、最終的にデータ転送先であるホスト１に転送され、リード動作が終了する。
【００５５】
図６は、エラーバイトテーブルを作成するためのエラーバイト特定回路の別実施形態に係る図である。本実施形態では、図４のＣＲＣ演算回路１４ａ−０〜１４ａ−７，１５ａの代わりにパリティチェック回路１４ｐ−０〜１４ｐ−７，１５ｐを設けている。本実施形態は、５１２バイトのセクタデータのチェックにパリティを使っている場合において、パリティチェック回路１４ｐ−０〜１４ｐ−７，１５ｐによってパリティ１４ｑ−０〜１４ｑ−７，１５ｑを生成してエラー箇所を特定し、エラー箇所を示すエラーフラグ１４ｒ−０〜１４ｒ−７，１５ｒをエラーバイトテーブル１６に格納する。
【００５６】
以上述べた様に、本発明の実施形態では、例えば６４ビットのデータに対しては８ビットのパリティデータを付加し、１２８ビットに対しては１６ビットのパリティデータを付加し、それを１ワードと定義して必ず一緒にメモリモジュールに格納する。また、そのデータと生成されたパリティデータとをメモリに書き込むときには５１２バイトを１つの書き込み単位（セクタ）として扱い、データの最後にＣＲＣコードを付加する。
【００５７】
そして、そのＣＲＣコードは、１ワードのデータ幅をパリティデータ幅で割った数の分のバイト数を用意し、データが８バイトでパリティデータが１バイトの時にはＣＲＣコードを８バイトのＣＲＣを用意し、１６バイトのデータでパリティデータが２バイトの時にも、８バイトのＣＲＣを生成する。
【００５８】
また、メモリモジュールからデータとパリティデータを読み出した時には、その１ワード単位にＥＸＯＲ演算を行い、演算結果がゼロによってデータが正常であることを確認し、正常では無いことを検出した時には、そのワードを含む１セクタのデータを読み出してＣＲＣチェック結果を得、これにより、故障バイト位置を検出する。
【００５９】
尚、前述の故障バイト位置を検出し、そのバイト位置のデータとパリティデータから、例えばＲＡＩＤの技術によって故障したバイトを復元しても良い。
【００６０】
本実施形態によれば、パリティデータは、必ず１ワード中のデータと共に転送されている為にパリティチェック回路で１ワード分のデータの正当性が確認でき、１セクタの大きい単位のデータを読み出さなくてもリードデータのチェックが可能となり、リード時のメモリ効率が高くなる。
【００６１】
また、チェックコードとして用意したビットは、データの訂正能力のビット数と等しくなる為、１４４ビットのメモリモジュールでは１６ビットの訂正が可能となり、７２ビットのメモリモジュールでは８ビットの訂正が可能となるメモリ制御回路を構成できる。
【００６２】
これにより、システムの規模に応じて訂正能力を変更する事が可能になると同時に、汎用で安価に売られている７２ビットのメモリモジュールを２個並列に使用するシステムにおいては、１６ビット訂正能力を保持する高信頼性な装置を構築できる。
【００６３】
また、本実施形態によれば、８ビットや１６ビットの訂正能力を構築できる為、今後メモリの集積度が上がって１つのメモリチップのビット幅が８ビットや１６ビットになったとしても、信頼性を落とさずに安価な汎用のメモリモジュールを使用することが可能となり、大量にメモリモジュールを使う装置においては、低コストで装置を構成できる。
【産業上の利用可能性】
【００６４】
本発明に係るデータ処理装置等は、低価格でありながら信頼性が高くなるため、サーバー装置やディスクアレイ装置等に適用すると有用である。
【図面の簡単な説明】
【００６５】
【図１】本発明の一実施形態に係るデータ処理装置の要部構成図である。
【図２】図１に示すＣＲＣ生成回路の詳細図である。
【図３】図１に示すパリティ生成回路の詳細図である。
【図４】図１に示すエラーバイト特定回路の詳細図である。
【図５】図１に示すモディファイ回路の詳細図である。
【図６】別実施形態に係るエラーバイト特定回路の構成図である。
【図７】従来のデータ処理回路の構成図である。
【符号の説明】
【００６６】
１  ホスト
２  ホストバス
３  ライトデータ
４  ＣＲＣ生成回路
５  パリティ生成回路
６  ライトバッファ
９  ライトパリティデータ
１０  メモリモジュール
１１  リードパリティデータ
１２  リードデータ
１３  データ復元回路
１４  ＣＲＣチェック回路
１５  パリティチェック回路
１６  エラーバイトテーブル
１８  モディファイ回路
１９  リードバッファ
【図１】
2006323434.tif 000003
【図２】
2006323434.tif 000004
【図３】
2006323434.tif 000005
【図４】
2006323434.tif 000006
【図５】
2006323434.tif 000007
【図６】
2006323434.tif 000008
【図７】
2006323434.tif 000009