(57)【特許請求の範囲】
【請求項１】
データを記憶するように構成されている少なくとも１つのメモリと、
前記少なくとも１つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路と、
前記少なくとも１つのメモリの少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するＭＢＩＳＴリクエストを受信するように構成されている、メモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）インターフェースと、
前記ＭＢＩＳＴインターフェースにより受信される前記ＭＢＩＳＴリクエストを検出し、前記ＭＢＩＳＴリクエストを検出することに応答して、前記少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するように構成されている制御回路と
を含み、
前記テスト・プロシージャ中に、前記少なくとも１つのメモリは、前記制御回路により予約されている前記少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理回路により発行される前記メモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置。
【請求項２】
前記制御回路は、前記少なくとも１つの予約済みメモリ・ロケーションの１つを対象とする、前記処理回路からのメモリ・トランザクションのサービスを阻止するように構成されている、請求項１に記載のデータ処理装置。
【請求項３】
複数のメモリ・タイプを含む、請求項１に記載のデータ処理装置。
【請求項４】
前記複数のメモリ・タイプは、
データ・キャッシュ、
インストラクション・キャッシュ、
データ密結合メモリ、及び
インストラクション密結合メモリ
のうちの２つ以上を含む、請求項３に記載のデータ処理装置。
【請求項５】
前記少なくとも１つの予約済みメモリ・ロケーションは、前記少なくとも１つの対象となるメモリ・ロケーションと同じメモリ・タイプ内の前記メモリ・ロケーションを含む、請求項３に記載のデータ処理装置。
【請求項６】
前記少なくとも１つの予約済みメモリ・ロケーションは、前記少なくとも１つの対象となるメモリ・ロケーションと同じメモリサブユニット内の前記メモリ・ロケーションを含む、請求項１に記載のデータ処理装置。
【請求項７】
前記制御回路は、前記処理回路により実行されるソフトウェアの介入なしに、テスティングのために前記少なくとも１つの予約済みメモリ・ロケーションを予約するように構成されている、請求項１に記載のデータ処理装置。
【請求項８】
前記テスト・プロシージャの少なくとも一部の完了後に、前記制御回路は、前記少なくとも１つの予約済みメモリ・ロケーションを非予約状態にして、前記処理回路により発行されるメモリ・トランザクションをサービスするために、前記少なくとも１つの予約済みメモリ・ロケーションを使用可能にするように構成されている、請求項１に記載のデータ処理装置。
【請求項９】
前記テスト・プロシージャは、前記少なくとも１つのメモリへ発行されるテスト・トランザクションのバーストを含み、前記少なくとも１つのメモリの前記メモリ・ロケーションのサブセットをテストする、請求項１に記載のデータ処理装置。
【請求項１０】
前記ＭＢＩＳＴインターフェースは複数のＭＢＩＳＴリクエストを受信するように構成されており、各ＭＢＩＳＴリクエストは、前記少なくとも１つのメモリのメモリ・ロケーションの異なるサブセットをテストするためにテスト・トランザクションのバーストに対応している、請求項９に記載のデータ処理装置。
【請求項１１】
前記少なくとも１つの対象となるメモリ・ロケーションをテストするための前記テスト・プロシージャは割込み不可能である、請求項１に記載のデータ処理装置。
【請求項１２】
前記ＭＢＩＳＴリクエストを検出することに応答して、前記制御回路は前記ＭＢＩＳＴインターフェースによりＭＢＩＳＴ確認応答信号を発行し、前記ＭＢＩＳＴインターフェースに連結されているＭＢＩＳＴコントローラをトリガして、前記テスト・プロシージャを開始させるように構成されている、請求項１に記載のデータ処理装置。
【請求項１３】
前記制御回路は、前記データ処理装置が前記テスト・プロシージャを実施する準備が整うまで、前記ＭＢＩＳＴ確認応答信号の発行を遅延させるように構成されている、請求項１２に記載のデータ処理装置。
【請求項１４】
前記テスト・プロシージャにおいて、前記ＭＢＩＳＴインターフェースは、前記少なくとも１つの対象となるメモリ・ロケーションをテストする少なくとも１つのテスト・トランザクションを受信するように構成されている、請求項１に記載のデータ処理装置。
【請求項１５】
前記処理回路により発行されるメモリ・トランザクションを前記少なくとも１つのメモリへ送るように構成されているメモリ制御回路を含み、
前記メモリ制御回路の少なくとも一部が、前記ＭＢＩＳＴインターフェースにより受信される前記少なくとも１つのテスト・トランザクションを前記少なくとも１つのメモリへ送るために再使用される、
請求項１４に記載のデータ処理装置。
【請求項１６】
前記テスト・プロシージャは、前記テスト・プロシージャによりエラーが検出されなかった場合、前記テスト・プロシージャの最後に、前記少なくとも１つの対象となるメモリ・ロケーションに記憶されたデータ値が、前記テスト・プロシージャの最初に前記少なくとも１つの対象となるメモリ・ロケーションに記憶されたデータ値と同じである、透過的テスト・プロシージャである、請求項１に記載のデータ処理装置。
【請求項１７】
前記少なくとも１つの対象となるメモリ・ロケーションは、前記少なくとも１つのメモリの異なる部分にある一対のメモリ・ロケーションを含み、前記テスト・プロシージャは：
（ａ）前記一対のメモリ・ロケーションから第１のデータ値及び第２のデータ値を読み取り、前記第１のデータ値及び前記第２のデータ値を第１の記憶ロケーション及び第２の記憶ロケーションに保存するステップと；
（ｂ）選択されたデータ値を前記一対のメモリ・ロケーションに書き込むステップと；
（ｃ）前記一対のメモリ・ロケーションから読み取られたデータ値が、前記一対のメモリ・ロケーションに書き込まれた、前記選択されたデータ値にマッチするかどうかチェックするステップと；
（ｄ）前記第１の記憶ロケーション及び前記第２の記憶ロケーションからの前記第１のデータ値及び前記第２のデータ値を前記一対のメモリ・ロケーションに書き込むステップと；
（ｅ）前記一対のメモリ・ロケーションから読み取られたデータ値が、前記第１の記憶ロケーション及び前記第２の記憶ロケーションに記憶された前記第１のデータ値及び前記第２のデータ値にマッチするかどうかチェックするステップと
を含む、請求項１に記載のデータ処理装置。
【請求項１８】
前記制御回路は、前記第１のデータ値及び前記第２のデータ値が前記一対のメモリ・ロケーションに書き込まれた後、前記少なくとも１つの予約済みメモリ・ロケーションを非予約状態にするように構成されている、請求項１７に記載のデータ処理装置。
【請求項１９】
データを記憶するための少なくとも１つのメモリ手段と、
前記少なくとも１つのメモリ手段内のデータにアクセスするためのメモリ・トランザクションを発行するための処理手段と、
前記少なくとも１つのメモリ手段の少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するＭＢＩＳＴリクエストを受信するためのメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）インターフェース手段と、
前記ＭＢＩＳＴインターフェースにより受信される前記ＭＢＩＳＴリクエストを検出し、前記ＭＢＩＳＴリクエストを検出することに応答して、前記少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するための制御手段と
を含み、
前記テスト・プロシージャ中に、前記少なくとも１つのメモリ手段は、前記制御手段により予約された前記少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理手段により発行される前記メモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置。
【請求項２０】
少なくとも１つのメモリと、前記少なくとも１つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路とを含むデータ処理装置のためのメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）方法であって、
本方法は、
前記データ処理装置のＭＢＩＳＴインターフェースにより受信されるメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）リクエストを検出するステップであり、前記ＭＢＩＳＴリクエストは、前記少なくとも１つのメモリの少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示する、検出するステップと、
前記ＭＢＩＳＴリクエストを検出する前記ステップに応答して、前記少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するステップと、
前記テスト・プロシージャ中に、前記少なくとも１つのメモリは、前記少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理回路により発行される前記メモリ・トランザクションをサービスするステップと
を含み、
前記データ処理装置は、前記ＭＢＩＳＴリクエストを検出し、前記ＭＢＩＳＴリクエストを検出する前記ステップに応答して、前記少なくとも１つの予約済みメモリ・ロケーションを予約する制御回路を含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術はデータ処理の分野に関する。より詳細には、本技術はメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ：ｍｅｍｏｒｙ  ｂｕｉｌｔ−ｉｎ  ｓｅｌｆ−ｔｅｓｔ）を実施する技術に関する。
【背景技術】
【０００２】
データ処理システムに、装置内に設けられているメモリをテストするセルフテスティング機構を付与することが知られており、その結果、メモリ回路が製作された場合に装置がセルフテスト又は一連のセルフテストを実施して、回路が拒絶されるべきであることを意味する何らかの欠陥が存在するかどうかを判定してもよい。そのような技術は、通常、メモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）と呼ばれる。データ処理装置の製造時にＭＢＩＳＴを実施するのと同様に、ＭＢＩＳＴはまた、後に、集積回路がフィールド内に配備されその設計された機能を実施する時に実施され得る（「オンライン」ＭＢＩＳＴ、「ライブ」ＭＢＩＳＴ、又は「インフィールド」ＭＢＩＳＴと呼ばれる可能性がある）。しかし、既存のオンラインＭＢＩＳＴ技術は、処理回路の通常の機能遂行に大きな影響を及ぼす。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本技術はこの問題に対処しようと努めている。
【課題を解決するための手段】
【０００４】
一態様から見ると、本技術は、データを記憶するように構成されている少なくとも１つのメモリと、
少なくとも１つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路と、
少なくとも１つのメモリの少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するＭＢＩＳＴリクエストを受信するように構成されているメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）インターフェースと、
ＭＢＩＳＴインターフェースにより受信されるＭＢＩＳＴリクエストを検出し、ＭＢＩＳＴリクエストを検出することに応答して、前記少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するように構成されている制御回路と
を含み、
テスト・プロシージャ中に、少なくとも１つのメモリが、制御回路により予約されている少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理回路により発行されるメモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置を提供する。
【０００５】
既存のオンライン・メモリ・テスト技術は、プロセッサ上で動作してメモリを直接テストするソフトウェア、又は外部デバイスがテスト・インターフェイースを介してテストを実施することができるように、テストされるメモリへのプロセッサ・アクセスを無効にするソフトウェアのどちらかを使用する。通常、ソフトウェアはその通常動作を停止し、テスト・モードに入る。これは極めてインベイシブであり、プロセッサがその通常機能を実施しないようにする。この問題に対処するために、少なくとも１つのメモリ内の少なくとも１つの対象となるメモリ・ロケーションにおいてテスト・プロシージャが実施されようとしていることを指示する、ＭＢＩＳＴインターフェースにおいて受信されるＭＢＩＳＴリクエストを検出する制御回路が設けられている。ＭＢＩＳＴリクエストの検出時に、設けられた制御回路は、テストされる少なくとも対象となるメモリ・ロケーションを含む少なくとも１つの予約メモリ・ロケーションをテストするために予約する。テスト・プロシージャが次いで実施された場合、少なくとも１つのメモリは、制御回路により予約されている少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とする、処理回路により発行されるメモリ・トランザクションをサービスし続けることができる。従って、少なくとも１つのメモリの一部分のみが予約され、他の部分が引き続き処理回路からのトランザクションをサービスすることができ、その結果、プロセッサは通常通り機能し続けてもよく、テスティングは、プロセッサ上で実行しているソフトウェアに対して透過的であり得る。（例えば、プロセッサが予約済みメモリ・ロケーションにアクセスする場合、プロセッサがストールされる可能性がある）テスティングのためのメモリを予約するためにハードウェアに専用の制御回路を設けることは、処理回路の処理に割り込んでＭＢＩＳＴを実施する必要を排除する。これは、ＭＢＩＳＴプロシージャに起因するパフォーマンスへの影響を遥かに小さくすることに繋がり、従ってＭＢＩＳＴが回路の通常機能と共存することを可能にする。このことは、例えば、処理回路の通常処理を無効にすることは望ましくないと考えられるセーフクリティカル機能を実施するデータ処理装置にとって特に重要である。
【０００６】
ＭＢＩＳＴリクエストを検出し、テスティングのためにメモリ内のロケーションを予約する制御回路は、いくつかの場合、インターフェースにより受信されるトランザクションに対するデータ処理装置の応答を制御するためにＭＢＩＳＴインターフェースに連結されているＭＢＩＳＴインターフェース制御回路内に設けられていてもよい。他の場合に、制御回路は、少なくとも１つのメモリの１つ又は複数を制御するメモリ制御回路内に設けられていてもよい。例えば、所与のメモリのためのメモリ・コントローラは、そのメモリに向かって通過する全てのトランザクションを処理してもよく、また、テスティングのためのメモリ・ロケーションの予約及びテスト・トランザクションと通常メモリ・トランザクションとの間のアービトレーションを処理してもよい。メモリ・トランザクションのサービスを制御するための関数論理を再使用することができきるため、本手法は優れており、本手法はより良いタイミングを有し、メモリ・コントローラ関数論理をテストし、領域、電力、及びルーティングを減少させ、実施することが容易である。しかし、いくつかの場合に、制御回路は、ＭＢＩＳＴインターフェース制御回路及びメモリ制御回路の両方の一部に対応してもよく、例えばＭＢＩＳＴインターフェース制御回路はＭＢＩＳＴリクエストを検出し、次いでメモリ制御回路をトリガしてテスティングのためのメモリ領域を予約させる。また、典型的なＲＡＭマクロに論理を追加して、ＭＢＩＳＴのためのメモリ・ロケーションを予約することにより制御回路を実装し、メモリ・トランザクションとＭＢＩＳＴテスト・トランザクションとの間でアービトレーションすることが可能であると考えられるが、これには、ＲＡＭの関数型インターフェースに待機信号を追加して、プロセッサが予約済みロケーションにアクセスしようとした場合に該プロセッサをストールする必要がある可能性がある。
【０００７】
一般に、メモリ・ロケーションが何らかのテストをするために予約されてもよく、それにより、テスト・プロシージャが実施されている間に処理回路が予約済みメモリ・ロケーションにアクセスしないようになる。例えば、予約済みメモリ・ロケーションを対象とする、処理回路からのメモリ・トランザクションがストールされてもよいか、又は別途、サービスされないようにされてもよい。その間に、予約済み領域以外のメモリ領域を対象とする、処理回路により発行されるメモリ・トランザクションは、メモリにより通常通りサービスされ得る。プロセッサは様々な理由で（例えば、障害若しくは低速外部メモリへのアクセスに因り、又は要求されたデータ値がＬ１キャッシュ内に存在せず、そのためＬ２メモリからフェッチされなければならないため）ストールする可能性があるので、テスティングの理由で少数のクロック・サイクルの間ストールすることは異常ではないと考えられ、そのため全体的なパフォーマンスにそれほど悪影響を及ぼさないと考えられる。
【０００８】
いくつかの場合に、制御回路は、単にメモリ・ユニット全体又はメモリ・ロケーションの特定のブロックへのアクセスを無効にする制御フラグを設定することにより、あるメモリ・トランザクションのサービスを阻止してもよい。他の場合に、制御回路は、どのロケーションが予約されているか否かを識別するロック・レコードを維持してもよい。メモリ制御回路内のアービトレーション・ユニットが、次いで、予約済みメモリ・ロケーションを対象とする、プロセッサからのメモリ・トランザクションをストールしてもよい。
【０００９】
メモリ・ロケーションは、異なる粒度でのテスティングのために予約されてもよい。複数のメモリ・タイプを有するシステムでは、例えばデータ・キャッシュ、インストラクション・キャッシュ、データ密結合メモリ（ＤＴＣＭ：ｄａｔａ  ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）又はインストラクション密結合メモリ（ＩＴＣＭ：ｉｎｓｔｒｕｃｔｉｏｎ  ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）のうちのそのような２つ以上が設けられていてもよい。この場合、そのメモリ内の１つ又は複数のロケーションがテストされている場合に、メモリ・タイプ全体がテスティングのために予約されてもよく、一方、プロセッサは他のメモリ・タイプを使用し続けることができる。本手法は実際に実施するのに効率的である可能性がある。所与のメモリ・タイプを有していてもいなくてもよいシステム（例えば、ＤＴＣＭは必ずしも設けられているとは限らない可能性がある）のために特定のプロセッサが設計されてもよいので、該装置は特定のメモリ・タイプを無効にする／有効にすることができる何らかの制御論理を既に有する可能性があり、該制御論理は、次いで、ＭＢＩＳＴリクエストが受信されると、テスティングのためのメモリを予約するために再使用され得る。
【００１０】
他方、また、メモリ・ロケーションが更なる微粒子レベルで予約され得ると考えられる。例えば、所与のメモリ・タイプがいくつかの論理メモリを含んでいてもよい（例えば、例えば２つのタグ・メモリと２つのデータ・メモリとを含めて、インストラクション・キャッシュが４つの論理メモリを含んでいてもよい）。各論理メモリはいくつかの物理メモリ・ユニットで作られていてもよく、各物理メモリ・ユニットは複数のバンク又はメモリ・ロケーションの他のサブ区分に分割されていてもよい。従って、所与のメモリ・タイプ、論理メモリ、物理メモリ・ユニット、バンク、行、又はテストされている対象となるロケーションを含むメモリ・ロケーションの他のサブ区分をテストするために予約することが可能である。また、メより大きなブロックのモリ・ロケーションではない、テスティングのための個々のロケーションを予約することが可能である。制御回路は、どのメモリ・ロケーション又はメモリ・ロケーションのグループがテスティングのためにロックされているのかを指示するロック情報を維持してもよく、その結果、これらのロケーションに対するメモリ・トランザクションがサービスされないようにされ得る。
【００１１】
テスティングのためのメモリ・ロケーションの予約は、ソフトウェアの介入又は処理回路の割込みなしにハードウェアにおいて自動的に開始してもよい。ＭＢＩＳＴリクエスト自体は、処理回路により実行されるソフトウェアによりトリガされてもよい一方、ＭＢＩＳＴリクエストに対する応答は、制御回路によりハードウェア内にもたらされてもよく、その結果、テスティングは、処理回路上で実行しているソフトウェアに対して全体的に透過的である。
【００１２】
テスト・プロシージャの完了後、制御回路は、処理回路により発行されるメモリ・トランザクションをサービスするために予約済みメモリ・ロケーションが再度使用可能になるように、予約済みメモリ・ロケーションを非予約状態にし（ｕｎｒｅｓｅｒｖｅ）てもよい。いくつかの場合、予約済みメモリ・ロケーションが非予約状態にされ得る前に、テスト・プロシージャが完全に終了する必要がない可能性がある。例えば、テスト・プロシージャの最終部分がテストされたメモリ・ロケーション内のデータを変更しなかった場合、且つこの時点までにテスト・プロシージャがこれらロケーション内のオリジナル・データを既に回復させていた場合、予約済みロケーションは、メモリが処理回路からのメモリ・トランザクションをサービスすることをより早く再開してＭＢＩＳＴのパフォーマンス・インパクトを低減することができるように、テスト・プロシージャの終了前に非予約状態にされてもよい。
【００１３】
既存のＭＢＩＳＴテスト・プロシージャは、単一のテスト実行において、メモリ内のロケーション全てをテストする傾向がある。しかし、特にテスト・プロシージャがメモリの全ロケーションの端から端まで数度循環し、種々のチェックを実施することが多いので、これは完了するのに長時間を要する。これが、集積回路が使用可能であるかどうかを判定するために不良に関してメモリ空間全体がチェックされる必要がある場合、殆どのＭＢＩＳＴテスト・プロシージャが通常は製造テスティングのために設計されている理由である。しかし、オンラインＭＢＩＳＴを実施する場合、そのようなＭＢＩＳＴテスト・プロシージャは、重大なパフォーマンス・インパクトを引き起こすと考えられる。従って、既存のオンラインＭＢＩＳＴは、通常、いずれにせよプロセッサが完全に動作可能でない場合、パワーオン又はパワーオフで実施されるのみである。
【００１４】
製造ＭＢＩＳＴが既に製造中に実施されていると考えられるので、オンラインＭＢＩＳＴでは、テスト・プロシージャが製造ＭＢＩＳＴと同じくらい完全であることを必要としないことを、本技術の発明者は分かっている。そのため、任意の１つのロケーションが不良であろう可能性は比較的少ないので、短時間にメモリ全体を調査するのではなく、長時間に亘ってテスティングを展開することが可能である。このことが活用されて、テスト・プロシージャのパフォーマンス・インパクトが低いことを確実にすることができ、その結果、オンラインＭＢＩＳＴは、パフォーマンス・インパクトを殆ど伴わずに、処理回路の通常動作と同時に実施され得る。
【００１５】
従って、オンラインＭＢＩＳＴでは、テスティングがテスト・トランザクションの比較的短いバーストに分割されていてもよく、各バーストはメモリ・ロケーションのサブセットをテストするだけでもよい。例えば、トランザクションの各バーストは、１つ、２つ、又は他の比較的小さい数のメモリ・ロケーションをテストするだけでもよい。バーストが短いほど、処理パフォーマンスへの影響は小さくなる。更なるロケーションがテストされる必要がある場合、異なるロケーション・サブセットに関して複数のバーストが実施されてもよく、ある時間帯に亘って引き延ばされてもよい。経時的に、多数のバーストを実施することにより、メモリ全体がテストされ得る。連続バースト間の時間は、単一バーストのためのテスト・プロシージャを実施するのにかけられる時間よりずっと長い（例えば、例えば１０，０００クロック・サイクル毎などの、比較的低い頻度でバーストが発行され得るであろうが、単一バーストのためのテスト・プロシージャは２０クロック・サイクル以下しかかからない可能性がある）。各短いテスト・バーストは、例えばカウンタによりトリガされて、定期的に起こり得る。カウンタが終了した場合、カウンタはＭＢＩＳＴコントローラに短いテスト・バーストを実施させ、ＭＢＩＳＴリクエストを発行して制御回路をトリガし、データ処理装置がテスティングのために準備が整っているように設定させる。このように、パフォーマンス・インパクトは最小である。また、バーストの残りを完了させるのに長くかからないので、これらのテスト・プロシージャの１つの間にプロセッサにより割込みが受信された場合、割込みレイテンシは非常に低い。
【００１６】
各バーストは、前のバーストに対して正確な間隔で起こる必要がない。重要なソフトウェアが実行されようとしているか又は現在実行されている時にバーストが起こる場合、それを延期するか又は実施しない能力を付与することが可能である。また、ソフトウェアがアイドルであるか又は非重要タスクを実施している可能性がある時に、例えば処理ループの最後に、バーストが起こるように、バーストはフトウェアに適合されることが可能であると考えられる。
【００１７】
途中で、テスト・プロシージャのバーストに割り込む能力を付与することが可能である。例えば、プロセッサが重要な割込みをサービスする必要がある場合、割込みが起こる場合により、必要に応じて後で新しいバーストにおいて実施されることが可能であろうチェック・ステップを見逃すことにより、バーストは短縮されることが可能であると考えられる。しかし、バーストは非常に短い可能性があるので、バーストに割り込むことは、多くのクロック・サイクルを節約しない可能性があり、達成するのにより複雑なコントローラを必要とすると考えられる。従って、バーストが開始したら、テストされたロケーションが、バーストが開始した時にそれらがあった状態まで回復される時点まで割り込まれることが不可能であるように、テスト・プロシージャの各バーストを割込み不可能にすることは、より効率的である可能性がある。
【００１８】
ＭＢＩＳＴリクエストは、オフチップに配置されていてもよいＭＢＩＳＴコントローラからＭＢＩＳＴインターフェースにより受信されてもよい。或いは、オンチップ源がＭＢＩＳＴリクエストを生成してもよいか、又はＭＢＩＳＴコントローラの機能性はプロセッサ内に存在し得ると考えられる。
【００１９】
制御回路がＭＢＩＳＴリクエストを検出した場合、制御回路は、ＭＢＩＳＴ信号面によりＭＢＩＳＴ肯定応答信号を発行し、ＭＢＩＳＴコントローラをトリガしてテスト・プロシージャを開始させてもよい。制御回路は、該装置がテスト・プロシージャを実施する準備が整った状態になるまで、確認応答信号を発行することを遅延させてもよい。例えば、プロセッサが、現在、割り込まれるべきでない重要なアクションを実行している場合、制御回路は確認応答を遅延させてもよい。また、確認応答信号が、処理回路により発行される少なくとも１つのインフライト・メモリ・トランザクションが完了されるまで遅延されてもよい。例えば、メモリ・トランザクションがキャッシュ・ミスに遭遇した可能性があり、これが外部メモリからの又は更なるキャッシュからのラインフィルをトリガした可能性がある。メモリ・コントローラ内の関数論理、例えば制御論理及びパイプライン・レジスタ、がＭＢＩＳＴトランザクションによりやはり使用されてもよいため、これもまた有益である。また、インフライト・トランザクションは、他のプロセッサが外部メモリ又はキャッシュにアクセスしないようにするいくつかのサブトランザクションで構成されているため、又は他の無関係のトランザクションがシステム内でブロックされる可能性があるため、インフライト・トランザクションをストールすることは望ましくない可能性がある。
【００２０】
テスト・プロシージャの一部として、ＭＢＩＳＴインターフェースは、少なくとも１つの対象となるメモリ・ロケーションをテストするために、ＭＢＩＳＴコントローラからの少なくとも１つのテスト・トランザクションを受信してもよい。いくつかのシステムが、処理回路からの通常のメモリ・トランザクションに使用されるパスとは完全に別個の、インターフェースからメモリまでトランザクションを送る専用のＭＢＩＳＴトランザクション・パスを有していてもよい。この場合、各メモリが、インターフェースにより受信されるテスト・トランザクションとプロセッサからの通常のメモリ・トランザクションとの間で選択するマルチプレクサを有していてもよい。しかし、本手法は、回路の重複をもたらす可能性があり、機能タイミングに悪影響を及ぼす可能性があり、メモリにマルチプレクサを設けることは、メモリの部分がテストされている間に通常のメモリ・トランザクションがサービスされ続けることを可能にすることを難しくする可能性がある。
【００２１】
従って、処理回路により使用されているメモリ制御回路の一部を再使用して、それがまたＭＢＩＳＴインターフェースからのテスト・トランザクションを搬送するように、メモリ・トランザクションをメモリへ送ることが有益である。例えば、各メモリが対応するメモリ・コントローラを有していてもよい。メモリ・コントローラは、通常のメモリ・トランザクションを処理する処理回路のロード／ストア・ユニットを備えたその通常インターフェースに加えて、（例えば、制御情報、アドレス、及びデータ値を含む）テスト・トランザクションを受信し且つそれらをメモリへ送るＭＢＩＳＴインターフェース・ユニットを有していてもよい。テスト・トランザクションのサービスを制御するメモリ制御回路を再使用することにより、テスト・トランザクションは、通常のメモリ・トランザクションと類似したレイテンシで「高速で」サービスされ得る。ＭＢＩＳＴテスト・トランザクションがメモリ・インターフェースにおいてパイプライン・レジスタを通過させられることが可能であり且つ制御論理が再使用され得るので、これはメモリ・タイミングに殆ど又は全く影響を及ぼさず、回路領域及び電力消費を減少させる結果となり、また、メモリ・インターフェース論理の不良が検出可能であるため、テスト範囲が改善される。
【００２２】
非透過的ＭＢＩＳＴテスト・プロシージャが使用されてもよいが、テスト・プロシージャが透過的であることが特に有益であり、それは、（メモリ不良が検出されない場合）テスト・プロシージャの最後のテストされたメモリ・ロケーションのデータ値がテスト・プロシージャの開始時のデータ値と同じであることを意味する。従って、透過的テスト・プロシージャは、対象となるメモリ・ロケーションにおいて複数の動作を実施してもよいが、透過的テスト・プロシージャは、プロシージャの最後までに、メモリにオリジナル・データ値を回復させる。これは、プロセッサの通常処理への影響を増大させるであろう、ソフトウェアにおける状態保存／回復動作を、プロセッサが実施する必要をなくす。
【００２３】
前述の通り、テスト・プロシージャは、一度に比較的少ないメモリ・ロケーションをテストする短いバーストにおいて実施されてもよい。より詳細には、テスト・プロシージャは、メモリの異なる部分に（例えば、異なるバンク、メモリの列又は行に）配置されている一対のメモリ・ロケーションをテストしてもよい。例えば、メモリ・ロケーションの対は、そのメモリ・アドレスが所与の定数で分離されている２つのロケーションであってもよい。一度に一対のロケーションをテストすることは、メモリ及びその関連制御論理により完全にストレスを掛けて、より強力なテストをもたらすのに有益であり得る。これが、最初に対の一方のロケーションから次いで他方から値を読み取り又は書き込むことが、異なる制御信号（例えば、ワード線又はバンク・セレクタ）がアサートされるようにするか若しくはクリアされるようにする可能性があるか、又はメモリ内の異なる回路が使用されるようにする可能性がある（例えば、ビット線調整及びセンス増幅器）理由であり、それは、メモリの一部へのアクセスにメモリの別の部分へのアクセスが続く可能性がある、メモリへの実際のアクセスに関連する遅延を、より正確に反映する可能性がある。また、特定のメモリ・トランザクションを完全機能速度で連続して実施することが望ましい。これは、最大機能速度で又はその付近でメモリ制御信号及び回路を切り替えることにより、メモリに更にストレスをかける。
【００２４】
より詳細には、テスト・プロシージャの各バーストが、
（ａ）一対のメモリ・ロケーションから第１のデータ値及び第２のデータ値を読み取り、第１のデータ値及び第２のデータ値を第１の記憶ロケーション及び第２の記憶ロケーションに保存するステップと、
（ｂ）選択されたデータ値を一対のメモリ・ロケーションに書き込むステップと、
（ｃ）一対のメモリ・ロケーションから読み取られたデータ値が、一対のメモリ・ロケーションに書き込まれた、選択されたデータ値にマッチするかどうかチェックするステップと、
（ｄ）第１の記憶ロケーション及び第２の記憶ロケーションからの第１のデータ値及び第２のデータ値を一対のメモリ・ロケーションに書き込むステップと、
（ｅ）一対のメモリ・ロケーションから読み取られたデータ値が、第１の記憶ロケーション及び第２の記憶ロケーションに記憶された第１のデータ値及び第２のデータ値にマッチするかどうかチェックするステップと
を含んでいてもよい。
【００２５】
従って、このテスト・アルゴリズムは、一対のロケーションから既存の値を読み取り、それらを（レジスタなどの）所定のロケーションに保存して、テストの最後にこれらの値が回復され得ることを確認してもよい。いくつかの選択されたデータ値が一対のメモリ・ロケーションに書き込まれ、次いでそれらが引き続き書き込まれた値と同じであるかどうかチェックするために読み取り戻される。選択されたデータ値は、一対のロケーションに関して同じであってもよいか又は異なっていてもよく、第１のデータ値及び第２のデータ値の１つに基づいていてもよく、又は代わりに完全に無関係な値であり得ると考えられる。オリジナルの第１のデータ値及び第２のデータ値は、次いで、メモリ・ロケーションに回復され、次いでそれらが正しいかどうかチェックするために読み取り戻される。全てのチェックが終わった場合、一対のロケーションはエラーなしと判定されてもよく、一方、チェックの１つが値の１つがその期待値にマッチしないことを発見した場合、エラーが信号で伝えられる。
【００２６】
データ値及び関連するデータ・チェック論理を記憶するために使用されるレジスタは、ＭＢＩＳＴコントローラの一部であってもよいか、又はプロセッサ内に、メモリに近接して、例えば各メモリ・コントローラ内に、あってもよい。このデータパス論理がプロセッサの内部に配置されている場合、ＭＢＩＳＴコントローラは、各メモリ・トランザクションに関してアドレス及び制御情報を供給するのみであると考えられ、データ値を受信又は送信しないと考えられる。このデータパス論理をメモリに近接して配置する利点は、ＭＢＩＳＴインターフェースにおいて読み取られたアドレスを発行することとデータ・レジスタに読み取り戻されたデータを受信することとの間のレイテンシが短縮され得ることである。これは、次いで、追加領域を犠牲にして、上記の例示的テスト・プロシージャの部分（ａ）と部分（ｂ）との間の少数のクロック・サイクルを節約する。
【００２７】
一対のメモリ・ロケーションへの第２の書込みが完了したら（上記の部分（ｄ））、値が正しいかどうかチェックするための部分（ｅ）での後続の読取りがメモリ内の値に影響を及ぼさず、そのため、プロセッサはこれらの領域へのメモリ・トランザクションの発行を再度開始することができるので、予約済みメモリ領域は非予約状態にされ得る。部分（ｅ）でその後エラーが検出された場合、チェックが完了する前に不良メモリ・ロケーションに既に発行されていた任意のトランザクションの結果を処理回路が処理しないようにする可能性がある、エラー発見プロセスが起動され得る。
【００２８】
別の態様から見ると、本技術は、
データを記憶するための少なくとも１つのメモリ手段と、
少なくとも１つのメモリ手段内のデータにアクセスするためのメモリ・トランザクションを発行するための処理手段と、
少なくとも１つのメモリ手段の少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するＭＢＩＳＴリクエストを受信するためのメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）インターフェース手段と、
ＭＢＩＳＴインターフェースにより受信されるＭＢＩＳＴリクエストを検出し、ＭＢＩＳＴリクエストを検出することに応答して、前記少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するための制御手段と
を含み、
テスト・プロシージャ中に、少なくとも１つのメモリ手段は、制御手段により予約された少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理手段により発行されるメモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置を提供する。
【００２９】
更なる態様から見ると、本技術は、少なくとも１つのメモリと、少なくとも１つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路とを含むデータ処理装置のためのメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）方法を提供し、
本方法は、
データ処理装置のＭＢＩＳＴインターフェースにより受信されるメモリ・ビルトイン・セルフテスト（ＭＢＩＳＴ）リクエストを検出するステップであり、ＭＢＩＳＴリクエストは、少なくとも１つのメモリの少なくとも１つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示する、検出するステップと、
ＭＢＩＳＴリクエストを検出するステップに応答して、少なくとも１つの対象となるメモリ・ロケーションを含む少なくとも１つの予約済みメモリ・ロケーションをテストするために予約するステップと、
テスト・プロシージャ中に、少なくとも１つのメモリは、少なくとも１つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理回路により発行されるメモリ・トランザクションをサービスするステップと
を含み、
データ処理装置は、ＭＢＩＳＴリクエストを検出し、ＭＢＩＳＴリクエストを検出するステップに応答して、少なくとも１つの予約済みメモリ・ロケーションを予約する制御回路を含む、
方法。
【００３０】
本技術の更なる態様、特徴、及び利点が、添付図面と併せて読まれるべきである以下の例の説明から明らかになるであろう。
【図面の簡単な説明】
【００３１】
【図１】メモリ・ビルトイン・セルフテスト能力を備えたデータ処理装置の例を概略的に示す図である。
【図２】ＭＢＩＳＴテスト・プロシージャ実施することの例を示す図である。
【発明を実施するための形態】
【００３２】
図１は、ＣＰＵ、ＧＰＵ、又はＬ２キャッシュ・コントローラのようなメモリ・コントローラであってもよい処理回路４を含むデータ処理装置（集積回路又はチップ）２の例を概略的に示す。処理回路４は、データ処理を実施するプロセッサ・コア５を有する。コア５は、処理されるデータ値を記憶するレジスタ６のセットを有する。
【００３３】
１つ又は複数のタイプのメモリが設けられており、そのうちのいくつかはオンチップであってもよく、他はオフチップであってもよい。この例では、メモリが、処理されるインストラクションを記憶するインストラクション・キャッシュ７と、プロセッサ４によりアクセスされるデータ値を記憶するデータ・キャッシュ８と、インストラクション密結合メモリ（ＩＴＣＭ）９と、１つ又は複数のデータ密結合メモリ（ＤＴＣＭ）１０とを含む。プロセッサ・コア５により必要とされるインストラクション又はデータ値がレベル１（Ｌ１）インストラクション・キャッシュ７又はＬ１データ・キャッシュ８において使用不可能である場合、それは、レベル２（Ｌ２）キャッシュ１４から又はＬ２キャッシュに存在しない場合はメイン・メモリ１６からフェッチされる。この例では、Ｌ２キャッシュ１４は、インストラクションＬ１キャッシュ７とデータＬ１キャッシュ８との間で共用されるが、当然のことながら、また、インストラクション及びデータのための別個のＬ２キャッシュが設けられることが可能であると考えられる。ＩＴＣＭ９及びＤＴＣＭ１０は、プロセッサにローカル接続の（且つそのためＬ２キャッシュ１４及びメイン・メモリ１６と比較してより低いアクセス・レイテンシを有する）、しかし、ラインフィル動作及び退避（ｅｖｉｃｔｉｏｎ）がないため、インストラクション・キャッシュ７及びデータ・キャッシュ８より大きな予測可能性を有するメモリである。ＩＴＣＭ９又はＤＴＣＭ１０に記憶されるインストラクション又はデータは、プロセッサ・コア５により除去されるまで、密結合メモリ内に残っている。例えば、常時低レイテンシで使用可能であるべき重要なコード片又はデータ片が、ＩＴＣＭ９又はＤＴＣＭ１０内に配置されていてもよい。当然のことながら、いくつかの実施例は、図１に示されているメモリ・タイプ７、８、９、１０の全てを有しているとは限らない可能性がある（例えば、いくつかのシステムは任意のＴＣＭを有していなくてもよいか又は共用インストラクション／データ・キャッシュを有していてもよい）。
【００３４】
各メモリ・タイプ７、８、９、１０は、対応するメモリ・コントローラ１７、１８、１９を有する。例えば、インストラクション・キャッシュ・ユニット１７が、インストラクション・キャッシュ７を制御し、データ・キャッシュ・ユニット１８がデータ・キャッシュ８を制御し、ＴＣＭ制御ユニット１９がＴＣＭ９、１０を制御する。各メモリ・コントローラは、バス２１を介して処理コア５のロード／ストア・ユニット２０により発行されるメモリ・トランザクションを受信してもよい。トランザクションが、ロード若しくはストア・インストラクションの又はインストラクション・フェッチの結果であってもよい。バス２１は、一度に複数のメモリ・トランザクション、最大メモリ７〜１０につき１つまでを搬送してもよい。各メモリ・タイプ７、８、９、１０はいくつかの論理メモリを含んでいてもよい（例えば、キャッシュ７、８は１つ又は複数のタグＲＡＭユニット及び１つ又は複数のいくつかのデータＲＡＭユニットを含んでいてもよい）。各論理メモリはいくつかの物理メモリ・バンクを含んでいてもよい。
【００３５】
プロセッサ４を含むチップ２は、メモリ・ロケーションが不良であるかどうかテストするのに使用され得る（本明細書では、メモリ・ビルトイン・セルフテスト又はＭＢＩＳＴと称する）インビルト・セルフテスト能力を有する。ＭＢＩＳＴ論理は、フィールド内にチップ２が既に展開されており且つプロセッサ・コア５が動作可能なままである場合にメモリ７〜１０が不良に関してテストされ得るオンラインＭＢＩＳＴを付与するのに使用されてもよい。メモリが完全にテストされ、製造においてエラーなしと判定された場合にも、様々な理由で後に不良が生じる可能性があるため、これは有益である。例えば、個々のメモリ・セルが老朽化したトランジスタに因り機能しなくなる可能性があり、ワード線タイミング不良が電子移動に因り生じる可能性があり、ビア若しくは接点が電子移動に因り磨耗する可能性があり、又はセンス増幅器がそれらのトランジスタ年齢につれて機能しなくなる可能性がある。通常、これらのエージング効果はメモリ回路のパフォーマンスを劣化させ、それによりメモリ回路が減速する。従って、連続して完全機能速度でメモリ・テスト・トランザクションを実施することは有益である。メモリ若しくは主要データ片から誤った値が読み取られた場合又は要求されたインストラクションを全く読み取ることができなかった場合、メモリ・ロケーションにおける不良が処理エラーに繋がる可能性がある。これは、セーフクリティカル用途に使用されるデバイス（例えば、自動車のアンチロック・ブレーキ・システムを制御するデバイス）にとって特に重要である。オンラインＭＢＩＳＴ能力を付与することにより、そのようなエラーは、それらが安全性リスクを引き起こす前に検出され得る。
【００３６】
オンラインＭＢＩＳＴをサポートするために、プロセッサ４は、ＭＢＩＳＴインターフェース２２（例えば、入力／出力ピンのセット）と、ＭＢＩＳＴプロシージャ中にプロセッサ４を設定するＭＢＩＳＴインターフェース・ユニット２４とを有する。また、データ処理装置２は、ＭＢＩＳＴテスト・プロシージャのパフォーマンスを制御するＭＢＩＳＴコントローラ３０を含む。他の実施例では、ＭＢＩＳＴコントローラはプロセッサ４の内部に配置され得る。
【００３７】
ＭＢＩＳＴインターフェース２４は、制御、アドレス、及びデータの情報が、ＭＢＩＳＴコントローラ３０とプロセッサ４との間で転送されることを可能にする。このインターフェース２４は、（ａ）ＭＢＩＳＴ開始段階（ＭＢＩＳＴ  ｅｎｔｒｙ  ｐｈａｓｅ）と、（ｂ）対象となるメモリをテストするのに使用されるＭＢＩＳＴ読取りトランザクション及びＭＢＩＳＴ書込みトランザクションと、（ｃ）ＭＢＩＳＴ終了段階（ＭＢＩＳＴ  ｅｘｉｔ  ｐｈａｓｅ）とを含む標準化されたプロトコルを有する。ＭＢＩＳＴ開始段階は、インターフェース２４の一部である、リクエスト信号及び肯定応答信号とアレイ・バスとを使用して、テストされる論理メモリを選択する。メモリ・トランザクション（ｂ）は、ＭＢＩＳＴ開始段階（ａ）とＭＢＩＳＴ終了段階（ｃ）との間で起こる。ＭＢＩＳＴ終了段階は、インターフェース２４の一部である、リクエスト信号及び肯定応答信号及びアレイ選択信号を使用して、開始シーケンス（ａ）において選択された論理メモリを非選択状態にする。アレイ信号は、プロトコル（ａ）、（ｂ）及び（ｃ）の全段階の間変化しない。このインターフェース２４はプロセッサ４と同じクロック周波数で動作し、ＭＢＩＳＴトランザクションを連続して搬送することができる。
【００３８】
ＭＢＩＳＴコントローラ３０はＭＢＩＳＴインターフェース２４を制御する。ＭＢＩＳＴコントローラは、前述されているＭＢＩＳＴテスト・プロシージャを自律的に実施する機能を含む。ＭＢＩＳＴコントローラは、プロセッサ４又は図に示されていないテスト制御プロセッサのどちらかにより、図１に示されていないインターフェースを介してプログラムされる。また、ＭＢＩＳＴコントローラは、アドレスと、データと、アレイ（テストする論理メモリ）と、ステータスと、制御レジスタとを含む。ＭＢＩＳＴコントローラは、それをトリガしてテスト・バーストを開始させる入力信号を有する。この信号に応答して、ＭＢＩＳＴコントローラは、ＭＢＩＳＴ開始シーケンス、バーストを作り上げるメモリ読取りトランザクション及びメモリ書込みトランザクション、次いでＭＢＩＳＴ終了シーケンスを実施する。バーストの最後に、ＭＢＩＳＴコントローラは、次のバーストに対して準備が整っているアドレス・レジスタをアップデートする。論理メモリ内の全ロケーションがテストされたら、ＭＢＩＳＴコントローラは、レジスタ内にテスト終了ステータス・ビットを設定し、プロセッサ４又は図に示されていないテスト制御プロセッサに割り込むのに使用されてもよいテスト終了信号をアサートする。バースト中にメモリ不良が検出された場合、ＭＢＩＳＴコントローラは、レジスタ内にメモリ不良ステータス・ビットを設定し、プロセッサ４又はテスト制御プロセッサに割り込むのに使用されてもよいメモリ・不良信号をアサートする。プロセッサは、ステータス・レジスタ及びアドレス・レジスタを読み取り、どのメモリ・ロケーションが不良であるか判定することができる。ＭＢＩＳＴコントローラ３０は、プロセッサ４と同じクロック周波数で動作し、ＭＢＩＳＴトランザクションを連続して実施することができる。
【００３９】
ＭＢＩＳＴインターフェース・ユニット２４は、インターフェース２４の一部であるアレイ信号に基づいて、リクエスト信号、肯定応答信号、及び論理メモリ選択信号、並びにＭＢＩＳＴインターフェース２４とメモリ・コントローラ１７、１８又は１９との間のメモリ・トランザクションを送る。
【００４０】
アレイ・バスにより選択された論理メモリ上でテスト・プロシージャが実施されることを指示するＭＢＩＳＴコントローラ３０からの（ＭＢＩＳＴ開始段階の間に起こる）ＭＢＩＳＴリクエストに応答して、選択された論理メモリがその一部である、同じメモリ・タイプ７〜１０の一部である全メモリが、関連するメモリ・コントローラ１７〜１９により予約（ロック）される。確認応答がＭＢＩＳＴコントローラ３０へ戻される前に全インフライト・メモリ・トランザクションが完了したら、メモリがロックされる。ロックされたメモリは、ＭＢＩＳＴ終了段階の間に起こるロックの除去まで、プロセッサ・コア５からのメモリ・トランザクションをサービスすることができない。その間、テスト・プロシージャが実施される間にトランザクションは非予約状態にされたメモリ７〜１０により引き続き処理されることが可能であり、その結果、プロセッサへのパフォーマンス・インパクトは低減される。また、プロセッサ４内のＭＢＩＳＴインターフェース・プロトコル、テスト・プロシージャ、及びＭＢＩＳＴ論理は、ロックがアクティブである時間が可能な限り短く維持されることを確実にするように設計されている。
【００４１】
図２は、メモリ７〜１０の１つ内の１つ又は複数の対象となるメモリ・ロケーションをテストするためのＭＢＩＳＴテスト・プロシージャを実施するプロセスを示す。図２は、ＭＢＩＳＴコントローラ３０と、ＭＢＩＳＴインターフェース・ユニット２４と、メモリ・コントローラ１８と、プロセッサ・コア５との間の相互作用を示す。データ・キャッシュ８のためのメモリ・コントローラ１８がこの例に示されているが、同じ動作はその他のメモリ・タイプに適合し得る。
【００４２】
ステップＳ１において、プロセッサはキャッシュ８へ複数のメモリ・トランザクションを発行し、メモリ・コントローラ１８はキャッシュ８を制御して、相応に応答する。ステップＳ２において、ＭＢＩＳＴコントローラ３０はＭＢＩＳＴインターフェース・プロトコル開始段階に入る。これは、キャッシュ８内で論理メモリを選択する値にアレイ・バスを設定して、ＭＢＩＳＴインターフェース２２上でＭＢＩＳＴリクエスト信号をアサートする。アレイ・バスはリクエストをデータ・キャッシュ・メモリ・コントローラ１８へ送るＭＢＩＳＴインターフェース・ユニット２４によりデコードされる。例えば、ＭＢＩＳＴリクエストは、あるテスティング・スケジュールに応答して、ＭＢＩＳＴコントローラにより定期的にトリガされてもよく（例えば、テスト・タイマの経過によりトリガされる）、又はＭＢＩＳＴリクエストは、コア５により処理中に発見された処理エラーによりトリガされてもよい（例えば、エラー修正コードが使用されてエラーを検出してもよい）。
【００４３】
ステップＳ３において、テスティングのために選択された論理メモリ８のための関連メモリ・コントローラ１８は、それがプロセッサ・コア５からのいかなる新しいトランザクションもサービスすることができないように、自らテスティングの準備をして、メモリを予約する。予約されると、メモリ・コントローラ１８は、テスト・プロシージャが完了するまで、プロセッサ・コア５からの任意の更なるトランザクションをストールする。ステップＳ４において、コア５、Ｌ２キャッシュ１４、又はメイン・メモリ１６に未処理のメモリ・トランザクションがある場合、メモリ・コントローラ１８はこれらのトランザクションが完了するまで待機する。例えば、Ｌ２キャッシュ１４からのキャッシュ・ラインフィルをトリガしたトランザクションは、ラインがキャッシュ・メモリ８内に書き込まれることを完了することを許可する。
【００４４】
メモリ８のテスティングの準備が整ったら、ステップＳ５において、メモリ・コントローラ１８はそのメモリのテスティングの準備が整っていることをＭＢＩＳＴインターフェース・ユニット２４に信号で伝え、次いでステップＳ６において、ＭＢＩＳＴインターフェース・ユニット２４は、インターフェース２２によりＭＢＩＳＴコントローラ３０へＭＢＩＳＴ確認応答を発行する。これは、プロセッサは現在テスティングの準備が整っていることをコントローラ３０に知らせ、それによりＭＢＩＳＴ開始段階が終了する。ＭＢＩＳＴコントローラ３０は、次いで、ステップＳ７においてテスト・プロシージャを開始する。当該テスト・プロシージャは、ひとつ又は複数の対象となるロケーションのためのＭＢＩＳＴトランザクションの短いバーストで構成されており、それらが正しく機能しているかどうかを調査する。テスト・プロシージャは以下により詳細に記載される。
【００４５】
テスト・プロシージャが実施されている間、プロセッサ・コア５はメモリ・トランザクションを発行し続けることができる。テスティングのために予約されていなかったメモリ・タイプにアクセスするメモリ・トランザクションは、引き続きサービスされ得る。例えば、ステップＳ８において、プロセッサ・コア５はＩＴＣＭ９へトランザクションを発行し、ＴＣＭ制御ユニット１９はＩＴＣＭを制御して、通常の方法で応答してもよい。しかし、ステップＳ９において、プロセッサ・コア５が、テスティングのために予約されているメモリ８へメモリ・トランザクションを発行しようとした場合、トランザクションは対応するメモリ・コントローラ１８によりストールされる。
【００４６】
テスト・プロシージャが完了したら、ステップＳ１０において、ＭＢＩＳＴコントローラ３０がＭＢＩＳＴリクエスト信号をリリースすることにより、ＭＢＩＳＴインターフェース・プロトコル終了段階を開始する。これは、ステップＳ１１において、プロセッサ・コア５による使用のためにメモリが再度使用可能になるように、対象となるメモリのためのメモリ・コントローラ１８にメモリを非予約状態にするように命令するＭＢＩＳＴインターフェース・ユニット２４により、検出される。従って、ステップＳ１２において、メモリ８への、ソフトウェアが起動したトランザクションによりプロセッサ・コア５がストールされた場合、これは通常通り進行し、プロセッサはＭＢＩＳＴトランザクションによりストールされていることを停止する。ＭＢＩＳＴコントローラ３０は、任意の未処理ＭＢＩＳＴ読取りトランザクションがプロセッサ４から戻されるのを待機し、それによりＭＢＩＳＴ終了段階が終了する。
【００４７】
他の例では、ＭＢＩＳＴインターフェース・ユニット２４はより小さい役割を担っていてもよく、単にＭＢＩＳＴインターフェース２２とメモリ・コントローラ１７〜１９との間で情報を送ってもよい。この場合、ＭＢＩＳＴリクエスト及びＭＢＩＳＴ確認応答は、ＭＢＩＳＴインターフェース２２及びＭＢＩＳＴインターフェース２４を介して、メモリ・コントローラ３０とメモリ・コントローラ１７〜１９との間で直接交換されてもよい。
【００４８】
より詳細には、ステップＳ３〜ステップＳ６において、以下のステップ：ａ）データ・キャッシュ・メモリ・コントローラとコアとの間に未処理トランザクションがある場合、これが完了され；ｂ）メモリ予約（ロック）が適用され、それによりデータ・キャッシュ・メモリ・コントローラにより、コアからの任意の更なるトランザクションが開始されないようにし；ｃ）データ・キャッシュ・メモリ・コントローラとＬ２キャッシュ又はメイン・メモリとの間に未処理トランザクションがある場合、これが完了され；及びｄ）次いで、肯定応答信号がＭＢＩＳＴインターフェース・ユニットに返送される、ことがいくつかの実施例において実施されてもよい。
【００４９】
ステップＳ７におけるテスト・プロシージャは、プロセッサ・コア５による使用のためにメモリを解放する前に一度に所与の論理メモリ内の少数のメモリ・ロケーションをテストする（例えば、２０処理サイクル未満の間続く）トランザクションの非常に短いバーストであってもよい。次のバーストは前のバーストとは異なるロケーションをテストする。従って、経時的にメモリ内の全ロケーションがテストされる。各バーストの長さと比較してバースト間の時間が大きい可能性があるので、各バーストは非常に短く、プロセッサはペナルティなしに予約されないメモリにアクセスすることができ、バーストはソフトウェアの関与なしに実施され、これは、プロセッサのパフォーマンスへのメモリ・テスティングの影響を殆ど無視できるほど小さくする。各短いテスト・バーストは、例えばカウンタの終了によりトリガされて、通常起こり得る。
【００５０】
ステップＳ７においてテスト・プロシージャ中に実施されるトランザクションのバーストの例が、以下に示されている。バーストは、メモリ・ロケーションの所与の範囲に関する複数の値ｎ上で（各バーストに対する別個のＭＢＩＳＴリクエストで）反復されて、メモリ範囲全体をテストすることができる。各バーストは、アドレスｎ、及び第１のロケーションのアドレスから量ｍだけずらされた第２のアドレスｎ＋ｍにより特定される一対のメモリ・ロケーションを対象とする。ロケーションが一般にメモリの異なる部分にあるように、物理メモリ内の別のユニットが対の第２のトランザクションによりアクセスされるように、ｍの値は選択され、それはテスト中にメモリにより完全にストレスをかけるために有益である。以下のトランザクションにおいて、「Ｘ」は、ロケーションｎから読み出された、レジスタＸ内の値を表し、「〜Ｘ」は、レジスタＸ内の値を反転させることに相当する値を表し、「Ｙ」は、ロケーションｎ＋ｍから読み出されたレジスタＹ内の値を表す。
【００５１】
【表１】
0006535517.tif 000002
【００５２】
テスト・プロシージャの最後でロケーションｎ及びロケーションｎ＋ｍの値がプロシージャの開始時と同じなので、このアルゴリズムは透過的ＭＢＩＳＴテスト・プロシージャであり、その結果、プロセッサ・コア５は、テスト・プロシージャを有効にする前に、ソフトウェアにおいてデータを保存／回復する必要がない。ステップ９及びステップ１０における後続の読取りがデータの妥当性に影響を及ぼさないので、バーストのステップ８における最後の書込みトランザクション後に、予約済みメモリが非予約状態にされることが可能であるため、プロセッサ・コア５から予約済みメモリ領域までのメモリ・トランザクションは、ステップ９及びステップ１０と並行して実行されるように開始され得る。
【００５３】
テスト・アルゴリズムは、通常のメモリ・トランザクションと類似した方法で、メモリ・コントローラにより「高速で」処理されてもよいので、通常のメモリ・トランザクションをサービスしている時にこのテスト・プロシージャはメモリの挙動の完全なテスティングを実現し、それは、他のテスティング方法は通常のメモリ・トランザクションには使用されない、メモリ内への代替経路を使用するため、より低速である他のテスティング方法では不可能である。ステップ１及びステップ２は連続して実施されてもよく、ステップ３〜１０は連続して実施されてもよい。当該アルゴリズムは、実践においてステップ３後の動作間に従属関係がないように設計されている。いくつかのメモリでは、アクセス・レイテンシは、ステップ２とステップ３との間に少数サイクルのギャップがあることを意味する可能性がある。ＭＢＩＳＴインターフェース・プロトコルは、前の読取りトランザクションがそれらの読取りデータに戻される前にトランザクションが開始することを可能にする。従って、プロトコルは、（最大、ＭＢＩＳＴコントローラにより追跡される得る未処理トランザクションの数まで）任意の数の未処理トランザクションが一度に起こることを可能にする。
【００５４】
上記のステップ１及びステップ２では、ロケーションｎ及びロケーションｎ＋ｍから読み込まれた値はレジスタＸ、Ｙに記憶される。これらのレジスタはプロセッサのレジスタ６のうちのいくつかであってもよい。或いは、いくつかのレジスタは、値をレジスタに記憶すること及びレジスタから値を読み取り戻すことに関連するレイテンシが短縮されて、テスト・プロシージャに関連する全時間長を短縮することができるように、テストされているメモリのメモリ・コントローラ１７〜１９内に設けられてもよい。
【００５５】
テスト・プロシージャのステップ５、６、９又は１０におけるチェックの１つが、あるロケーションから読み取られた値がその期待値にマッチしないことを発見した場合、ＭＢＩＳＴコントローラ３０によりエラーにフラグが立てられることを発見している。エラーが検出された場合、該エラーに応答する種々の方法がある可能性がある。例えば、不良メモリ・ロケーションがメモリ・コントローラ１７〜１９内で使用不可能として設定されてもよい。いくつかの予備メモリ・ブロックが設けられるように、いくつかのシステムがいくらかの冗長性を有していてもよい。エラーが発生した場合、不良ブロックの代わりに予備ブロックが使用され得る。また、不良記憶ロケーションを含む行又は列が無効にされ、記憶ロケーションの冗長な行又は列に取って代わられることを可能にする修復特徴を、物理メモリ・マクロが含んでいてもよい。また、いくつかのシステムは、エラーが検出された場合にプロセッサ・コア５の機能性が低減されるリンプ・ホーム・モードを有していてもよい。例えば、Ｌ１データ・キャッシュ８が機能しなくなった場合、それは無効にされてもよく、Ｌ２キャッシュ１４が遥かに長いレイテンシを有するので理想的ではないが、それでもプロセッサ・コア５が何らかの機能性をもたらすことを可能にする可能性があるＬ２キャッシュ１４を使用して、全ての処理が実施されてもよい。いくつかの場合には、十分な不良が検出された場合、ＭＢＩＳＴコントローラ３０は、チップ２全体が交換されるべきであることを指示して、ユーザに対して警告が提示されるようにする信号を生成してもよい。例えば、自動車のダッシュボード上に警告灯が表示されてもよい。従って、検出されたエラーに応答する様々な方法がある。
【００５６】
ＭＢＩＳＴインターフェース・ユニット２４及びメモリ・コントローラ１７〜１９が別個に図１に示されているが、いくつかの場合には、ＭＢＩＳＴインターフェース・ユニット２４の機能性はメモリ・コントローラ１７〜１９自体により実施されてもよい。また、いくつかの実施例では、ＭＢＩＳＴインターフェース・ユニット２４は、メモリ・コントローラの代わりに、テストされているメモリ・ロケーションをロックすることに責任を負っている可能性がある。従って、一般に、装置２は、ＭＢＩＳＴコントローラ３０によりテストされている少なくとも１つのロケーションを含むメモリ領域を予約するハードウェア内に実装されているいくつかの制御回路を有していてもよい。
【００５７】
上記に示されている例では、テストの対象となる１つまたは複数のロケーションを含むメモリ・タイプ全体は、それがプロセッサからのメモリ・トランザクションをサービスすることができないように、テスト・プロシージャ中に予約される。しかし、また、同メモリ・タイプ内の他の領域がコア５により引き続きアクセスされ得るように、所与のメモリ・タイプ内のより小さい領域をロックし、ロック解除することが可能である。例えば、個々の論理メモリ、ＲＡＭユニット、バンク、行、又はメモリ・ロケーションの他のサブユニットは、ＭＢＩＳＴインターフェース・ユニット２４若しくはメモリ・コントローラ１７〜１９により個々にロックされてもよく、又はメモリ・ロケーションは個々にロックされてもよい。
【００５８】
また、オンラインＭＢＩＳＴに使用されるＭＢＩＳＴインターフェース２２、ＭＢＩＳＴインターフェース・ユニット２４、及びメモリ・コントローラ１７〜１９の機能性は、製造中に使用されて、製造ＭＢＩＳＴを実施してもよい。これは、２つの別個のＭＢＩＳＴインターフェースの必要性をなくす。しかし、製造ＭＢＩＳＴのためのテスト・プロシージャは、テスト・プロシージャのオンラインＭＢＩＳＴとは異なる可能性がある。従って、異なるＭＢＩＳＴコントローラ３０が、異なるタイプのＭＢＩＳＴのために設けられることが可能であると考えられる。いくつかの場合には、ＭＢＩＳＴコントローラは、メモリ・テスティングを実施するチップ２内の何らかの処理論理であってもよい。或いは（特に製造ＭＢＩＳＴでは）、ＭＢＩＳＴコントローラ３０は、汎用コンピュータ、又はオフチップであり且つテスティングのためのＭＢＩＳＴインターフェース２２に連結されていてもよい他の外部デバイスであってもよい。
【００５９】
図１に示されている例では、各メモリ７〜１０に近接しているメモリ・コントローラ１７〜１９のみが、ＭＢＩＳＴテスト・トランザクションをメモリに搬送するために再使用される。従って、プロセッサ・コア５内の通常のメモリ・アクセス・パイプラインは、インストラクションを自由に実行することができ、通常は他のメモリに自由にアクセスすることができる。また、メモリ・コントローラ１７〜１９内のメモリ・インターフェースにおける最終パイプライン段階の前に、ＭＢＩＳＴトランザクションが適用される。これは、メモリ・テスティングの付与に因る機能インターフェース・タイミング（ｆｕｎｃｔｉｏｎａｌ  ｉｎｔｅｒｆａｃｅ  ｔｉｍｉｎｇ）への影響が殆ど又は全くないこと、及びまた、ＭＢＩＳＴテスティング中に機能メモリ・インターフェース論理（ｆｕｎｃｔｉｏｎａｌ  ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ  ｌｏｇｉｃ）がテストされることを意味する。
【００６０】
添付図面を参照して、本発明の例示的実施例が本明細書に詳細に記載されたが、本発明はそれら詳細な実施例に限定されないこと、添付の特許請求の範囲により定められる本発明の範囲及び精神から逸脱することなく、当業者により種々の変更及び修正が実行され得ることは言うまでもない。
【符号の説明】
【００６１】
４  プロセッサ
５  コア
６  レジスタ
７  インストラクション・キャッシュ
８  データ・キャッシュ
９  インストラクション密結合メモリ（ＩＴＣＭ）
１０  データ密結合メモリ（ＤＴＣＭ）
１４  Ｌ２キャッシュ１４
１６  メイン・メモリ
１７  インストラクション・キャッシュ・ユニット
１８  データ・キャッシュ・ユニット
１９  ＴＣＭ制御ユニット
２０  ロード／ストア・ユニット
２１  バス
２４  ＭＢＩＳＴインターフェース・ユニット
３０  外部ＭＢＩＳＴコントローラ
【図１】
0006535517.tif 000003
【図２】
0006535517.tif 000004