(57)【要約】【課題】  コンピュータシステムのメインメモリのすべての領域におけるエラーを、それらがシステムの動作中に障害を発生させる前に検出する。【解決手段】  本発明にかかるコンピュータシステムは、プロセッサと、メモリと、プロセッサおよびメモリに連結されたメモリコントローラとを備える。メモリコントローラは、第１のキャッシュとキャッシュ制御部とを備える。キャッシュ制御部は、メモリの一部分が第１のキャッシュにコピーされるようにするように構成される。キャッシュ制御部は、メモリの上記部分のテスト中にその部分のアドレスを含む読出しトランザクションをプロセッサから受け取ると、それに応じて、第１の情報が第１のキャッシュからプロセッサに提供されるようにするように構成される。【選択図】図１
2005078632.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム（１００）であって、
プロセッサ（１１０）と、
メモリ（１３０）と、
前記プロセッサ（１１０）と前記メモリ（１３０）とに連結されたメモリコントローラ（１２２／５２２）と
を具備し、
前記メモリコントローラ（１２２／５２２）は、
第１のキャッシュ（１２９）と、キャッシュ制御部（１２８）と
を備え、
前記キャッシュ制御部（１２８）は、前記メモリ（１３０）の一部分（２１０ａ）が前記第１のキャッシュ（１２９）にコピーされるようにするように構成され、
前記キャッシュ制御部（１２８）は、メモリの前記部分（２１０ａ）のテスト中に前記部分（２１０ａ）のアドレスを含む読出しトランザクションを前記プロセッサ（１１０）から受け取ると、第１の情報が前記第１のキャッシュ（１２９）から前記プロセッサ（１１０）に提供されるようにするように構成される
コンピュータシステム。
【請求項２】
前記キャッシュ制御部（１２８）は、前記第１の情報がメモリ（１３０）の前記部分（２１０ａ）のテスト中に前記メモリ（１３０）から読み出されないようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項３】
前記キャッシュ制御部（１２８）は、メモリ（１３０）の前記部分（２１０ａ）のテスト中に前記部分（２１０ａ）のアドレスを含む書込みトランザクションを前記プロセッサ（１１０）から受け取ると、第２の情報が前記第１のキャッシュ（１２９）に格納されるようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項４】
前記メモリコントローラ（１２２／５２２）は、メモリ（１３０）の前記部分（２１０ａ）をテストした後に、前記第１のキャッシュ（１２９）が、前記部分（２１０ａ）にコピーされるようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項５】
前記プロセッサ（１１０）によって実行可能なオペレーティングシステム
をさらに具備し、
前記オペレーティングシステムは、メモリ（１３０）の前記部分が前記第１のキャッシュ（１２９）にコピーされることに応じて、前記部分（２１０ａ）に対してテストが実行されるようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項６】
前記メモリコントローラ（１２２／５２２）は、テストエンジン（３００）
をさらに備え、
前記テストエンジン（３００）は、メモリ（１３０）の前記部分（２１０ａ）が前記キャッシュ（１２９）にコピーされることに応じて、前記部分（２１０ａ）に対しテストが実行されるようにするように構成される
請求項１に記載のコンピュータシステム。
【請求項７】
前記プロセッサ（１１０）によって実行可能なオペレーティングシステム
をさらに具備し、
前記テストエンジン（３００）は、前記オペレーティングシステムからコマンドを受け取ることに応じて、メモリ（１３０）の前記部分（２１０ａ）に対しテストが実行されるようにするように構成される
請求項６に記載のコンピュータシステム。
【請求項８】
前記プロセッサ（１１０）は、第２のキャッシュ（１１２／１１４）に連結される
請求項１に記載のコンピュータシステム。
【請求項９】
メモリ（１３０）を含むコンピュータシステム（１００）によって実行される方法であって、
前記メモリ（１３０）の部分（２１０ａ）をメモリコントローラ（１２２／５２２）のキャッシュ（１２９）にコピーすることと、
前記メモリ（１３０）の前記部分（２１０ａ）の内容を前記キャッシュ（１２９）にコピーした後、前記部分（２１０ａ）に対しテストを実行することと、
前記部分（２１０ａ）に対し前記テストを実行した後、前記キャッシュ（１２９）を前記部分（２１０ａ）にコピーすることと
を含む方法。
【請求項１０】
前記部分（２１０ａ）を、前記キャッシュ（１２９）にコピーすることに応じてエラーを検出することと、
前記部分（２１０ａ）の前記エラーを修正することと
をさらに含む請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリをテストするシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータシステムは、概して、１つまたは複数のプロセッサとメモリシステムとを有する。
メモリシステムは、しばしば、比較的高速で高価なメモリから比較的低速で安価なメモリまでにおよぶ複数レベルのメモリ装置を含む。
メモリシステムの第１レベルのうちの１つを、メインメモリと呼び、それは通常、何らかの形態のランダムアクセスメモリ（ＲＡＭ）からなる。
動作時、コンピュータシステムは、オペレーティングシステムと１つまたは複数のアプリケーションとをメインメモリにロードすることにより、プロセッサがそれらを実行することができるようにする。
【０００３】
メインメモリは、オペレーティングシステムとアプリケーションとを含むため、コンピュータシステムの重要なコンポーネントである。
メインメモリで発生する障害により、システムにおいてより広い障害が発生することがあり、システムがクラッシュする可能性がある。
そのため、概して、メインメモリにおけるエラーを、それらが障害をもたらす前に検出することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
メモリエラーは、メモリに既知の情報を書き込み、その後その情報を再び読み出すことによりそれが正しいか否かを判断することによって、検出することができる。
しかしながら、メモリエラーによっては、パターン依存である場合があり、メモリに書き込まれている選択された情報パターンに応じてしか現れない場合がある。
メモリの診断テストによっては、コンピュータシステムがオンとなるかまたはリセットされることに応じて行われる場合がある。
しかしながら、この種のテストは、長期間オンにされたままでリセットされないコンピュータシステムにおいてはエラーを検出しない可能性がある。
【０００５】
メモリ装置によっては、コンピュータシステムの動作中に作用するエラー訂正機能を有するものもあるが、これらの機能は、一般的には、特定のメモリロケーションが読み出されることに応じてしかエラーを検出しない。
メモリの多くの領域が定期的に読み出されない場合があるため、これらの領域で発生するエラーは、障害のあるメモリロケーションへのアクセスが発生するまで検出されない可能性がある。
【０００６】
したがって、コンピュータシステムのメインメモリのすべての領域におけるエラーを、それらがシステムの動作中に障害を発生させる前に検出することができることが望ましい。
【課題を解決するための手段】
【０００７】
１つの例示的な実施形態によれば、コンピュータシステムは、プロセッサと、メモリと、プロセッサおよびメモリに連結されたメモリコントローラと、を備える。
メモリコントローラは、第１のキャッシュとキャッシュ制御部とを備える。
キャッシュ制御部は、メモリの一部分が第１のキャッシュにコピーされるようにするように構成される。
キャッシュ制御部は、メモリの上記部分のテスト中にその部分のアドレスを含む読出しトランザクションをプロセッサから受け取ると、それに応じて、第１の情報が第１のキャッシュからプロセッサに提供されるようにするように構成される。
【発明を実施するための最良の形態】
【０００８】
好ましい実施形態の以下の詳細な説明において、その一部を形成し、発明を実施することができる特定の実施形態が例として示されている、添付図面を参照する。
他の実施形態を利用してもよく、本発明の範囲から逸脱することなく構造的または論理的変更を行ってもよい、ということを理解しなければならない。
したがって、以下の詳細な説明は、限定する意味でとられるべきではなく、本発明の範囲は添付の特許請求項によって規定される。
【０００９】
本開示の一態様において、メモリコントローラは、コンピュータシステムの動作中にコンピュータシステムのメモリがテストされるのを可能にするキャッシュを有する。
メモリの一部分からの情報をキャッシュにコピーし、オペレーティングシステムおよび／またはテストモジュールにより、メモリのその部分に対しテストが実行されるようにする。
テスト中、メモリコントローラは、メモリのその部分へのアクセスをキャッシュに格納された情報に向ける。
テストが完了した後、その情報をキャッシュからメモリのその部分に再びコピーする。
【００１０】
図１は、キャッシュ１２９を含むメモリコントローラ１２２を備えたコンピュータシステム１００の実施形態を示すブロック図である。
コンピュータシステム１００は、デスクトップ、ノートブック、モバイル、ワークステーションまたはサーバコンピュータ等、いかなるタイプのコンピュータシステムであってもよい。
コンピュータシステム１００は、プロセッサ１１０ａ〜１１０（ｎ）と、コア電子複合システム（core electronics complex）１２０と、メモリ１３０と、入出力（Ｉ／Ｏ）装置１４０のセットと、を有する。
プロセッサ１１０ａ〜１１０（ｎ）は、それぞれ、接続１５２を使用してコア電子複合システム１２０に連結されている。
コア電子複合システム１２０は、接続１５４および１５６をそれぞれ使用してメモリ１３０とＩ／Ｏ装置１４０とに連結されている。
【００１１】
コンピュータシステム１１０ａは、１つ以上の任意の数のプロセッサ１１０を有する。
本明細書で使用する「１つのプロセッサ１１０」は、プロセッサ１１０ａ〜１１０（ｎ）のうちの任意の１つを言い、「プロセッサ１１０」は、プロセッサ１１０ａ〜１１０（ｎ）のセットを言う。
【００１２】
１つのプロセッサ１１０ａはキャッシュ１１２に連結されており、１つのプロセッサ１１０ｂはキャッシュ１１４を有する。
キャッシュ１１２および１１４は、命令およびデータ等、いかなるタイプの情報を格納してもよい。
他のプロセッサ１１０は、任意のタイプまたは数のキャッシュを有してもまたはそれらとともに動作可能であってもよい。
【００１３】
コンピュータシステム１００はまた、１つまたは複数のプロセッサ１１０によって実行可能なオペレーティングシステム（図示せず）を有する。
プロセッサ１１０は、メモリ１３０を使用して、オペレーティングシステムおよび他のプログラムからの命令を実行する。
【００１４】
コア電子複合システム１２０は、メモリコントローラ１２２とＩ／Ｏコントローラ１２４とを有する。
メモリコントローラ１２２は、制御ロジック１２６と、キャッシュ制御部ユニット１２８と、キャッシュ１２９と、を有する。
制御ロジック１２６は、プロセッサ１１０およびＩ／Ｏ装置１４０からのトランザクションに応じてメモリ１３０を操作するように構成される。
キャッシュ１２９は、メモリ１３０からの情報を格納することにより、メモリ１３０がコンピュータシステム１００の動作中にテストされるのを可能にするように構成され、キャッシュ制御部ユニット１２８は、後にさらに詳細に説明するように、オペレーティングシステムおよび／またはテストモジュールに応じてキャッシュ１２９の使用および動作を制御するように構成される。
キャッシュ１２９のサイズを、他の要素もあるが特に、メモリ１３０の最大サイズと、コンピュータシステム１００に対するメモリページサイズと、メモリアクセス時間と、にしたがって選択してもよい。
【００１５】
Ｉ／Ｏコントローラ１２４は、１つまたは複数のＩ／Ｏ装置１４０を管理するように構成されたいかなるタイプおよび数のコントローラを有してもよい。
Ｉ／Ｏコントローラ１２４の例には、ＩＤＥコントローラ、ＰＣＩコントローラ、ＳＣＳＩコントローラ、ＵＳＢコントローラ、ＩＥＥＥ１３９４（ファイヤワイヤ）コントローラ、ＰＣＭＣＩＡコントローラ、パラレルポートコントローラおよびシリアルポートコントローラがある。
一実施形態では、Ｉ／Ｏコントローラ１２４は、Ｉ／Ｏコントローラ・システムバス変換器と、バス変換器に連結された中間バスと、中間バスに連結されたＰＣＩコントローラと、ＰＣＩコントローラに連結されたＳＣＳＩ、ＩＤＥおよび他のコントローラと、を含む複数のマイクロチップを備える。
【００１６】
メモリ１３０は、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭおよびＤＤＲ  ＳＤＲＡＭ等、メモリコントローラ１２２によって管理される任意のタイプのメモリを含む。
システムファームウェア（図示せず）かまたはオペレーティングシステムからのコマンドに応じて、メモリコントローラ１３０が、ハードドライブまたはＣＤ−ＲＯＭドライブ等のＩ／Ｏ装置１４０からメモリ１３０に情報をロードするようにしてもよい。
【００１７】
Ｉ／Ｏ装置１４０は、Ｉ／Ｏコントローラ１２４を使用してコンピュータシステム１００と通信するように構成された任意のタイプおよび数の装置を含んでもよい。
各Ｉ／Ｏ装置は、コンピュータシステム１００の内部であっても外部であってもよい。
Ｉ／Ｏ装置１４０は、コンピュータシステム１００が他のコンピュータシステムと通信するのを可能にするように構成されたネットワーク装置と、情報を格納するように構成された記憶装置と、を有してもよい。
【００１８】
図２は、図１に示すコンピュータシステム１００の一部の第１の実施形態を示すブロック図である。
図２の実施形態では、キャッシュ１２９を使用して、オペレーティングシステムからのコマンドに応じてメモリ１３０の部分２１０ａをテストする。
【００１９】
部分２１０ａをテストするために、オペレーティングシステムは、キャッシュ１２９の網掛け部分２１０ｂによって示すように、部分２１０ａの内容がキャッシュ１２９にコピーされるようにする。
そうするために、オペレーティングシステムは、テストする部分２１０ａを選択し、部分２１０ａがテストされるべきであることを示すコマンドが１つのプロセッサ１１０によって生成されメモリコントローラ１２２に提供されるようにする。
メモリコントローラ１２２は、コマンドを受け取るとそれに応じて、制御ロジック１２６とキャッシュ制御部１２８とを使用して部分２１０ａがキャッシュ１２９にコピーされるようにする。
メモリコントローラ１２２は、部分２１０ａの内容をキャッシュ１２９にコピーすることに応じて、部分２１０ａにおいて見出されるエラーを可能な場合、検出し、修正し、ログを記録してもよい。
【００２０】
メモリコントローラ１２２は、部分２１０ａの内容をキャッシュ１２９にコピーしている間、確実に、部分２１０ａのアドレスに対する任意の正規のメモリトランザクションが適切に処理されるようにする。
たとえば、トランザクションが書込みトランザクションである場合、メモリコントローラ１２２は、そのトランザクションに関連する書込みがメモリ１３０とキャッシュ１２９との両方に対して実行されるようにしてもよい。
代替的に、メモリコントローラ１２２は、部分２１０ａの内容がキャッシュ１２９にコピーされるまで書込みが遅延するようにしてもよく、その後、キャッシュ１２９に対する書込みのみを実行してもよい。
読出しトランザクションの場合、メモリコントローラ１２２は、この合間に、必要に応じて、メモリ１３０かまたはキャッシュ１２９のいずれかからの読出しを実行してもよい。
【００２１】
部分２１０ａの内容がキャッシュ１２９にコピーされた後、メモリコントローラ１２２は、オペレーティングシステムに対し、部分２１０ａがテストされる用意ができているという指示を提供してもよい。
オペレーティングシステムは、プロセッサ１１０のうちの１つまたは複数を使用してテストトランザクションを生成し、そのテストトランザクションをメモリコントローラ１２２に提供する。
メモリコントローラ１２２は、テストトランザクションを受け取ることに応じて、テストトランザクションを検出し、正規のメモリトランザクションからテストトランザクションを識別する。
テストトランザクションは、任意の適切な方法によって識別され得る。
たとえば、テストトランザクションまたはオペレーティングシステムにおける異なるコマンドを使用するオペレーティングシステムは、テストトランザクションに関連する追加の情報または信号をメモリコントローラ１２２に提供してもよい。
【００２２】
テストトランザクションを認識することに応じて、メモリコントローラ１２２は、制御ロジック１２８を使用して、テストトランザクション、すなわち読出しおよび書込みが部分２１０ａに対して実行されるようにする。
特に、メモリコントローラ１２２は、トランザクションによって指示されるように、情報が部分２１０ａに格納されまたは部分２１０ａから読み出されるようにする。
メモリコントローラ１２２は、確実に、テストトランザクションにより情報がキャッシュ１２９から読み出されたり、またはキャッシュ１２９に書き込まれたりしないようにする。
【００２３】
メモリ部分２１０ａに対するテスト中、メモリコントローラ１２２の制御ロジック１２６とキャッシュ制御部１２８とは、キャッシュ１２９を使用して部分２１０ａに関連する正規のメモリトランザクションが実行されるようにする。
特に、部分２１０ａのアドレスに対する書込みトランザクションにより、情報がキャッシュ１２９の対応するアドレスに書き込まれる。
同様に、部分２１０ａのアドレスからの読出しトランザクションにより、情報がキャッシュ１２９の対応するアドレスから読み出される。
【００２４】
部分２１０ａに対するテストが完了した後、オペレーティングシステムは、メモリコントローラ１２２に対してテストが完了したことを通知する。
メモリコントローラ１２２は、キャッシュ１２９の内容がメモリ１３０の部分２１０ａに再びコピーされるようにする。
メモリコントローラ１２２は、キャッシュ１２９の内容を部分２１０ａにコピーしている間、確実に、部分２１０ａのアドレスへの任意の正規のメモリトランザクションが適切に処理されるようにする。
たとえば、トランザクションが書込みトランザクションである場合、メモリコントローラ１２２は、トランザクションに関連する書込みがメモリ１３０とキャッシュ１２９との両方に対して実行されるようにしてもよい。
代替的に、メモリコントローラ１２２は、キャッシュ１２９の内容が部分２１０ａに再びコピーされるまで書込みが遅延するようにしてもよく、その後、メモリ１３０に対する書込みのみを実行してもよい。
読出しトランザクションの場合、メモリコントローラ１２２は、この合間に、必要に応じて、メモリ１３０かまたはキャッシュ１２９のいずれかからの読出しを実行してもよい。
メモリコントローラ１２２は、オペレーティングシステムに対し、キャッシュ１２９の内容が部分２１０ａに再びコピーされたという指示を提供してもよい。
【００２５】
オペレーティングシステムは、テスト中に部分２１０ａにおけるエラーを検出する。
ケラーを検出することに応じて、部分２１０ａにおける障害のある１つまたは複数のアドレスを可能な場合はログに記録しおよび／または修正してもよい。
オペレーティングシステムは、メモリ１３０における障害が発生したロケーションを割り付けるかまたは使用することを回避することができる。
さらに、オペレーティングシステムは、システム管理者に対していかなる障害も通知されるようにしてもよい。
【００２６】
オペレーティングシステムを、システム管理者がたとえばテストの時間および頻度、テスト中に割り付けられる処理能力の量、テストするメモリの特定の部分（たとえば、頻繁に使用される部分）および障害時にとられるべき動作を選択することができるようにすることにより、管理者がメモリ１３０に対するテストを構成することができるように設計してもよい。
【００２７】
メモリ部分２１０ａは、キャッシュ１２９と同じサイズであるかまたはそれより小さい任意の適切なサイズのメモリであってもよい。
たとえば、メモリ部分２１０ａは、オペレーティングシステムによって定義されるように１つまたは複数のページに等しいサイズであってもよい。
【００２８】
図３は、コンピュータシステム１００の一部の第２実施形態を示すブロック図である。
図３の実施形態では、テストエンジン３００が、キャッシュ１２９を使用して部分２１０ａに対しテストが実行されるようにする。
【００２９】
部分２１０ａをテストするために、テストエンジン３００は、網掛け部分２１０ｂによって示すように、部分２１０ａの内容がキャッシュ１２９にコピーされるようにする。
そうするために、テストエンジン３００は、テストする部分２１０ａを選択し、制御ロジック１２６とキャッシュ制御部１２８とに対し、部分２１０ａがテストされるべきであることを指示するコマンドが提供されるようにする。
キャッシュ制御部１２８は、コマンドを受け取るとそれに応じて、部分２１０ａがキャッシュ１２９にコピーされるようにする。
可能な場合、制御ロジック１２６は、部分２１０ａの内容をキャッシュ１２９にコピーすることに応じて、部分２１０ａにおいて見いだされるエラーを検出し、修正し、ログに記録してもよい。
【００３０】
メモリコントローラ１２２は、部分２１０ａの内容をキャッシュ１２９にコピーしている間、確実に、部分２１０ａのアドレスに対する任意のメモリトランザクションが適切に処理されるようにする。
たとえば、トランザクションが書込みトランザクションである場合、メモリコントローラ１２２は、トランザクションに関連する書込みがメモリ１３０とキャッシュ１２９との両方に対して実行されるようにしてもよい。
代替的に、メモリコントローラ１２２は、部分２１０ａの内容がキャッシュ１２９にコピーされるまで書込みが遅延するようにしてもよく、その後、キャッシュ１２９に対する書込みのみを実行してもよい。
読出しトランザクションの場合、メモリコントローラ１２２は、この合間に、必要に応じて、メモリ１３０かまたはキャッシュ１２９のいずれかからの読出しを実行してもよい。
【００３１】
部分２１０ａの内容がキャッシュ１２９にコピーされた後、テストエンジン３００は、テストトランザクション、すなわち読出しおよび書込みを生成し、それらトランザクションが部分２１０ａにおいて実行されるようにする。
【００３２】
メモリ部分２１０ａに対するテスト中、メモリコントローラ１２２の制御ロジック１２６とキャッシュ制御部１２８とは、キャッシュ１２９を使用して、部分２１０ａに関連する正規のメモリトランザクションが実行されるようにする。
特に、部分２１０ａのアドレスへの書込みトランザクションにより、情報がキャッシュ１２９の対応するアドレスに書き込まれる。
同様に、部分２１０ａのアドレスからの読出しトランザクションにより、キャッシュ１２９の対応するアドレスから情報が読み出される。
テストエンジン３００は、テスト中に部分２１０ａのエラーを検出する。
エラーの検出に応じて、部分２１０ａの障害が発生した１つまたは複数のアドレスを可能な場合はログ記録しおよび／または修正してもよい。
メモリコントローラ１２２は、書換え（aliasing）等の技法を使用して、メモリ１３０の障害の発生したロケーションの使用を回避してもよい。
さらに、テストエンジン３００は、オペレーティングシステムに対して任意の障害が通知されるようにしてもよい。
【００３３】
部分２１０ａに対するテストが完了した後、テストエンジン３００は、制御ロジック１２６とキャッシュ制御部１２８とに対し、テストが完了したことを通知する。
キャッシュ制御部１２８は、キャッシュ１２９の内容がメモリ１３０の部分２１０ａに再びコピーされるようにする。
キャッシュ制御部１２８がキャッシュ１２９の内容を部分２１０ａにコピーしている間、メモリコントローラ１２２は、確実に、部分２１０ａのアドレスへの任意のメモリトランザクションが適切に処理されるようにする。
たとえば、トランザクションが書込みトランザクションである場合、メモリコントローラ１２２は、トランザクションに関連する書込みがメモリ１３０とキャッシュ１２９との両方に対して実行されるようにしてもよい。
代替的に、メモリコントローラ１２２は、キャッシュ１２９の内容が部分２１０ａに再びコピーされるまで書込みが遅延するようにしてもよく、その後メモリ１３０に対する書込みのみを実行してもよい。
読出しトランザクションの場合、メモリコントローラ１２２は、この合間に、必要に応じて、メモリ１３０かまたはキャッシュ１２９のいずれかからの読出しを実行してもよい。
メモリコントローラ１２２は、オペレーティングシステムに対し、キャッシュ１２９の内容が部分２１０ａに再びコピーされたという指示を提供してもよい。
【００３４】
テストエンジン３００は、ハードウェアとソフトウェアとの任意の組合せを有してもよい。
【００３５】
代替実施形態では、図２のオペレーティングシステムに関して説明した特徴を、図３のテストエンジン３００に関して説明した特徴と組み合わせてもよい。
特に、オペレーティングシステムは、テストエンジン３００を使用してメモリ１３０の一部分のテストを指示し管理してもよい。
【００３６】
この実施形態では、テストエンジン３００は、オペレーティングシステムからメモリコントローラ１２２によって受け取られたコマンドに応じて、部分２１０ａの内容がキャッシュ１２９にコピーされるようにする。
オペレーティングシステムは、テストエンジン３００が部分２１０ａに対して実行するテストのタイプおよび／または数を指示してもよく、あるいは、単にテストを開始するだけでもよい。
任意のエラーを検出することに応じて、テストエンジン３００は、オペレーティングシステムに対し、オペレーティングシステムが適切な動作をとることができるようにエラーが通知されるようにする。
【００３７】
オペレーティングシステムを、システム管理者が、たとえばテストの時間および頻度、テスト中に割り付けられるべき処理能力の量、テストするメモリの特定部分（たとえば、頻繁に使用される部分）および障害時にとられる動作を選択することができるようにすることにより、管理者がメモリ１３０に対するテストを構成することができるように設計してもよい。
上述したように、オペレーティングシステムを、システム管理者がメモリ１３０に対しテストを構成することができるように設計してもよい。
【００３８】
図４ａおよび図４ｂは、キャッシュを使用してコンピュータシステムの動作中にメモリをテストする方法の実施形態を示すフローチャートである。
図４ａおよび図４ｂに示す方法の実施形態を、オペレーティングシステム、テストエンジン３００等のテストエンジン、またはオペレーティングシステムとテストエンジンとの組合せを使用して実行してもよい。
ここで、本方法を、図１、図２および図３を参照して説明する。
【００３９】
図４ａにおいて、ブロック４００によって示すように、テストするメモリ１３０の部分２１０ａを選択する。
ブロック４０２に示すように、メモリ１３０の部分２１０ａの内容を、キャッシュ１２９にコピーする。
メモリコントローラ１２２は、ブロック４０４に示すように、部分２１０ａに見いだされるエラーを可能な場合、検出し、修正し、ログに記録する。
【００４０】
ブロック４０６に示すように、メモリ１３０の部分２１０ａに対してテストを開始する。
テスト中、ブロック４０８に示すように、メモリコントローラ１２２により、メモリ１３０の部分２１０ａのアドレスに関連する書込みトランザクションが受け取られたか否かに関して判断を行う。
プロセッサ１１０のうちの１つかまたはＩ／Ｏ装置１４０から書込みトランザクションが受け取られる場合がある。
書込みトランザクションが受け取られると、ブロック４１０に示すように、書込みトランザクションに関連する情報をキャッシュに書き込む。
情報は、メモリ１３０に即時には書き込まれない。
そうではなく、情報は、テストの後に、キャッシュ１２９の内容がメモリ１３０の部分２１０ａに再び書き込まれた場合にメモリ１３０に書き込まれる。
【００４１】
ブロック４０８の判断に続いて、ブロック４１２に示すように、メモリコントローラ１２２により、メモリ１３０の部分２１０ａのアドレスに関連する読出しトランザクションが受け取られたか否かの判断を行う。
読出しトランザクションを、プロセッサ１１０のうちの１つから受け取ってもＩ／Ｏ装置１４０から受け取ってもよい。
メモリ１３０の部分２１０ａのアドレスに関連する読出しトランザクションが受け取られた場合、ブロック４１４に示すように、読出しトランザクションに関連する情報をキャッシュ１２９から読み出し、要求側に提供する。
部分２１０ａがテストされているため、読出しトランザクションに関連する情報はメモリ１３０から直接読み出されない。
そうではなく、情報はキャッシュ１２９から提供される。
【００４２】
ブロック４１２における判断に続いて、ブロック４１６に示すように、部分２１０ａに対するテストが完了したか否かに関する判断を行う。
テストが完了していない場合、方法は、ブロック４０８において説明した機能を繰り返す。
テストが完了すると、方法は図４ｂの点Ａに続く。
【００４３】
図４ｂを参照すると、ブロック４１８に示すように、テストを実行することに応じてエラーが検出されたか否かを判断する。
いかなるエラーも検出されなかった場合、ブロック４２０に示すように、キャッシュ１２９の内容をメモリ１３０の部分２１０ａに再びコピーする。
エラーが検出された場合、ブロック４２２に示すように適切な矯正動作をとる。
【００４４】
図５は、キャッシュ１２９を有するメモリコントローラ５２２を備えるコンピュータシステム１００の代替実施形態を示すブロック図である。
図５において、キャッシュ制御部１２８は、メモリコントローラ５２２の制御ロジック５０２の一部として含まれる。
図５の実施形態は、メモリコントローラ５２２の制御ロジック５０２がキャッシュ制御部１２８を明示的に有することを除き、図１、図２、図３および図４に示す実施形態と実質的に同様に動作する。
【００４５】
本明細書において特定の実施形態を例示し説明したが、当業者には、本発明の範囲から逸脱することなく示し説明した特定の実施形態を、種々の代替的なおよび／または等価な実施態様に置き換えてもよい、ということが理解されよう。
この出願は、本明細書で説明した特定の実施形態の任意の適応または変形を包含するように意図されている。
したがって、この発明は、特許請求の範囲とその等価物とによってのみ限定される、ということが意図されている。
【図面の簡単な説明】
【００４６】
【図１】キャッシュを有するメモリコントローラを備えたコンピュータシステムの実施形態を示すブロック図である。
【図２】図１に示すコンピュータシステムの一部の第１の実施形態を示すブロック図である。
【図３】図１に示すコンピュータシステムの一部の第２の実施形態を示すブロック図である。
【図４ａ】図４ａは、コンピュータシステムの動作中にキャッシュを使用してメモリをテストする方法の実施形態を示すフローチャートの第１部分を示す。
【図４ｂ】図４ｂは、コンピュータシステムの動作中にキャッシュを使用してメモリをテストする方法の実施形態を示すフローチャートの第２部分を示す。
【図５】キャッシュを含むメモリコントローラを備えたコンピュータシステムの代替実施形態を示すブロック図である。
【符号の説明】
【００４７】
１１０ａ，１１０ｂ，１１０（ｎ）・・・プロセッサ、
１１２，１１４・・・キャッシュ、
１２０・・・コア電子複合システム、
１２２・・・メモリコントローラ、
１２４・・・Ｉ／Ｏコントローラ、
１２６・・・制御ロジック、
１２８・・・キャッシュ制御部、
１２９・・・キャッシュ、
１３０・・・メモリ、
１４０・・・Ｉ／Ｏ装置、
３００・・・テストエンジン、
１１２，１１４・・・キャッシュ、
５０２・・・制御ロジック、
５２２・・・メモリコントローラ、
【図１】
2005078632.tif 000003
【図２】
2005078632.tif 000004
【図３】
2005078632.tif 000005
【図４ａ】
2005078632.tif 000006
【図４ｂ】
2005078632.tif 000007
【図５】
2005078632.tif 000008