(57)【要約】【課題】メモリモジュールの故障に対して早急な処置を行うことを可能とし、情報処理システムの信頼性を向上させることを可能にするメモリコントローラ及び情報処理システムを提供する。【解決手段】メモリコントローラ及び情報処理システムにおいて、メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、メモリコントローラを通常モードから故障検査モードに切り替え、複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部を備える。【選択図】図３
2012113466.tif 000002
【特許請求の範囲】
【請求項１】
複数の単位メモリ領域を備えるメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、
前記メモリコントローラを通常モードから故障検査モードに切り替え、前記複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、
前記故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記故障検査制御部は、通常モード時に前記エラー検出部により検出されたエラーが訂正不可能なエラーであった場合、または通常モード時に前記エラー検出部により検出された訂正可能なエラーが予め定められた数を超えた場合に、通常モードから故障検査モードに切り替えることを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記訂正不可能なエラーまたは前記予め定められた数を超えた場合の訂正可能なエラーに関するエラー情報を記憶する第１記憶部と、前記故障検査制御部による検査結果に関する検査結果情報を記憶する第２記憶部をさらに備え、前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況に基づいて、前記メモリ故障と前記伝送路故障を判定することを特徴とする請求項２記載のメモリコントローラ。
【請求項４】
前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況を比較し、同じ単位メモリ領域のみにエラーが生じている場合に前記メモリ故障と判定し、異なる単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定することを特徴とする請求項３記載のメモリコントローラ。
【請求項５】
前記判定部は、前記検査結果情報における各単位メモリ領域のエラー検出状況を参照し、前記検査対象の一部の単位メモリ領域にエラーが生じている場合に前記メモリ故障と判定し、前記検査対象の複数の単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定する請求項１記載のメモリコントローラ。
【請求項６】
前記判定部により判定された結果に基づいてエラーリカバリの制御を行うエラーリカバリ制御部をさらに備えることを特徴とする請求項１乃至５のいずれか一項に記載のメモリコントローラ。
【請求項７】
前記エラーリカバリ制御部は、伝送路故障の場合に前記メモリコントローラ内の送受信部の設定値または／及び動作周波数の設定値を変更する制御を行うことを特徴とする請求項６に記載のメモリコントローラ。
【請求項８】
複数の単位メモリを備えるメモリモジュールと、
メモリインタフェースを介して前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラと、
前記メモリコントローラに設けられ、前記メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、
前記メモリコントローラを通常モードから故障検査モードに切り替え、前記複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、
前記故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部と、
を備えることを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、メモリコントローラ及び情報処理システムに関するものである。
【背景技術】
【０００２】
近年、情報処理システムの大規模化に伴って、実装されるメモリの容量は増加し、高い信頼性が求められている。大容量メモリで高い信頼性を維持する為に、メモリの故障箇所を迅速に検出することが要求される。
【０００３】
その対策として、基板実装時のデータバスやアドレスバス等の不完全な接続によるメモリ故障を検出する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３３４７０７号公報
【特許文献２】特開２００８−１７１２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
大容量のメモリモジュールとして、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）が知られている。ＤＩＭＭ内部には複数のＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶素子が搭載されており、これらの記憶素子や伝送路等のＤＩＭＭ内部の故障が発生する可能性が高まっている。
【０００６】
そこで、メモリインタフェースやメモリコントローラ等の伝送路に起因するメモリモジュール外部の伝送路故障とメモリモジュール内部の故障に起因するメモリ故障を、迅速にかつ正確に、判定することが望まれる。また、運用中にメモリモジュールの故障が発生した場合に、故障箇所に対応した処置を迅速に行い、できるだけ情報処理システムの運用を停止させないようにすることが望まれる。
【０００７】
開示の技術は、メモリモジュールの故障に対して早急な処置を行うことを可能とし、情報処理システムの信頼性を向上させることを可能にするメモリコントローラ及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
開示の技術の一側面によると、メモリコントローラ及び情報処理システムにおいて、メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、メモリコントローラを通常モードから故障検査モードに切り替え、複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部を備える。
【発明の効果】
【０００９】
開示のメモリコントローラ及び情報処理システムは、メモリモジュールのメモリ故障と伝送路故障を迅速にかつ正確に判定することが可能になる。従って、判定結果に応じて故障から復旧する為のリカバリ処理に移行することが容易になる。ゆえに、故障箇所によって早急な処置を行うことが可能となり、情報処理システムの信頼性を向上させることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理システムの構成概略図である。
【図２】図２は、メモリモジュールの構成を説明する為の図である。
【図３】図３は、第１の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。
【図４】図４は、伝送路故障の場合におけるエラーログ及び検査ログのテーブルの一例を示す図である。
【図５】図５は、メモリ故障の場合におけるエラーログ及び検査ログのテーブルの一例を示す図である。
【図６】図６は、第１の実施形態の情報処理システムにおける故障判定処理のフローを示す図である。
【図７】図７は、第２の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。
【図８】図８は、第２の実施形態の情報処理システムにおける故障判定処理のフローを示す図である。
【図９】図９は、第３の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。
【図１０】図１０は、リカバリ処理のフローを示す図である。
【図１１】図１１は、第４の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を詳細に説明する。図１は、情報処理システムの構成概略図である。情報処理システムの一例として、システムボード１を用いて説明する。システムボード１は、メモリモジュール１１ａ、１１ｂ、メモリコントローラ１２ａ、１２ｂ、演算処理ユニット（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５ａ、１５ｂ、ノードコントローラ１６、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ユニット１７ａ、１７ｂ、管理ＬＳＩ１８を備える。
【００１２】
メモリコントローラ１２ａは、メモリモジュール１１ａとＣＰＵ１５ａに接続される。メモリコントローラ１２ａは、ＣＰＵ１５ａからのリードコマンドやライトコマンド等を受信して、メモリモジュール１１ａに対するメモリ制御を行う。
【００１３】
メモリコントローラ１２ｂは、メモリモジュール１１ｂとＣＰＵ１５ｂに接続される。メモリコントローラ１２ｂは、ＣＰＵ１５ｂからのリードコマンドやライトコマンド等を受信して、メモリモジュール１１ｂに対するメモリ制御を行う。
【００１４】
ノードコントローラ１６は、自己のシステムボード１内の複数のＣＰＵ１５ａ、１５ｂや複数のＩＯユニット１７ａ、１７ｂに接続し、他のシステムボードや外部の情報機器に対する通信制御を行う。また、管理ＬＳＩ１８は、システムボード１内の各回路に接続し、各回路の動作状況を監視するものである。さらに、管理ＬＳＩ１８は、ユーザの仕様により各回路のメンテナンスを行う制御機能を持たせることができる。
【００１５】
図２は、メモリモジュールの構成を説明する為の図である。メモリモジュール１１ａの一例としてＤＩＭＭが挙げられる。本実施の形態では、ＤＩＭＭ２１を備えた大容量メモリモジュールを用いて説明する。なお、メモリモジュール１１ｂについても同様の構成であり、説明は省略する。
【００１６】
ＤＩＭＭ２１ｈはＤＩＭＭ２１が故障した際に代替として用いられる予備のＤＩＭＭである。ＤＩＭＭ２１は、ｎ台のＲＡＮＫ２３−０〜２３−ｎ−１（ｎは整数）を備える。
【００１７】
また、ＲＡＮＫ２３−０〜２３−ｎ−１には、それぞれ複数の記憶素子が並列配置される。例えば、ＲＡＮＫ２３−０にはｍ個のＳＤＲＡＭ２４−０〜２４−ｍ−１（ｍは整数）が並列配置される。同様に、ＤＩＭＭ２１ｈも複数のＲＡＮＫを備える。
【００１８】
なお、本実施形態において、メモリモジュールはＲＡＮＫ単位で管理される為、ＲＡＮＫを単位メモリ領域として説明する。なお、例えば、ＳＤＲＡＭ単位でアドレスが管理される別種のメモリモジュールを使用する場合にはＳＤＲＡＭを単位メモリ領域とすることもできる。
【００１９】
メモリコントローラ１２ａは、ＣＰＵ１５ａから、例えば、ＤＩＭＭ２１へのデータのリードコマンドやライトコマンド等を受信すると、メモリインタフェース２７のコマンド／アドレスバス２８を介してコマンド及びアドレス信号をＤＩＭＭ２１へ伝送する。
【００２０】
そして、ＤＩＭＭ２１内において、信号バス２８ａを経由してＲＡＮＫを指定するチップセレクト信号（ＣＳ：Ｃｈｉｐ  Ｓｅｌｅｃｔ）が各ＲＡＮＫ２３−０〜２３−ｎ−１に対して伝送される。また、信号バス２８ｂを経由して、ＳＤＲＡＭ内のどの位置にアクセスするかを指定するメモリアドレス（ＭＡ：Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ）及びバンクアドレス（ＢＡ：Ｂａｎｋ  Ａｄｄｒｅｓｓ）を含むＲＡＮＫ内アドレスが各ＳＤＲＡＭ２４−０〜２４−ｍ−１に対して伝送される。
【００２１】
データバス２９を経由して伝送されたライトデータは、ＤＩＭＭ２１内のデータバス２９ａを経由して各ＳＤＲＡＭ２４−０〜２４−ｍ−１へ伝送される。また、各ＳＤＲＡＭ２４−０〜２４−ｍ−１からのリードデータは、ＤＩＭＭ２１内のデータバス２９ａ、メモリインタフェース２７のデータバス２９を経由して、メモリコントローラ１２ａに伝送される。
【００２２】
図３は、第１の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。図３は、図２で説明したメモリコントローラ１２ａの一例であるメモリコントローラ２２を示し、管理ＬＳＩ１８の図示は省略する。
【００２３】
メモリコントローラ２２は、故障検査制御部の一例として、故障検査制御回路３５及び検査コマンド生成回路３６を備える。また、メモリコントローラ２２は、判定部の一例である判定回路４０を備える。
【００２４】
メモリコントローラ２２は、ＣＰＵ１５ａからのライトコマンドとアドレス信号を受信すると、これらをコマンド／アドレスバッファ（Ｃ／Ａ  ＢＵＦＦＥＲ）３３ａに一時的に格納する。そして、ライトコマンドとアドレス信号は、コマンド／アドレスバス２８を経由してＤＩＭＭ２１に伝送される。
【００２５】
ライトアドレス記憶部３４は、ライトコマンドとアドレス信号を受信し、ライトコマンドを受信する度に、ＤＩＭＭ２１のＲＡＮＫ毎にライトアドレスを記憶する。また、ライトアドレス記憶部３４は、それぞれのＲＡＮＫにおける最新のライトアドレスを含む１個以上のライトアドレスが登録されるように上書き更新される。
【００２６】
従って、ライトアドレス記憶部３４は、過去にライトしたデータ記録済アドレスを登録することができるので、未使用（データ未記録）のアドレスに対する検査用リードコマンドの発行を防止することができる。
【００２７】
なお、未使用のアドレスにはどのようなデータが記録されているかが明確ではない。また、消去が行われていたとしても運用時にはどのようにユーザがシステムを使用するか不明である。従って、エラーの誤検出を防止する為に未使用のアドレスに対する検査用リードコマンドの発行はしないようする。
【００２８】
未使用のアドレスにおいて、オール０等の消去データが記録されていることが明確な場合は、エラーの誤検出が生じる可能性は低い。従って、このような消去データが記録されているアドレスは、消去データをライトするイレーズコマンドに伴ってライトアドレス記憶部３４に登録することができるので、このアドレスに対して検査用リードコマンドの発行を行ってもよい。
【００２９】
また、ライトアドレス記憶部３４には、故障検査を簡単にかつ高速に実行する為の必要最小限の履歴を登録しておけば良く、全てのライトコマンドに対するライトアドレスを記憶しておく必要はない。詳細は後述する。
【００３０】
また、ＣＰＵ１５ａからのライトデータには、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  Ｃｏｄｅ）付加回路３１でエラーチェックコードが付加される。そして、エラーチェックコードが付加されたライトデータは、ライトバッファ（ＷＲＩＴＥ  ＢＵＦＦＥＲ）３３ｂに一時記憶された後、所定のクロックに同期しながらデータバス２９を経由してＤＩＭＭ２１の指定のライトアドレスに伝送される。
【００３１】
また、メモリコントローラ２２は、ＣＰＵ１５ａからのリードコマンドとアドレス信号を受信すると、これらをコマンド／アドレスバッファ（Ｃ／Ａ  ＢＵＦＦＥＲ）３３ａに一時的に格納する。そして、リードコマンドとアドレス信号は、所定のクロックに同期しながらコマンド／アドレスバス２８を経由してＤＩＭＭ２１に伝送される。
【００３２】
リード対象のＤＩＭＭから読み出されたリードデータは、所定のクロックに同期しながらデータバス２９を経由してリードバッファ（ＲＥＡＤ  ＢＵＦＦＥＲ）３３ｃに伝送され、一時記憶される。そして、リードデータは、ＥＣＣチェック回路３２においてエラー検出及び訂正が行われた後、ＣＰＵ１５ａへ伝送される。
【００３３】
この際、ＥＣＣチェック回路３２のエラー情報出力部３９は、ＥＣＣチェックにおいてリードデータのエラー訂正ができなかった場合、ＣＰＵ１５ａと故障検査制御回路３５に対して訂正不可能なエラーが発生した旨のエラー報告を出力する。
【００３４】
また、エラー情報出力部３９は、カウンタを有し、リードデータに訂正可能なエラーが検出された場合、カウンタを使用して訂正可能なエラー数をカウントする。そして、エラー数が所定数を超えた場合、エラー情報出力部３９はＣＰＵ１５ａと故障検査制御回路３５に対してエラー報告を出力する。
【００３５】
なお、エラーに対する処理をＣＰＵ１５ａではなく管理ＬＳＩ１８が行うシステムも考えられる。この場合は、図示を省略するがエラー情報出力部３９は管理ＬＳＩに対してエラー報告を出力する。
【００３６】
エラー情報出力部３９は、エラー報告を出力すると同時に、アドレス、リードデータ、エラー種別等のエラー情報を内部メモリ３８に出力する。そして、このエラー情報は、第１記憶部の一例であるエラーログ３８ａのテーブルに登録される。
【００３７】
故障検査制御回路３５は、エラー報告を受信すると、自己の制御機能をオンして起動する。そして、起動した故障検査制御回路３５は、メモリコントローラ２２内の各回路に故障検査制御信号を出力し、各回路を通常モードから故障検査モードに切替える。
【００３８】
検査コマンド生成回路３６は、故障検査制御信号を受信すると起動する。そして、検査コマンド生成回路３６は、ライトアドレス記憶部３４からＤＩＭＭ２１のＲＡＮＫ毎のライトアドレスを読出し、検査対象のライトアドレスを抽出する。検査対象のライトアドレスからデータをリードする為のリードコマンドを生成し、ＤＩＭＭ２１に出力する。
【００３９】
なお、製造段階であれば、ＤＩＭＭ２１の全ＲＡＮＫを検査対象とすることができる。しかし、運用中において、検査時間がかかるとシステムエラーになる可能性が高いので、ＤＩＭＭの使用状況に応じて検査対象を選択するのが良い。
【００４０】
セレクタ３７は、通常モードの時はＣＰＵ１５ａからのコマンドを出力し、故障検査制御信号が入力されると信号線が切り替えられ、検査コマンド生成回路３６からの検査コマンドを出力する。故障検査が完了して故障検査解除信号が入力されると信号線が切り替えられ、セレクタ３７はＣＰＵ１５ａからのコマンドを出力する。従って、故障検査中はＣＰＵ１５ａからの通常のライトコマンドやリードコマンド等の発行が抑止される。
【００４１】
故障検査リードによるリードデータは、通常モード時と同様にＥＣＣチェック回路３２においてエラー検出及び訂正が行われる。その後、エラー情報出力部３９は、エラーの有無に関わらず、アドレス、リードデータ、エラー種別等の検査結果情報を内部メモリ３８に出力する。そして、この検査結果情報は、第２記憶部の一例である内部メモリ３８の検査ログ３８ｂに記憶される。
【００４２】
判定回路４０は、エラーログ３８ａ及び／又は検査ログ３８ｂに記憶された情報に基づいて、伝送路故障であるかメモリ内部故障であるかの故障箇所の判定を行う。そして、判定回路４０は、判定結果をＣＰＵ１５ａ（または管理ＬＳＩ１８）へ通知する。この判定結果を受けて、ＣＰＵ１５ａ（または管理ＬＳＩ１８）は、自身でメモリコントローラのリカバリ処理を行ったり、故障箇所の情報を外部に通知したりする。
【００４３】
検査コマンド生成回路３６は、検査対象の全てのＲＡＮＫに対してリードが完了すると、故障検査制御回路３５に完了通知を出力する。そして、故障検査制御回路３５は故障検査解除信号をメモリコントローラ２２内の各回路に出力し、各回路は故障検査モードから通常モードに切替えられる。その後、故障検査制御回路３５は制御機能をＯＦＦする。
【００４４】
図４は、伝送路故障の場合におけるエラーログ及び検査ログのテーブルの一例を示す図である。図４（Ａ）は、一例として、ＤＩＭＭ２１のエラー情報を記憶したエラーログ３８ａのテーブル１１０を示す。また、訂正不可のエラーが＃０のＲＡＮＫに発生した例で説明する。
【００４５】
エラーログのテーブル１１０には、アドレス、リードデータ、エラー種別が少なくともエラー情報として記憶される。アドレスには、ＲＡＮＫアドレスとＲＡＮＫ内アドレスが登録される。エラー種別には、エラー訂正可またはエラー訂正不可が登録される。
【００４６】
図４（Ｂ）は、一例として、ＤＩＭＭ２１の故障検査結果情報を記憶した検査ログ３８ｂのテーブル１２０を示す。また、１つのＲＡＮＫに対して２箇所のアドレスについて検査した例で説明する。
【００４７】
検査ログのテーブル１２０には、アドレス、リードデータ、検査結果が少なくとも検査結果情報として登録される。アドレスには、ＲＡＮＫアドレスとＲＡＮＫ内のアドレスが登録される。エラー種別には、エラー無し、エラー訂正可、エラー訂正不可が登録される。
【００４８】
判定回路４０は、エラーログのテーブル１１０のエラー情報と検査ログのテーブル１２０の検査結果情報を読出し、両者を比較する。エラーログのテーブル１１０において、＃０のＲＡＮＫのエラー情報にエラー訂正不可がある。
【００４９】
また、検査ログのテーブル１２０において、複数のＲＡＮＫの検査結果にエラー訂正不可がある。ゆえに、これらのテーブル１１０とテーブル１２０を比較することにより、通常モード時にエラーが発生した＃０のＲＡＮＫとは異なるＲＡＮＫにおいて故障検査モード時にエラーが発生していることがわかる。
【００５０】
基板上の配線やメモリコントローラの送受信回路で故障が発生した場合には、通常モード時にエラーが発生した＃０のＲＡＮＫだけではなく、全ＲＡＮＫにエラーが発生する可能性が高い。従って、判定回路４０は、＃０のＲＡＮＫとは異なるＲＡＮＫにおいてエラーが発生していることを識別することにより、簡単にかつ高速に、ＤＩＭＭ２１の伝送路に起因する伝送路故障を判定することができる。
【００５１】
また、判定回路４０は、検査ログ１２０のテーブルのみを参照すれば、エラーが一部に発生している、または複数のＲＡＮＫに発生している、より具体的にはエラーが検査対象の全ＲＡＮＫにわたって発生している、のか否かを判定することができる。ゆえに、ＤＩＭＭ２１の伝送路に起因する伝送路故障を推定して判定することもできる。このようにすれば、エラーログを省略することができ、より簡単にかつ高速に、判定することができる。なお、高い検出精度を要する場合には、エラーログのテーブル１１０と検査ログのテーブル１２０を比較して判定するのが望ましい。
【００５２】
図５は、メモリ故障の場合におけるエラーログ及び検査ログのテーブルの一例を示す図である。図５（Ａ）は、一例として、ＤＩＭＭ２１のエラー情報を記憶したエラーログ３８ａのテーブル２１０を示す。また、訂正不可のエラーが＃０のＲＡＮＫに発生した例で説明する。
【００５３】
エラーログのテーブル２１０には、アドレス、リードデータ、エラー種別が少なくともエラー情報として登録される。アドレスには、ＲＡＮＫアドレスとＲＡＮＫ内アドレスが登録される。エラー種別には、エラー訂正可またはエラー訂正不可が登録される。
【００５４】
図５（Ｂ）は、一例として、ＤＩＭＭ２１の検査結果情報を記憶した検査ログ３８ｂのテーブル２２０を示す。また、１つのＲＡＮＫに対して２箇所のアドレスについて検査した例で説明する。
【００５５】
検査ログのテーブル２２０には、アドレス、リードデータ、検査結果が少なくとも検査結果情報として登録される。アドレスには、ＲＡＮＫアドレスとＲＡＮＫ内アドレスが登録される。検査結果には、エラー無し、エラー訂正可、エラー訂正不可が登録される。
【００５６】
判定回路４０は、エラーログのテーブル２１０のエラー情報と検査ログのテーブル２２０の検査結果情報を読出し、両者を比較する。エラーログのテーブル２１０において、＃０のＲＡＮＫのエラー情報にエラー訂正不可がある。また、検査ログのテーブル２２０において、＃０のＲＡＮＫの２つの検査結果にエラー訂正不可があるが、＃０と異なるＲＡＮＫの検査結果はエラー無しである。
【００５７】
つまり、エラー情報と検査結果情報において、同じＲＡＮＫにエラーがあるが、他のＲＡＮＫにはエラーが無い。ＤＩＭＭ内部の故障の原因として、ＳＤＲＡＭの故障や信号線の断線等が考えられる。ゆえに、ＤＩＭＭ内部に故障が発生している場合には、故障範囲がＲＡＮＫ内に限定される場合が多く、他のＲＡＮＫはエラーが生じることが無く正常に動作可能である。
【００５８】
従って、判定回路４０は、エラー情報及び検査結果において、共に、特定の＃０のＲＡＮＫのみにおいてエラーが発生しているので、簡単にかつ高速に、ＤＩＭＭ２１の＃０のＲＡＮＫのメモリ内部の故障に起因するメモリエラーを判定することができる。
【００５９】
また、判定回路４０は、検査ログのテーブル２２０のみを参照して、特定の＃０のＲＡＮＫのみ、つまり一部のＲＡＮＫにおいてエラーが発生し、他の大多数のＲＡＮＫに故障がないことを識別することができる。このように識別することで、ＤＩＭＭ２１の＃０のＲＡＮＫのメモリ内部の故障に起因するメモリエラーを判定しても良い。
【００６０】
ゆえに、エラーログを省略することができ、より簡単にかつ高速に、判定することができる。なお、高い検出精度を要する場合には、エラーログのテーブル２１０と検査ログのテーブル２２０を比較して判定するのが望ましい。
【００６１】
図６は、第１の実施形態の情報処理システムにおける故障判定処理のフローを示す図である。メモリコントローラ２２は、ライト（ＷＲＩＴＥ）コマンドを受信した場合（Ｓ１０１、ＹＥＳ）、ＤＩＭＭ２１のＲＡＮＫ毎にライトアドレスをライトアドレス記憶部３４に登録する（Ｓ１０２）。
【００６２】
メモリコントローラ２２は、ライトコマンドとアドレス信号をコマンド／アドレスバス２８を経由してＤＩＭＭ２１に出力する。そして、メモリコントローラ２２は、ＤＩＭＭに対してライトコマンドを実行させる（Ｓ１０３）。
【００６３】
メモリコントローラ２２は、リード（ＲＥＡＤ）コマンドまたはベリファイ（ＶＥＲＩＦＹ）コマンドを受信した場合（Ｓ１０４、ＹＥＳ）、コマンドとアドレス信号をコマンド／アドレスバス２８を経由してＤＩＭＭ２１に出力する。そして、メモリコントローラ２２は、ＤＩＭＭ２１に対してリードコマンドまたはベリファイコマンドを実行させる。また、メモリコントローラ２２は、消去等の他のコマンドを受信した場合（Ｓ１０４、ＮＯ）、前述と同様に、ＤＩＭＭ２１に対してそのコマンドを実行させる。
【００６４】
リードコマンドまたはベリファイコマンドを実行した結果、ＥＣＣチェック回路３２においてリードエラーが検出された場合（Ｓ１０６、ＹＥＳ）、エラー情報出力部３９はそのエラーが訂正不可能なエラーか否かを識別する。訂正不可能なエラーの場合（Ｓ１０７、ＹＥＳ）、エラー情報出力部３９はＣＰＵ１５ａ（または管理ＬＳＩ１８）と故障検査制御回路３５に対してエラー報告を出力する。そして、エラー情報をエラーログ３８ａに登録する（Ｓ１０９）。
【００６５】
訂正可能なエラーの場合（Ｓ１０７、ＮＯ）、エラー情報出力部３９はエラー数が所定数であるか否かを判定する。エラー数が所定数以上の場合（Ｓ１０８、ＹＥＳ）、ＣＰＵ１５ａ（または管理ＬＳＩ１８）と故障検査制御回路３５に対してエラー報告を出力する。そして、エラー情報をエラーログ３８ａに登録する（Ｓ１０９）。
【００６６】
故障検査制御回路３５は、エラー報告を受信すると、自己の制御機能をオンして起動
する（Ｓ１１０）。そして、故障検査制御回路３５は、故障検査制御信号をメモリコントローラ２２内の各回路に出力し、各回路を通常モードから故障検査モードに切替える。
【００６７】
検査コマンド生成回路３６は、故障検査制御信号を受信すると故障検査モードに切り替えられる。検査コマンド生成回路３６は、ライトアドレス記憶部３４からＤＩＭＭ２１のＲＡＮＫ毎のライトアドレスを読出し、検査対象のライトアドレスを抽出する。
【００６８】
検査対象のライトアドレスからデータをリードする為の検査コマンドを生成し、検査対象の各ＲＡＮＫに対して発行する。また、情報処理システムの運用状況に応じて、複数回のリードコマンドを生成し複数の検査結果を取得して、高精度な検査を行っても良い。
【００６９】
故障検査リードによるリードデータは、通常モード時と同様にＥＣＣチェック回路３２においてエラー検出及び訂正が行われる。その後、エラー情報出力部３９は、エラーの有無に関わらず、アドレス、リードデータ、エラー種別等の検査結果情報を出力し、検査ログ３８ｂのテーブルに登録させる（Ｓ１１１）。
【００７０】
判定回路４０は、エラーログ３８ａと検査ログ３８ｂのテーブルに登録された情報を読出す（Ｓ１１２）。判定回路４０は、検査ログ３８ｂのテーブルに登録された検査結果情報に、エラーログ３８ａのテーブルに登録されたエラー情報と異なるＲＡＮＫにエラーがあるか否かを判定する。
【００７１】
判定回路４０は、検査ログ３８ｂのテーブルに別のＲＡＮＫにエラーがある場合（Ｓ１１３、ＹＥＳ）、検査対象のＤＩＭＭの伝送路故障と判定し、判定結果をＣＰＵ１５ａ（または管理ＬＳＩ１８）に出力する（Ｓ１１４）。判定回路４０は、検査ログ３８ｂのテーブルに別のＲＡＮＫにエラーがない場合（Ｓ１１３、ＮＯ）、検査対象のＤＩＭＭ内部のメモリ故障と判定し、判定結果をＣＰＵ１５ａ（または管理ＬＳＩ１８）に出力する（Ｓ１１５）。
【００７２】
以上説明したように、第１の実施形態の情報処理システム及びメモリコントローラは、ハードウェアを利用して、エラー報告と同時に自動的に故障検査を開始することができるので、運用中であっても、記録済のデータを保持したまま、メモリモジュールの伝送路故障とメモリ故障を迅速にかつ正確に判定することが可能になる。
【００７３】
また、故障箇所を特定する為の再現試験を行って多大な工数をかける必要が無くなる為、保守性を向上させることができる。さらに、判定結果に応じて故障から復旧する為のリカバリ処理に早期に移行することが容易になる。ゆえに、故障箇所によって早急な処置を行うことが可能となり、情報処理システムの信頼性を向上させることが可能となる。
【００７４】
図７は、第２の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。図７は、図２で説明したメモリコントローラ１２ａの一例であるメモリコントローラ５２を示し、管理ＬＳＩ１８の図示は省略する。
【００７５】
また、図７のメモリコントローラ５２は、図３のメモリコントローラ２２とは、故障検査制御レジスタ５５を備える点で異なる。また、図７には、図３のＣＰＵ１５ａの一例として、検査プログラム４５ａを実行するＣＰＵ４５が示されている。図３と共通する構成は同じ番号を付し説明は省略する。
【００７６】
図７において、検査プログラム４５ａはＣＰＵ４５で実行される例で示すが、管理ＬＳＩ１８で実行するようにしても良い。また、検査プログラム４５ａは、検査ソフトウェアとして、オペレーションシステムの管理ソフトウェアの一部に含めることもできる。この場合は管理ＬＳＩ１８を経由してエラー報告が管理ソフトウェアに通知され、検査プログラム４５ａと同様に処理が実行される。
【００７７】
メモリコントローラ５２は、故障検査制御部の一例として、故障検査制御レジスタ５５及び検査コマンド生成回路３６を備える。また、メモリコントローラ５２は、判定部の一例である判定回路４０を備える。
【００７８】
エラー情報出力部３９は、訂正不可能なエラーの発生、または訂正可能なエラー数が所定数以上の場合、ＣＰＵ４５に対してエラー報告を出力する。ＣＰＵ４５は、エラー報告を受信すると検査プログラム４５ａを実行する。
【００７９】
検査プログラム４５ａは、予め登録された条件を参照して故障検査の必要性を判断し、必要であると判断した場合故障検査制御レジスタ５５にＳＥＴ信号を出力する。故障検査制御レジスタ５５は、ＳＥＴ信号を受信し、所定のデータをライトしてセットする。なお、予め登録された条件として、ユーザの設定、運用時間、エラー報告回数等が挙げられる。
【００８０】
そして、故障検査制御レジスタ５５は、これをトリガとして、故障検査制御信号をメモリコントローラ５２内の各回路に出力し、各回路を通常モードから故障検査モードに切替える。
【００８１】
その後の処理は、第１の実施形態同様であり、検査コマンド生成回路３６は、検査対象のＲＡＮＫ毎のライトアドレスからデータをリードする為の検査コマンドを生成し、各ＲＡＮＫに対して発行する。
【００８２】
なお、製造段階であれば、ＤＩＭＭ２１の全ＲＡＮＫを検査対象とすることができる。しかし、運用中において、検査時間がかかるとシステムエラーになる可能性が高いので、ＤＩＭＭ２１の使用状況に応じて検査対象を選択するのが望ましい。また、情報処理システムの運用状況に応じて、複数回のリードコマンドを生成し複数の検査結果を取得して、高精度な検査を行っても良い。
【００８３】
故障検査リードを行った結果、判定回路４０は、別のＲＡＮＫにエラーがある場合は検査対象のＤＩＭＭの伝送路故障と判定する。判定回路４０は、別のＲＡＮＫにエラーがない場合は検査対象のＤＩＭＭ内部のメモリ故障と判定する。なお、判定回路４０は、第２の実施形態においても、第１の実施形態で説明したように、検査ログのみを参照して伝送路故障とメモリ故障を判定するように構成しても良い。
【００８４】
検査コマンド生成回路３６は、検査対象の全てのＲＡＮＫに対してリードが完了すると、故障検査制御レジスタ５５に完了通知であるＣＬＥＡＲ信号の出力を行う。そして、故障検査制御レジスタ５５は、データをクリアし、これをトリガとして、故障検査解除信号をメモリコントローラ５２内の各回路に出力する。ゆえに、各回路は故障検査モードから通常モードに切替えられる。
【００８５】
図８は、第２の実施形態の情報処理システムにおける故障判定処理のフローを示す図である。メモリコントローラ５２は、ライトコマンドを受信した場合（Ｓ２０１、ＹＥＳ）、ＤＩＭＭ２１のＲＡＮＫ毎にライトアドレスをライトアドレス記憶部３４に登録する（Ｓ２０２）。
【００８６】
メモリコントローラ５２は、ライトコマンドとアドレス信号をコマンド／アドレスバス２８を経由してＤＩＭＭ２１に出力する。そして、メモリコントローラ５２は、ＤＩＭＭ２１に対してライトコマンドを実行させる（Ｓ２０３）。
【００８７】
メモリコントローラ５２は、リードコマンドまたはベリファイコマンドを受信した場合（Ｓ２０４、ＹＥＳ）、コマンドとアドレス信号をコマンド／アドレスバス２８を経由してＤＩＭＭ２１に出力する。
【００８８】
そして、メモリコントローラ５２は、ＤＩＭＭ２１に対してリードコマンドまたはベリファイコマンドを実行させる。また、メモリコントローラ５２は、消去等の他のコマンドを受信した場合（Ｓ２０４、ＮＯ）、前述と同様に、ＤＩＭＭ２１に対してそのコマンドを実行させる。
【００８９】
リードコマンドまたはベリファイコマンドを実行した結果、ＥＣＣチェック回路３２においてリードエラーが検出された場合（Ｓ２０６、ＹＥＳ）、エラー情報出力部３９はそのエラーが訂正不可能なエラーか否かを判定する。訂正不可能なエラーの場合（Ｓ２０７、ＹＥＳ）、エラー情報出力部３９はＣＰＵ４５に対してエラー報告を出力する。そして、エラー情報をエラーログ３８ａに登録する（Ｓ２０９）。
【００９０】
訂正可能なエラーの場合（Ｓ２０７、ＮＯ）、エラー情報出力部３９はエラー数が所定数であるか否かを判定する。エラー数が所定数以上の場合（Ｓ２０８、ＹＥＳ）、ＣＰＵ４５に対してエラー報告を出力する。そして、エラー情報をエラーログ３８ａに登録する（Ｓ２０９）。
【００９１】
ＣＰＵ４５は、エラー報告を受信すると検査プログラム４５ａを起動する（Ｓ２１０）。検査プログラム４５ａは、予め登録された条件を参照して故障検査の必要性を判断し、必要と判断した場合にＳＥＴ信号を故障検査制御レジスタ５５に出力する。
【００９２】
故障検査制御レジスタ５５は、ＳＥＴ信号を受信して、データをライトしてセットする（Ｓ２１１）。そして、故障検査制御レジスタ５５は、故障検査制御信号を出力し、メモリコントローラ５２内の各回路を通常モードから故障検査モードに切替える。
【００９３】
検査コマンド生成回路３６は、故障検査制御信号を受信すると故障検査モードに切り替えられる。検査コマンド生成回路３６は、ライトアドレス記憶部３４から検査対象のＲＡＮＫ毎のライトアドレスを読出し、検査対象のライトアドレスを抽出する。検査対象のライトアドレスからデータをリードする為のリードコマンドを生成し、検査対象の各ＲＡＮＫに対して発行する。
【００９４】
故障検査リードによるリードデータは、通常モード時と同様にＥＣＣチェック回路３２においてエラー検出及び訂正が行われる。その後、エラー情報出力部３９は、エラーの有無に関わらず、アドレス、リードデータ、エラー種別等の検査結果情報を出力し、検査ログ３８ｂのテーブルに登録させる（Ｓ２１２）。
【００９５】
判定回路４０は、エラーログ３８ａと検査ログ３８ｂのテーブルに登録された情報を読出す（Ｓ２１３）。判定回路４０は、検査ログ３８ｂのテーブルに登録された検査結果情報に、エラーログ３８ａのテーブルに登録されたエラー情報と異なる別のＲＡＮＫにエラーがあるか否かを判定する。
【００９６】
判定回路４０は、検査ログ３８ｂのテーブルに別のＲＡＮＫにエラーがある場合（Ｓ２１４、ＹＥＳ）、検査対象のＤＩＭＭの伝送路故障と判定し、判定結果をＣＰＵ４５に報告する（Ｓ２１５）。判定回路４０は、検査ログ３８ｂのテーブルに別のＲＡＮＫにエラーがない場合（Ｓ２１４、ＮＯ）、検査対象のＤＩＭＭ内部のメモリ故障と判定し、判定結果をＣＰＵ４５に報告する（Ｓ２１６）。
【００９７】
以上説明したように、第２の実施形態の情報処理システム及びメモリコントローラは、検査プログラムを使用して、故障検査の必要性や実施タイミングを判断してから故障検査を実施することができる。また、検査プログラムを使用しているので、製品出荷後や運用途中で故障検査の実施判断基準等を変更することができる。
【００９８】
従って、第２の実施形態の情報処理システム及びメモリコントローラは、運用中であっても、運用中の記録済のデータを保持したまま、メモリモジュールの伝送路故障とメモリ故障を迅速にかつ正確に判定することが可能になる。
【００９９】
また、故障箇所を特定する為の再現試験を行って多大な工数をかける必要が無くなる為、保守性を向上させることができる。さらに、判定結果に応じて故障から復旧する為のリカバリ処理に早期に移行することが容易になる。ゆえに、故障箇所によって早急な処置を行うことが可能となり、情報処理システムの信頼性を向上させることが可能となる。
【０１００】
次に、第１及び第２の実施形態では故障検査によってエラー状況から故障箇所を判定する技術を示したが、この判定結果に応じてメモリコントローラが自律的に故障からのリカバリを行うことが考えられる。
【０１０１】
エラーしたデータが訂正不可能であり、かつ情報処理システムにとって不可欠なものである場合に、システムとして動作継続は不可能である。一方、エラーが訂正可能である場合や情報処理システムがエラーを修復して動作できる場合、動作継続可能である。従って、さらなるメモリエラーの発生を防止する為に、後述するように、エラーリカバリ制御回路を設ける。
【０１０２】
図９は、第３の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。図９のメモリコントローラ６２は、図３のメモリコントローラ２２にエラーリカバリ制御部の一例であるエラーリカバリ制御回路６３を設けた場合の変形例である。
【０１０３】
また、図９には、送受信回路調整レジスタ６４ａ及び動作周波数調整レジスタ６４ｂを備える制御レジスタ群６４、ＰＬＬ回路６６、送受信回路６７ａ〜６７ｄが示されている。図３と共通する構成は同じ番号を付し説明は省略する。
【０１０４】
エラーリカバリ制御回路６３は、判定回路４０から伝送路故障またはメモリ故障の判定結果を受信し、メモリコントローラ６２のリカバリ制御を行う為に指示信号をＣＰＵ１５ａに対して出力する。
【０１０５】
また、エラーに対する処理をＣＰＵ１５ａではなく管理ＬＳＩ１８が行うシステムも考えられる。この場合は、図示は省略するが、エラー情報出力部３９は、管理ＬＳＩ１８に対してエラー報告を出力し、エラーリカバリ制御回路６３は、管理ＬＳＩ１８に対して判定結果に対応する各種指示を出力する。
【０１０６】
さらに、エラーリカバリ制御回路６３は、本実施の形態ではメモリコントローラに設ける例で説明するが、ＣＰＵや管理ＬＳＩ等のメンテナンス制御を行うことが可能な情報処理システム内の他の回路や外部装置に設け、ＣＰＵや管理ＬＳＩ等を経由して判定回路４０からの判定結果を転送するようにしても良い。このようにすれば、メモリコントローラの実装面積が小さい場合においても、エラーリカバリ制御回路を実現することができる。
【０１０７】
図１０は、エラーリカバリ制御回路におけるリカバリ処理のフローを示す図である。エラーリカバリ制御回路６３は、判定回路４０から伝送路故障の判定結果を受信する（Ｓ３０１）と、伝送路故障の状態を判断して情報処理システムが動作継続可能か否かを判定する。情報処理システムが動作継続不可能（Ｓ３０２、ＮＯ）であれば、エラーリカバリ制御回路６３は、システム停止／リセット指示信号をＣＰＵ１５ａ（または管理ＬＳＩ１８）に対して出力する（Ｓ３０８）。
【０１０８】
情報処理システムが動作継続可能であれば（Ｓ３０２、ＹＥＳ）、エラーリカバリ制御回路６３は、メモリコントローラ６２の内部設定値を変更する為の内部設定値変更指示信号をＣＰＵ１５ａ（または管理ＬＳＩ１８）に対して出力する。
【０１０９】
ＣＰＵ１５ａ（または管理ＬＳＩ１８）は、内部設定値変更指示信号を受信すると、制御レジスタ群６４に対して内部設定値変更を行うようにレジスタ設定信号を出力する。送受信回路調整レジスタ６４ａにレジスタ設定信号が入力されると、メモリインタフェース２７への送受信部の一例である送受信回路６７ａ〜６７ｄの電圧設定値を変更する。
【０１１０】
また、制御レジスタ群６４の動作周波数調整レジスタ６４ｂにレジスタ設定信号が入力されると、ＰＬＬ回路６６の設定を変更してメモリコントローラ６２の内部クロック周波数を下げる。また、ＤＩＭＭ２１との伝送用のクロック周波数も下げる。このようにして、伝送路の動作速度を低下させ、内部設定値の変更を行う（Ｓ３０３）。
【０１１１】
運用中に伝送路故障が発生する要因として、動作環境における温度変動やシステムの電圧変動が考えられる。従って、前述したように、メモリコントローラやメモリインタフェース２７の伝送負荷を低下させることで、メモリコントローラやメモリインタフェース等の伝送路の故障に起因する伝送路故障に対するリカバリを行うことができる。
【０１１２】
しかしながら、このように伝送負荷を低下させてもエラーの改善が見込めない場合には、エラーリカバリ制御回路６３はリセット指示信号をＣＰＵ１５ａ（または管理ＬＳＩ１８）に対して出力して、システムの停止またはリセットを実行させる。
【０１１３】
また、エラーリカバリ制御回路６３は、判定回路４０からメモリ故障の判定結果を受信する（Ｓ３０４）と、メモリ故障の状態を判断して情報処理システムが動作継続可能か否かを判定する。
【０１１４】
情報処理システムが動作継続可能であれば（Ｓ３０５、ＹＥＳ）、エラーリカバリ制御回路６３は、ＤＩＭＭ切替指示信号をＣＰＵ１５ａ（または管理ＬＳＩ１８）に対して出力する。そして、ＣＰＵ１５ａは、エラーが発生したＤＩＭＭとの接続を切断し、予備のＤＩＭＭ２１ｈに置き換えて切り替える（Ｓ３０６）。なお、切り替え可能な予備のＤＩＭＭが無い場合は、単に、エラーが発生したＤＩＭＭとの接続を切断する。
【０１１５】
エラーリカバリ制御回路６３は、情報処理システムが動作継続不可能（Ｓ３０５、ＮＯ）と判断した場合、システム停止またはリセット指示信号をＣＰＵ１５ａ（または管理ＬＳＩ１８）に対して出力する（Ｓ３０８）。
【０１１６】
以上説明したように、第３の実施形態の情報処理システム及びメモリコントローラは、可能な限りメモリモジュールの動作を継続することができる為、所定のエラーが生じてもすぐにシステムが停止することがなくなり、システムの運用を継続することができる。
【０１１７】
図１１は、第４の実施形態の情報処理システムにおけるメモリコントローラの内部構成を説明する為の図である。図１１のメモリコントローラ７２は、図７のメモリコントローラ５２にエラーリカバリ制御部の一例であるエラーリカバリ制御回路６３を設けた場合の変形例である。
【０１１８】
また、図９には、送受信回路調整レジスタ６４ａ及び動作周波数調整レジスタ６４ｂを備える制御レジスタ群６４、ＰＬＬ回路６６、送受信回路６７ａ〜６７ｄが示されている。図７や図９と共通する構成は同じ番号を付し説明は省略する。
【０１１９】
エラーリカバリ制御回路６３は、判定回路４０から伝送路故障またはメモリ故障の判定結果を受信し、メモリコントローラ７２のリカバリ制御を行う為の指示信号をＣＰＵ４５に対して出力する。
【０１２０】
また、エラーに対する処理をＣＰＵ４５ではなく管理ＬＳＩ１８が行うシステムも考えられる。この場合は、図示は省略するが、エラーリカバリ制御回路６３は、管理ＬＳＩ１８に対して判定結果に対応する各種指示を出力する。
【０１２１】
さらに、エラーリカバリ制御回路６３は、本実施の形態ではメモリコントローラに設ける例で説明するが、ＣＰＵや管理ＬＳＩ等のメンテナンス制御を行うことが可能な情報処理システム内の他の回路や外部装置に設け、ＣＰＵや管理ＬＳＩ等を経由して判定回路４０からの判定結果を転送するようにしても良い。このようにすれば、メモリコントローラの実装面積が小さい場合においても、エラーリカバリ制御回路を実現することができる。
【０１２２】
図１１のエラーリカバリ制御回路におけるリカバリ処理も図１０を使用して説明する。エラーリカバリ制御回路６３は、判定回路４０から伝送路故障の判定結果を受信する（Ｓ３０１）と、伝送路故障の状態を判断して情報処理システムが動作継続可能か否かを判定する。
【０１２３】
情報処理システムが動作継続不可能（Ｓ３０２、ＮＯ）であれば、エラーリカバリ制御回路６３は、システム停止／リセット指示信号をＣＰＵ４５（または管理ＬＳＩ１８）に対して出力する（Ｓ３０８）。
【０１２４】
情報処理システムが動作継続可能であれば（Ｓ３０２、ＹＥＳ）、エラーリカバリ制御回路６３は、メモリコントローラ６２の内部設定値を変更する為の内部設定値変更指示信号をＣＰＵ４５（または管理ＬＳＩ１８）に対して出力する。
【０１２５】
ＣＰＵ４５（または管理ＬＳＩ１８）は、内部設定値変更指示信号を受信すると、制御レジスタ群６４に対して内部設定値変更を行うようにレジスタ設定信号を出力する。送受信回路調整レジスタ６４ａにレジスタ設定信号が入力されると、メモリインタフェース２７への送受信部の一例である送受信回路６７ａ〜６７ｄの電圧設定値を変更する。
【０１２６】
また、制御レジスタ群６４の動作周波数調整レジスタ６４ｂにレジスタ設定信号が入力されると、ＰＬＬ回路６６の設定を変更してメモリコントローラ６２の内部クロック周波数を下げる。また、ＤＩＭＭ２１との伝送用のクロック周波数も下げる。このようにして、伝送路の動作速度を低下させ、内部設定値の変更を行う（Ｓ３０３）。
【０１２７】
運用中に伝送路故障が発生する要因として、動作環境における温度変動やシステムの電圧変動が考えられる。従って、前述したように、メモリコントローラやメモリインタフェース２７の伝送負荷を低下させることで、メモリコントローラやメモリインタフェース等の伝送路の故障に起因する伝送路故障に対するリカバリを行うことができる。
【０１２８】
しかしながら、このように伝送負荷を低下させても改善が見込めない場合には、エラーリカバリ制御回路６３はリセット指示信号をＣＰＵ４５（または管理ＬＳＩ１８）に対して出力して、システムの停止またはリセットを実行させる。
【０１２９】
また、エラーリカバリ制御回路６３は、判定回路４０からメモリ故障の判定結果を受信する（Ｓ３０４）と、メモリ故障の状態を判断して情報処理システムが動作継続可能か否かを判定する。
【０１３０】
情報処理システムが動作継続可能であれば（Ｓ３０５、ＹＥＳ）、エラーリカバリ制御回路６３は、ＤＩＭＭ切替指示信号をＣＰＵ１５ａ４５（または管理ＬＳＩ１８）に対して出力する。そして、ＣＰＵ４５は、エラーが発生したＤＩＭＭとの接続を切断し、予備のＤＩＭＭ２１ｈに置き換えて切り替える（Ｓ３０６）。なお、切り替え可能な予備のＤＩＭＭが無い場合は、単に、エラーが発生したＤＩＭＭとの接続を切断する。
【０１３１】
エラーリカバリ制御回路６３は、情報処理システムが動作継続不可能（Ｓ３０５、ＮＯ）と判断した場合、システム停止またはリセット指示信号をＣＰＵ４５（または管理ＬＳＩ１８）に対して出力する（Ｓ３０８）。
【０１３２】
以上説明したように、第４の実施形態の情報処理システム及びメモリコントローラは、可能な限りメモリモジュールの動作を継続することができる為、所定のエラーが生じてもすぐにシステムが停止することがなくなり、システムの運用を継続することができる。
【０１３３】
本発明は上記実施形態に限定されるものではない。矛盾のない限りにおいて、複数の実施例を組み合わせても構わない。上記実施形態は例示であり、本発明の特許請求の範囲に記載された技術的思想と実質的に同一な構成を有し、同様な作用効果を奏するものは、いかなるものであっても本発明の技術的範囲に包含される。
【０１３４】
以上の実施の形態に関して、さらに以下の付記を開示する。
（付記１）
複数の単位メモリ領域を備えるメモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラにおいて、
前記メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、
前記メモリコントローラを通常モードから故障検査モードに切り替え、前記複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、
前記故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部と、
を備えることを特徴とするメモリコントローラ。
（付記２）
前記故障検査制御部は、通常モード時に前記エラー検出部により検出されたエラーが訂正不可能なエラーであった場合、または通常モード時に前記エラー検出部により検出された訂正可能なエラーが予め定められた数を超えた場合に、通常モードから故障検査モードに切り替えることを特徴とする付記１記載のメモリコントローラ。
（付記３）
前記訂正不可能なエラーまたは前記予め定められた数を超えた場合の訂正可能なエラーに関するエラー情報を記憶する第１記憶部と、前記故障検査制御部による検査結果に関する検査結果情報を記憶する第２記憶部をさらに備え、前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況に基づいて、前記メモリ故障と前記伝送路故障を判定することを特徴とする付記２記載のメモリコントローラ。
（付記４）
前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況を比較し、同じ単位メモリ領域のみにエラーが生じている場合に前記メモリ故障と判定し、異なる単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定することを特徴とする付記３記載のメモリコントローラ。
（付記５）
前記判定部は、前記検査結果情報における各単位メモリ領域のエラー検出状況を参照し、前記検査対象の一部の単位メモリ領域にエラーが生じている場合に前記メモリ故障と判定し、前記検査対象の複数の単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定する付記１記載のメモリコントローラ。
（付記６）
さらに、前記判定部により判定された結果に基づいてエラーリカバリの制御を行うエラーリカバリ制御部を備えることを特徴とする付記１乃至５のいずれか一つに記載のメモリコントローラ。
（付記７）
前記エラーリカバリ制御部は、メモリ故障の場合にエラーが検出されたメモリモジュールとの接続を切断する、またはエラーが検出されたメモリモジュールとの接続を切断し、予備のメモリモジュールに置き換えることを特徴とする付記６に記載のメモリコントローラ。
（付記８）
前記エラーリカバリ制御部は、伝送路故障の場合に前記メモリコントローラ内の送受信部の設定値または／及び動作周波数の設定値を変更する制御を行うことを特徴とする付記６または付記７に記載のメモリコントローラ。
（付記９）
複数の単位メモリを備えるメモリモジュールと、
メモリインタフェースを介して前記メモリモジュールに接続され、前記メモリモジュールへのアクセスを制御するメモリコントローラと、
前記メモリコントローラに設けられ、前記メモリモジュールから読出されたデータのエラー検出を行うエラー検出部と、
前記メモリコントローラを通常モードから故障検査モードに切り替え、前記複数の単位メモリ領域におけるそれぞれの検査対象のデータ記録済アドレスからデータを読出し、該読出しデータのエラーを前記エラー検出部により検出させて、故障検査を実行させる故障検査制御部と、
前記故障検査制御部による検査結果における各単位メモリ領域のエラー検出状況に基づいて、メモリモジュール内部の故障に起因するメモリ故障と、メモリモジュール外部のデータ伝送路の故障に起因する伝送路故障を判定する判定部と、
を備えることを特徴とする情報処理システム。
（付記１０）
前記故障検査制御部は、通常モード時に前記エラー検出部により検出されたエラーが訂正不可能なエラーであった場合、または通常モード時に前記エラー検出部により検出された訂正可能なエラーが予め定められた数を超えた場合に、通常モードから故障検査モードに切り替えることを特徴とする付記９記載の情報処理システム。
（付記１１）
前記訂正不可能なエラーまたは前記予め定められた数を超えた場合の訂正可能なエラーに関するエラー情報を記憶する第１記憶部と、前記故障検査制御部による検査結果に関する検査結果情報を記憶する第２記憶部をさらに備え、前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況に基づいて、前記メモリ故障と前記伝送路故障を判定することを特徴とする付記１０記載の情報処理システム。
（付記１２）
前記判定部は、前記エラー情報におけるエラー検出状況と前記検査結果情報における各単位メモリ領域のエラー検出状況を比較し、同じ単位メモリ領域のみにエラーが生じている場合に前記メモリ故障と判定し、異なる単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定することを特徴とする付記１１記載の情報処理システム。
（付記１３）
前記判定部は、前記検査結果情報における各単位メモリ領域のエラー検出状況を参照し、前記検査対象の一部の単位メモリ領域にエラーが生じている場合に前記メモリ故障と判定し、前記検査対象の複数の単位メモリ領域にエラーが生じている場合に前記伝送路故障と判定する付記９記載の情報処理システム。
（付記１４）
さらに、前記判定部により判定された結果に基づいてエラーリカバリの制御を行うエラーリカバリ制御部を備えることを特徴とする付記９乃至１３のいずれか一つに記載の情報処理システム。
（付記１５）
前記エラーリカバリ制御部は、メモリ故障の場合にエラーが検出されたメモリモジュールとの接続を切断する、またはエラーが検出されたメモリモジュールとの接続を切断し、予備のメモリモジュールに置き換えることを特徴とする付記１４に記載の情報処理システム。
（付記１６）
前記エラーリカバリ制御部は、伝送路故障の場合に前記メモリコントローラ内の送受信部の設定値または／及び動作周波数の設定値を変更する制御を行うことを特徴とする付記１４または付記１５に記載の情報処理システム。
【符号の説明】
【０１３５】
１      システムボード
１１ａ、１１ｂ  メモリモジュール
１２ａ、１２ｂ  メモリコントローラ
１５ａ、１５ｂ  ＣＰＵ
１６    ノードコントローラ
１７ａ、１７ｂ  ＩＯ ＵＮＩＴ
１８    管理ＬＳＩ
２１    ＤＩＭＭ
２１ｈ  予備のＤＩＭＭ
２２    メモリコントローラ
２３−０〜２３−ｎ−１  ＲＡＮＫ
２４−０〜２４−ｍ−１  ＳＤＲＡＭ
２７    メモリインタフェース
２８    コマンド／アドレスバス
２８ａ、２８ｂ    信号バス
２９    データバス
２９ａ  データバス
３１    ＥＣＣ付加回路
３２    ＥＣＣチェック回路
３３ａ  Ｃ／Ａ ＢＵＦＦＥＲ
３３ｂ  ＷＲＩＴＥ ＢＵＦＦＥＲ
３３ｃ  ＲＥＡＤ ＢＵＦＦＥＲ
３４    ライトアドレス記憶部
３５    故障検査制御回路
３６    検査コマンド生成回路
３７    セレクタ
３８    内部メモリ
３８ａ  エラーログ
３８ｂ  検査ログ
３９    エラー情報出力部
４０    判定回路
４５    ＣＰＵ
４５ａ  検査プログラム
５２    メモリコントローラ
５５    故障検査制御レジスタ
６２    メモリコントローラ
６３    エラーリカバリ制御回路
６４    制御レジスタ群
６４ａ  送受信回路調整レジスタ
６４ｂ  動作周波数調整レジスタ
６６    ＰＬＬ回路
６７ａ〜６７ｄ  送受信回路
７２    メモリコントローラ
【図１】
2012113466.tif 000003
【図２】
2012113466.tif 000004
【図３】
2012113466.tif 000005
【図４】
2012113466.tif 000006
【図５】
2012113466.tif 000007
【図６】
2012113466.tif 000008
【図７】
2012113466.tif 000009
【図８】
2012113466.tif 000010
【図９】
2012113466.tif 000011
【図１０】
2012113466.tif 000012
【図１１】
2012113466.tif 000013