(57)【特許請求の範囲】
【請求項１】
誤り訂正回路を有する記憶装置と、
所定の試験手順で前記記憶装置の試験を行う試験部と、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録部と、
前記試験部による試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と前記記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を特定する位置特定部と、
前記誤り訂正が行われたときの試験手順で、前記特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、前記試験部によって所定回数試験する制御部と、を備える情報処理装置。
【請求項２】
前記試験部が、記憶装置の複数の範囲に対して並列に試験を行う場合に、前記制御部は、前記誤り訂正試験位置を含む前記記憶装置の部分に対して並列に実行される試験の開始を同期させる同期制御部をさらに備える請求項１に記載の情報処理装置。
【請求項３】
前記試験部が複数の試験条件を変更して複数回の試験を行う場合に、前記試験部による試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間とから、前記誤り訂正試験位置での試験の試験条件を特定する条件特定部をさらに備える請求項１または２に記載の情報処理装置。
【請求項４】
コンピュータが、所定の試験手順で、誤り訂正回路を有する記憶装置の試験を行う試験ステップと、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録ステップと、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と前記記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を特定する位置特定ステップと、
前記誤り訂正が行われたときの試験手順で、前記特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、所定回数前記試験を行う制御ステップと、を実行する試験方法。
【請求項５】
コンピュータに、所定の試験手順で、誤り訂正回路を有する記憶装置の試験を行う試験ステップと、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録ステップと、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と前記記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を特定する位置特定ステップと、
前記誤り訂正が行われたときの試験手順で、前記特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、所定回数前記試験を行う制御ステップと、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの試験技術に関する。
【背景技術】
【０００２】
システムの高い可用性が求められる情報処理装置、例えば、基幹システムのサーバ等における１つの課題として、メモリのソフトエラー等のビットエラー対策を例示できる。このような情報処理装置では、メモリのビットエラーによるシステムダウンへの対策としてエラー検出訂正機能を搭載したＥＣＣ（Error Check and Correct）メモリが採用されて
いる。ＥＣＣメモリは、メモリのビットエラーが発生した場合、発生場所を検出し訂正することができる。
【０００３】
さらに、近年のサーバ等、情報処理装置では、マネジメントコントローラ等がメモリコントローラ内のメモリのエラー通知レジスタを監視している。例えば、マネジメントコントローラは、メモリのエラー通知レジスタによって、メモリのビットエラーの発生回数を計数する。そして、ビットエラー発生回数が閾値を超過した場合にメモリの障害として報告する仕組みが実装されている。
【０００４】
ＥＣＣメモリの試験方式としては、従来から、例えば、以下のものが採用されている。（１）クロストークノイズパターン等の様々なデータパターンを用いたデータの書き込みと読み出しを実行するもの。
（２）メモリアクセスを行うＣＰＵのキャッシュサイズから、キャッシュによる高速メモリアクセスに適したメモリブロック単位を特定し、ブロック単位でのデータの移動あるいはコピーを実行するもの。
（３）上記（１）（２）等の試験後、訂正できないエラー発生の有無によってメモリの良否判定を行うもの。訂正できないエラーとは、例えば、エラー訂正可能なビット数を超えるビットエラー等をいう。
（４）上記（１）（２）等の試験後、エラー訂正可能なエラー発生頻度が閾値を超えたかどうかによって良否メモリの判定を行うもの。
【０００５】
従来は、以上の手順で例示される試験を決められた時間内ですべてのメモリセル、メモリアドレスを試験対象として繰り返し試験を行うことで、品質確保を行っていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００８／０４７４４３号
【特許文献２】特開平６−２０８７９９号公報
【特許文献３】特開昭６１−１３１０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、繰り返し試験では、例えば、試験対象アドレスをローテーションさせて試験が実行されていた。しかし、従来の試験方式では、試験対象とするメモリ容量の増大に比例して、特定のアドレスが試験対象となる頻度が低下し、エラー発生頻度が閾値以上とならない場合がある。例えば、サーバ等の情報処理装置の量産試験等で、エラーの発生頻度が高く、不良の疑いのある部分を含むメモリについても、疑いのある部分が試験対象となる頻度が低くなることがある。その結果、不良の疑いのある部分を含むメモリを良品判定してしまう場合がある。
【０００８】
そのため、従来の試験方式によるとエラー訂正回数が所定の閾値に到達せず、情報処理装置に搭載されたメモリが良品判定されて、フィールドに流出することがある。そして、フィールドに流出後に、メモリの不良に起因し、フィールド障害、例えば、メモリ縮退等が顕在化することがある。つまり、規模の大きな情報処理装置において、メモリ障害が発生した場合、情報処理装置は、縮退運転に移行することとなる。その結果、障害の発生した情報処理装置では、縮退したハードウェアリソース分の性能が低下してしまう。
【０００９】
そこで、開示技術の課題は、情報処理装置に搭載されるエラー訂正可能なメモリのうち、エラーの発生しやすいものを検出する効率を高め、結果としてエラーの発生しやすいメモリのフィールドへの流出を抑制することを目的とする。
【課題を解決するための手段】
【００１０】
開示の技術の一側面は、次の情報処理装置によって例示される。この情報処理装置は、誤り訂正回路を有する記憶装置と、所定の試験手順で記憶装置の試験を行う試験部と、試験において誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録部と、試験部による試験速度と訂正時刻記録部に記録された時刻から現在時刻までの時間と記憶装置内の現在時刻の試験位置とから、誤り訂正が行われた記憶装置内の誤り訂正試験位置を特定する位置特定部と、誤り訂正が行われたときの試験手順で、特定された誤り訂正試験位置を含む記憶装置の部分に対して、試験部によって所定回数試験する制御部と、を備える。
【発明の効果】
【００１１】
本情報処理装置によれば、情報処理装置に搭載されるエラー訂正可能なメモリのうち、エラーの発生しやすいものを検出する効率を高めることができる。
【図面の簡単な説明】
【００１２】
【図１】比較例に係るメモリの試験手順を実行する情報処理装置の構成を例示する図である。
【図２】比較例に係る試験手順を例示する図である。
【図３】複数プロセスによるメモリ試験の手順を例示する図である。
【図４】比較例に係る他のメモリ試験の手順を例示する図である。
【図５】実施例１に係る情報処理装置の構成を例示する図である。
【図６】実施例１に係る試験プログラムの構成と、グローバル変数、および外部ファイルの関係を例示する図である。
【図７】試験プログラムによる処理を例示する図である。
【図８Ａ】ビットエラー発生時の処理を例示する図である。
【図８Ｂ】ビットエラー発生時の処理を例示する図である。
【図８Ｃ】ビットエラー発生時の処理を例示する図である。
【図８Ｄ】ビットエラー発生時の処理を例示する図である。
【図９】メモリ試験プロセスが実行する試験でのデータパターンとアクセス手法を例示する図である。
【図１０】プログラム起動の手順を例示する図である。
【図１１】ＥＣＣチェックプロセスの手順を例示する図である。
【図１２】被疑箇所選定手順を例示する図である。
【図１３】被疑箇所選定手順を例示する図である。
【図１４】同期処理の手順を例示する図である。
【図１５】試験対象メモリの良品、不良品を判断する手順を例示する図である。
【図１６】メモリ試験プロセスの処理を例示する図である。
【図１７】ビットエラー監視／追加試験処理の詳細を例示する図である。
【図１８】ＥＣＣチェックプロセスの処理を例示する図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、一実施形態に係る設計支援装置について説明する。以下の実施形態の構成は例示であり、本装置は実施形態の構成には限定されない。
【００１４】
＜比較例＞
図１から図４により比較例に係るメモリの試験方法を例示する。図１は、比較例に係るメモリの試験手順を実行する情報処理装置３１０の構成を例示する図である。情報処理装置３１０は、複数のコアを含むＣＰＵ３１１と、メモリコントローラ３１２Ａ、３１２Ｂと、メモリコントローラ３１２Ａ、３１２Ｂに接続されるメモリと、周辺機器とを含む。
【００１５】
メモリコントローラ３１２Ａ、３１２Ｂは、それぞれメモリチャンネル３１３Ａ、３１３Ｂを通じて、複数のメモリスロットに装着されたメモリモジュール上のメモリへのアクセスを制御する。メモリモジュールは、ＤＭＭ（Dynamic Memory Module）とも呼ばれる
。情報処理装置３１は、第１のバンクとしてチャンネル１３Ａを通じて接続されるＤＭＭ１−ＤＭＭ３のメモリモジュールを有する。また、情報処理装置３１は、第２のバンクとしてチャンネル１３Ｂを通じて接続されるＤＭＭ４−ＤＭＭ６のメモリモジュールを有する。
【００１６】
メモリコントローラ３１２Ａ、３１２Ｂは、それぞれチャンネル１３Ａ、１３Ｂにより並列に第１のバンク、第２のバンクにアクセスする。ただし、情報処理装置３１０のＣＰＵ３１１で実行される個々のプロセスは、チャンネル１３Ａ、１３Ｂの違いを認識することなく、ＤＭＭ１−ＤＭＭ６等のメモリモジュールが作るメモリ空間を割り当てられる。例えば、メモリ空間は、領域Ａ−Ｌ等に区分される。そして、プロセス１には、領域Ａ中のＡ１、Ａ２、Ａ３、Ａ１で示されるブロックが割り当てられる。ブロックは、単に、メモリ試験が行われる部分領域を示す名称であって、特に限定はない。
【００１７】
なお、図１で、プロセス１にブロックＡ１が２回割り当てられるのは、それぞれ、ブロックＡ１中の一部が割り当てられるからである。同様に、プロセス２には、ブロックＡ１、Ａ２、Ａ３、Ｂ１等が割り当てされる。したがって、ブロックＡ１−Ａ３は、プロセス１に一部が割り当てられ、さらに、プロセス２に他の一部が割り当てられる。
【００１８】
図２に、比較例に係る試験手順を例示する。図２の例では、領域Ａ、Ｂ等を有するメモリ空間に、ＯＳ（Operating System）、アプリケーションプログラム等のプログラムが格納されている。また、領域Ｂの一部、および領域Ｃ−Ｅ等は、試験領域となっている。
【００１９】
さらに、メモリ空間の試験領域は、ＣＰＵ３１１のコアごとに実行される試験プログラムのプロセスに割り当てられている。ここでは、コアは、例えば、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３等である。そして、コアＣＰＵ１で実行される試験プログラムのプロセスには、ブロックＣ１、Ｃ２、Ｃ３、およびＣ１それぞれの一部が割り当てられる。ここで、ブロックＣ１等は、図１に示したＤＭＭ１等の物理メモリのブロックである。しかし、コアＣＰＵ１等で実行される試験プログラムのプロセスは、例えば、仮想空間上のメモリにアクセスし、ＯＳを通じて、物理メモリのブロックＣ１等の試験を実行する。ＣＰＵ２とブロックＣ２、Ｃ３、Ｄ１との関係、ＣＰＵ３とブロックＤ２、Ｄ３４、Ｄ１、Ｄ２等の関係も、上記ＣＰＵ１とブロックＣ１等の関係と同様である。
【００２０】
図３に、ＣＰＵのコアごとに割り振られた複数プロセスによるメモリ試験の手順を例示する。ここでは、メモリ試験として、例えば、ブロックムーブ試験等が実行される。図１の情報処理装置３１０のように、チャンネル１３Ａ、１３Ｂ等によりメモリインターリー
ブが適用された環境では、メモリバンク上の同一領域が複数プロセスによるメモリ試験によって、同一のタイミングでアクセスされる場合がある。同一領域が同一のタイミングでアクセスされるとは、同一領域が、例えば、同一のクロックサイクルでアクセスされるような場合をいう。そして、同一領域が同一のタイミングでアクセスされると、同一領域のアクセス競合を要因とする１ビットエラー発生の可能性を高める場合がある。例えば、バウンダリ間隔が一致する連続アクセス、あるいは、同一のキャッシュラインの連続アクセス等の原因によって、キャッシュからメモリへのライトバックが発生する可能性が高められることがある。
【００２１】
図３では、ＣＰＵ１のＣ２領域で１ビットエラーが検出されている。さらに、ＣＰＵ１とＣＰＵ２には、メモリインターリーブにより、双方に試験領域中のＣ２ブロックの一部がそれぞれ割り振られている。そして、複数プロセスによるメモリ試験で同一のタイミングでＣ２領域へのアクセス競合が起きることを１つの要因として、ビットエラー（図中の星印）の発生が確認されている。
【００２２】
しかし、比較例の試験手法では、複数プロセスによるメモリ試験がそれぞれの試験担当領域全域を継続的に試験する。すなわち、図３の手順では、ＣＰＵ１の試験プロセスによって、ブロックＣ２でビットエラーが発生しても、コアＣＰＵ１−３で実行される試験プロセスは、ビットエラー発生前と同様のメモリ試験を継続する。このため、比較例の手順では、１ビットエラーの発生の要因であるアクセス競合の頻度が低下してしまう。
【００２３】
さらに、複数プロセスによるメモリ試験それぞれの進捗度合いは、試験プロセス以外のプロセスによる負荷が原因でバラツキが発生する。このことから、各試験プロセスがコアＣＰＵ１−ＣＰＵ３等で、それぞれメモリ試験のループを重ねるにつれて、障害要因であるアクセス競合タイミングのズレが大きくなる可能性がある。このため、ビットエラーを再現させることが困難となる場合がある。
【００２４】
図４に、比較例に係る他のメモリ試験の手順を例示する。図４の例では、ビットエラーの発生箇所への単純な再ライトアクセスでビットエラーの再現試験が実行される。しかし、この手順では、しかし、この手順では、個々のコアＣＰＵ１等での試験を再現できても、複数のコアＣＰＵ１−ＣＰＵ３等のより、アクセス競合タイミングを再現することは困難である。さらに、個々のコアＣＰＵ１等の試験プロセスの試験手順は、単一のデータパターンを用いた、限定されたアクセス手法での試験に限定される。なぜなら、ビットエラー発生時のデータパターン、アクセス手法を試験プロセスが再現するために、ビットエラー発生時のデータパターン、アクセス手法が固定されているからである。
【００２５】
したがって、比較例１のメモリ試験の手順では、複数のコアＣＰＵ１−ＣＰＵ３等のアクセス競合、メモリインターリーブの影響を十分に再現できない。また、試験パターンは限定され、アクセス手法も限定されたものとなる。
【実施例１】
【００２６】
図５から図９の図面を参照して、実施例１に係る情報処理装置１０によるメモリ試験の手順を説明する。図５に、実施例１に係る情報処理装置１０の構成を例示する。情報処理装置１０は、複数のコアを含むＣＰＵ１１と、メモリコントローラ１２Ａ、１２Ｂと、メモリコントローラ１２Ａ、１２Ｂに接続されるメモリと、周辺機器とを含む。
【００２７】
メモリコントローラ１２Ａ、１２Ｂは、それぞれメモリチャンネル１３Ａ、１３Ｂを通じて、複数のメモリスロットに装着されたメモリモジュール上のメモリへのアクセスを制御する。例えば、メモリコントローラ１２Ａは、メモリチャンネル１３Ａに接続される各スロットに装着される複数のメモリモジュールを１つのメモリバンクとし、ＣＰＵ１１と
メモリバンクとの間のデータ入出力を制御する。同様に、メモリコントローラ１２Ｂは、メモリチャンネル１３Ｂに接続される各スロットに装着される複数のメモリモジュールを１つのメモリバンクとし、ＣＰＵ１１とメモリバンクとの間のデータ入出力を制御する。ＣＰＵ１１に含まれる各コアは、メモリチャンネル１３Ａ、１３Ｂを通じて並列にメモリにアクセスする。図５で、ＤＭＭ１−ＤＭＭ６で例示されるメモリが誤り訂正回路を有する記憶装置の一例である。また、情報処理装置１０がコンピュータの一例である。
【００２８】
図５では、メモリチャンネル１３Ａ、１３Ｂのようにデュアルチャンネルのメモリが例示されている。しかし、情報処理装置１０が、デュアルチャンネルに限定される訳ではない。すなわち、情報処理装置１０は、単一のメモリチャンネルを有してもよい。また、情報処理装置１０は、３以上のメモリチャンネルを有して、３以上のメモリバンクを有してもよい。
【００２９】
情報処理装置１０は、周辺機器として、例えば、ハードディスクドライブ（以下、ＨＤＤ）１４と、管理部１５と、不揮発性ＲＡＭ（Random Access Memory）１６と、キーボード１７と、ディスプレイ１８を有する。ＨＤＤ１４は、例えば、試験プログラム、試験データ等を格納する。
【００３０】
管理部１５は、リモートマネジメントコントローラとも呼ばれる。管理部１５は、ＣＰＵ１１上のＯＳからの指示にしたがい、不揮発性ＲＡＭ１６から、ハードウェアのログを抽出し、ＯＳに引き渡す。不揮発性ＲＡＭ１６には、各種のハードウェアログ、例えば、ＥＣＣメモリでのエラー訂正の実行の有無、エラー訂正の実施時刻、あるいは時間帯ごとのエラー訂正実行回数等が記録される。
【００３１】
キーボード１７は、ユーザのコマンド入力に使用される。また、ディスプレイ１８には、情報処理装置１０からの種々の情報が表示される。
【００３２】
図６に、実施例１に係る試験プログラムの構成と、グローバル変数、および外部ファイルの関係を例示する。試験プログラムは、ＨＤＤ１４から、メモリ上に実行可能に可能に展開される。ＣＰＵ１１のいずれからのコアが、メモリ上の試験プログラムを実行し、図６に示した機能を提供する。試験プログラムは、試験制御モジュール、メモリ試験モジュール、試験結果出力モジュール、１ビットエラー監視処理モジュール、およびハードログチェック処理モジュールを有する。ただし、試験プログラムの構成が図６のものに限定される訳ではない。以下、ＣＰＵ１１のいずれかのコアを総称する場合には、単に、ＣＰＵ１１と呼ぶ。また、図６のプログラムの各モジュールが、ＣＰＵ１１等のリソースを含むプロセスによって処理を実行する場合に、単に各プロセスが処理を実行するという。
【００３３】
試験制御モジュールは、ユーザインターフェースを介してユーザからの指示を受け取り、試験プログラムの実行を制御する。例えば、試験制御モジュールは、ユーザ指定のパラメータを受け付け、所定回数、所定のアドレス範囲で、メモリ試験モジュールによる試験を起動する。
【００３４】
メモリ試験モジュールは、メモリへの書き込みと読み出しの試験を実行する。例えば、メモリ試験モジュールは、試験制御モジュールから起動され、先頭アドレスから終了アドレスの間をサイクリックにブロック単位でデータ移動・コピーを行う等の試験を実行する。メモリ試験モジュールは、メモリ試験プロセスとして、ＣＰＵ１１の各コアで実行される。
【００３５】
１ビットエラー監視モジュールは、メモリコントローラ１２Ａ、１２Ｂ内のビットエラーの発生回数を示すカウンタの値を取得する。さらに、１ビットエラー監視モジュールは
、は、取得したビットエラーの発生回数を示すカウンタの値と、カウンタの値を取得した時刻とをプログラムのグローバル変数（ＥＣＣカウント格納グローバル変数）に書き込む。ここで、１ビットエラー監視モジュールは、時刻をＯＳから取得すればよい。
【００３６】
なお、メモリ試験モジュールは、メモリへの書き込みと読み出しの試験のループの途中で、ＥＣＣカウント格納グローバル変数の増加を監視する。そして、ＥＣＣカウント格納グローバル変数の値が増加すると、メモリ試験モジュールは、メモリへの書き込みと読み出しの試験において、ビットエラーの発生とエラー訂正の実行を検出する。そして、メモリ試験モジュールは、ビットエラー発生時の発生箇所を所定の精度で特定し、ビットエラー発生時のデータパターンとアクセス手法でエラー発生箇所を所定の精度で限定し、加速度試験として、メモリ試験を繰り返して実行する。
【００３７】
その結果、メモリ試験モジュールは、ビットエラーが発生したメモリ空間に対応する物理アドレスで特定される近傍を被疑箇所として集中的に試験を行う。集中試験後は、メモリ試験を担当するコア内のアドレス空間の試験を継続する。その結果、メモリ試験モジュールは、加速度試験の後、メモリ空間中の試験対象領域に対応するメモリ上の先頭のアドレスから終了アドレスの間をサイクリックに試験する。メモリ試験の種類としては、例えば、複数のデータパターンについて、ブロック単位でのデータ移動・コピーを行う。
【００３８】
ハードログチェック処理モジュールは、管理部１５を通じて不揮発性ＲＡＭ１６に格納されたハードログを取得する。ハードログチェック処理モジュールは、取得したハードログから訂正できなかったエラーの発生の有無、エラー訂正されたビットエラーの回数等を抽出し、試験結果として試験結果出力モジュールに引き渡す。
【００３９】
試験結果出力モジュールは、試験結果を例えば、ディスプレイ１８に出力する。なお、ＣＰＵ１１には、図６の各モジュールがアクセス可能なグローバル変数が設けられている。例えば、図６の各モジュールが独立プロセスとしてＣＰＵ１１の異なるコアで実行されて場合でも、各モジュールはグローバル変数への書き込み、および読み出しが可能である。グローバル変数には、ＥＣＣチェック終了フラグ、ＥＣＣカウント格納グローバル変数が含まれる。
【００４０】
ここで、ＥＣＣチェック終了フラグがオフになると、１ビットエラー監視モジュールの処理が開始する。また、ＥＣＣチェック終了フラグがオンになると、１ビットエラー監視モジュールの処理が終了する。また、ＥＣＣカウント格納グローバル変数には、１ビットエラー監視モジュールによるメモリコントローラ１２Ａ、１２Ｂの監視結果、すなわち、エラー訂正できないエラーの発生の有無と時刻、エラー訂正可能なエラーの発生回数を示すカウンタの値と時刻等が格納される。
【００４１】
さらに、ＨＤＤ１４上には、外部ファイルが設けられる。上述のように、試験制御モジュールのユーザインターフェースを通じて入力されたユーザ指定のパラメータ、例えば、メモリ試験モジュールによってメモリ試験が繰り返されるときの繰り返し回数が格納される。
【００４２】
また、試験制御モジュールは、ユーザインターフェースからのユーザ操作にしたがって、ＥＣＣチェック終了フラグをオフすることで、１ビットエラー監視モジュールに処理の開始を指示する。１ビットエラー監視モジュールは、ＥＣＣチェック終了フラグがオフになると、処理を開始する。すなわち、１ビットエラー監視モジュールは、ＣＰＵ１１の各コアにおいて、ＥＣＣチェックプロセスとして、ビットエラーカウンタを監視する。そして、１ビットエラー監視モジュールは、ＥＣＣカウント格納グローバル変数を通じて、監視結果をメモリ試験プログラムに報告する。なお、実施例１において、ビットエラーは１
ビットエラーに限定されないが、エラー訂正可能なビット数が１ビットであるとして、説明がなされる。ただし、エラー訂正可能なビット数が２ビット以上の場合であっても、実施例１のメモリ試験方法の適用は可能である。
【００４３】
メモリ試験プログラムは、ＣＰＵ１１の各コアにおいて、メモリ試験プロセスとして、ＥＣＣカウント格納グローバル変数の増加を監視することでビットエラーの発生の有無を確認する。そして、ＥＣＣカウント格納グローバル変数の増加によってビットエラーが発生を認識すると、メモリ試験プログラムは、１ビットエラー発生時の加速度試験の処理を開始する。
【００４４】
図７に、試験プログラムによる処理を例示する。図７では、ＣＰＵ１１の各コアとして、ＣＰＵ１−３が例示されている。ただし、コア数が３に限定される訳ではない。なお、以下の説明では、各コアＣＰＵ１−ＣＰＵ３を総称する場合には、単にＣＰＵ１１という。
【００４５】
ＣＰＵ１−３はそれぞれメモリ試験モジュールを実行し、それぞれ担当のメモリ空間のアドレス範囲でメモリの試験を実行する。例えば、正常状態では、メモリ試験モジュールは、ＣＰＵ１等のメモリ空間の所定のアドレス範囲を試験する。すると、結果として、メモリ試験モジュールは、メモリ空間のアドレス範囲に対応する物理メモリの領域、例えば、ブロックＣ１、Ｃ２、Ｃ３、およびＣ１に対して試験を実行する。また、ＣＰＵ２は、ブロックＣ２、Ｃ３、Ｄ１に対して試験を実行する。同様に、ＣＰＵ３は、ブロックＤ２、Ｄ３、Ｄ１、Ｄ２を含むメモリの部分に試験を実行する。
【００４６】
そして、例えば、ブロックＣ２の範囲で、ビットエラーが検出され、エラー訂正が実行されたと想定する。この場合、メモリ試験モジュールは、ビットエラーが検出された時刻と、ビットエラーがＣＰＵ１で認識された時刻と、ＣＰＵ１が実行する試験速度、すなわち、１つのブロックの試験に要する時間とを基に、エラーが発生したブロックＣ２を特定する。より具体的には、メモリ試験モジュールは、メモリのブロックＣ２に対応するメモリ空間上の被疑アドレスを特定する。そして、メモリ試験モジュールは、ＣＰＵ１のメモリ空間のブロックＣ２に対応する被疑アドレス近傍対して、所定回数繰り返して集中的に試験を実行する。
【００４７】
ここで、ＣＰＵ２とＣＰＵ３の試験では、ビットエラーとエラー訂正が検出されなかったとする。しかし、ＣＰＵ２とＣＰＵ３の試験がＣＰＵ１の試験に影響を与えた可能性がある。例えば、ＣＰＵ１でブロックＣ２へのアクセスが発生した時刻に、ＣＰＵ２でもブロックＣ２へのアクセスが発生した場合を考える。この場合、キャッシュの競合が発生し、ＣＰＵ１の試験において、キャッシュからメモリへのライトバックが多数回発生する要因となった可能性がある。ＣＰＵ３についても、同様に、ＣＰＵ３によるメモリアへのアクセスが、ＣＰＵ１の試験に影響を及ぼした可能性がある。
【００４８】
そのため、実施例１では、ＣＰＵ２、ＣＰＵ３においても、ＣＰＵ１でビットエラーとエラー訂正が検出された時刻に、ＣＰＵ２、ＣＰＵ３が試験を行っていた、それぞれのブロックＣ２、Ｄ１に対して、所定回数繰り返して集中的に試験が実行される。このように、ビットエラーとエラー訂正が検出されたコアであるＣＰＵ１の他、ＣＰＵ１に影響を与えた可能性のある他のコアであるＣＰＵ２、ＣＰＵ３も、ＣＰＵ１でのビットエラーとエラー訂正が検出された時点で、それぞれのコアが実行していた試験を繰り返し集中に実行する。このような処理によって、ビットエラーとエラー訂正が検出された状態を再現でき、メモリの異常を効果的に検出できる。そして、所定回数の集中的な試験、つまり加速度試験による異常検出を実行した後、各コアＣＰＵ１−ＣＰＵ３は、正常時のメモリ試験を実行すればよい。
【００４９】
図８Ａから図８Ｄにより、ビットエラー発生時の処理をさらに具体的に例示する。ここでは、ＣＰＵ１１が、メモリバンクＡと、メモリバンクＢを並列して試験する場合を例に説明する。メモリバンクＡは、例えば、図５のメモリチャンネル１３Ａに接続されるメモリである。また、メモリバンクＢは、例えば、図５のメモリチャンネル１３Ｂに接続されるメモリである。また、図８Ａから８Ｄでは、ＣＰＵ１１のコアであるＣＰＵ１、ＣＰＵ２、ＣＰＵ３でそれぞれメモリ試験プロセスＡ、Ｂ、Ｃが実行中である。なお、メモリ試験プロセスは、各コア、すなわち、ＣＰＵ１−３等のメモリ空間の所定範囲を担当してメモリ試験を実行し、メモリ試験プロセスによるメモリ試験の実行結果として、メモリのブロックＣ１−Ｃ３、Ｄ１−Ｄ３等が試験される。つまり、実施例１では、情報処理装置１０において、各プロセスは、メモリの物理的なブロックを特定してメモリ試験をする代わりに、物理的なブロックに対応するメモリ空間の範囲を試験する。ただし、このような場合でも、以下の説明では、各プロセスは、メモリの物理的なブロックＣ１等を試験する、と説明する。なお、ＯＳのシステム呼び出し等によって、メモリ試験プログラムがメモリの物理的なブロックを指定できる場合には、メモリ試験プログラムが実際のメモリの物理的なブロックを指定してメモリ試験を実行してもよい。
【００５０】
（１）ビットエラー発生の監視と検知
図８Ａでは、メモリ試験中にメモリバンクＡのブロックＡでビットエラーが発生している。また、メモリ試験プロセスがメモリバンクＡのブロックＡとメモリバンクＢのブロックＢとメモリバンクＡのブロックＣを試験中にＥＣＣチェックプロセスがビットエラーの発生を検知している。
【００５１】
（２）被疑範囲の特定
図８Ｂに、メモリ試験プロセスがビットエラー発生を認識したときの試験箇所を例示する。メモリ試験プロセスＡ、Ｂ、Ｃは、メモリ試験を実行中であるため、一定間隔でＥＣＣチェックプロセスによって書き込まれるＥＣＣカウント格納グローバル変数のビットエラー情報に変化がないか確認する。そのため、図８Ｂに示すように、メモリ試験プロセスはビットエラーの発生を認識したときには、ビットエラーが発生した際に試験していた箇所とは異なる箇所の試験を行っている。例えば、メモリ試験プロセスＡは、メモリバンクＡのブロックＡではなく、ブロックＤを試験している。同様に、メモリ試験プロセスＢは、メモリバンクＢのブロックＢではなく、ブロックＥを試験している。さらに、メモリ試験プロセスＣは、メモリバンクＡのブロックＣではなく、ブロックＦを試験している。つまり、現在試験中の箇所とビットエラーの発生した被疑箇所との間には、ズレが生じてしまう。
【００５２】
図８Ｃは、メモリ試験プロセスがビットエラー発生を認識したときの試験箇所と、ビットエラー発生が発生したメモリ上の位置との関係を例示する図である。図８Ｃに示すように、メモリ試験プロセスＡ、Ｂ、Ｃは、それぞれビットエラーの発生したメモリバンクＡのブロックＡと、メモリバンクＢのブロックＢと、メモリバンクＡのブロックＣを特定し、再度、試験対象にする。以下に、各メモリ試験プロセスＡ、Ｂ、Ｃがビットエラー認識位置から、ビットエラー発生時の試験箇所へ戻る方法を例示する。
【００５３】
実施例１では、ＥＣＣチェックプロセスが、ビットエラーが発生した発生時刻を取得し、ＥＣＣカウント格納グローバル変数に書き込む。また、メモリ試験プロセスはビットエラーを認識した認識時刻を取得する。各メモリ試験プロセスＡ、Ｂ、Ｃは、この発生時刻から認識時刻までの経過時間を算出する。例えば、各メモリ試験プロセスは、メモリ試験プロセスが１秒間に試験を実施するブロック数を取得し、ビットエラー発生からの経過時間からビットエラー発生箇所からのブロック数を算出する。そして、各メモリ試験プロセスＡ、Ｂ、Ｃは、算出されたブロック数から、ビットエラー発生時の試験箇所を特定する
。さらに、各メモリ試験プロセスは、マージンとして被疑箇所(アドレス)を基準に指定サイズ分の範囲を被疑範囲として指定する。
【００５４】
（３）データパターンとアクセス手法の取得
図９に、各メモリ試験プロセスが実行する試験でのデータパターンとアクセス手法を例示する。図９には、メモリ試験のアクセス手法をブロックムーブとし、データパターン0xFF、0x00、またはチェッカーボードの順でメモリ試験を行う試験が例示されている。ここで、データパターン0xFFは、全ビットが１のビット列のデータパターンをいう。また、データパターン0x00は、全ビットが0のビット列のデータパターンをいう。さらに、チェッ
カーボードとは、例えば、ビット１と０とが交互に並べたビット列のデータパターンをいう。具体的には、チェッカーボードは、ビット列0xAAを１ワード分配置し、次に、0x55を１ワード分配置すればよい。そのような２ワードのビット列を１ブロック分配置すればよい。
【００５５】
ここで、図９の試験時にビットエラーが確認された場合を例にして、説明を行う。ここでは、メモリ試験プロセスがビットエラー発生時のデータパターンおよびアクセス手法を再現する処理を例示する。今、メモリ試験プロセスは、上述のように、ビットエラー発生からの経過時間を求める。そして、メモリ試験プロセスは、求めた経過時間と現在実行中のアクセス手法およびデータパターンと、各データパターンおよびアクセス手法における試験時間とから、経過時間分さかのぼった時点でのデータパターンおよびアクセス手法を取得すればよい。ただし、メモリ試験プロセスは、例えば、各データパターンおよびアクセス手法を識別する情報とともに、試験の開始時刻および完了時刻の少なくとも一方を記録しておいてもよい。そして、メモリ試験プロセスは、上記経過時間さかのぼった時刻でのデータパターンおよびアクセス手法を記録から読み出すようにしてもよい。
【００５６】
図９では、メモリ試験プロセスは、例えば、アクセス手法としてブロックムーブ、データパターンとしてチェッカーボードを特定したと仮定する。そこで、メモリ試験プロセスは、確定した被疑範囲に対して、実施していた試験(データパターン：チェッカーボード
、アクセス手法：ブロックムーブによる書き込みと読み出し)を繰り返し実施する。メモ
リインターリーブを適用している場合には、被疑範囲だけでなく、被疑範囲の試験を行っていたときの他ブロックへのアクセスについてもデータパターン、アクセス手法が再現される。すなわち、メモリインターリーブによって、被疑範囲にアクセスと並列にアクセスされたメモリのブロックへも、エラー発生時と同一のデータパターンとアクセス手法でアクセスが再現される。この意味で、被疑範囲の試験を行っていたときの他ブロックのアクセス範囲も被疑範囲を呼んでもよい。
【００５７】
（４）被疑範囲に対して繰り返し試験
メモリ試験プロセスは、図９に例示した手順で、被疑範囲に対してビットエラーを発生させた可能性のあるデータパターンやメモリアクセス手法で指定回数繰り返して被疑箇所付近を試験する。図８Ｄに、被疑範囲付近を試験する手順を例示する。メモリ試験プロセスＡ、Ｂ、Ｃは、それぞれの被疑範囲付近の指定サイズ分のマージンの範囲で、被疑範囲に対してビットエラーを発生させた可能性のあるデータパターンやメモリアクセス手法で所定回数繰り返し試験を実行する。指定回数の繰り返し試験後、ビットエラーが発生した次のアドレスから通常試験を再開する。
【００５８】
＜効果＞
以上のように、図８Ａ−８Ｄに示した手順にしたがう実施例１のメモリ試験プロセスは、被疑範囲を集中的にビットエラーの発生したデータパターン、メモリアクセス手法で試験することで、ビットエラーが頻発するメモリについては、ビットエラーの発生を加速させることが可能となる。したがって、実施例１のメモリ試験プロセスは、エラーカウンタが
閾値を超過するように試験を実行し、メモリの異常検出することが可能となる。
【００５９】
すなわち、実施例１のメモリ試験を適用した場合には、メモリ試験プロセスは、ＣＰＵ１のＣ２領域の被疑範囲を選定し、ビットエラーの発生したデータパターン、アクセス手法を取得する。そして、ＣＰＵ１のメモリ試験プロセスが上記被疑範囲、データパターン、アクセス手法で繰り返し試験を実施するとともに、ＣＰＵ１１の他コアで実行される他のメモリ試験プロセスも、ＣＰＵ１のＣ２領域の被疑範囲の試験時に、それぞれのメモリ試験プロセスがアクセスしていた範囲に対して、ＣＰＵ１のＣ２領域でビットエラーが発生したときに実施していたデータパターン、アクセス手法で繰り返し試験を実施する。このように、ビットエラーが発生したメモリ試験プロセス以外のメモリ試験プロセスも指定回数、メモリ試験の条件を再現し、メモリ試験を繰り返すことで、ビットエラーの発生した状況の再現を促し、１ビットエラーの発生する可能性を高める。なぜなら、ビットエラーが発生したメモリ試験プロセス以外のメモリ試験プロセスが例えば、ビットエラーが発生したメモリ試験プロセスがアクセスするメモリの箇所に対して、ライトバック等の発生を加速し、ビットエラー発生確率を高める可能性があるからである。
【００６０】
また、実施例１のメモリ試験の手順は、ビットエラーの発生箇所を被疑範囲として指定ビット分マージンを持って捉えていることで、ビットエラーの発生した前後のアドレスについてもビットエラーの発生する直前、直後の試験状況の再現試験が可能となる。つまり、ビットエラー発生箇所の前後関係に依存したビットエラーの発生についても、状況の再現が可能となる（例えば、実施例２の図１２参照)。
【００６１】
比較例に係る試験方式では、全メモリセル、メモリアドレスを同じ頻度で試験を行うため、本発明にて対象としているビットエラーの頻発するＥＣＣメモリを検出するためには、全メモリセル、メモリアドレスの試験をビットエラーの閾値を超えるまで継続しなければならない。しかし、実施例１の試験方式を使用すれば、ビットエラーの発生したデータパターン、メモリアクセス手法で被疑範囲に集中した試験を行い、各メモリ試験プロセスの手順を再現することで、比較例よりも短時間でビットエラーの発生回数が閾値を超えるＥＣＣメモリを検出することが可能となる。
【００６２】
ビットエラーの発生頻度の高いＥＣＣメモリを特定し、不良判定することで、フィールドへの流出を防ぎ、フィールドでの着荷時、着荷後短期間でのメモリエラーによるシステムダウン、冗長構成の際のメモリ交換増加による処理能力低下を低減することが可能となる。
【００６３】
すなわち、実施例１の試験手順は、比較例（図３、４）とは異なり、ビットエラーの発生箇所を含めた特定ビット周辺アドレス(被疑範囲)についてデータのライト/リードによ
るアクセスを様々なデータパターンの中からビットエラーを発生させるために最も適したデータパターン、アクセス手法で集中的に行うことを可能としている。
【００６４】
特に、大規模構成でメモリインターリーブを適用している場合には、図３で例示するように、ＣＰＵ１のＣ２領域のブロックムーブでビットエラーが発生した場合、ＣＰＵ１のＣ２領域の被疑範囲（ブロックムーブ実施箇所周辺）に対し、ビットエラーの発生した試験を繰り返してもビットエラーが発生しない場合がある。そこで、実施例１のメモリ試験手順では、被疑範囲に、ビットエラー発生時のデータパターンとアクセス手法を再現してメモリ試験が実行される。このため、メモリインターリーブによるメモリへのアクセスの影響も反映したメモリ試験の再現が可能となる。
【００６５】
以上のように、実施例１の試験手順は、ＣＰＵ１のＣ２領域で１ビットエラーが発生したとき、ＣＰＵ１によるＣ２以外のブロックへのアクセス影響、およびＣＰＵ１以外の他
のプロセスの挙動を再現でき、エラーの再現性を高めて、被疑範囲に集中的にメモリ試験を実行できる。
【実施例２】
【００６６】
図１０から図１８の図面を参照して、実施例２に係る情報処理装置１０によるメモリ試験の手順を説明する。実施例１では、図８Ａ−８Ｄ、図９に例示するように、あるコア、例えば、ＣＰＵ１のメモリ試験プロセスのアクセスによってビットエラーが発生したときのメモリへのアクセスを再現するメモリ試験方法が例示された。すなわち、実施例１では、ＣＰＵ１での被疑範囲に対して、データパターン、およびアクセス手法が再現された。さらに、ＣＰＵ１以外のコア（ＣＰＵ２、ＣＰＵ３等）でのメモリ試験プロセスの挙動の再現を含む、試験手順が例示された。実施例２では、情報処理装置１０における、さらに具体的な処理例を説明する。実施例２における情報処理装置１０の構成は、実施例１と同様である。そこで、情報処理装置１０の構成については、実施例１の図５、６を参照するものとし、その説明は省略する。
【００６７】
図１０に、プログラム起動の手順を例示する。例えば、ユーザがキーボード操作等による起動コマンドを入力する。すると、情報処理装置１０のＣＰＵ１１、例えば、コアの１つであるＣＰＵ１は、キーボード操作による起動コマンドを受け付ける（矢印Ａ１）。以下、起動コマンドがＣＰＵ１で受け付けられ、メモリ試験プログラムの試験制御モジュールがＣＰＵ１で実行されるとして、説明を行う。ただし、メモリ試験プログラムの試験制御モジュールがＣＰＵ１以外のコアで実行されてもよい。また、以下では、メモリ試験プログラムの試験制御モジュールを単にメモリ試験プログラムと呼ぶ。
【００６８】
ＣＰＵ１は、受け付けた起動コマンドをＯＳへ送信する（矢印Ａ２）。起動コマンドを受け付けると、ＯＳは、ＨＤＤ１４に格納されている試験プログラムをメモリにロードする（矢印Ａ３、Ａ４）。さらに、ＯＳは、試験プログラムを起動する（矢印Ａ５）。同様の手順によって、メモリ試験プログラムは、ＣＰＵ１１の各コアで試験プログラムを起動し、試験が進行する。このとき、ＣＰＵ１１のメモリ試験プログラムを実行するコアは、試験ドライバへの命令、ＯＳへの命令等を発し、試験を制御する（矢印Ａ６、Ａ７）。以上の手順によって、メモリ試験領域の試験が開始される（矢印Ａ８）。実施例１ですでに述べたように、メモリ試験プログラムのうち、ＣＰＵ１１の各コアは、メモリ試験プロセスとして、メモリ試験モジュールを実行する。
【００６９】
また、実施例１と同様、試験制御モジュールは、ＥＣＣチェックプロセスとして、１ビットエラー監視処理モジュールを起動する。ＥＣＣチェックプロセスは、メモリ試験プロセスと並列に実行され、メモリコントローラ内ビットエラーカウンタを監視する。
【００７０】
図１１に、ＥＣＣチェックプロセスの手順を例示する。例えば、ＣＰＵ１は、ＥＣＣチェックプロセスからＣＰＵ１を介してＯＳへメモリコントローラ１２Ａ、１２Ｂ内のビットエラーカウント値の取得命令を発行する（Ａ１１、Ａ１２）。
【００７１】
例えば、ＣＰＵ１のＯＳは、ＣＰＵ１１内メモリコントローラのビットエラーカウント値を取得する（Ａ１３、Ａ１４、Ａ１５、Ａ１６）。ＣＰＵ１のＯＳは、ＣＰＵ１を介してＥＣＣチェックプロセスへビットエラーカウント値等を送る（Ａ１７、Ａ１８）。ＥＣＣチェックプロセスは、取得したビットエラーカウント値等をＥＣＣカウント格納グローバル変数（図６参照）に書き込む。メモリ試験プロセスは、ＥＣＣカウント格納グローバル変数を介して、ビットエラーカウント値等を取得する。
【００７２】
以上の手順により、メモリ試験プロセスは、試験対象であるＥＣＣメモリに対して多様なデータパターンを用いたデータの書き込み、読み出しや、ブロックムーブの試験中に、
定期的にビットエラーカウントを取得し、エラーカウントの増加の有無を確認する。
【００７３】
メモリ試験プロセスによるエラーカウント増加の判定手順を以下に例示する。
（１）メモリ試験プロセスは、ＥＣＣカウント格納グローバル変数を介して、ＥＣＣチェックプロセスからビットエラーカウント値を取得する。
（２）メモリ試験プロセスは、取得したビットエラーカウント値と初期値との差分を取り、増加の有無を確認する。
（３）増加が確認された場合には、メモリ試験プロセスは、メモリ試験中に新たにビットエラーが発生したものと判断し、ビットエラーが発生した箇所を選定する。増加が確認されない場合は、次のアドレスへ移動し、通常試験を続ける。
【００７４】
図１２、図１３に、被疑箇所選定手順を例示する。図１２に実施例２によるメモリ試験の処理例を示し、図１３にメモリ試験の具体的な手順を例示する。図１３のように、メモリ試験プログラムは、ビットエラーカウントを監視するＥＣＣチェックプロセスとメモリ試験を実施するメモリ試験プロセスを実行する。
【００７５】
メモリ試験プロセスは、メモリバンク数存在し、すべて並列に実行される。
ＥＣＣチェックプロセスとメモリ試験プロセスも各々並列に動作しており、各メモリ試験プロセスは、指定時間ごとにＥＣＣチェックプロセスによる監視結果を確認することになる。そのため、ＥＣＣチェックプロセスがビットエラーを検出した箇所と、メモリ試験プロセスビットエラーを認識したときの現行試験中の箇所にはズレが生じてしまう。そこで、メモリ試験プロセスは、現行試験中の箇所からＥＣＣチェックプロセスが１ビットエラーを検出した箇所まで、被疑範囲を戻す。なお、図１３では、メモリ試験プロセスＡ、Ｂが例示されているが、メモリ試験プロセスが２個に限定される訳ではない。
【００７６】
メモリ試験プロセスＡ、Ｂは、単位秒間に試験を実施するブロック数ａを取得する（ＴＡ１、ＴＢ１）。
【００７７】
メモリ試験プロセスＡ、Ｂは、各々指定時間試験するごとにＥＣＣチェックプロセスがビットエラーを検出していないか確認する（ＴＡ２、ＴＢ２）。メモリ試験プロセスの進行速度、試験ブロック数はプロセスによりバラツキが生じるため、ＥＣＣチェックプロセスを確認するタイミングも、メモリ試験プロセスによりバラツキを生じる。ここでは、ＥＣＣチェックプロセスは１ビットエラーを検出していないため、通常試験を続行する。
【００７８】
ビットエラー発生時、ＥＣＣチェックプロセスは、ビットエラーの発生した時刻ｂを取得する（ＴＣ３）。
【００７９】
発生したビットエラーは、ＥＣＣメモリ機能により訂正される。そのため、メモリ上からはビットエラーは検出できない。また、メモリ試験プロセスＡ、Ｂは、メモリアクセス中にＥＣＣチェックプロセスの確認ができないため、ビットエラー発生後も試験を継続する。
【００８０】
次のＥＣＣチェックプロセス確認で、メモリ試験プロセスＡ、Ｂは、ビットエラー発生を認識する（ＴＡ５、ＴＢ５）。各メモリ試験プロセスＡ、Ｂは、ビットエラーの発生を認識した時刻ｃを取得する。
【００８１】
さらに、メモリ試験プロセスＡ、Ｂは、ＥＣＣカウント格納グローバル変数からビットエラーの発生時刻ｂを取得する（ＴＡ４、ＴＢ４）。メモリ試験プロセスＡ、Ｂは、時刻ｂと時刻ｃを使用してビットエラー発生からビットエラーを認識するまでの時間を算出し、さらに、１秒間の試験ブロック数ａから被疑箇所を選定する。メモリ試験プロセスＡ、
Ｂは、ビットエラーの発生した箇所を基準に指定サイズ分の範囲を被疑範囲と設定する。また、メモリ試験プロセスは、一定周期でデータパターン、アクセス手法を切り替えている。そこで、メモリ試験プロセスＡ、Ｂは、時刻ｂと時刻ｃを使用してビットエラー発生時のビットエラー発生時のデータパターン、アクセス手法を特定する。すなわち、各データパターン、アクセス手法による処理時間を基に、時刻ｂから時刻までの経過時間分さかのぼったデータパターン、アクセス手法を選定すればよい。
【００８２】
図１４に、同期処理の手順を例示する。図１４では、メモリ試験プロセスＡ、Ｂ、Ｃが例示されている。各メモリ試験プロセスＡ、Ｂ、Ｃの進行速度にはバラツキがある。このため、実施例２では、各メモリ試験プロセスＡ、Ｂ、Ｃは、各メモリ試験プロセスを同期させる同期処理を行う。
【００８３】
まず、例えば、メモリ試験プロセスＡのビットエラー発生時の試験箇所が選定され、集中試験可能な状態となる。すると、メモリ試験プロセスＡは、共通のグローバル変数(配
列)にビットを立てる（状態Ａ）。その後、メモリ試験プロセスＡは、グローバル変数の
他のプロセスの状況を確認する。しかし、この場合、メモリ試験プロセスＢ、メモリ試験プロセスＣについては、まだ、選定が終了していないため、共通のグローバル変数のビットが立っていない。メモリ試験プロセスＡは、待機状態となり、継続的に共通のグローバル変数を確認し、他のプロセスの状況を監視する。
【００８４】
次に、例えば、メモリ試験プロセスＢのビットエラー発生時の試験箇所が選定され、集中試験可能な状態となる。メモリ試験プロセスＢは、共通のグローバル変数(配列)にビットを立てる。しかし、メモリ試験プロセスＣの選定が終了していないため、共通のグローバル変数(配列)のメモリ試験プロセスＣのビットが立っていない。このため、メモリ試験プロセスＢは、待機状態となる。メモリ試験プロセスＢは、メモリ試験プロセスＡと同様に継続的にグローバル変数を確認し、他のプロセスの状況を監視することとなる。
【００８５】
さらに、メモリ試験プロセスＣのビットエラー発生時の試験箇所が選定され、集中試験可能な状態となる。メモリ試験Ｃは、共通のグローバル変数(配列)にビットを立てる。すべてのメモリ試験プロセスのビットが立っていることから、メモリ試験プロセスＡ、Ｂ、Ｃは、集中試験を開始する（状態ＳＢ）。
【００８６】
メモリ試験プロセスＡ、Ｂ、Ｃは、ビットエラーの発生した箇所までさかのぼり、被疑範囲を特定する。そして、メモリ試験プロセスＡ、Ｂ、Ｃは、ビットエラーの発生したデータパターンとアクセス手法を使用し、ビットエラーの発生した条件を再現し、指定回数繰り返してメモリ試験を行う。
【００８７】
メモリ試験プロセスＡ、Ｂ、Ｃは、指定回数の繰り返し試験終了後、現在のビットエラーカウント値を初期値として格納する。メモリ試験プロセスＡ、Ｂ、Ｃは、ビットエラーの発生したアドレスの次へ移動し、引き続きデータのライトリード/ブロックムーブ等の
メモリ試験を再開する。
【００８８】
メモリ試験プロセスＡ、Ｂ、Ｃは、担当するメモリのブロックの全アドレスに対してのデータの書き込み、読み出し、ブロックムーブ等のメモリ試験の終了後、ビットエラーカウントを監視するＥＣＣチェックプロセスを終了する。
【００８９】
そして、メモリ試験プログラムを実行するＣＰＵ１は、ハードログを確認し、ビットエラーの閾値を超過したメモリの有無によるユーザの良否判定を支援する。ただし、メモリ試験プログラムのハードログチェック処理モジュール等が良否判定の基になる情報、例えば、訂正不可能なビットエラーの有無、訂正可能なビットエラー回数が閾値を超えたか否
か等を判定してもよい。
【００９０】
図１５に、試験対象メモリの良品、不良品を判断する手順を例示する。
【００９１】
メモリ試験プログラムからＣＰＵ１を介してＯＳへハードログ取得の命令を発行する（Ａ２１、Ａ２２）。ＯＳは、ＣＰＵ１１、管理部１５を介して不揮発性ＲＡＭ１６内にあるハードログを抽出する（Ａ２３、Ａ２４、Ａ２５）。
【００９２】
ユーザは、キーボード操作等によりコマンドを入力し（Ａ２６）、抽出したログをディスプレイ１８に表示させる（Ａ２７）。ユーザは、ディスプレイ１８の表示を確認し、良品、不良品の判定を行う。
【００９３】
図１６に、メモリ試験プロセスの処理を例示する。すなわち、図１６は、メモリ試験モジュールの処理例である。ここでは、ＣＰＵ１１の１つのコアがメモリ試験プロセスを実行するものとして説明する。なお、メモリ試験では、複数のコアが図１６の処理を実行するようにすればよい。まず、ＣＰＵ１１のメモリ試験プロセスは、監視終了フラグを０に設定する（Ｓ１）。
【００９４】
Ｓ１の設定によって、メモリ試験プロセスは、メモリコントローラ１２Ａ、１２Ｂからのビットエラー回数の取得開始をＥＣＣチェックプロセスに指示する（Ｓ２）。ＥＣＣチェックプロセスは、Ｓ２での指示にしたがって、処理を開始する（Ｓ３）。
【００９５】
次に、メモリ試験プロセスは、ＥＣＣチェックプロセスよりビットエラーカウント初期値取得処理を実行する（Ｓ４）。すなわち、メモリ試験プロセスは、ビットエラーカウント数の初期値（ａ）を設定する。
【００９６】
次に、メモリ試験プロセスは、試験対象アドレスを選定する（Ｓ５）。そして、メモリ試験プロセスは、試験対象アドレスを試験する（Ｓ６）。ここで、試験対象アドレスは、例えば、図７に示したメモリのブロックＣ１、Ｃ２、Ｃ３等に対応するメモリ空間のアドレスである。情報処理装置１０のＣＰＵ１１は、試験部の一例として、Ｓ６の処理を実行する。
【００９７】
次に、メモリ試験プロセスは、ビットエラー監視／追加試験処理を実行する（Ｓ７）。そして、メモリ試験プロセスは、試験終了か否かを判定する。試験終了は、例えば、所定のデータパターンとアクセス手法との組み合わせによって、所定のメモリのアドレス範囲について、所定回数の試験が完了するときに、試験終了となる。試験終了でない場合、メモリ試験プロセスは、制御をＳ６に戻す。
【００９８】
一方、試験終了の場合、メモリ試験プロセスは、監視終了フラグを１に設定する（Ｓ９）。Ｓ９での設定により、メモリ試験プロセスは、メモリコントローラ１２Ａ、１２Ｂからのビットエラー取得の終了をＥＣＣチェックプロセスに指示する（Ｓ１０）。その結果、ＥＣＣチェックプロセスは、処理を終了する（Ｓ１１）。
【００９９】
次に、メモリ試験プロセスは、ハードログを確認する（Ｓ１２）。そして、メモリ試験プロセスは、ビットエラー数が閾値を超過したか否かを判定する（Ｓ１３）。ビットエラー数が閾値を超過していない場合、メモリは良品（ＯＫ）と判定される。一方、ビットエラー数が閾値を超過した場合、メモリは不良品（ＮＧ）と判定される。
【０１００】
図１７に、ビットエラー監視／追加試験処理（図１６のＳ７）の詳細を例示する。この処理では、メモリ試験プロセスは、ＥＣＣチェックプロセスの現在のエラーカウント数（
ｂ）を取得する（Ｓ７１）。そして、メモリ試験プロセスは、図１６のＳ４で取得したカウント数の初期値（ａ）と、現在のエラーカウント数（ｂ）との差分（ｂ−ａ）を算出する（Ｓ７２）。
【０１０１】
そして、メモリ試験プロセスは、エラーカウント数が増加したか否かを判定する（Ｓ７３）。エラーカウントが増加していない場合、メモリ試験プロセスは、制御をＳ７９へ進める。
【０１０２】
一方、エラーカウント数が増加した場合、メモリ試験プロセスは、ビットエラー発生範囲を選定し、ビットエラー発生時のデータパターンとアクセス手法を取得する（Ｓ７４）。すなわち、図７−図９で説明したように、メモリ試験プロセスは、ビットエラー発生からの経過時間によってビットエラー発生箇所からのブロック数を算出する。そして、各メモリ試験プロセスは、算出されたブロック数から、ビットエラー発生時の試験箇所を特定する。さらに、メモリ試験プロセスは、ビットエラー発生時の試験箇所の試験におけるデータパターンとアクセス手法を取得する。情報処理装置１０のＣＰＵ１１は、位置特定部の一例として、Ｓ７４の処理を実行する。また、Ｓ７４の手順は、図７−図９によって説明したので省略する。情報処理装置１０のＣＰＵ１１は、条件特定部の一例として、Ｓ７４の処理を実行する。
【０１０３】
なお、Ｓ７４では、ビットエラー発生範囲とビットエラー発生時のデータパターンとアクセス手法の少なくとも１つを取得するようにしてもよい。例えば、システム構成によっては、ビットエラー発生範囲とビットエラー発生時のデータパターンとアクセス手法をすべて取得しなくてもよい場合もある。そして、メモリ試験プロセスは、メモリ試験プロセス同期処理を実行する（Ｓ７５）。メモリ試験プロセス同期処理の手順の詳細は、図１４で説明したので省略する。情報処理装置１０のＣＰＵ１１は、同期制御部の一例として、Ｓ７５の処理を実行する。
【０１０４】
同期処理が完了し、すべてのメモリ試験プロセスの同期が取れると、ビットエラーの発生したアドレス範囲を、ビットエラーの発生したデータパターン、アクセス手法で再度試験を実行する（Ｓ７６）。Ｓ７６の手順の詳細は、図１２−図１３で説明したので省略する。情報処理装置１０のＣＰＵ１１は、制御部の一例として、Ｓ７６の処理を実行する。
【０１０５】
次に、メモリ試験プロセスは、Ｓ７６の処理を指定回数実行したか否かを判定する（Ｓ７７）。Ｓ７７により、メモリ試験プロセスは、Ｓ７６の処理を指定回数実行する。
【０１０６】
次に、メモリ試験プロセスは、ＥＣＣチェックプロセスよりビットエラーカウント初期値取得処理を実行する（Ｓ７８）。そして、メモリ試験プロセスは、次のアドレスへ移動する（Ｓ７９）。
【０１０７】
図１８に、ＥＣＣチェックプロセスの処理を例示する。すなわち、図１８は、１ビットエラー監視処理モジュールの処理例である。図１８の処理は、監視終了フラグが０に設定されたときに開始する。この処理では、ＥＣＣチェックプロセスは、メモリコントローラよりビットエラーカウント値を取得する（Ｓ１０１）。次に、ＥＣＣチェックプロセスは、取得したエラーカウント値と、エラーカウント値を取得した時刻をグローバル変数へ格納する（Ｓ１０２）。情報処理装置１０のＣＰＵ１１は、訂正時刻記録部の一例として、Ｓ１０２の処理を実行する。
【０１０８】
そして、ＥＣＣチェックプロセスは、監視終了フラグが１か否かを判定する（Ｓ１０３）。そして、監視終了フラグが０のとき、ＥＣＣチェックプロセスは、制御をＳ１０１に戻す。一方、監視終了フラグが１のとき、ＥＣＣチェックプロセスは、処理を終了する。
【０１０９】
＜効果＞
以上述べたように、実施例２に係る情報処理装置１０の試験手順によれば、種々のデータパターンとアクセス手法の組み合わせについて、複数バンクのメモリに対して、複数のコアで実行される複数のメモリ試験プロセスによって並列に試験を実行できる。そして、１つのメモリ試験プロセスの試験（例えば、ＣＰＵ１のメモリ試験プロセスＡ）で、ＥＣＣエラーが発生し、エラー訂正が実行された場合、各メモリ試験プロセスは、メモリ試験プロセスＡでのエラー発生時点で実行していたメモリ試験のアドレス範囲と、データパターンと、アクセス手法を取得する。そして、各メモリ試験プロセスは、メモリ試験プロセスＡでのエラー発生時点と同一と想定されるアドレス範囲、データパターン、アクセス手法で試験の条件を再現する。
【０１１０】
したがって、比較例のように、単一のデータパターンで、単一のアクセス手法ではなく、多様なデータパターンで、多様なアクセス手法を組み合わせた場合でも、精度よくビットエラー発生時の状態を再現できる。
【０１１１】
さらに、各メモリ試験プロセスは、同期処理を実行し、メモリ試験プロセスＡでのエラー発生時点と同一の条件をさらに精度よく再現する。したがって、複数バンクに並列にアクセスするメモリインターリーブ方式を採用する情報処理装置１０であっても、多様なデータパターンとアクセス手法による多種のメモリ試験を実行するとともに、精度よくエラー発生状態を再現できる。例えば、複数プロセスのメモリ競合によって、キャッシュからのライトバックが発生するような状況を含めて、エラー発生時の状況が再現しやすくなる。
【０１１２】
さらに、エラー発生時に再度メモリ試験を実行する範囲は、エラー発生時のアドレスを含むを所定のアドレス範囲であるので、物理的なメモリ上でのエラー発生ビットの前後のメモリの状況を含めたエラー発生条件の再現が可能となる。そして、情報処理装置１０は、エラー発生ビットに対応するアドレスを含む所定のアドレス範囲に、集中的に試験を実行するので、異常の可能性のあるメモリにおいて、エラー発生頻度が所定の閾値を超える可能性を高めることができる。
【０１１３】
《変形例》
上記実施例１では、ＣＰＵ１１が複数のコアであるＣＰＵ１−ＣＰＵ３を含む情報処理装置１０を例に説明した。しかし、情報処理装置１０の構成は、上記実施例１、２のものに限定される訳ではない。例えば、情報処理装置１０が単一のコアを含むＣＰＵを複数含む構成でもよい。また、情報処理装置１０が複数のコアを含むＣＰＵを複数含む構成でもよい。また、情報処理装置１０が単一のコアを含むＣＰＵを１個搭載する構成でもよい。また、情報処理装置１０において、メモリインターリーブはなくても構わない。すなわち、実施例１、２に示したメモリの試験手順は、実施例１、２以外の情報処理装置においても適用可能である。
【０１１４】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１１５】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等か
ら取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ（リードオンリーメモリ）等がある。
【０１１６】
《その他》
本実施形態は、以下の態様を含む。この態様を付記と呼ぶ。それぞれの態様の構成は、他の構成と組みあせてもよい。また、各態様の構成は、上記実施形態に開示の技術と組合わせてもよい。
【０１１７】
（付記１）
誤り訂正回路を有する記憶装置と、
所定の試験手順で前記記憶装置の試験を行う試験部と、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録部と、
前記試験部による試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を所定の精度で特定する位置特定部と、
前記誤り訂正が行われたときの試験手順で、前記所定の精度で特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、前記試験部によって所定回数試験する制御部と、を備える情報処理装置。
【０１１８】
（付記２）
前記試験部が、記憶装置の複数の範囲に対して並列に試験を行う場合に、前記制御部は、前記誤り訂正試験位置を含む前記記憶装置の部分に対して並列に実行される試験の開始を同期させる同期制御部をさらに備える付記１に記載の情報処理装置。
【０１１９】
（付記３）
前記試験部が複数の試験条件を変更して複数回の試験を行う場合に、前記試験部による試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間とから、前記誤り訂正試験位置での試験の試験条件を特定する条件特定部をさらに備える付記１または２に記載の情報処理装置。
【０１２０】
（付記４）
コンピュータが、所定の試験手順で誤り訂正回路を有する記憶装置の試験を行う試験ステップと、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録ステップと、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と前記記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を所定の精度で特定する位置特定ステップと、
前記誤り訂正が行われたときの試験手順で、前記所定の精度で特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、所定回数前記試験を行う制御ステップと、を実行する試験方法。
【０１２１】
（付記５）
前記試験ステップにおいて、前記記憶装置の複数の範囲に対して並列に試験がなされる場合に、前記制御ステップは、前記誤り訂正試験位置を含む前記記憶装置の部分に対して並列に実行される試験の開始を同期させるステップを含む付記４に記載の試験方法。
【０１２２】
（付記６）
前記所定の試験手順は、複数の試験条件を変更して複数回の試験を含み、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間とから、前記誤り訂正試験位置での試験の試験条件を特定する条件特定ステップをさらに実行する付記４または５に記載の試験方法。
【０１２３】
（付記７）
コンピュータに、所定の試験手順で誤り訂正回路を有する記憶装置の試験を行う試験ステップと、
前記試験において前記誤り訂正回路によって記憶装置の誤り訂正が行われた時刻を記録する訂正時刻記録ステップと、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間と前記記憶装置内の現在時刻の試験位置とから、前記誤り訂正が行われた記憶装置内の誤り訂正試験位置を所定の精度で特定する位置特定ステップと、
前記誤り訂正が行われたときの試験手順で、前記所定の精度で特定された前記誤り訂正試験位置を含む前記記憶装置の部分に対して、所定回数前記試験を行う制御ステップと、を実行させるプログラム。
【０１２４】
（付記８）
前記試験ステップにおいて、前記記憶装置の複数の範囲に対して並列に試験がなされる場合に、前記試験ステップは、前記誤り訂正試験位置を含む前記記憶装置の部分に対して並列に実行される試験の開始を同期させるステップを含む、付記７に記載のプログラム。
【０１２５】
（付記９）
前記所定の試験手順は、複数の試験条件を変更して複数回の試験を含み、
前記試験ステップによる試験速度と前記訂正時刻記録部に記録された時刻から現在時刻までの時間とから、前記誤り訂正試験位置での試験の試験条件を特定する条件特定ステップをさらに実行させる付記７または８に記載のプログラム。
【符号の説明】
【０１２６】
１０    情報処理装置
１１    ＣＰＵ
１２Ａ、１２Ｂ  メモリコントローラ
１３Ａ、１３Ｂ  メモリチャンネル
１４    ハードディスクドライブ
１５    管理部
１６    不揮発性ＲＡＭ
１７    キーボード
１８    ディスプレイ
【図１】
0005910332.tif 000002
【図２】
0005910332.tif 000003
【図３】
0005910332.tif 000004
【図４】
0005910332.tif 000005
【図５】
0005910332.tif 000006
【図６】
0005910332.tif 000007
【図７】
0005910332.tif 000008
【図８Ａ】
0005910332.tif 000009
【図８Ｂ】
0005910332.tif 000010
【図８Ｃ】
0005910332.tif 000011
【図８Ｄ】
0005910332.tif 000012
【図９】
0005910332.tif 000013
【図１０】
0005910332.tif 000014
【図１１】
0005910332.tif 000015
【図１２】
0005910332.tif 000016
【図１３】
0005910332.tif 000017
【図１４】
0005910332.tif 000018
【図１５】
0005910332.tif 000019
【図１６】
0005910332.tif 000020
【図１７】
0005910332.tif 000021
【図１８】
0005910332.tif 000022