(57)【要約】【課題】コンピュータシステム内のメモリエラーの原因を正確に決定する装置を提供する。【解決手段】本発明のシステムは、第１に、第１のプロセッサによってメインメモリにおけるメモリ位置へのアクセスの間、訂正可能なエラーを検出する（４０２）。訂正可能なエラーは、エラー検出および訂正回路によって検出される。次にシステムは、メモリ位置に関連されたキャッシュラインのためのタグビットを読み取る（４０８）。タグビットは、キャッシュラインのための一貫性プロトコル状態を示す状態情報だけでなく、キャッシュラインのアドレス情報をも含む。次いで、テスト結果を生成するために、第１のプロセッサに、メモリ位置に対する読み取りおよび書き込み動作を実行させることによって、メモリ位置をテストする。最後にシステムは、可能な場合、訂正可能なエラーの原因を決定する（４１８、４３０、４３２）ために、テスト結果およびタグビットを使用する。【選択図】図４
2006146920.tif 000002
【特許請求の範囲】
【請求項１】
訂正可能なメモリエラーの原因を決定する方法であって、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、エラー検出訂正回路によって検出される該訂正可能なエラーを検出することと、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取ることであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、ことと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストすることと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用することと
を包含する、方法。
【請求項２】
前記メモリ位置をテストすることが、
前記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアすることと、
キャッシュから前記キャッシュラインをフラッシュすることと、
該メモリ位置を再度読み取ることであって、それによって、メインメモリから該キャッシュへ、該キャッシュラインが引き戻される、ことと、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、クリアすることと、
前記エラー検出訂正回路に、該訂正可能なエラーを訂正させることと、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すことと
を包含する、請求項１に記載の方法。
【請求項３】
前記メモリ位置を再度読み取ることが、前記キャッシュにおける修正された状態において前記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行することを包含する、請求項１に記載の方法。
【請求項４】
前記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせない場合、前記訂正可能なエラーの原因を決定することが、
前記読み取りタグビットを試験することと、
前記タグからのアドレスビットが、前記ＡＦＡＲからの訂正可能なエラーの読み取りのアドレスの対応するビットと一致する場合、および、キャッシュラインが該タグビットが読み取られた場合にキャッシュにおいて、共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定することと
を含む、請求項２に記載の方法。
【請求項５】
前記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、前記方法が、
該メモリ位置をさらに再度読み取ることと、
前記ＡＦＳＲおよび前記ＡＦＡＲレジスタを再度読み取りおよびクリアすることと
をさらに包含する、請求項２に記載の方法。
【請求項６】
前記メモリをさらに再度読み取ることが訂正可能なエラーを生じさせない場合、前記方法が、
所定の時間間隔の後に前記メモリ位置を再度読み取ることと、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが、訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定することと、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定することと
をさらに包含する、請求項５に記載の方法。
【請求項７】
前記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、前記方法が、
第２のプロセッサに、該訂正可能なエラーを分類させることと、
該第２のプロセッサがエラーを検出しない場合、前記第１のプロセッサが不良な読み取り装置であると決定することと、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定することと、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定することと
をさらに包含する、請求項５に記載の方法。
【請求項８】
コンピュータによって実行された場合、該コンピュータに、訂正可能なメモリエラーの原因を決定するための方法を実行させる命令を記憶するコンピュータ可読の記憶媒体であって、該方法は、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、エラー検出訂正回路によって検出される訂正可能なエラーを検出することと、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取ることであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、ことと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストすることと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用することと
を包含する、コンピュータ可読の記憶媒体。
【請求項９】
前記メモリ位置をテストすることが、
前記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアすることと、
キャッシュから前記キャッシュラインをフラッシュすることと、
該メモリ位置を再度読み取ることであって、それによって、メインメモリから該キャッシュへ、該キャッシュが引き戻される、ことと、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、およびクリアすることと、
前記エラー検出訂正回路に、訂正可能なエラーを訂正させることと、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すことと
を含む、請求項８に記載のコンピュータ可読の記憶媒体。
【請求項１０】
前記メモリ位置を再度読み取ることが、前記キャッシュにおける修正された状態において、前記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行することを包含する、請求項８に記載のコンピュータ可読の記憶媒体。
【請求項１１】
前記メモリ位置を再度読み取ることが、訂正可能なエラーを生じさせない場合、該訂正可能なエラーの原因を決定することが、
以前の読み取りタグビットを試験することと、
前記タグからのアドレスビットが前記ＡＦＡＲからの該訂正可能なエラー読み取りの前記アドレスに対応するビットと一致する場合、および、キャッシュラインが、該タグビットが読み取られた場合にキャッシュにおいて、共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定することと
を含む、請求項９に記載のコンピュータ可読の記憶媒体。
【請求項１２】
前記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、前記方法が、
該メモリ位置をさらに再度読み取ることと、
前記ＡＦＳＲおよび前記ＡＦＡＲレジスタを再度読み取り、クリアすることと
をさらに包含する、請求項９に記載のコンピュータ可読の記憶媒体。
【請求項１３】
前記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせない場合、前記方法が、
所定の時間間隔の後に該メモリ位置を再度読み取ることと、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定することと、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定することと
をさらに包含する、請求項１２に記載のコンピュータ可読の記憶媒体。
【請求項１４】
前記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、前記方法が、
第２のプロセッサに該訂正可能なエラーを分類させることと、
該第２のプロセッサがエラーを検出しない場合、前記第１のプロセッサが不良な読み取り装置であると決定することと、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定することと、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定することと
をさらに包含する、請求項１２に記載のコンピュータ可読の記憶媒体。
【請求項１５】
前記訂正可能なメモリエラーの原因を決定する装置であって、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、訂正可能なエラーを検出するように構成されたエラー訂正検出回路と、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取るように構成された読み取りメカニズムであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、読み取りメカニズムと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストするように構成されたテストメカニズムと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用するように構成された、エラー分類メカニズムと
を備える、装置。
【請求項１６】
前記テストメカニズムが、
前記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアするように、
キャッシュから前記キャッシュラインをフラッシュするように、
該メモリ位置を再度読み取るようにであって、それによって、メインメモリから該キャッシュへ、該キャッシュラインが引き戻される、ように、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、クリアするように、
前記エラー検出訂正回路に、該訂正可能なエラーを訂正させるように、および、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すように、
構成される、請求項１５に記載の装置。
【請求項１７】
前記メモリ位置を再度読み取る間、前記テストメカニズムは、前記キャッシュにおける修正された状態において前記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行するように構成されている、請求項１５に記載の装置。
【請求項１８】
前記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせない場合、エラー分類メカニズムが、
以前に読み取られたタグビットを試験するように、および、
前記タグからのアドレスビットが、前記ＡＦＡＲからの訂正可能なエラー読み取りのためのアドレスに対応するビットと一致する場合、および、キャッシュラインが、該タグビットが読み取られていた場合にキャッシュにおいて共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定するように
構成される、請求項１６に記載の装置。
【請求項１９】
前記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、前記エラー分類メカニズムが、
該メモリ位置をさらに再度読み取るように、および、
前記ＡＦＳＲおよび前記ＡＦＡＲレジスタを再度読み取り、クリアするように
構成される、請求項１６に記載の装置。
【請求項２０】
前記メモリをさらに再度読み取ることが訂正可能なエラーを生じさせない場合、前記エラー分類メカニズムが、
所定の時間間隔の後に前記メモリ位置を再度読み取るように、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定するように、および、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定するように、
構成される、請求項１９に記載の装置。
【請求項２１】
前記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、前記エラー分類メカニズムは、
第２のプロセッサに、該訂正可能なエラーを分類させるように、
該第２のプロセッサがエラーを検出しない場合、前記第１のプロセッサが不良な読み取り装置であると決定するように、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定するように、および、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定するように、
構成される、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおけるエラーを扱うための技術に関する。より詳細には、本発明は、コンピュータシステムにおけるメモリエラーを分類するための方法および装置に関する。
【背景技術】
【０００２】
コンピュータメモリは増加的に容量がより大きくなり、個々のメモリセルは進歩的により小さくなるにつれて、宇宙線のような自然現象のためにエラーが相当に発生し得るようになってきている。さらに、コンピュータシステムが速度を速め続けているので、データは、プロセッサとメモリとの間のより速い速度で転送されなければならない。これは、データエラーの別のソースを作成する。なぜならば、より速いデータ速度は、プロセッサとメモリとの間のデータを転送する一方でエラーが生じる可能性を増大させるからである。
【０００３】
通常、コンピュータシステムは、メモリエラーを検出および訂正するためにエラー訂正コードを使用する。これは、普通、メモリにおけるそれぞれのデータワードに沿って、記憶されたエラー訂正コード（ｅｒｒｏｒ−ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ）（ＥＣＣ）ビットを含み、次いで、データワードがメインメモリとプロセッサ（関連されたキャッシュメモリ）との間で転送された場合に、データワードに沿ってＥＣＣビットを転送する。一般に使用されるエラー訂正コードは、通常、それぞれのデータワードのための、２ビットエラー検出（ｄｏｕｂｌｅ−ｅｒｒｏｒ  ｄｅｔｅｃｔｉｏｎ）および１ビットエラー訂正（ｓｉｎｇｌｅ−ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ）をサポートする。それゆえ、コンピュータシステムは、通常、メインメモリから引き出されるデータワードにおける、２ビットエラーおよび１ビットエラーを検出することができる。
【０００４】
一部のコンピュータシステムは、さらに一ステップ進み、メモリエラーの原因を決定するためのメカニズムを提供する。例えば、メインメモリからデータワードを読み取る一方で、訂正可能なエラーに遭遇した場合、コンピュータシステムは、メモリエラーのその原因を決定するために、二回目の読み取る時にデータワードを読み取ることができる。エラーが、二回目の読み取りの間に発生しない場合、そのシステムは、エラーが「間欠エラー」であると決定することができ、例えば、それは、プロセッサとメインメモリとの間のデータライン上の一過性のノイズによって生じる。
【０００５】
他方で、二回目の読み取りはまた、エラーに遭遇した場合、コンピュータシステムがデータワードを訂正し、メインメモリにそれを書き込むために、そのＥＣＣ回路を使用することができる。次いで、エラーの原因を決定するために、コンピュータシステムは、３回目で、データワードを読み取ることができる。３回目の読み取りはまた、エラーと遭遇した場合、システムは、エラーが「スティッキー（ｓｔｉｃｋｙ）エラー」であること（「スティッキーエラー」は、例えば、メインメモリにおけるワードデータにおいて、「スタック（ｓｔｕｃｋ）」ビットによって生じる）を決定することができる。他方で、三回目の読み取りが訂正されたデータワードを戻す場合、システムは、エラーが「永続的エラー」であったこと（メインメモリにおけるデータワードの状態における変化によって生じ得る）を決定することができる。
【０００６】
残念ながら、メモリエラーの原因を決定するための上記に記載されたメカニズムは、キャッシュメモリの存在において非常に複雑になり得ている。キャッシュメモリがメインメモリへのアクセスを媒介することに注意したい。しかしながら、そうすることによって、キャッシュメモリは、誤った（ｅｒｒａｎｔ）メモリアクセスをリトライする企てを妨害し、それにより、メモリエラーの原因を決定するプロセスを妨害することができる。
【０００７】
例えば、コンピュータシステムに、メモリ位置への二回目の読み取り動作を実行させるために、キャッシュからのメモリ位置に関連されたキャッシュラインを除去する（ｆｌｕｓｈ）ことが第１に必要であり、その読み取り動作は実際に、キャッシュラインに、メインメモリから引き出させる。しかしながら、この除去が起こった場合で、キャッシュラインが汚れていた場合、その除去は、キャッシュラインをメモリへ記憶され戻させ、エラーを訂正し得る。それゆえ、メモリからの次の二回目の読み取りはエラーと遭遇し得ない。これは、エラーが実際には永続的エラーであった場合だとしても、間欠エラーとして診断されたエラーという結果になり得る（誤診断エラーのこのタイプは「偽（ｆａｌｓｅ）間欠エラー」と呼ばれる）。
【０００８】
さらに、既存の技術はメモリエラーの特定のタイプの間の差異を識別することができない。例えば、「リーキー（ｌｅａｋｙ）セル」状態は、メモリセルが負荷を持たない場合に起こり得る。この場合、上記に記載されたメカニズムは、そのエラーがリーキーセルである代わりに、永続的エラーであると誤って決定する。さらに、エラーは、マルチプロセッサシステムにおける特定のプロセッサが、「不良な読み取り装置（ｂａｄ  ｒｅａｄｅｒ）」または「不良な書き込み装置（ｂａｄ  ｗｒｉｔｅｒ）」である場合、エラーは起こり得る。エラーのこれらのタイプは、既存の技術にては、どちらも診断され得ない。
【０００９】
明らかに、メモリエラーの原因が正確に決定され得る場合に、効果的な矯正アクションが取られ得る。例えば、メモリエラーが正確に診断されてない場合、一部分が取り替えられる必要があるかどうか、その場合、どの部分が取り替えられる必要があるかどうかを、確かめることは不可能である。
【００１０】
それゆえ、必要となるものは、上記に記載された問題なしで、コンピュータシステム内のメモリエラーの原因を正確に決定する方法および装置である。
【発明の開示】
【課題を解決するための手段】
【００１１】
本発明における一実施形態は、訂正可能なメモリエラーの原因を決定するシステムを提供することである。第１に、システムは、第１のプロセッサによってメインメモリにおけるメモリ位置へのアクセスの間、訂正可能なエラーを検出する。その訂正可能なエラーは、エラー検出訂正回路によって検出される。次に、システムは、メモリ位置に関連されたキャッシュラインのためのタグビットを読み取る。そのタグビットは、キャッシュラインのための一貫性プロトコル状態（ｃｏｈｅｒｅｎｃｙ  ｐｒｏｔｏｃｏｌ  ｓｔａｔｅ）を示す状態情報と、キャッシュラインのためのアドレス情報をも含む。次いでシステムは、テスト結果を生成するために、第１のプロセッサに、メモリ位置へ読み取り動作および書き込み動作を実行させることによって、メモリ位置をテストする。最後に、システムは、可能な場合、訂正可能なエラーの原因を決定するために、テスト結果およびタグビットを使用する。
【００１２】
この実施形態での一つの変形において、メモリ位置をテストすることは、訂正可能なエラーについての情報を含むａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアすることと、キャッシュからキャッシュラインをフラッシュする（ｆｌｕｓｈ）ことと、キャッシュラインを、メインメモリからキャッシュに引き込まさせられることで、メモリ位置を再度読み取ることと、ＡＦＳＲおよびＡＦＡＲレジスタを読み取り、クリアすることと、エラー検出訂正回路に、訂正可能なエラーを訂正させることと、メインメモリへキャッシュライン（エラーは訂正されている）をフラッシュして戻すこととを含む。
【００１３】
さらなる変形において、メモリ位置を再度読み取ることは、キャッシュにおける修正された状態においてキャッシュラインが存在することを保証するために、微小の比較およびスワップ（ＣＡＳ）動作の実行を含む。
【００１４】
さらなる変形において、メモリ位置を再度読み取ることが訂正可能なエラーを生じさせない場合、システムは、以前の読み取りタグビットを試験することによって訂正可能なエラーの原因を決定する。システムは、（１）タグからのアドレスビットが、ＡＦＡＲから訂正可能なエラー読み取りのためのアドレスに対応するビットと一致する場合、および、（２）タグからの状態ビットが、タグビットが読み取られた場合、キャッシュラインがキャッシュにおいて、共有された状態、または排他的な状態のいずれかである場合、訂正可能なエラーが間欠エラーであると決定する。
【００１５】
さらなる変形において、メモリ位置を再度読み取ることが、訂正可能なエラーを生じさせる場合、システムは、さらに再度メモリ位置を読み取り、ＡＦＳＲおよびＡＦＡＲを読み取り、クリアする。
【００１６】
さらなる変形において、メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせない場合、システムは、所定の時間間隔の後にメモリ位置を読み取る。所定の時間間隔の後にメモリ位置を読み取ることが訂正可能なエラーを生じさせる場合、システムは、メモリ位置がリーキーであることを決定する。さもなければ、システムは、訂正可能なエラーが永続的エラーであることを決定する。
【００１７】
この実施形態での一つの変形において、メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、システムは、第２のプロセッサに、訂正可能なエラーを分類させる。第２のプロセッサがエラーを検出しない場合、システムは、第１のプロセッサが不良な読み取り装置であることを決定する。第２のプロセッサがスティッキーなエラーではないエラーを検出する場合、システムは第１のプロセッサが不良な書き込み装置であることを決定する。さもなければ、第２のプロセッサがスティッキーなエラーを検出する場合、システムは、メモリ位置における少なくとも一つのビットがスタックしている（ｉｓ  ｓｔｕｃｋ）ことを決定する。
【００１８】
本発明は、さらに以下の手段を提供する。
【００１９】
（項目１）  
訂正可能なメモリエラーの原因を決定する方法であって、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、エラー検出訂正回路によって検出される該訂正可能なエラーを検出することと、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取ることであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、ことと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストすることと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用することと
を包含する、方法。
【００２０】
（項目２）  
上記メモリ位置をテストすることが、
上記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアすることと、
キャッシュから上記キャッシュラインをフラッシュすることと、
該メモリ位置を再度読み取ることであって、それによって、メインメモリから該キャッシュへ、該キャッシュラインが引き戻される、ことと、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、クリアすることと、
上記エラー検出訂正回路に、該訂正可能なエラーを訂正させることと、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すことと
を包含する、項目１に記載の方法。
【００２１】
（項目３）  
上記メモリ位置を再度読み取ることが、上記キャッシュにおける修正された状態において上記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行することを包含する、項目１に記載の方法。
【００２２】
（項目４）  
上記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせない場合、上記訂正可能なエラーの原因を決定することが、
上記読み取りタグビットを試験することと、
上記タグからのアドレスビットが、上記ＡＦＡＲからの訂正可能なエラーの読み取りのアドレスの対応するビットと一致する場合、および、キャッシュラインが該タグビットが読み取られた場合にキャッシュにおいて、共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定することと
を含む、項目２に記載の方法。
【００２３】
（項目５）  
上記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、上記方法が、
該メモリ位置をさらに再度読み取ることと、
上記ＡＦＳＲおよび上記ＡＦＡＲレジスタを再度読み取りおよびクリアすることと
をさらに包含する、項目２に記載の方法。
【００２４】
（項目６）  
上記メモリをさらに再度読み取ることが訂正可能なエラーを生じさせない場合、上記方法が、
所定の時間間隔の後に上記メモリ位置を再度読み取ることと、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが、訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定することと、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定することと
をさらに包含する、項目５に記載の方法。
【００２５】
（項目７）  
上記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、上記方法が、
第２のプロセッサに、該訂正可能なエラーを分類させることと、
該第２のプロセッサがエラーを検出しない場合、上記第１のプロセッサが不良な読み取り装置であると決定することと、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定することと、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定することと
をさらに包含する、項目５に記載の方法。
【００２６】
（項目８）  
コンピュータによって実行された場合、該コンピュータに、訂正可能なメモリエラーの原因を決定するための方法を実行させる命令を記憶するコンピュータ可読の記憶媒体であって、該方法は、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、エラー検出訂正回路によって検出される訂正可能なエラーを検出することと、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取ることであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、ことと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストすることと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用することと
を包含する、コンピュータ可読の記憶媒体。
【００２７】
（項目９）  
上記メモリ位置をテストすることが、
上記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアすることと、
キャッシュから上記キャッシュラインをフラッシュすることと、
該メモリ位置を再度読み取ることであって、それによって、メインメモリから該キャッシュへ、該キャッシュが引き戻される、ことと、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、およびクリアすることと、
上記エラー検出訂正回路に、訂正可能なエラーを訂正させることと、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すことと
を含む、項目８に記載のコンピュータ可読の記憶媒体。
【００２８】
（項目１０）  
上記メモリ位置を再度読み取ることが、上記キャッシュにおける修正された状態において、上記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行することを包含する、項目８に記載のコンピュータ可読の記憶媒体。
【００２９】
（項目１１）  
上記メモリ位置を再度読み取ることが、訂正可能なエラーを生じさせない場合、該訂正可能なエラーの原因を決定することが、
以前の読み取りタグビットを試験することと、
上記タグからのアドレスビットが上記ＡＦＡＲからの該訂正可能なエラー読み取りの上記アドレスに対応するビットと一致する場合、および、キャッシュラインが、該タグビットが読み取られた場合にキャッシュにおいて、共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定することと
を含む、項目９に記載のコンピュータ可読の記憶媒体。
【００３０】
（項目１２）  
上記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、上記方法が、
該メモリ位置をさらに再度読み取ることと、
上記ＡＦＳＲおよび上記ＡＦＡＲレジスタを再度読み取り、クリアすることと
をさらに包含する、項目９に記載のコンピュータ可読の記憶媒体。
【００３１】
（項目１３）  
上記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせない場合、上記方法が、
所定の時間間隔の後に該メモリ位置を再度読み取ることと、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定することと、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定することと
をさらに包含する、項目１２に記載のコンピュータ可読の記憶媒体。
【００３２】
（項目１４）  
上記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、上記方法が、
第２のプロセッサに該訂正可能なエラーを分類させることと、
該第２のプロセッサがエラーを検出しない場合、上記第１のプロセッサが不良な読み取り装置であると決定することと、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定することと、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定することと
をさらに包含する、項目１２に記載のコンピュータ可読の記憶媒体。
【００３３】
（項目１５）  
上記訂正可能なメモリエラーの原因を決定する装置であって、
第１のプロセッサによるメインメモリにおけるメモリ位置へのアクセスの間、訂正可能なエラーを検出するように構成されたエラー訂正検出回路と、
該メモリ位置に関連されたキャッシュラインのためにタグビットを読み取るように構成された読み取りメカニズムであって、該タグビットは、該キャッシュラインのためのアドレス情報および、該キャッシュラインのための一貫性プロトコル状態を指示する状態情報を含む、読み取りメカニズムと、
テスト結果を生成するために、該第１のプロセッサに、該メモリ位置に対する読み取り動作および書き込み動作を実行させることによって、該メモリ位置をテストするように構成されたテストメカニズムと、
可能である場合、該訂正可能なエラーの原因を決定するために、該テスト結果および該タグビットを利用するように構成された、エラー分類メカニズムと
を備える、装置。
【００３４】
（項目１６）  
上記テストメカニズムが、
上記訂正可能なエラーについての情報を含む、ａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒ（ＡＦＳＲ）およびａｓｙｎｃｈｒｏｎｏｕｓ  ｆａｕｌｔ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ（ＡＦＡＲ）をクリアするように、
キャッシュから上記キャッシュラインをフラッシュするように、
該メモリ位置を再度読み取るようにであって、それによって、メインメモリから該キャッシュへ、該キャッシュラインが引き戻される、ように、
該ＡＦＳＲおよび該ＡＦＡＲレジスタを読み取り、クリアするように、
上記エラー検出訂正回路に、該訂正可能なエラーを訂正させるように、および、
該キャッシュライン（エラーは訂正されている）をメインメモリへフラッシュして戻すように、
構成される、項目１５に記載の装置。
【００３５】
（項目１７）  
上記メモリ位置を再度読み取る間、上記テストメカニズムは、上記キャッシュにおける修正された状態において上記キャッシュラインが存在することを保証するために、アトミックな比較およびスワップ（ＣＡＳ）動作を実行するように構成されている、項目１５に記載の装置。
【００３６】
（項目１８）  
上記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせない場合、エラー分類メカニズムが、
以前に読み取られたタグビットを試験するように、および、
上記タグからのアドレスビットが、上記ＡＦＡＲからの訂正可能なエラー読み取りのためのアドレスに対応するビットと一致する場合、および、キャッシュラインが、該タグビットが読み取られていた場合にキャッシュにおいて共有された（Ｓ）状態または排他的（Ｅ）状態であることを、該タグからの状態ビットが指示する場合、間欠エラーがあることを決定するように
構成される、項目１６に記載の装置。
【００３７】
（項目１９）  
上記メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、上記エラー分類メカニズムが、
該メモリ位置をさらに再度読み取るように、および、
上記ＡＦＳＲおよび上記ＡＦＡＲレジスタを再度読み取り、クリアするように
構成される、項目１６に記載の装置。
【００３８】
（項目２０）  
上記メモリをさらに再度読み取ることが訂正可能なエラーを生じさせない場合、上記エラー分類メカニズムが、
所定の時間間隔の後に上記メモリ位置を再度読み取るように、
該所定の時間間隔の後に該メモリ位置を再度読み取ることが訂正可能なエラーを生じさせる場合、該メモリ位置がリーキーであることを決定するように、および、
さもなければ、該訂正可能なエラーが永続的エラーであることを決定するように、
構成される、項目１９に記載の装置。
【００３９】
（項目２１）  
上記メモリ位置をさらに再度読み取ることが訂正可能なエラーを生じさせる場合、上記エラー分類メカニズムは、
第２のプロセッサに、該訂正可能なエラーを分類させるように、
該第２のプロセッサがエラーを検出しない場合、上記第１のプロセッサが不良な読み取り装置であると決定するように、
該第２のプロセッサがスティッキーエラーでないエラーを検出する場合、該第１のプロセッサが不良な書き込み装置であると決定するように、および、
該第２のプロセッサがスティッキーエラーを検出する場合、該メモリ位置における少なくとも一つのビットがスタックしていると決定するように、
構成される、項目１９に記載の装置。
【００４０】
（摘要）
本発明における一実施形態は、訂正可能なメモリエラーの原因を決定するシステムを提供する。第１に、システムは、第１のプロセッサによってメインメモリにおけるメモリ位置へのアクセスの間、訂正可能なエラーを検出する。その訂正可能なエラーは、エラー検出および訂正回路によって検出される。次に、システムは、メモリ位置に関連されたキャッシュラインのためのタグビットを読み取る。そのタグビットは、キャッシュラインのための一貫性プロトコル状態を示す状態情報だけでなく、キャッシュラインのためのアドレス情報をも含む。次いでシステムは、テスト結果を生成するために、第１のプロセッサに、メモリ位置へ読み取り動作および書き込み動作を実行させることによって、メモリ位置をテストする。最後に、システムは、可能な場合、訂正可能なエラーの原因を決定するために、テスト結果およびタグビットを使用する。
【発明を実施するための最良の形態】
【００４１】
以下の記述は、当業者が本発明を作成または利用することができるように示されており、特定の応用およびその必要に関連して提供される。開示された実施形態への様々な修正は、当業者にとって容易に明らかであり、ここにおいて定義される一般的な原理は、本発明の意図および範囲からそれることなく、他の実施形態および応用へ適応される。このように、本発明は、ここで示される実施形態に限定されるものではなく、ここにおいて開示された原理および特徴と一貫した、最も広い範囲に従うものである。
【００４２】
この詳細な説明において記述されるデータ構造およびコードは、通常、コンピュータ可読記憶媒体上に記憶され、コンピュータシステムによる使用のためのコードおよび／またはデータを記憶することが可能な任意の装置または媒体であり得る。これはディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、およびＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃまたはデジタルビデオディスク）などのような磁気および光学記憶装置、ならびに、伝送媒体（信号が変調される搬送波があってもなくても）において実施されるコンピュータ指示信号を含むが、それらに限定されるものではない。例えば、伝送媒体は、インターネットのような通信ネットワークを含み得る。
【００４３】
（コンピュータシステム）
図１は、本発明における一実施形態にしたがったコンピュータシステム１００を示す。コンピュータシステム１００は、一般に、一つ以上のキャッシュおよび一つ以上のプロセッサを有するコンピュータシステムの任意のタイプを含み得る。これは、マイクロプロセッサに基づくコンピュータシステム、メインフレームコンピュータ、デジタル信号プロセッサ、ポータブルコンピュータ装置、パーソナルオーガナイザー、デバイス制御器、および電気機器を有する計算エンジンを含むが、それらに限定されるものではない。
【００４４】
図１に示されるように、コンピュータシステム１００は、プロセッサ１０２およびプロセッサ１１２を含み、それらは個々に、キャッシュ１０４およびキャッシュ１１４に関連される。キャッシュ１０４およびキャッシュ１１４は、メインメモリ１２２から引き出されるキャッシュラインのためのタグおよびデータを含む。メインメモリ１２２は、ランダムアクセスメモリの任意のタイプを含み、それは、コンピュータシステム１００のためのコードおよびデータを記憶する。特に、メインメモリ１２２は、キャッシュライン１２４〜１２６を含み、キャッシュラインと関連されたデータを記憶することができる。
【００４５】
キャッシュライン１２４〜１２６は、通信ネットワーク１２０を介して、メインメモリ１２２とキャッシュ１０４および１１４との間で転送され得、キャッシュ１０４および１１４におけるキャッシュラインのコピーが、メインメモリ１２２におけるキャッシュラインのための対応するデータと一致され続けることを保証するためのキャッシュ一貫性（ｃａｃｈｅ−ｃｏｈｅｒｅｎｃｅ）プロトコルをサポートする。例えば、本発明における一実施形態において、コンピュータシステム１００は、ＭＯＥＳＩ（Ｍｏｄｉｆｉｅｄ−Ｏｗｎｅｄ−Ｅｘｃｌｕｓｉｖｅ−Ｓｈａｒｅｄ−Ｉｎｖａｌｉｄ）キャッシュ一貫性プロトコルの一つの変形をサポートする。
【００４６】
コンピュータシステム１００はまた、図２〜図５にて参照する以下のさらなる記述において記載されるように、メモリエラーを分類するためのサポートを提供する。
【００４７】
（データワード）
図２は、本発明の一実施形態にしたがうメインメモリ１２２におけるデータワード２００を示す。データワード２００は、ＥＣＣビット２０４だけでなく、データ２０２をも含み、複合データワードのための１ビットエラー訂正および２ビットエラー検出をサポートし、データ２０２およびＥＣＣビット２０４の両方を含む。
【００４８】
（キャッシュラインタグ）
図３は、本発明の一実施形態にしたがったキャッシュラインのためのタグ３００を示す。タグ３００は、対応するキャッシュラインのための、より上位のアドレスビット３０２を含む。タグ３００はまた、状態ビット３０４を含み、その対応するキャッシュラインのためのＭＯＥＳＩ状態を特定する。これらの状態ビット３０４はまた、対応するキャッシュラインが汚れているかいないかといった、その対応するキャッシュラインのための他の情報をも示すことができる。
（メモリエラーの原因を診断するプロセス）
図４は、本発明の一実施形態にしたがうメモリエラーの原因を診断するプロセスを示すフローチャートの一部である。メインメモリ内の位置から読み取り動作間のプロセッサ内のＥＣＣ回路によって、訂正可能なエラーが検出された場合、このプロセスは開始する（ステップ４０２）。
【００４９】
この訂正可能なエラーに応答して、システムは多数のアクションを実行する。第１に、システムは、訂正可能なエラー（ＣＥ）のトラップをオフにし（ステップ４０４）、ＡＦＳＲ／ＡＦＡＲ登録を読み取り、クリアする（ステップ４０６）。次に、システムは、メモリ位置に関連されたキャッシュラインからタグを読み取る（ステップ４０８）。
【００５０】
システムは、次いで、キャッシュからキャッシュラインを除去する（ステップ４１０）。これは、メモリ位置に指示された次の読み取り動作が、キャッシュラインにメインメモリから読み取りをされることを保証する。次に、システムは、メインメモリからのキャッシュラインを修正された（Ｍ）状態におけるキャッシュに引き込むために、比較およびスワップ（ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ）（ＣＡＳ）動作を実行する（ステップ４１２）。このＣＡＳ動作は、アトミックな（ａｔｏｍｉｃ）動作であり、他のプロセス（またはプロセッサ）は、Ｍ状態において、キャッシュラインをキャッシュに持ち込むプロセスを妨害することに注意したい。
【００５１】
次に、システムは、メインメモリへキャッシュからキャッシュラインを除去する（ステップ４１４）。ＣＡＳ動作がまたＣＥを生じさせる場合、キャッシュラインがＣＡＳ動作によるキャッシュにインストールされる以前に、エラー訂正回路は自動的にエラーを訂正することに注意したい。ゆえに、メインメモリへキャッシュラインを除去することは、訂正されたデータを、メモリに書き込みさせる。
【００５２】
次に、システムは、例えば、ＡＦＳＲにおけるＣＥビットを試験することによって、先行するＣＡＳ動作がＣＥを生じさせたかどうかを決定する（ステップ４１６）。そうでない場合、システムは、古いエラータイプ（先行技術システムの下での）が間欠エラーであることを決定する（ステップ４１８）。
【００５３】
他方で、ステップ４１６で、システムは、先行するＣＡＳ動作がまた、ＣＥを生じさせたと決定する場合、システムは、再度、メモリからキャッシュラインを読み取り（ステップ４２４）、次いで、ＡＦＳＲ／ＡＦＡＲを読み取り、クリアする（ステップ４２６）。
【００５４】
次に、システムは、読み取り動作がＣＥを生じさせたかどうかを決定する（ステップ４２８）。生じた場合、システムは、古いエラータイプがスティッキ−エラーであることを決定する（ステップ４３０）。生じない場合、システムは、古いエラータイプが永続的エラーであることを決定する（ステップ４３２）。
【００５５】
ついで、これらのありうる終端の状態、４１８、４３０、４３２のそれぞれから、システムは図５のフローチャートにおいて特定された動作を続行する。第１に、システムは古いエラータイプおよび以前の読み取りキャッシュラインタグからエラーの新しいタイプを決定するために、表１（下にある）を使う（ステップ５０２）。表１は、本発明における一実施形態にしたがった、メモリエラーを分類するための表を表している。
【００５６】
【表１】
2006146920.tif 000003
次に、表１が、新しいエラータイプが「不明」を指示した場合、システムは不明エラー（ステップ５０４）を指示する。同様に、表１が、新しいエラータイプが「間欠」であると指示した場合、システムは、間欠エラーを指示する（ステップ５０６）。
【００５７】
表１を参照し、キャッシュライン状態がＩ、Ｍ、またはＯだった場合（ステップ４１０におけるキャッシュラインの除去がメインメモリへの書き込みを生じていることを意味する）、および、古いエラータイプが間欠だった場合、新しいエラータイプは間欠の代わりに「不明」である。これは、偽間欠の診断を防ぐ。
【００５８】
次に、表１が、新しいエラータイプが「永続的」と指示する場合、システムは、後において、メモリ位置の再読み取りを計画し、次いで実行する（ステップ５０８）。再読み取りが完了した後、システムは、訂正可能なエラーが生じているかどうかを決定する（ステップ５１０）。生じていない場合、システムは永続的エラーを指示する（ステップ５１４）。さもなければ、訂正可能なエラーが再読み取りの間に生じた場合、システムは「リーキーメモリセル」を指示する（ステップ５１２）。（この場合、負荷は、再読み取りの間のエラーを生じさせるメモリセルをリークする。）
次に、表１が、新しいエラータイプが「スティッキ−」であると指示する場合、システムは、コンピュータシステムにおける第２のプロセッサに、メモリエラーを分類させる（ステップ５１６）。第２のプロセッサによってエラーが検出されない場合、システムは、第１のプロセッサが不良な読み取り装置であることを指示する（ステップ５１９）。
【００５９】
さもなければ、システムは、第２のプロセッサがそのエラーをスティッキーエラーとして分類したかどうかを決定する（ステップ５２０）。スティッキーエラーである場合、システムは、メモリセルがくっついていることを指示する（ステップ５２４）。スティッキーエラーでない場合、システムは第１のプロセッサが不良な書き込み装置であると指示する（ステップ５２２）。
【００６０】
最後に、システムが、状態５０４、５０６、５１２、５１４、５１９、５２２および５２４において、様々なエラー状態を指示した後、システムはＣＥのために、トラップをオンにする（ステップ５２６）。ここで、診断プロセスは完了する。
【００６１】
本発明における実施形態の前述の記載は、図示および描写のためだけの目的で示されている。それらは網羅的であることを意図されているわけではなく、または、本発明を開示された形式に限定することを意図されているわけでもない。したがって、多くの修正や変化が当業の実施者にとって明らかである。追加的に、上記の開示は本発明を限定することを意図されていない。本発明の範囲は、添付された請求項によって限定される。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態にしたがったコンピュータシステムである。
【図２】本発明の一実施形態にしたがったメモリにおけるデータワードである。
【図３】本発明の一実施形態にしたがったキャッシュラインのためのタグである。
【図４】本発明の一実施形態にしたがった、メモリエラーの原因を診断するプロセスのためのフローチャートの一部を示す。
【図５】本発明の一実施形態にしたがった、メモリエラーの原因を診断するプロセスのためのフローチャートの別の一部を示す。
【符号の説明】
【００６３】
１０２  プロセッサ
１０４  キャッシュ
１０６  タグ
１０８  データ
１１２  プロセッサ
１１４  キャッシュ
１１６  タグ
１１８  データ
１２０  ネットワーク
１２２  メインメモリ
１２４、１２５、１２６  キャッシュライン
【図１】
2006146920.tif 000004
【図２】
2006146920.tif 000005
【図３】
2006146920.tif 000006
【図４】
2006146920.tif 000007
【図５】
2006146920.tif 000008