(57)【特許請求の範囲】
【請求項１】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ＥＣＣの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ＥＣＣの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項４】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ＥＣＣの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項６】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として訂正不可能なエラーを含むと判定することを特徴とする請求項５記載のメモリコントローラ。
【請求項７】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）機能付きメモリモジュールと、前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラとを含む情報処理装置であって、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ＥＣＣの符号情報を、前記メモリモジュールより読み出して、複数のエラービットを含むエラーブロックの有無及びエラーブロックの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とする情報処理装置。
【請求項８】
前記判定部は、前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が異なる場合に、前記複数の読み出しデータ全体として前記データは訂正不可能なエラーを含むと判定することを特徴とする請求項７記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、メモリコントローラ及び情報処理装置に関する。
【背景技術】
【０００２】
近年、情報処理装置の大規模化に伴って、実装されるメモリの容量は増加し、高い信頼性が求められている。大容量のメモリモジュールとして、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）が知られている。ＤＩＭＭ内部には複数のＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶素子が搭載されており、これらの記憶素子や伝送路等のＤＩＭＭ内部の故障が発生する可能性が高まっている。大容量メモリで高い信頼性を維持する為に、メモリの故障箇所を迅速に検出することが要求される。
【０００３】
その対策として、基板実装時のデータバスやアドレスバス等の不完全な接続によるメモリ故障を検出する技術が知られている。メモリの故障箇所を検出するための技術として、読み出しデータにＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）コードを付与する方法が開示されている。このＥＣＣコードを使用する事により、例えば２ビット以上のエラー検出と１ビットの誤り訂正とを可能にする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６９０５４号公報
【特許文献２】特開２００６−２６０２８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
最も基本的なハミング符号を利用して読み出しデータのエラー訂正及び検出を行う方法では、読み出しデータの１ｂｉｔエラーは訂正可能であるが、２ｂｉｔ以上のエラーは訂正不可能であることが知られている。近年、メモリの集積度が上がり、メモリチップ内のメモリセルが小型化される事で、過去のメモリの集積度では発生しなかった複数ビットに渡るデータエラーが発生するようになってきた。そのため、既存のＥＣＣコードでは検出能力の限界を越えて、エラーとして検出できなくなるケースが発生するようになった。
【０００６】
しかしながら、ハミング符号を使用した場合、３ｂｉｔ以上の読み出しデータのエラーを１ｂｉｔエラーと誤判定することがある。上記したように、１ｂｉｔエラーが発生した場合、単にエラー通知するのではなく、訂正可能として処理を行なっていた。しかし、３ｂｉｔ以上のエラーを考慮するようになると、１ｂｉｔエラーと判定されても、訂正不可能として処理しなければならない。
【０００７】
開示の技術は、読み出しデータの３ｂｉｔエラー以上のエラーを考慮した上で、訂正可能エラーを判別することを可能にするメモリコントローラ及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）機能付きメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読み出された複数の読み出しデータについて、該読み出しデータに対応する前記ＥＣＣの符号情報を、前記メモリモジュールより読み出して、エラービットの有無及びエラービットの位置の検出を行うエラー検出部と、
前記複数の読み出しデータを一時的に格納するバッファと、
前記バッファに格納された前記複数の読み出しデータに、前記エラー検出部によって訂正可能エラーが検出されたデータが複数含まれ、かつ、該検出されたデータのエラー検出位置が同じ場合に、前記複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部と、
を備えることを特徴とするメモリコントローラが提供される。
【発明の効果】
【０００９】
開示の技術によれば、メモリコントローラに実装されているＥＣＣコードの性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理装置の構成概略図である。
【図２】図２は、メモリモジュールの構成を説明する為の図である。
【図３】図３は、データの構成図を示す図である。
【図４】図４は、実施例１の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図５】図５Ａは、実施例１の情報処理装置におけるＥＣＣ付加回路の内部構成の一部を説明する為の図である。図５Ｂは、実施例１の情報処理装置におけるＥＣＣチェック回路の内部構成の一部を説明する為の図である。
【図６Ａ】図６Ａは、実施例１の情報処理装置におけるハミング符号の生成式の一例である。
【図６Ｂ】図６Ｂは、実施例１の情報処理装置におけるリードデータの故障種類ごとのチェック結果計算値の一例を示す図である。
【図７】図７は、実施例１の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図８】図８は、実施例１の情報処理装置におけるメモリモジュールの故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。
【図９】図９は、実施例１の情報処理装置におけるエラー種類判定フローを示す図である。
【図１０】図１０は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図１１】図１１は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図１２】図１２は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図１３】図１３は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図１４】図１４は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図１５】図１５は、実施例１の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【図１６】図１６は、実施例２の情報処理装置におけるメモリコントローラの内部構成を説明する為の図である。
【図１７】図１７は、実施例２の情報処理装置におけるエラー照合回路の内部構成を説明する為の図である。
【図１８】図１８は、実施例２の情報処理装置のメモリモジュールにおけるエラーｂｉｔ位置とＳＤＲＡＭ番号との対比表である。
【図１９】図１９は、実施例２の情報処理装置のメモリモジュールにおけるエラーｂｉｔ位置とＳＤＲＡＭ番号との対比表である。
【図２０】図２０は、実施例２の情報処理装置におけるエラー種類判定フローを示す図である。
【図２１】図２１は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示す原理図である。
【図２２】図２２は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラー検出動作を示すタイムチャートである。
【図２３】図２３は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。
【図２４】図２４は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正可能エラーの誤検出動作を示すタイムチャートである。
【図２５】図２５は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示す原理図である。
【図２６】図２６は、実施例２の情報処理装置のエラー照合回路におけるリードデータの訂正不可能エラー検出動作を示すタイムチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を詳細に説明する。図１は、情報処理装置の構成概略図である。情報処理装置の一例として、システムボード１を用いて説明する。システムボード１は、メモリモジュール１１ａ、１１ｂ、メモリコントローラ１２ａ、１２ｂ、演算処理ユニット（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５ａ、１５ｂ、ノードコントローラ１６、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ユニット１７ａ、１７ｂ、管理ＬＳＩ１８を備える。
【００１２】
メモリコントローラ１２ａは、メモリモジュール１１ａとＣＰＵ１５ａに接続される。メモリコントローラ１２ａは、ＣＰＵ１５ａからのリードコマンドやライトコマンド等を受信して、メモリモジュール１１ａに対するメモリ制御を行う。
【００１３】
メモリコントローラ１２ｂは、メモリモジュール１１ｂとＣＰＵ１５ｂに接続される。メモリコントローラ１２ｂは、ＣＰＵ１５ｂからのリードコマンドやライトコマンド等を受信して、メモリモジュール１１ｂに対するメモリ制御を行う。
【００１４】
ノードコントローラ１６は、自己のシステムボード１内の複数のＣＰＵ１５ａ、１５ｂや複数のＩＯユニット１７ａ、１７ｂに接続し、他のシステムボードや外部の情報機器に対する通信制御を行う。
【００１５】
管理ＬＳＩ１８は、システムボード１内の各回路に接続し、各回路の動作状況を監視する。さらに、管理ＬＳＩ１８は、ユーザの仕様により各回路のメンテナンスを行う制御機能を持たせることができる。
【００１６】
図２は、メモリモジュールの構成を説明する為の図である。メモリモジュール１１ａの一例としてＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）が挙げられる。本実施例では、標準化された規格であるＤＤＲ３に準拠するＤＩＭＭ２１を備えた大容量メモリモジュールを用いて説明する。なお、メモリモジュール１１ｂについても同様の構成であり、説明は省略する。
【００１７】
ＤＩＭＭ２１ｈはＤＩＭＭ２１が故障した際に代替として用いられる予備のＤＩＭＭである。ＤＩＭＭ２１は、ｎ個のＲＡＮＫ２３−０〜２３−ｎ−１を備える。
【００１８】
また、ＲＡＮＫ２３−１〜２３−ｎ−１には、それぞれ複数の記憶素子が並列配置される。例えば、ＲＡＮＫ２３−０にはｍ個のＳＤＲＡＭ２４−０〜２４−ｍ−１（ｍは整数）が並列配置される。同様に、ＤＩＭＭ２１ｈも複数のＲＡＮＫを備える。
【００１９】
なお、本実施形態において、メモリモジュールはＲＡＮＫ単位で管理される為、ＲＡＮＫを単位メモリ領域として説明する。なお、例えば、ＳＤＲＡＭ単位でアドレスが管理される別種のメモリモジュールを使用する場合にはＳＤＲＡＭを単位メモリ領域とすることもできる。
【００２０】
メモリコントローラ１２ａは、ＣＰＵ１５ａから、例えば、ＤＩＭＭ２１へのデータのリードコマンドやライトコマンド等を受信すると、メモリインタフェース２７のコマンド／アドレスバス２８を介してコマンド及びアドレス信号をＤＩＭＭ２１へ伝送する。
【００２１】
そして、ＤＩＭＭ２１内において、信号バス２８ａを経由してＲＡＮＫを指定するチップセレクト信号（ＣＳ：Ｃｈｉｐ  Ｓｅｌｅｃｔ）が各ＲＡＮＫ２３−０〜２３−ｎ−１に対して伝送される。また、信号バス２８ｂを経由して、ＳＤＲＡＭ内のどの位置にアクセスするかを指定するメモリアドレス（ＭＡ：Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ）及びバンクアドレス（ＢＡ：Ｂａｎｋ  Ａｄｄｒｅｓｓ）を含むＲＡＮＫ内アドレスが各ＳＤＲＡＭ２４−０〜２４−ｍ−１に対して伝送される。
【００２２】
データバス２９を経由して伝送されたライトデータは、ＤＩＭＭ２１内のデータバス２９ａを経由して各ＳＤＲＡＭ２４−０〜２４−ｍ−１へ伝送される。また、各ＳＤＲＡＭ２４−０〜２４−ｍ−１からのリードデータは、ＤＩＭＭ２１内のデータバス２９ａ、メモリインタフェース２７のデータバス２９を経由して、メモリコントローラ１２ａに伝送される。
【００２３】
図３は、データの構成図を示す図である。図３に示すように、データは、Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ（ＥＣＣ）コード及びデータ本体部を有する。ＥＣＣコードは、データのエラー検出を行うために用いられるコードで、データ本体部を基に生成されたエラー訂正符号である。
【００２４】
エラー訂正符号は、例えばＳＥＣ／ＤＥＤ（Ｓｉｎｇｌｅ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔ／Ｄｏｕｂｌｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔ）方式のハミング符号を用いる。この符号は、２ビット以上のエラー検出と１ビットの誤り訂正とを可能にするものである。もし、訂正可能エラー（ＣＥ：Ｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ）が発生すると、図４で後述するＥＣＣチェック回路３２においてデータビットのエラーが発生した箇所が訂正される。又、訂正と同時に、図４で後述するメモリコントローラ２２を介してＣＰＵ１５ａにデータが送付される。もし、訂正不可能エラー（ＵＥ：Ｕｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ）が検出されると、エラー信号を介して訂正不可能エラーが発生したことが、図４で後述するメモリコントローラ２２を介してＣＰＵ１５ａ及び管理ＬＳＩ１８へ通知される。
【００２５】
図４は、実施例１の情報処理装置におけるメモリコントローラ２２の内部構成を説明する為の図である。図４は、図２で説明したメモリコントローラ１２ａの一例であるメモリコントローラ２２を示す。
【００２６】
メモリコントローラ２２は、ＥＣＣ付加回路３１、ＥＣＣチェック回路３２、コマンド／アドレスバッファ（Ｃ／Ａ  ＢＵＦＦＥＲ）３３ａ、ライトバッファ（ＷＲＩＴＥ  ＢＵＦＦＥＲ）３３ｂ、リードバッファ（ＲＥＡＤ  ＢＵＦＦＥＲ）３３ｃ、エラー照合回路３４及びデータ破棄回路３５を備える。
【００２７】
ＥＣＣ付加回路３１は、ＣＰＵ１５ａから伝送されたライトデータにＥＣＣコードを付加する。
【００２８】
ライトバッファ３３ｂは、ＥＣＣコードが付加されたライトデータを一時的に格納する。ＥＣＣコードが付加されたライトデータは、ライトバッファ３３ｂに一時記憶された後、所定のクロックに同期しながらデータバス２９を経由してＤＩＭＭ２１の指定のライトアドレスに伝送される。
【００２９】
また、メモリコントローラ２２は、ＣＰＵ１５ａからのライトコマンドとアドレス信号を受信すると、これらをコマンド／アドレスバッファ３３ａに一時的に格納する。そして、ライトコマンドとアドレス信号は、所定のクロックに同期しながらコマンド／アドレスバス２８を経由してＤＩＭＭ２１に伝送される。
【００３０】
ＥＣＣチェック回路３２には、リード対象のＤＩＭＭ２１から読み出されたリードデータが、所定のクロックに同期しながらデータバス２９を経由して入力される。ＥＣＣチェック回路３２は、リードデータのエラー検出及び訂正と、リードデータのエラー種類及びエラービットの位置確認を行う。ＥＣＣチェック回路３２は、リードデータのエラー検出及び訂正を行った後、リードデータをリードバッファ（ＲＥＡＤ  ＢＵＦＦＥＲ）３３ｃに伝送する。次いで、ＥＣＣチェック回路３２は、リードデータのエラー種類情報及びエラービットの位置情報を、エラー照合回路３４に伝送する。
【００３１】
リードバッファ３３ｃは、ＥＣＣチェック回路３２から伝送されたリードデータを一時的に格納する。リードバッファ３３ｃは、後述するエラー照合回路３４からのエラーの種類の判定タイミングに合わせて、格納されたリードデータをデータ破棄回路３５に伝送する。
【００３２】
エラー照合回路３４は、所定のクロックに同期しながら検出したエラー種類情報（エラー無し／複数ビットエラー／１ビットエラー）と１ビットエラーが発生して訂正を行ったエラービットの位置情報を一時的に格納する。エラー照合回路３４は、一時的に格納されたエラー種類情報とエラービットの位置情報を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路３４は、エラーの種類の判定結果に基づいて、データ破棄回路３５にデータの破棄命令を出力する。そして、エラー照合回路３４は、判定したエラー報告を、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。即ち、エラー照合回路３４は、リードバッファ３３ｃに格納された複数の読み出しデータに、検出部によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【００３３】
データ破棄回路３５は、エラー照合回路３４から出力されたデータ破棄命令に従って、リードバッファ３３ｃから伝送されたリードデータを破棄する。データ破棄回路３５は、リードデータ有効信号を“０”にすることにより、リードデータを無効にすることができる。エラー照合回路３４からデータの破棄命令が出力されなかった場合、データ破棄回路３５は、リードバッファ３３ｃから伝送されたリードデータを、そのままＣＰＵ１５ａに伝送する。
【００３４】
なお、訂正可能エラー／訂正不可能エラーの報告を受けた場合の、ＣＰＵ１５ａの一般的な動作を説明する。訂正可能エラーの報告を受けた場合、ＣＰＵ１５ａは、訂正可能エラーの発生回数を数えるカウンタを持ち、回数が一定値以上に達した場合にユーザへの警告や予備のＤＩＭＭ２１ｈへの切り替えなどの対処を実行する。一方、訂正不可能エラーの報告を受けた場合、ＣＰＵ１５ａはＲＥＡＤリトライと呼ばれるシーケンスによって同一アドレスへの再リードを試みる。それでもエラーが回復しない場合、ＣＰＵ１５ａは、ＲＥＡＤされたデータが使用される前にプログラムの終了処理やシャットダウン処理を行ってエラーデータによる異常動作を回避する。
【００３５】
図５Ａ及び図５Ｂは、実施例１の情報処理装置におけるＥＣＣ付加回路３１及びＥＣＣチェック回路３２の内部構成の一部を説明する為の図である。図５Ａ及び図５Ｂは、６４ビットのライドデータ及び６４ビットのリードデータを例に挙げて説明する。なお、図５Ａ及び図５Ｂにおいて、図１〜図４で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００３６】
図５Ａに示すように、ＥＣＣ付加回路３１は、排他的論理回路（生成Ｘｏｒ回路）３１ａを備える。排他的論理回路３１ａは、ＣＰＵ１５ａから伝送された６４ビットのライトデータから、８ビットの排他的論理和を生成する。生成された排他的論理和は、データ本体部を基に生成されたエラー訂正符号であるハミング符号として使用される。ＥＣＣ付加回路３１を用いて行われるハミング符号の生成方法は、後述する図６Ａを用いて説明する。次いで、ＥＣＣ付加回路３１は、６４ビットのライトデータに、生成された８ビットのハミング符号を付加して、ライトバッファ３３ｂに伝送する。即ち、ＥＣＣ付加回路３１は、メモリモジュール１１ａ、１１ｂに書込む複数ビット単位のライトデータについて、ライトデータに対応するハミング符号を生成する。
【００３７】
図５Ｂに示すように、ＥＣＣチェック回路３２は、排他的論理回路（チェックＸｏｒ回路）３２ａ、排他的論理回路（比較Ｘｏｒ回路）３２ｂ、故障箇所特定回路３２ｃ及び訂正回路３２ｄを備える。
【００３８】
排他的論理回路３２ａは、ＤＩＭＭ２１から伝送された６４ビットのリードデータの排他的論理和を求め、リードデータのエラーチェック用のハミング符号を生成する。このハミング符号の生成には、ＥＣＣ付加回路３１と同一の論理を使用する。リードデータのエラーが無ければ、排他的論理和の計算結果は、書込時に生成した排他的論理和と同じ値になる。排他的論理回路３２ａは、生成したハミング符号を排他的論理回路３２ｂに伝送する。
【００３９】
排他的論理回路３２ｂは、ライト時に排他的論理回路３１ａによって生成されて読み出しデータに付加された８ビットのハミング符号と、リード時に排他的論理回路３２ａによって生成された８ビットのハミング符号を比較する。具体的には、排他的論理回路３２ｂは、読み出しデータに付加された８ビットのハミング符号と排他的論理回路３２ａによって生成された８ビットのハミング符号との排他的論理和を求める。排他的論理回路３２ｂは、求めた排他的論理和を８ビットのチェック結果として、故障箇所特定回路３２ｃに伝送する。
【００４０】
故障箇所特定回路３２ｃは、排他的論理回路３２ｂから伝送された８ビットのチェック結果に基づいて、リードデータ全体の故障の種類及び故障箇所を特定する。故障箇所特定回路３２ｃを用いて行われるリードデータ全体の故障の種類及び故障箇所の判断方法は、後述する図６Ｂを用いて説明する。故障箇所特定回路３２ｃは、特定したリードデータ全体の故障の種類及び故障箇所の情報を、訂正回路３２ｄ及びエラー照合回路３４に伝送する。即ち、故障箇所特定回路３２ｃは、メモリモジュールから読み出された複数ビット単位の読み出しデータについて、エラービットの位置の検出を行うエラー検出部である。
【００４１】
訂正回路３２ｄは、伝送されたリードデータ全体の故障の種類及び故障箇所の情報に基づいて、リードデータのデータ訂正を行う。訂正回路３２ｄは、訂正されたリードデータ
をリードバッファ３３ｃに伝送する。
【００４２】
図６Ａは、実施例１の情報処理装置におけるハミング符号の生成式の一例である。図６Ａに示すように、図５ＡにおけるＥＣＣ付加回路３１の排他的論理回路３１ａは、６４ビットのライトデータのうち、一部のビットを抜き出して排他的論理和を求めることにより、８ビットのハミング符号を生成する。
【００４３】
図６Ｂは、実施例１の情報処理装置におけるリードデータの故障種類ごとのチェック結果の計算値の一例を示す図である。
【００４４】
図６Ｂに示すように、リードデータの故障が無い場合、チェック結果は全て０となる。また、リードデータに１ビット故障が発生した場合、チェック結果のパターンは、全て０となる以外で他のチェック結果と重複しないパターンとなる。そのため、故障箇所特定回路３２ｃは、チェック結果からビットの故障位置を検出して１ビット故障を訂正することができる。
【００４５】
また、２ビット故障が発生した場合、チェック結果のパターンは、全て０の場合、又は１ビット故障時のパターンのいずれの場合にも該当しないものになる。そのため、チェック結果を分析することにより、２ビット故障が発生したことを検出できる。しかし、２ビット故障のチェック結果は重複する場合があるため、１ビット故障時のように、ビットの故障位置を特定することができない。
【００４６】
また、３ビット故障が発生した場合、チェック結果のパターンは、全て０となる場合、又は１ビット故障パターンを含む２の８乗通りとなる。そのため、３ビット故障が発生した場合、故障無し、又は１ビット故障と誤判定される場合がある。３ビット故障が１ビット故障と誤判定された場合、ランダムな複数ビットの故障を含むデータが偶然別の１ビットエラーのデータパターンと一致したものであるため、１ビットエラーの位置情報は本来の故障位置と関係ないランダムなビットを示す。
【００４７】
実施例１におけるエラー照合回路３４は、各サイクルで検出したエラー種類（エラー無し／複数ビットエラー／１ビットエラー）、及び１ビットエラーが発生して訂正を行ったビットの位置情報を一時記憶する。エラー照合回路３４は、エラー種類及び訂正を行ったビットの位置情報を照合することによって、データブロック全体としてのエラー種類を判定する。エラー照合回路３４を追加することで、１ビットエラーの位置情報が本来の故障位置と関係ないランダムなビットを示した場合でも、エラー検出漏れ及び誤訂正の確率を下げることができる。
【００４８】
図７は、実施例１の情報処理装置におけるエラー照合回路３４の内部構成を説明する為の図である。エラー照合回路３４は、論理積回路３４ａ、インクリメントカウンタ３４ｂ、比較回路３４ｃ、フリップフロップ３４ｄ、１ビットエラー情報比較回路３４ｅ、エラー情報レジスタ３４ｆ及びエラー種類判定回路３４ｇを備える。
【００４９】
論理積回路３４ａは、ＥＣＣチェック回路３２からリードデータが伝送されると、リードデータ有効信号のアサートを検出する。信号のアサートとは、信号をハイ（Ｈｉｇｈ）レベルにすることを言う。リードデータ有効信号は、ＥＣＣチェック回路３２によって、８クロックサイクル間アサートされる。
【００５０】
インクリメントカウンタ３４ｂは、ＥＣＣチェック回路３２からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて比較回路３４ｃに出力する。
【００５１】
インクリメントカウンタ３４ｂは、リードデータの受信完了タイミングを知る必要があるため、リードデータ有効信号のアサート時間をカウントする。比較回路３４ｃは、インクリメントカウンタ３４ｂが「１１１」になったとき、即ちリードデータ有効信号が８回目に「１」となったときに「１」を出力する。論理積回路３４ａは、リードデータ有効信号と、比較回路３４ｃからの出力の論理積を求める。そして、論理積回路３４ａは、リードデータ有効信号が８回目に「１」となった時に、フリップフロップ３４ｄに対して「１」を出力する。即ち、論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が８になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。
【００５２】
フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ有効信号を１クロックサイクル保持した後、１ビットエラー情報比較回路３４ｅの１ビットエラー情報保持レジスタ３４ｅ−１及びエラー情報レジスタ３４ｆに伝送する。フリップフロップ３４ｄは、エラー情報レジスタ３４ｆからの読み出しタイミングを１クロックサイクル遅らせ、レジスタへの書込みが完了した後に読み出しが行われることを保証するために備えられている。
【００５３】
１ビットエラー情報比較回路３４ｅは、１ビットエラー情報保持レジスタ３４ｅ−１及び比較回路３４ｅ−２を備える。
【００５４】
１ビットエラー情報保持レジスタ３４ｅ−１は、ＥＣＣチェック回路３２から伝送される１ビットエラー情報を一時的に格納する。１ビットエラー情報保持レジスタ３４ｅ−１が格納する１ビットエラー情報の原理図は、図１０、図１２及び図１４を用いて後述する。なお、１ビットエラー情報保持レジスタ３４ｅ−１は、フリップフロップ３４ｄからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、１ビットエラー情報をクリアする。
【００５５】
比較回路３４ｅ−２は、ＥＣＣチェック回路３２から伝送される１ビットエラー情報と、１ビットエラー情報保持レジスタ３４ｅ−１が保持する１ビットエラー情報とを比較する。比較回路３４ｅ−２は、ＥＣＣチェック回路３２から伝送される１ビットエラー情報と、１ビットエラー情報保持レジスタ３４ｅ−１が保持する１ビットエラー情報が不一致の場合、エラー情報レジスタ３４ｆの１ビットエラー位置不一致検出フラグに「１」を出力する。なお、１ビットエラー情報保持レジスタ３４ｅ−１に１ビットエラー情報が保持されていない時、比較回路３４ｅ−２は、ＥＣＣチェック回路３２から伝送される１ビットエラー情報と、１ビットエラー情報保持レジスタ３４ｅ−１が保持する１ビットエラー情報との比較を行わない。
【００５６】
エラー情報レジスタ３４ｆは、ＥＣＣチェック回路３２から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「１」にする。又、エラー情報レジスタ３４ｆは、ＥＣＣチェック回路３２から、クロックサイクル毎に伝送される１ビットエラー検出情報が通知されると１ビットエラー検出フラグを「１」にする。又、エラー情報レジスタ３４ｆは、比較回路３４ｅ−２で１ビットエラー情報の不一致が検出されると１ビットエラー位置不一致検出フラグを「１」にする。なお、エラー情報レジスタ３４ｆは、ＥＣＣチェック回路３２からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ３４ｆは、フリップフロップ３４ｄからエラー情報レジスタ３４ｆへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ３４ｆからの読み出しを行った時に、エラー情報レジスタ３４ｆが保持する複数ビットエラー検出フラグ、１ビットエラー検出フラグ及び１ビットエラー位置不一致検出フラグは全て「０」に設定される。
【００５７】
エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに読み出し有効信号がアサートされた時に、エラー情報レジスタ３４ｆに格納された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラー位置不一致検出フラグ情報を読み出す。エラー情報レジスタ３４ｆから出力された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラー位置不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路３４ｇは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。即ち、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって、１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【００５８】
図８は、実施例１の情報処理装置におけるメモリモジュールであるＤＩＭＭ２１の故障バターンの分類とハミング符号のエラー検出パターンの一例を示す図である。図８に示す「１アドレス」とは、ＤＩＭＭ２１の１アドレス（８バイトデータ）の範囲に限定して発生する故障を示す。この故障はＳＤＲＡＭ２４−０〜２４−ｍ−１のデータセル固定故障や宇宙線によるソフトエラーに起因するものが多い。Ｎｏ．１に示したような１ビットの故障は、従来のＥＣＣコードで訂正が可能であり、問題とはならない。また、Ｎｏ．２に示したような、１アドレス内のデータで複数ビットが故障するようなケースが発生することは極めて稀である。
【００５９】
一方、「複数アドレス」とは、ＤＩＭＭ２１の複数のアドレスにデータエラーが発生する故障パターンを示す。この故障はＳＤＲＡＭ２４−０〜２４−ｍ−１のコマンド／アドレスバス２８故障やＤＩＭＭ２１における基板上のコマンド／アドレス配線故障によるものが多い。特にＮｏ．４に示したようなＳＤＲＡＭ故障では、４ビット或いは８ビット幅の故障が複数アドレスにわたって発生し、ハミング符号の検出能力を超えるエラーが頻発することがある。エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるＥＣＣ付加回路３１によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、訂正可能なエラーを含むと判定する。さらに、エラー種類判定回路３４ｇは、１回のリードコマンドでＤＩＭＭから読み出されリードバッファ３３ｃに格納された複数アドレスの読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によってエラービットが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、エラー種類判定回路３４ｇによって訂正不可能なエラーを含むと判定する事を目的とする。以上の構成により、訂正不可能なエラーの検出率を向上させることを目的とする。
【００６０】
図９は、実施例１の情報処理装置におけるエラー種類判定フローを示す図である。図９に示す処理は、図７に前述したエラー種類判定回路３４ｇが実行する。なお、図９において、図１〜図８で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００６１】
図９において、エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに読み出し有効信号がアサートされた時に、エラー情報レジスタ３４ｆに格納された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラー位置不一致検出フラグ情報の読み出しを開始する（ＯＰ１）。次いで、エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに設定された１ビットエラー検出フラグ又は複数ビットエラー検出フラグが「１」に設定されているか、即ち１ビットエラー又は複数ビットエラーが１回でも発生したか判断する（ＯＰ２）。１ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合（ＯＰ２  ＮＯ）、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路３５に対して出力する（ＯＰ６）。エラー種類判定回路３４ｇは、ＣＰＵ１５ａ及び管理ＬＳＩ１８に対するエラー報告を実施しない（ＯＰ６）。
【００６２】
１ビットエラー検出フラグ又は複数ビットエラー検出フラグが「１」に設定されている場合（ＯＰ２  ＹＥＳ）、エラー種類判定回路３４ｇは、複数ビットエラー検出フラグが「１」であるか判断する（ＯＰ３）。複数ビットエラー検出フラグが「１」に設定されている場合（ＯＰ３  ＹＥＳ）、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータを破棄する命令をデータ破棄回路３５に出力する（ＯＰ７）。エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータに、訂正不可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ７）。
【００６３】
複数ビットエラー検出フラグが「１」に設定されていない場合（ＯＰ３  ＮＯ）、エラー種類判定回路３４ｇは、１ビットエラー位置不一致検出フラグが「１」に設定されているか判断する（ＯＰ４）。１ビットエラー位置不一致検出フラグが「１」に設定されている場合（ＯＰ４  ＹＥＳ）、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータを破棄する命令をデータ破棄回路３５に出力する（ＯＰ７）。エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータに、訂正不可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ７）。
【００６４】
１ビットエラー位置不一致検出フラグが「１」に設定されていない場合（ＯＰ４  ＮＯ）、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路３５に対して出力する（ＯＰ５）。エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納されたリードデータに訂正可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ５）。
【００６５】
図１０は、実施例１の情報処理装置におけるリードデータの訂正可能エラー検出動作を示す原理図である。図１０は、具体的には、ＤＩＭＭ２１基板上のあるデータ配線１本の故障によって１ビットエラーとなり、８クロックサイクルのリード時に断続的に１ビットエラーを検出した場合の原理図を示す。図１０に示すエラー情報は、例えば、１ビットエラー情報保持レジスタ３４ｅ−１に格納されている。図１０に示すように、リードバッファ３３ｃに格納されている９バイトのデータブロックのうち、１ビットのデータが壊れた場合、ＥＣＣチェック回路３２はこれを１ビットエラーとして検出する。この際、訂正可能エラーの位置情報は故障したＳＤＲＡＭ２４−０〜２４−ｍ−１のデータ配線のビットを示すため、データ２及びデータ４におけるエラーチェック結果は、全てエラービット位置である「３」を示す。従って、エラーチェック結果を照合して１ビットエラーの位置情報が全て一致することを確認すれば、９バイトのデータバス中の特定の１ビットが壊れたことが分かる。エラー照合回路３４はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路３４は、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【００６６】
図１１は、エラー照合回路３４におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【００６７】
図１１に示すように、論理積回路３４ａは、ＥＣＣチェック回路３２からリードデータ有効信号を受信する（Ｔ１）。インクリメントカウンタ３４ｂは、ＥＣＣチェック回路３２からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ１）。
【００６８】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ２）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「３」であることを示す。
【００６９】
エラー照合回路３４は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ３）。
【００７０】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ４）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「３」であることを示す。この際、３サイクル目で検出された１ビットエラー位置と５サイクル目で検出された１ビットエラー位置は同じ「３」である。そのため、エラー照合回路３４は、エラー情報レジスタ３４ｆの１ビットエラー位置不一致検出フラグを「１」に設定しない。
【００７１】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ５）。そして、エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに格納された１ビットエラー検出フラグ情報を読み出す。エラー種類判定回路３４ｇは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【００７２】
図１２は、実施例１の情報処理装置のエラー照合回路３４におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図１２は８クロックサイクルのリード動作において、ＳＤＲＡＭ２４−０〜２４−ｍ−１のアドレス線故障によって９バイトデータに対して３ビット以上の故障が断続的に発生し、ＥＣＣチェック回路３２がこれらのエラーを全て１ビットエラーとして誤検出・誤訂正した場合の例である。図１２に示すように、データ２及びデータ４における１ビットエラー位置は「３」及び「７」である。従って、エラーチェック結果を照合すると、１ビットエラーの位置情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例１におけるエラー照合回路３４は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー種類判定回路３４ｇは、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【００７３】
図１３は、エラー照合回路３４におけるリードデータの１ビットエラーの誤検出動作の一例を示すタイムチャートである。
【００７４】
図１３に示すように、論理積回路３４ａは、ＥＣＣチェック回路３２からリードデータ有効信号を受信する（Ｔ１１）。インクリメントカウンタ３４ｂは、ＥＣＣチェック回路３２からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ１１）。
【００７５】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ１２）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「３」であることを示す。
【００７６】
エラー照合回路３４は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ１３）。
【００７７】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ１４）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「７」であることを示す。この際、３サイクル目で検出された１ビットエラー位置と５サイクル目で検出された１ビットエラー位置は異なる。そのため、エラー照合回路３４は、エラー情報レジスタ３４ｆの１ビットエラー位置不一致検出フラグを「１」に設定する（Ｔ１５）。
【００７８】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ１６）。そして、エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに格納された１ビットエラー検出フラグ情報及び１ビットエラー位置不一致検出フラグ情報を読み出す。エラー種類判定回路３４ｇは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【００７９】
図１４は、実施例１の情報処理装置のエラー照合回路３４におけるリードデータの複数ビットエラー検出動作を示す原理図である。図１４は、８クロックサイクルのリード動作において、ＳＤＲＡＭ２４−０〜２４−ｍ−１のアドレス線故障によって９バイトデータに対し、２ビット以上の故障が断続的に発生し、ＥＣＣチェック回路３２が訂正不可能エラーを検出した場合の例である。図１４に示すように、データ２及びデータ４における１ビットエラー位置は「３」であるが、データ６に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにＤＩＭＭ２１上の複数ビットが故障していることが分かるため、エラー照合回路３４はこのエラーを訂正不可能エラーと確定する。
【００８０】
図１５は、エラー照合回路３４におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【００８１】
図１５に示すように、論理積回路３４ａは、ＥＣＣチェック回路３２からリードデータ有効信号を受信する（Ｔ２１）。インクリメントカウンタ３４ｂは、ＥＣＣチェック回路３２からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ２１）。
【００８２】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ２２）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「３」であることを示す。
【００８３】
エラー照合回路３４は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ２３）。
【００８４】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラー位置情報を受信する（Ｔ２４）。なお、入力された１ビットエラー位置情報は、１ビットエラー位置が「３」であることを示す。この際、３サイクル目で検出された１ビットエラー位置と５サイクル目で検出された１ビットエラー位置は同じである。そのため、エラー照合回路３４は、エラー情報レジスタ３４ｆの１ビットエラー位置不一致検出フラグを「１」に設定しない。
【００８５】
エラー照合回路３４は、ＥＣＣチェック回路３２から、８サイクルのリードデータのうち、７サイクル目で複数ビットエラー検出通知を受信する（Ｔ２５）。エラー照合回路３４は、エラー情報レジスタ３４ｆの複数ビットエラー検出フラグを「１」に設定する（Ｔ２６）。
【００８６】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ２７）。そして、エラー種類判定回路３４ｇは、エラー情報レジスタ３４ｆに格納された１ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路３４ｇは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【００８７】
実施例１におけるメモリコントローラ２２を用いることで、ＳＤＲＡＭ故障など複数ビットに渡るエラーが発生した場合に、検出漏れが起こる確率を大きく下げることができる。例えば、１８個のＳＤＲＡＭを有するｘ４ＤＩＭＭにおいてＳＤＲＡＭ故障が発生した場合について確率計算すると、従来の７２ビット毎にエラーをチェックして順次送信する方式では検出漏れの確率は５．９％程度であるのに対し、実施例１におけるメモリコントローラ２２を用いると、検出漏れの確率を０．００７９％まで下げることができる。
【００８８】
実施例１に開示の技術によれば、メモリコントローラ２２に実装されている誤り訂正符号の性能を超えるデータエラーが発生し、エラーチェック漏れや誤訂正が発生した場合に、これを修正して報告することができる。また、本来破棄すべきデータがエラーチェック回路を通過してしまうことを防止することができる。ゆえに、システムが誤ったデータを使用して継続動作してしまうことを防止でき、情報処理装置の信頼性を向上させることが可能となる。
【００８９】
図１６は、実施例２の情報処理装置におけるメモリコントローラ２２−１の内部構成を説明する為の図である。図１６は、図２で説明したメモリコントローラ１２ａの一例であるメモリコントローラ２２−１を示す。なお、図１６において、実施例１における図１〜図４で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００９０】
実施例１におけるメモリコントローラ２２及び情報処理装置は、エラー発生した位置を１ビットエラーとして、ＤＩＭＭ２１のデータ[７１：０]のビット番号で管理していたが、これ以外にも多様なエラー発生位置の表現が考えられる。実施例２におけるメモリコントローラ２２−１及び情報処理装置は、エラー位置をＳＤＲＡＭ２４−０〜２４−ｍ−１ごとに管理することにして、ＤＩＭＭ２１に対して、ＳＤＲＡＭ２４−０〜２４−ｍ−１の番号を１ビットエラーの位置情報として使用することができる。
【００９１】
メモリコントローラ２２−１は、ＥＣＣ付加回路３１、ＥＣＣチェック回路３２、コマンド／アドレスバッファ（Ｃ／Ａ  ＢＵＦＦＥＲ）３３ａ、ライトバッファ（ＷＲＩＴＥ  ＢＵＦＦＥＲ）３３ｂ、リードバッファ（ＲＥＡＤ  ＢＵＦＦＥＲ）３３ｃ、エラー照合回路３４−１、データ破棄回路３５及び故障ＳＤＲＡＭ番号判定回路３６を備える。
【００９２】
故障ＳＤＲＡＭ番号判定回路３６は、ＥＣＣチェック回路３２からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むＳＤＲＡＭ番号を判定して出力する。
【００９３】
エラー照合回路３４−１は、所定のクロックに同期しながら検出したエラー種類情報（エラー無し／複数ビットエラー／１ビットエラー）と１ビットエラーが発生して訂正を行ったエラービットを含むＳＤＲＡＭ番号を一時的に格納する。エラー照合回路３４−１は、一時的に格納されたエラー種類情報とＳＤＲＡＭ番号を照合することによって、データブロック全体としてのエラーの種類を判定する。エラー照合回路３４−１は、エラーの種類の判定結果に基づいて、データ破棄回路３５にデータの破棄命令を出力する。そして、エラー照合回路３４−１は、判定したエラー報告を、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。即ち、エラー照合回路３４−１は、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が各々異なる場合、または複数ビットエラーが検出されたデータが含まれる場合に、複数の読み出しデータ全体として訂正不可能なエラーを含むと判定する判定部である。
【００９４】
図１７は、実施例２の情報処理装置におけるエラー照合回路３４−１の内部構成を説明する為の図である。エラー照合回路３４−１は、論理積回路３４ａ、インクリメントカウンタ３４ｂ、比較回路３４ｃ、フリップフロップ３４ｄ、１ビットエラーＳＤＲＡＭ番号比較回路３４−１ｅ、エラー情報レジスタ３４−１ｆ及びエラー種類判定回路３４−１ｇを備える。
【００９５】
１ビットエラーＳＤＲＡＭ番号比較回路３４−１ｅは、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１及び比較回路３４−１ｅ−２を備える。
【００９６】
１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１は、故障ＳＤＲＡＭ番号判定回路３６から伝送される１ビットエラーＳＤＲＡＭ番号を一時的に格納する。１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１が格納する１ビットエラーＳＤＲＡＭ番号情報の原理図は、図２１、図２３及び図２５を用いて後述する。なお、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１は、フリップフロップ３４ｄからリードデータの読み出し完了タイミングを示すリードデータ読出完了タイミング信号がアサートされた時、１ビットエラー情報をクリアする。
【００９７】
比較回路３４−１ｅ−２は、故障ＳＤＲＡＭ番号判定回路３６から伝送される１ビットエラーＳＤＲＡＭ番号情報と、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１が保持する１ビットエラーＳＤＲＡＭ番号情報とを比較する。比較回路３４−１ｅ−２は、故障ＳＤＲＡＭ番号判定回路３６から伝送される１ビットエラーＳＤＲＡＭ番号情報と、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１が保持する１ビットエラーＳＤＲＡＭ番号情報が不一致の場合、エラー情報レジスタ３４−１ｆの１ビットエラーＳＤＲＡＭ番号不一致フラグに「１」を出力する。なお、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１に１ビットエラーＳＤＲＡＭ番号情報が保持されていない時、比較回路３４−１ｅ−２は、故障ＳＤＲＡＭ番号判定回路３６から伝送される１ビットエラーＳＤＲＡＭ番号情報と、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１が保持する１ビットエラーＳＤＲＡＭ番号情報との比較を行わない。
【００９８】
エラー情報レジスタ３４−１ｆは、故障ＳＤＲＡＭ番号判定回路３６から、クロックサイクル毎に伝送される複数ビットエラー検出情報が通知されると複数ビットエラー検出フラグを「１」にする。又、エラー情報レジスタ３４−１ｆは、故障ＳＤＲＡＭ番号判定回路３６から、クロックサイクル毎に伝送される１ビットエラー検出情報が通知されると１ビットエラー検出フラグを「１」にする。又、エラー情報レジスタ３４−１ｆは、比較回路３４−１ｅ−２で１ビットエラーＳＤＲＡＭ番号の不一致が検出されると１ビットエラーＳＤＲＡＭ番号不一致検出フラグを「１」にする。なお、エラー情報レジスタ３４−１ｆは、ＥＣＣチェック回路３２からリードデータ有効信号がアサートされた時に書込みが行われる。また、エラー情報レジスタ３４−１ｆは、フリップフロップ３４ｄからエラー情報レジスタ３４−１ｆへ、リードデータ読出完了タイミング信号がアサートされた時に読み出しが行われる。なお、エラー情報レジスタ３４−１ｆからの読み出しを行った時に、エラー情報レジスタ３４−１ｆが保持する複数ビットエラー検出フラグ、１ビットエラー検出フラグ及び１ビットエラーＳＤＲＡＭ番号不一致検出フラグは全て「０」に設定される。
【００９９】
エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに読み出し有効信号がアサートされた時に、エラー情報レジスタ３４−１ｆに格納された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラーＳＤＲＡＭ番号不一致検出フラグ情報を読み出す。エラー情報レジスタ３４−１ｆから出力された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラーＳＤＲＡＭ番号不一致検出フラグ情報に基づいて、リードデータ全体に発生したエラーの種類を判定する。エラー種類判定回路３４−１ｇは、判定したエラーの種類に基づいて、エラー報告情報をデータ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。即ち、エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【０１００】
図１８は、実施例２の情報処理装置のメモリモジュールであるＤＩＭＭにおけるエラービット位置とＳＤＲＡＭ番号との対比表である。図１８は、１８個のＳＤＲＡＭ２４−０〜２４−１７を有するｘ４ＤＩＭＭにおけるエラービット位置とＳＤＲＡＭ番号との対比表である。図１８に示す各ＳＤＲＡＭは、４ビットのデータを保持する。そのため、ＳＤＲＡＭ番号０のエラービット位置は、０〜３に設定されている。
【０１０１】
図１９は、実施例２の情報処理装置のメモリモジュールであるＤＩＭＭにおけるエラービット位置とＳＤＲＡＭ番号との対比表である。図１９は、９個のＳＤＲＡＭ２４−０〜２４−８を有するｘ８ＤＩＭＭにおけるエラービット位置とＳＤＲＡＭ番号との対比表である。図１９に示す各ＳＤＲＡＭは、８ビットのデータを保持する。そのため、ＳＤＲＡＭ番号０のエラービット位置は、０〜７に設定されている。
【０１０２】
図２０は、実施例２の情報処理装置におけるエラー種類判定フローを示す図である。図２０に示す処理は、図１７に前述したエラー種類判定回路３４−１ｇが実行する。なお、図２０において、図１６〜図１９で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【０１０３】
図２０において、エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに読み出し有効信号がアサートされた時に、エラー情報レジスタ３４−１ｆに格納された複数ビットエラー検出フラグ情報、１ビットエラー検出フラグ情報及び１ビットエラーＳＤＲＡＭ番号不一致検出フラグ情報の読み出しを開始する（ＯＰ１１）。次いで、エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに設定された１ビットエラー検出フラグ又は複数ビットエラー検出フラグが「１」に設定されているか、即ち１ビットエラー又は複数ビットエラーが１回でも発生したか判断する（ＯＰ１２）。１ビットエラー検出フラグ又は複数ビットエラー検出フラグがオンでは無い場合（ＯＰ１２  ＮＯ）、エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータを、エラーが存在しない正常データとして伝送する命令をデータ破棄回路３５に対して出力する（ＯＰ１６）。エラー種類判定回路３４−１ｇは、ＣＰＵ１５ａ及び管理ＬＳＩ１８に対するエラー報告を実施しない（ＯＰ１６）。
【０１０４】
１ビットエラー検出フラグ又は複数ビットエラー検出フラグが「１」に設定されている場合（ＯＰ１２  ＹＥＳ）、エラー種類判定回路３４−１ｇは、複数ビットエラー検出フラグが「１」であるか判断する（ＯＰ１３）。複数ビットエラー検出フラグが「１」に設定されている場合（ＯＰ１３  ＹＥＳ）、エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータを破棄する命令をデータ破棄回路３５に出力する（ＯＰ１７）。エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータに、訂正不可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ１７）。
【０１０５】
複数ビットエラー検出フラグが「１」に設定されていない場合（ＯＰ１３  ＮＯ）、エラー種類判定回路３４−１ｇは、１ビットエラーＳＤＲＡＭ番号不一致検出フラグが「１」に設定されているか判断する（ＯＰ１４）。１ビットエラーＳＤＲＡＭ番号不一致検出フラグが「１」に設定されている場合（ＯＰ１４  ＹＥＳ）、エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータを破棄する命令をデータ破棄回路３５に出力する（ＯＰ１７）。エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータに、訂正不可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ１７）。
【０１０６】
１ビットエラーＳＤＲＡＭ番号不一致検出フラグが「１」に設定されていない場合（ＯＰ１４  ＮＯ）、エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータを、訂正データとして伝送する命令をデータ破棄回路３５に対して出力する（ＯＰ１５）。エラー種類判定回路３４−１ｇは、リードバッファ３３ｃに格納されたリードデータに訂正可能エラーが存在する事をＣＰＵ１５ａ及び管理ＬＳＩ１８に報告する（ＯＰ１５）。
【０１０７】
図２１は、実施例２の情報処理装置におけるリードデータの１ビットエラー検出動作を示す原理図である。図２１は、具体的には、ＤＩＭＭ２１基板上のあるデータ配線１本の故障によって１ビットエラーとなり、８クロックサイクルのリード時に断続的に訂正可能エラーを検出した場合の原理図を示す。実施例２の情報処理装置は、エラー情報として、エラー種類の他にエラービットを含むＳＤＲＡＭ番号を記憶する。図２１に示すエラー情報は、例えば、１ビットエラーＳＤＲＡＭ番号保持レジスタ３４−１ｅ−１に格納されている。図２１に示すように、リードバッファ３３ｃに格納されている９バイトのデータブロックのうち、１ビットのデータが壊れた場合、ＥＣＣチェック回路３２はこれを訂正可能エラーとして検出する。そして、故障ＳＤＲＡＭ番号判定回路３６は、ＥＣＣチェック回路３２からエラー種類とエラービット位置情報が出力されると、そのエラービット位置情報からエラービットを含むＳＤＲＡＭ番号を判定して出力する。この際、１ビットエラーの位置情報は故障したＳＤＲＡＭ２４−０〜２４−ｍ−１のＳＤＲＡＭ番号を示すため、データ２及びデータ４におけるエラーチェック結果は全てエラーＳＤＲＡＭ位置である「３」を示す。従って、エラーチェック結果を照合してＳＤＲＡＭ番号情報が全て一致することを確認すれば、９バイトのデータバス中の特定の１ビットが壊れたことが分かる。エラー照合回路３４−１はこのエラーを訂正可能エラーとして確定する。即ち、エラー照合回路３４−１は、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が同じ場合に、複数の読み出しデータ全体として訂正可能なエラーを含むと判定する判定部である。
【０１０８】
図２２は、エラー照合回路３４−１におけるリードデータの訂正可能エラー検出動作の一例を示すタイムチャートである。
【０１０９】
図２２に示すように、論理積回路３４ａは、故障ＳＤＲＡＭ番号判定回路３６から、リードデータ有効信号を受信する（Ｔ３１）。インクリメントカウンタ３４ｂは、故障ＳＤＲＡＭ番号判定回路３６からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ３１）。
【０１１０】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ３２）。なお、入力された１ビットエラーＳＤＲＡＭ番号は、１ビットエラーＳＤＲＡＭ番号が「３」であることを示す。
【０１１１】
エラー照合回路３４−１は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４−１ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ３３）。
【０１１２】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ３４）。なお、入力された１ビットエラーＳＤＲＡＭ番号情報は、１ビットエラーＳＤＲＡＭ番号が「３」であることを示す。この際、３サイクル目で検出された１ビットエラーＳＤＲＡＭ番号と５サイクル目で検出された１ビットエラーＳＤＲＡＭ番号は同じ「３」である。そのため、エラー照合回路３４−１は、エラー情報レジスタ３４−１ｆの１ビットエラーＳＤＲＡＭ番号不一致検出フラグを「１」に設定しない。
【０１１３】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ３５）。そして、エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに格納された１ビットエラー検出フラグ情報を読み出す。エラー種類判定回路３４−１ｇは、リードデータのエラーを訂正可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【０１１４】
図２３は、実施例２の情報処理装置のエラー照合回路３４−１におけるリードデータの訂正可能エラーの誤検出動作を示す原理図である。図２３は８クロックサイクルのリード動作において、ＳＤＲＡＭ２４−０〜２４−ｍ−１のアドレス線故障によって９バイトデータに対して３ビット以上の故障が断続的に発生し、ＥＣＣチェック回路３２がこれらのエラーを全て１ビットエラーとして誤検出・誤訂正した場合の例である。図２３に示すように、データ２及びデータ４におけるエラーＳＤＲＡＭ番号は「３」及び「７」である。従って、エラーチェック結果を照合すると、エラーＳＤＲＡＭ番号情報が一致しないことから、複数ビットの故障が訂正可能エラーとして誤検出された可能性がある。そのため、実施例２におけるエラー照合回路３４−１は、このエラーを誤検出と判定し、訂正不可能エラーに修正する。即ち、エラー照合回路３４−１は、リードバッファ３３ｃに格納された複数の読み出しデータに、エラー検出部として用いられるＥＣＣチェック回路３２によって１ビットエラーが検出されたデータが複数含まれ、かつ、検出されたデータのエラー検出位置が異なる場合、訂正不可能なエラーを含むと判定する判定部である。
【０１１５】
図２４は、エラー照合回路３４−１におけるリードデータの訂正可能エラーの誤検出動作の一例を示すタイムチャートである。
【０１１６】
図２４に示すように、論理積回路３４ａは、故障ＳＤＲＡＭ番号判定回路３６から、リードデータ有効信号を受信する（Ｔ４１）。インクリメントカウンタ３４ｂは、故障ＳＤＲＡＭ番号判定回路３６からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ４１）。
【０１１７】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ４２）。なお、入力された１ビットエラーＳＤＲＡＭ番号情報は、１ビットエラーＳＤＲＡＭ番号が「３」であることを示す。
【０１１８】
エラー照合回路３４−１は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４−１ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ４３）。
【０１１９】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ４４）。なお、入力された１ビットエラーＳＤＲＡＭ番号情報は、１ビットエラーＳＤＲＡＭ番号が「７」であることを示す。この際、３サイクル目で検出された１ビットエラーＳＤＲＡＭ番号と５サイクル目で検出された１ビットエラーＳＤＲＡＭ番号は異なる。そのため、エラー照合回路３４−１は、エラー情報レジスタ３４−１ｆの１ビットエラーＳＤＲＡＭ番号不一致検出フラグを「１」に設定する（Ｔ４５）。
【０１２０】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ４６）。そして、エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに格納された１ビットエラー検出フラグ情報及び１ビットエラーＳＤＲＡＭ番号不一致検出フラグ情報を読み出す。エラー種類判定回路３４−１ｇは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【０１２１】
図２５は、実施例２の情報処理装置のエラー照合回路３４−１におけるリードデータの訂正不可能エラー検出動作を示す原理図である。図２５は、８クロックサイクルのリード動作において、ＳＤＲＡＭ２４−０〜２４−ｍ−１のアドレス線故障によって９バイトデータに対し、２ビット以上の故障が断続的に発生し、ＥＣＣチェック回路３２が複数ビットエラーを検出した場合の例である。図２５に示すように、データ２及びデータ４における１ビットエラーＳＤＲＡＭ番号は「３」であるが、データ６に複数ビットエラーが存在する。この場合、複数ビットエラーを検出したことで明らかにＤＩＭＭ２１上の複数ビットが故障していることが分かるため、エラー照合回路３４−１はこのエラーを訂正不可能エラーと確定する。
【０１２２】
図２６は、エラー照合回路３４−１におけるリードデータの訂正不可能エラーの検出動作の一例を示すタイムチャートである。
【０１２３】
図２６に示すように、論理積回路３４ａは、故障ＳＤＲＡＭ番号判定回路３６から、リードデータ有効信号を受信する（Ｔ５１）。インクリメントカウンタ３４ｂは、故障ＳＤＲＡＭ番号判定回路３６からリードデータ有効信号が入力されると、クロック信号の１サイクル毎にカウンタの値を１つずつインクリメント（増加）させて論理積回路３４ａに出力する（Ｔ５１）。
【０１２４】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、３サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ５２）。なお、入力された１ビットエラーＳＤＲＡＭ番号情報は、１ビットエラーＳＤＲＡＭ番号が「３」であることを示す。
【０１２５】
エラー照合回路３４−１は、入力された１ビットエラー検出通知に基づいて、エラー情報レジスタ３４−１ｆの１ビットエラー検出フラグを「１」に設定する（Ｔ５３）。
【０１２６】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、５サイクル目で１ビットエラー検出通知及び１ビットエラーＳＤＲＡＭ番号情報を受信する（Ｔ５４）。なお、入力された１ビットエラーＳＤＲＡＭ番号情報は、１ビットエラーＳＤＲＡＭ番号が「３」であることを示す。この際、３サイクル目で検出された１ビットエラーＳＤＲＡＭ番号と５サイクル目で検出された１ビットエラーＳＤＲＡＭ番号は同じである。そのため、エラー照合回路３４−１は、エラー情報レジスタ３４−１ｆの１ビットエラーＳＤＲＡＭ番号不一致検出フラグを「１」に設定しない。
【０１２７】
エラー照合回路３４−１は、故障ＳＤＲＡＭ番号判定回路３６から、８サイクルのリードデータのうち、７サイクル目で複数ビットエラー検出通知を受信する（Ｔ５５）。エラー照合回路３４−１は、エラー情報レジスタ３４−１ｆの複数ビットエラー検出通知を「１」に設定する（Ｔ５６）。
【０１２８】
論理積回路３４ａは、インクリメントカウンタ３４ｂのカウンタの値が７になった時に、ＤＩＭＭ２１からのリードデータの読み出しが完了したことを示すリードデータ読出完了タイミング信号をアサートする。フリップフロップ３４ｄは、論理積回路３４ａから伝送されたリードデータ読出完了タイミング信号を受信する（Ｔ５７）。そして、エラー種類判定回路３４−１ｇは、エラー情報レジスタ３４−１ｆに格納された１ビットエラー検出フラグ情報及び複数ビットエラー検出フラグ情報を読み出す。エラー種類判定回路３４−１ｇは、リードデータのエラーを訂正不可能エラーとしたエラー報告情報を、データ破棄回路３５、ＣＰＵ１５ａ及び管理ＬＳＩ１８に出力する。
【０１２９】
実施例２に開示の技術によれば、実施例１におけるエラーしたビットを記憶するメモリコントローラ２２及び情報処理装置と比較して使用する記憶素子の数を削減できる。ＤＩＭＭ２１の故障はＳＤＲＡＭ２４−０〜２４−ｍ−１単位で発生することが多いため、ＳＤＲＡＭ２４−０〜２４−ｍ−１毎のエラー位置を検出することによって、本来破棄すべきデータがエラーチェック回路を通過してしまうことを十分な精度で防止することができる。
【０１３０】
なお、実施例１及び実施例２は、エラー訂正・検出を行うＥＣＣコードとして１ビット訂正・２ビット検出のハミング符号を例にして説明したが、これ以外のＥＣＣコードを用いた場合も実施例１及び実施例２におけるメモリコントローラ及び情報処理装置を構成することができる。例えば、データを４ｂｉｔ単位のブロックの集合としてエラー判定するエラー訂正符号を使用した場合、１ブロックエラーは訂正可能であるが、２ブロック以上のエラーは訂正不可能であることが知られている（例えば、非特許文献１の「Ｓ．Ｋａｎｅｄａ  ａｎｄ  Ｅ．Ｆｕｊｉｗａｒａ，“Ｓｉｎｇｌｅ  Ｂｙｔｅ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ−Ｄｏｕｂｌｅ  Ｂｙｔｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ  Ｃｏｄｅｓ  ｆｏｒ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍｓ”，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  ｃｏｍｐｕｔｅｒｓ，Ｖｏｃ．Ｃ−３１，Ｎｏ．７，ｐｐ．５９６−６０２，Ｊｕｌｙ  １９８２」を参照）。
【０１３１】
上記の例に示したＳ４ＥＣ−Ｄ４ＥＤ（Ｓｉｎｇｌｅ  ４ｂｉｔ  ｂｌｏｃｋ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ−Ｄｏｕｂｌｅ  ４ｂｉｔ  ｂｌｏｃｋ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ）符号では、ハミング符号を使用した場合と同様に、３ブロック以上の読み出しデータのエラーを１ブロックエラーと誤判定することがある。このような４ビットブロック訂正及び８ビットブロック検出を行うエラー訂正符号を用いた場合でも、データの故障位置をエラー照合回路に記憶し、ＤＩＭＭのリード完了時に比較することで誤検出された訂正可能エラー及び訂正不可能エラーを判定することができる。
【符号の説明】
【０１３２】
１  システムボード
１１ａ、１１ｂ  メモリモジュール
１２ａ、１２ｂ  メモリコントローラ
１５ａ、１５ｂ  ＣＰＵ
１６  ノードコントローラ
１７ａ、１７ｂ  ＩＯユニット
１８  管理ＬＳＩ
２１  ＤＩＭＭ
２１ｈ  予備のＤＩＭＭ
２２  メモリコントローラ
２２−１  メモリコントローラ
２３−０〜２３−ｎ−１  ＲＡＮＫ
２４−０〜２４−ｍ−１  ＳＤＲＡＭ
２７  メモリインタフェース
２８  コマンド／アドレスバス
２８ａ、２８ｂ  信号バス
２９  データバス
２９ａ  データバス
３１  ＥＣＣ付加回路
３１ａ  排他的論理回路
３２  ＥＣＣチェック回路
３２ａ  排他的論理回路
３２ｂ  排他的論理回路
３２ｃ  故障箇所特定回路
３２ｄ  訂正回路
３３ａ  コマンド／アドレスバッファ
３３ｂ  ライトバッファ
３３ｃ  リードバッファ
３４  エラー照合回路
３４−１  エラー照合回路
３４ａ  論理積回路
３４ｂ  インクリメントカウンタ
３４ｃ  比較回路
３４ｄ  フリップフロップ
３４ｅ  １ビットエラー情報比較回路
３４ｅ−１  １ビットエラー情報保持レジスタ
３４ｅ−２  比較回路
３４−１ｅ  １ビットエラーＳＤＲＡＭ番号比較回路
３４−１ｅ−１  １ビットエラーＳＤＲＡＭ番号保持レジスタ
３４−１ｅ−２  比較回路
３４ｆ  エラー情報レジスタ
３４−１ｆ  エラー情報レジスタ
３４ｇ  エラー種類判定回路
３４−１ｇ  エラー種類判定回路
３５  データ破棄回路
３６  故障ＳＤＲＡＭ番号判定回路
【図１】
0005601256.tif 000002
【図２】
0005601256.tif 000003
【図３】
0005601256.tif 000004
【図４】
0005601256.tif 000005
【図５】
0005601256.tif 000006
【図６Ａ】
0005601256.tif 000007
【図６Ｂ】
0005601256.tif 000008
【図７】
0005601256.tif 000009
【図８】
0005601256.tif 000010
【図９】
0005601256.tif 000011
【図１０】
0005601256.tif 000012
【図１２】
0005601256.tif 000013
【図１４】
0005601256.tif 000014
【図１７】
0005601256.tif 000015
【図１８】
0005601256.tif 000016
【図１９】
0005601256.tif 000017
【図２０】
0005601256.tif 000018
【図２１】
0005601256.tif 000019
【図２３】
0005601256.tif 000020
【図２５】
0005601256.tif 000021
【図１１】
0005601256.tif 000022
【図１３】
0005601256.tif 000023
【図１５】
0005601256.tif 000024
【図１６】
0005601256.tif 000025
【図２２】
0005601256.tif 000026
【図２４】
0005601256.tif 000027
【図２６】
0005601256.tif 000028