(57)【要約】【課題】メモリエラーによる故障が発生する前にコンピュータシステムのメモリエラーを検出する。【解決手段】プロセッサ(110)、プロセッサに結合された第１のバス(152)、第１のバスに結合されたメモリコントローラ(122,428)、メモリコントローラに結合されたメモリ(130)、第１のバスに結合された第１の入力/出力(I/O)コントローラ(124,424)、第１のI/Oコントローラに結合されたテストモジュール(128)を備えるコンピュータシステム(100)を提供する。テストモジュールは、第１のバスを使用してメモリに対するテストを実行させるように構成される。【選択図】図１
2005149503.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム（１００）であって、
プロセッサ（１１０）と、
前記プロセッサに結合された第１のバス（１５２）と、
前記第１のバスに結合されたメモリコントローラ（１２２、４２８）と、
前記メモリコントローラに結合されたメモリ（１３０）と、
前記第１のバスに結合された第１の入出力（Ｉ／Ｏ）コントローラ（１２４、４２４）と、
前記第１のＩ／Ｏコントローラに結合されたテストモジュール（１２８）と、
を備え、
前記テストモジュールは、前記第１のバスを使用して前記メモリに対するテストを実行させるように構成される、コンピュータシステム。
【請求項２】
オペレーティングシステムをさらに備え、
前記プロセッサは前記オペレーティングシステムを起動させるように構成され、前記テストモジュールは、前記オペレーティングシステムが起動した後に、前記第１のバスを使用して前記メモリに対するテストを実行させるように構成される、請求項１記載のコンピュータシステム。
【請求項３】
オペレーティングシステムをさらに備え、
前記プロセッサは前記オペレーティングシステムを実行させるように構成され、前記テストモジュールは、前記オペレーティングシステムの実行中に、前記第１のバスを使用して前記メモリに対するテストを実行させるように構成される、請求項１記載のコンピュータシステム。
【請求項４】
前記第１のバスはシステムバスを含む、請求項１記載のコンピュータシステム。
【請求項５】
前記第１のバスに結合された第２のＩ／Ｏコントローラ（１２４、４２４）と、
該第２のＩ／Ｏコントローラに結合された第２のバス（１５６）と、
該第２のバスに結合された装置（１４０）と、
をさらに備える、請求項１記載のコンピュータシステム。
【請求項６】
前記テストモジュールは、読み出しおよび書き込みトランザクションを前記第１のＩ／Ｏコントローラに供給することにより、前記第１のバスを使用して前記メモリに対するテストを実行させるように構成される、請求項１記載のコンピュータシステム。
【請求項７】
前記読み出しおよび書き込みトランザクションは直接メモリアクセス（ＤＭＡ）トランザクションを含む、請求項６記載のコンピュータシステム。
【請求項８】
前記第１のバスおよび前記第１のＩ／Ｏコントローラに結合されたバスブリッジ（１２６）をさらに備える、請求項１記載のコンピュータシステム。
【請求項９】
メモリ（１３０）を備えたコンピュータシステム（１００）により実行される方法であって、
前記コンピュータシステムの動作中にテストするメモリの部分（２０２）を選択するステップと、
入出力（Ｉ／Ｏ）コントローラ（１２４、４２４）に結合されたテストモジュール（１２８）においてテストトランザクションを生成するステップと、
直接メモリアクセス（ＤＭＡ）を使用して前記テストトランザクションを前記部分に供給するステップ
とを含む、方法。
【請求項１０】
前記テストトランザクションに応答して発生するエラーを検出するステップと、
前記エラーの検出に応答して是正措置を実行するステップ
とをさらに含む、請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのメモリをテストするためのシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータシステムは一般に、１つまたは複数のプロセッサおよびメモリシステムを備える。メモリシステムは多くの場合、比較的高速かつ高価なメモリから比較的低速かつ安価なメモリまで複数レベルのメモリデバイスを備える。メモリシステムの第１のレベルの１つは主メモリと呼ばれ、通常、ある形態のランダムアクセスメモリ（ＲＡＭ）から構成される。動作時、コンピュータシステムは、オペレーティングシステムおよび１つまたは複数のアプリケーションを主メモリにロードして、プロセッサ（複数可）による実行を可能にする。
【０００３】
主メモリは、オペレーティングシステムおよびアプリケーションを収容することから、コンピュータシステムの極めて重要なコンポーネントとなりうる。主メモリに発生する故障は、システムにおいて広範囲の故障を発生させ、またおそらくシステムをクラッシュさせる恐れがある。そのため、故障を引き起こす前に主メモリのエラーを検出することが一般に望ましい。
【０００４】
メモリエラーは、既知の情報をメモリに書き込み、次にその情報を読み出して正しいか否かを判定することによって検出することができる。しかしメモリエラーによってはパターン応答性を有するものがあり、選択された情報パターンがメモリに書き込まれることに応答して現れるだけのものがある。メモリの診断テストによっては、コンピュータシステムがオンになる、またはリセットされることに応答して行われるものがある。しかしこのタイプのテストは、長い時間期間にわたってオンのままであり、かつリセットされないコンピュータシステムにおけるエラーを検出しない場合がある。
【０００５】
メモリデバイスによってはコンピュータシステムの動作中に作動するエラー訂正機能を備えるものもあるが、こういった機能は通常、特定のメモリロケーション（メモリ位置）の読み出しに応答してのみエラーを検出する。メモリの多くの領域は定期的に読み出されない可能性があるため、こういった領域において発生するエラーは、故障したメモリロケーションへのアクセスが行われるまで未検出のままであり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、メモリエラーがシステムの動作中に故障を引き起こす前にコンピュータシステムの主メモリのすべての領域のエラーを検出することが可能であることが望ましい。
【課題を解決するための手段】
【０００７】
例示的な一実施形態によれば、プロセッサ、プロセッサに結合された第１のバス、第１のバスに結合されたメモリコントローラ、メモリコントローラに結合されたメモリ、第１のバスに結合された第１の入出力（Ｉ／Ｏ）コントローラ、および第１のＩ／Ｏコントローラに結合されたテストモジュールを備えるコンピュータシステムが提供される。テストモジュールは、第１のバスを使用してメモリに対するテストを実行させるように構成される。
【実施例】
【０００８】
以下の好ましい実施形態の詳細な説明では、本明細書の一部を成す添付図面であって、本発明を実施することができる特定の実施形態を例示として示す添付図面を参照する。他の実施形態も利用することが可能であり、本発明の範囲から逸脱することなく構造的または論理的変更を行うことができることを理解されたい。したがって以下の詳細な説明は、限定の意味で解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲によって規定される。
【０００９】
本開示の一局面では、コンピュータシステムは、入出力（Ｉ／Ｏ）コントローラに結合されたテストモジュールを備える。テストモジュールは、コンピュータシステムの動作中に、すなわちオペレーティングシステムが起動した後で、かつオペレーティングシステムの実行中にコンピュータシステムの主メモリの部分をテストするように構成される。テストモジュールはテストトランザクションをＩ／Ｏコントローラに供給し、Ｉ／Ｏコントローラは直接メモリアクセス（ＤＭＡ）を使用して主メモリに対するテストを実行させる。テストモジュールは、テスト中のエラー検出に応答して是正措置（すなわち、修復措置）をとらせることができる。
【００１０】
図１は、直接メモリアクセス（ＤＭＡ）を使用して、動作中にメモリをテストするように構成されたコンピュータシステム１００の１実施形態を示すブロック図である。コンピュータシステム１００は、ハンドヘルド、デスクトップ、ノートブック、モバイル、ワークステーション、またはサーバコンピュータ等、任意のタイプのコンピュータシステムであってもよい。コンピュータシステム１００はプロセッサ１１０ａ〜１１０（ｎ）、コア電子回路複合体１２０、メモリ１３０、および入出力（Ｉ／Ｏ）デバイスのセット１４０を備える。プロセッサ１１０ａ〜１１０（ｎ）はそれぞれ、バス接続１５２のセットを使用してコア電子回路複合体１２０に結合される。バス接続１５２はシステムバスのセットを含む。コア電子回路複合体１２０は、接続１５４および１５６をそれぞれ使用してメモリ１３０およびＩ／Ｏデバイス１４０に結合される。コア電子回路複合体１２０はチップセットと呼ぶこともできる。
【００１１】
コンピュータシステム１００は、１以上の任意の数のプロセッサ１１０を備える。本明細書では、「プロセッサ１１０」はプロセッサ１１０ａ〜１１０（ｎ）のいずれか１つを指し、「プロセッサ１１０（複数）」はプロセッサ１１０ａ〜１１０（ｎ）のセットを指す。
【００１２】
プロセッサ１１０ａはキャッシュ１１２に結合され、プロセッサ１１０ｂはキャッシュ１１４を備える。キャッシュ１１２および１１４は、命令およびデータ等、任意のタイプの情報を記憶することができる。他のプロセッサ１１０は、任意のタイプまたは任意の数のキャッシュを備えてもよく、また、任意のタイプまたは任意の数のキャッシュとともに動作可能であってよい。
【００１３】
コンピュータシステム１００は、プロセッサ１１０（複数）の１つまたは複数によって実行可能なオペレーティングシステム（図示せず）も備える。オンになる、またはリセットされることに応答して、プロセッサ１１０（複数）の１つまたは複数はオペレーティングシステムを起動させて実行させる。プロセッサ１１０（複数）は、メモリ１３０を使用してオペレーティングシステムおよび他のプログラムからの命令を実行する。
【００１４】
コア電子回路複合体１２０は、メモリコントローラ１２２、Ｉ／Ｏコントローラのセット１２４、バスブリッジ１２６、およびテストモジュール１２８を備える。メモリコントローラ１２２は、プロセッサ１１０（複数）、テストモジュール１２８およびＩ／Ｏデバイス１４０からの書き込みおよび読み出しトランザクションそれぞれに応答して、情報をメモリ１３０に記憶し、また情報をメモリ１３０から読み出すように構成される。メモリコントローラ１２２は、メモリ１３０からの情報の読み出しに応答して、メモリ１３０に対してメモリスクラビング（memory scrubbing）または他のエラー訂正機能を実行するように構成されたハードウェアおよび／またはソフトウェアを備えることができる。
【００１５】
Ｉ／Ｏコントローラ１２４は、１つまたは複数のＩ／Ｏデバイス１４０を管理するように構成された任意のタイプおよび任意の数のコントローラを含むことができる。Ｉ／Ｏコントローラ１２４の例としては、ＩＤＥ／ＡＴＡコントローラ、ＳＡＴＡコントローラ、ＰＣＩコントローラ、ＳＣＳＩコントローラ、ＵＳＢコントローラ、ＩＥＥＥ１３９４（ファイアワイヤ）コントローラ、ＰＣＭＣＩＡコントローラ、パラレルポートコントローラ、およびシリアルポートコントローラが挙げられる。一実施形態では、Ｉ／Ｏコントローラ１２４は、バスブリッジ１２６に結合された中間バス、中間バスに結合されたＰＣＩコントローラ、ならびにＰＣＩコントローラに結合されたＳＣＳＩ、ＩＤＥ、および他のコントローラを備えた複数のマイクロチップから構成される。
【００１６】
メモリ１３０は、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、およびＤＤＲ  ＳＤＲＡＭ等、メモリコントローラ１２２によって管理される任意のタイプのメモリから構成される。システムファームウェア（図示せず）またはオペレーティングシステムからのコマンドに応答して、メモリコントローラ１２２は、ハードドライブまたはＣＤ−ＲＯＭドライブ等のＩ／Ｏデバイス１４０から情報をメモリ１３０にロードさせることができる。
【００１７】
Ｉ／Ｏデバイス１４０は、Ｉ／Ｏコントローラ１２４を使用してコンピュータシステム１００と通信するように構成された任意のタイプおよび任意の数の装置を含むことができる。各Ｉ／Ｏデバイス１４０は、コンピュータシステム１００の内部にあっても、外部にあってもよく、Ｉ／Ｏコントローラ１２４に結合された拡張スロットに結合することができる。Ｉ／Ｏデバイス１４０は、コンピュータシステム１００が他のコンピュータシステムおよび情報を記憶するように構成された記憶装置（図示せず）と通信できるようにするネットワーク装置（図示せず）を含むことができる。
【００１８】
テストモジュール１２８は、テストトランザクションを生成し、テストトランザクションをＩ／Ｏコントローラ１２４の１つに供給することにより、ＤＭＡを使用してコンピュータシステムの動作中にメモリ１３０に対するテストを実行させるように構成される。テストトランザクションは、メモリ１３０に対する情報の読み書きそれぞれを実行させるように構成された読み出しおよび書き込みトランザクションを含む。テストトランザクションは、メモリ１３０の選択されたロケーションの動作および機能を検証するように構成されたパターンテストまたは他の任意のタイプの読み出し及び書き込みトランザクション、または、それらのトランザクションの任意の組み合わせを含むことができる。
【００１９】
コンピュータシステム１００は、テストモジュール１２８およびＩ／Ｏデバイス１４０がメモリ１３０と対話できるようにする複数のＤＭＡチャネルを備える。ＤＭＡを使用するために、テストモジュール１２８またはＩ／Ｏデバイス１４０は、テストトランザクション等のＤＭＡトランザクションをＩ／Ｏコントローラ１２４に送る。ＤＭＡトランザクションは、Ｉ／Ｏコントローラ１２４からバスブリッジ１２６に進み、バス接続１５２を使用して次にメモリコントローラ１２２に進む。メモリコントローラ１２２はＤＭＡトランザクションを実行させる。
【００２０】
テストモジュール１２８は、メモリコントローラ１２２に含まれるエラー訂正機能のレベルに応じて、メモリコントローラ１２２に関連して動作するように合わせる（または調整する）ことができる。たとえば、メモリコントローラ１２２がメモリスクラビングまたは他のエラー訂正メカニズムを実施する実施形態では、テストモジュール１２８を、主に読み出しトランザクションを生成するように構成することができる。読み出しトランザクションに応答して、メモリコントローラ１２２のメモリスクラビングまたはエラー訂正機能が、メモリ１３０のエラーを検出し、可能であればエラーを修正する。メモリコントローラ１２２がメモリスクラビングまたは他のエラー訂正メカニズムを備えない実施形態では、テストモジュール１２８を、メモリ１３０にパターンを書き込み、そのパターンをメモリ１３０から読み出してエラーを検出するように構成することができる。
【００２１】
以下、テストモジュール１２８の動作について図２および図３を参照して述べる。図２はコンピュータシステム１００の一部分の一実施形態を示すブロック図であり、図３はコンピュータシステム１００の動作中に、ＤＭＡを使用してメモリ１３０をテストするための方法の一実施形態を示すフローチャートである。この方法はテストモジュール１２８によって実行される。
【００２２】
テストモジュール１２８は、ブロック３０２に示すように、コンピュータシステム１００の動作中にメモリ１３０の一部分２０２を選択して、その部分２０２へのアクセスを得る。実施態様に応じて、テストモジュール１２８は、要求をオペレーティングシステムに送ることにより、要求をメモリコントローラ１２２に送ることにより、メモリ１３０の未使用部分を割り振ることにより、または他の任意の適した方法により一部分２０２へのアクセスを得ることができる。メモリコントローラ１２２がメモリスクラビングまたは他のエラー訂正メカニズムを実施する実施形態では、テストモジュール１２８は、メモリ１３０の一部分をテストする前にその部分へのアクセスを得るステップを省くことができる。
【００２３】
テストモジュール１２８は、ブロック３０４に示すようにテストトランザクションを生成する。テストトランザクションは、メモリ１３０内の部分２０２に対する情報の読み出しまたは書き込みそれぞれを実行させるように構成された読み出しまたは書き込みトランザクションであることができる。テストモジュール１２８は、ブロック３０６に示すように、ＤＭＡを使用してテストトランザクションをメモリ１３０に供給する。図２の実施形態では、テストモジュール１２８は、接続２１０を使用してテストトランザクションをＩ／Ｏコントローラ１２４に供給することによってこれを達成する。Ｉ／Ｏコントローラ１２４は、接続２１２を使用してトランザクションをバスブリッジ１２６に供給する。バスブリッジ１２６は、バス接続２１４を使用してトランザクションをメモリコントローラ１２２に供給する。バス接続２１４はバス接続１５２の１つを構成する。メモリコントローラ１２２は、メモリ１３０の部分２０２から情報を読み出すことにより、またはメモリ１３０の部分２０２に情報を記憶することにより、テストトランザクションを実行させる。読み出しトランザクションの場合、メモリコントローラ１２２は情報を部分２０２から読み出させ、接続２１４、２１２、および２１０を使用してテストモジュール１２８に供給させる。
【００２４】
ブロック３０８に示すように、テストモジュール１２８により、エラーが部分２０２において検出されたか否かについて判定される。テストモジュール１２８が部分２０２のエラーを検出した場合には、ブロック３１０に示すように是正措置がとられる。是正措置には、エラーの修正、エラーアドレスの記録、ならびに／またはオペレーティングシステム、メモリコントローラ１２２、および／またはシステム管理者へのエラーの通知を含めることができる。
【００２５】
テストモジュール１２８が部分２０２のエラーを検出しない場合には、ブロック３１２に示すように、テストモジュール１２８により、部分２０２に対して実行すべきテストがまだあるか否かが判定される。部分２０２に対して実行すべきテストがまだある場合には、ブロック３０４における機能が繰り返される。
【００２６】
部分２０２に対して実行すべきテストがもうない場合、ブロック３１４に示すように、テストモジュール１２８は部分２０２へのアクセスを手放す。ブロック３１４の機能は、テストモジュール１２８がメモリ１３０の各部分へのアクセスを得るステップを省略する実施形態では省かれることができる。
【００２７】
ブロック３１６に示すように、テストモジュール１２８により、メモリ１３０においてテストすべき別の部分があるか否かが判定される。メモリ１３０にテストすべき別の部分がある場合、ブロック３０２の機能が繰り返される。メモリ１３０にテストすべき別の部分がない場合、方法は終了する。
【００２８】
メモリコントローラ１２２が、メモリ１３０からの情報の読み出しに応答してメモリスクラビングまたは他のエラー訂正機能を実行するように構成される実施形態では、エラーを検出することができ、テストモジュール１２８からのテストトランザクションに応答してメモリコントローラ１２２が是正措置を実行することができる。是正措置には、エラーを修正し、エラーを記録することを含めることができる。
【００２９】
特定の実施形態では、コンピュータシステム１００は、テストモジュール１２８と通信することができるソフトウェア診断機能を備える。診断機能と併せて、テストモジュール１２８はメモリ１３０の目的とされた読み出し、書き込み、およびパターンテストを行うことができる。メモリ１３０の一部分へのアクセスを得ることに応答して、テストモジュール１２８は、診断機能からの通信に応答して読み出し、書き込み、およびパターンテストの任意の組合せを通してメモリ１３０の特定のロケーション（位置）をテストすることができる。診断機能は、オペレーティングシステムまたは他のアプリケーションの一部として含めてもよく、また別個のプログラムであってもよい。
【００３０】
テストモジュール１２８を、システム管理者がオペレーティングシステムまたは別の適したインタフェースを使用してメモリ１３０に対するテストを構成することができるように設計することができる。オペレーティングシステムまたはインタフェースは、管理者が、たとえばテストの時間および頻度、テストするメモリの特定の部分（たとえば、頻繁に使用される部分）、および故障の場合にとるべき措置を選択できるようにすることができる。
【００３１】
テストモジュール１２８は、ハードウェアコンポーネントおよびソフトウェアコンポーネントの任意の適した組み合わせを含むことができる。
【００３２】
図４は、動作中に、ＤＭＡを使用してメモリ１３０をテストするように構成されたコンピュータシステム１００の代替の一実施形態を示すブロック図である。図４に示す実施形態では、コア電子回路複合体４２０がコア電子回路複合体１２０にとって代わっている。コア電子回路複合体４２０は、システムコントローラ４２２、Ｉ／Ｏコントローラ４２４、およびテストモジュール１２８を備える。システムコントローラ４２２はメモリコントローラ４２８を備える。
【００３３】
テストモジュール１２８は、図１、図２、および図３の実施形態で動作したのと概ね同じように図４の実施形態でも動作する。図４の実施形態では、ＤＭＡトランザクションは、バス接続１５２を使用するのではなく、Ｉ／Ｏコントローラ４２４とシステムコントローラ４２２の間の接続のセット４３０の１つを使用して実行される。したがって、テストモジュール１２８のテストトランザクションは、接続４３０を使用してテストモジュール１２８からＩ／Ｏコントローラ４２４へ、そしてシステムコントローラ４２２へ進む。メモリコントローラ４２８はテストトランザクションを処理し、読み出しトランザクションの場合、接続４３０を使用して読み出しトランザクションに関連する情報をＩ／Ｏコントローラ４２４に提供する。
【００３４】
図４に示すように、テストモジュール１２８は、構成の異なるコア電子コンポーネントまたはチップセットともともに動作するように構成される。したがって、テストモジュール１２８はまた、ここに示していない他のコア電子コンポーネントまたはチップセットとも動作するように構成される。
【００３５】
本発明の一実施形態のコンピュータシステム(100)は、プロセッサ(110)、プロセッサに結合された第１のバス(152)、第１のバスに結合されたメモリコントローラ(122,428)、メモリコントローラに結合されたメモリ(130)、第１のバスに結合された第１の入力/出力(I/O)コントローラ(124,424)、第１のI/Oコントローラに結合されたテストモジュール(128)を備える。テストモジュールは、第１のバスを使用してメモリに対するテストを実行させるように構成される。
【００３６】
上記実施形態は、メモリエラーの検出にＤＭＡを使用しないシステムに対して利点を有する。たとえば、コンピュータシステムは、他のタイプのメモリエラー検出を使用する場合よりも容易に、ＤＭＡを使用して検出されたメモリエラーを修正することができる。さらに、ＤＭＡアクセスでは、オペレーティングシステムレベルのプロセスよりもプロセッサオーバヘッドを少なくすることができる。さらに、オペレーティングシステムレベルのプロセスは、オペレーティングシステムに関連するリカバリ問題を有する場合がある。
【００３７】
特定の実施形態について本明細書に図示し説明したが、本発明の範囲から逸脱することなく、様々な代替および／または等価な実施態様で、図示し説明した特定の実施形態を置き換えることができることが当業者には理解されよう。本願は、本明細書に開示した特定の実施形態の任意の変更形態またはバリエーションを網羅することを意図している。したがって、本発明は特許請求の範囲およびその等価物によってのみ限定されることが意図されている。
【図面の簡単な説明】
【００３８】
【図１】ＤＭＡを使用して、動作中にメモリをテストするように構成されたコンピュータシステムの一実施形態を示すブロック図である。
【図２】図１に示すコンピュータシステムの一部分の一実施形態を示すブロック図である。
【図３】ＤＭＡを使用してコンピュータシステムの動作中にメモリをテストするための方法の一実施形態を示すフローチャートである。
【図４】ＤＭＡを使用して、動作中にメモリをテストするように構成されたコンピュータシステムの代替の一実施形態を示すブロック図である。
【符号の説明】
【００３９】
１００  コンピュータシステム
１１０  プロセッサ
１２２、４２８  メモリコントローラ
１２４、４２４  I/Oコントローラ
１２８  テストモジュール
１３０  メモリ
１５２  バス
【図１】
2005149503.tif 000003
【図２】
2005149503.tif 000004
【図３】
2005149503.tif 000005
【図４】
2005149503.tif 000006