特許第6535517号(P6535517)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エイアールエム リミテッドの特許一覧

特許6535517データ処理装置用のメモリ・ビルトイン・セルフテスト
<>
  • 特許6535517-データ処理装置用のメモリ・ビルトイン・セルフテスト 図000003
  • 特許6535517-データ処理装置用のメモリ・ビルトイン・セルフテスト 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6535517
(24)【登録日】2019年6月7日
(45)【発行日】2019年6月26日
(54)【発明の名称】データ処理装置用のメモリ・ビルトイン・セルフテスト
(51)【国際特許分類】
   G11C 29/12 20060101AFI20190617BHJP
   G06F 12/00 20060101ALI20190617BHJP
   G06F 11/22 20060101ALI20190617BHJP
【FI】
   G11C29/12
   G06F12/00 571A
   G06F11/22 605F
   G06F11/22 673J
【請求項の数】20
【外国語出願】
【全頁数】21
(21)【出願番号】特願2015-119184(P2015-119184)
(22)【出願日】2015年6月12日
(65)【公開番号】特開2016-9489(P2016-9489A)
(43)【公開日】2016年1月18日
【審査請求日】2018年6月5日
(31)【優先権主張番号】14/310,162
(32)【優先日】2014年6月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】594154428
【氏名又は名称】エイアールエム リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】アラン ジェレミー ベッカー
(72)【発明者】
【氏名】キローダ アシャン セネラス パシレイン
(72)【発明者】
【氏名】ロバート キャンベル エイトケン
【審査官】 篠塚 隆
(56)【参考文献】
【文献】 特開2005−149503(JP,A)
【文献】 特開昭62−219134(JP,A)
【文献】 米国特許出願公開第2007/0283104(US,A1)
【文献】 米国特許出願公開第2013/0173970(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G11C 29/12
G06F 11/22
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
データを記憶するように構成されている少なくとも1つのメモリと、
前記少なくとも1つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路と、
前記少なくとも1つのメモリの少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するMBISTリクエストを受信するように構成されている、メモリ・ビルトイン・セルフテスト(MBIST)インターフェースと、
前記MBISTインターフェースにより受信される前記MBISTリクエストを検出し、前記MBISTリクエストを検出することに応答して、前記少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するように構成されている制御回路と
を含み、
前記テスト・プロシージャ中に、前記少なくとも1つのメモリは、前記制御回路により予約されている前記少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理回路により発行される前記メモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置。
【請求項2】
前記制御回路は、前記少なくとも1つの予約済みメモリ・ロケーションの1つを対象とする、前記処理回路からのメモリ・トランザクションのサービスを阻止するように構成されている、請求項1に記載のデータ処理装置。
【請求項3】
複数のメモリ・タイプを含む、請求項1に記載のデータ処理装置。
【請求項4】
前記複数のメモリ・タイプは、
データ・キャッシュ、
インストラクション・キャッシュ、
データ密結合メモリ、及び
インストラクション密結合メモリ
のうちの2つ以上を含む、請求項3に記載のデータ処理装置。
【請求項5】
前記少なくとも1つの予約済みメモリ・ロケーションは、前記少なくとも1つの対象となるメモリ・ロケーションと同じメモリ・タイプ内の前記メモリ・ロケーションを含む、請求項3に記載のデータ処理装置。
【請求項6】
前記少なくとも1つの予約済みメモリ・ロケーションは、前記少なくとも1つの対象となるメモリ・ロケーションと同じメモリサブユニット内の前記メモリ・ロケーションを含む、請求項1に記載のデータ処理装置。
【請求項7】
前記制御回路は、前記処理回路により実行されるソフトウェアの介入なしに、テスティングのために前記少なくとも1つの予約済みメモリ・ロケーションを予約するように構成されている、請求項1に記載のデータ処理装置。
【請求項8】
前記テスト・プロシージャの少なくとも一部の完了後に、前記制御回路は、前記少なくとも1つの予約済みメモリ・ロケーションを非予約状態にして、前記処理回路により発行されるメモリ・トランザクションをサービスするために、前記少なくとも1つの予約済みメモリ・ロケーションを使用可能にするように構成されている、請求項1に記載のデータ処理装置。
【請求項9】
前記テスト・プロシージャは、前記少なくとも1つのメモリへ発行されるテスト・トランザクションのバーストを含み、前記少なくとも1つのメモリの前記メモリ・ロケーションのサブセットをテストする、請求項1に記載のデータ処理装置。
【請求項10】
前記MBISTインターフェースは複数のMBISTリクエストを受信するように構成されており、各MBISTリクエストは、前記少なくとも1つのメモリのメモリ・ロケーションの異なるサブセットをテストするためにテスト・トランザクションのバーストに対応している、請求項9に記載のデータ処理装置。
【請求項11】
前記少なくとも1つの対象となるメモリ・ロケーションをテストするための前記テスト・プロシージャは割込み不可能である、請求項1に記載のデータ処理装置。
【請求項12】
前記MBISTリクエストを検出することに応答して、前記制御回路は前記MBISTインターフェースによりMBIST確認応答信号を発行し、前記MBISTインターフェースに連結されているMBISTコントローラをトリガして、前記テスト・プロシージャを開始させるように構成されている、請求項1に記載のデータ処理装置。
【請求項13】
前記制御回路は、前記データ処理装置が前記テスト・プロシージャを実施する準備が整うまで、前記MBIST確認応答信号の発行を遅延させるように構成されている、請求項12に記載のデータ処理装置。
【請求項14】
前記テスト・プロシージャにおいて、前記MBISTインターフェースは、前記少なくとも1つの対象となるメモリ・ロケーションをテストする少なくとも1つのテスト・トランザクションを受信するように構成されている、請求項1に記載のデータ処理装置。
【請求項15】
前記処理回路により発行されるメモリ・トランザクションを前記少なくとも1つのメモリへ送るように構成されているメモリ制御回路を含み、
前記メモリ制御回路の少なくとも一部が、前記MBISTインターフェースにより受信される前記少なくとも1つのテスト・トランザクションを前記少なくとも1つのメモリへ送るために再使用される、
請求項14に記載のデータ処理装置。
【請求項16】
前記テスト・プロシージャは、前記テスト・プロシージャによりエラーが検出されなかった場合、前記テスト・プロシージャの最後に、前記少なくとも1つの対象となるメモリ・ロケーションに記憶されたデータ値が、前記テスト・プロシージャの最初に前記少なくとも1つの対象となるメモリ・ロケーションに記憶されたデータ値と同じである、透過的テスト・プロシージャである、請求項1に記載のデータ処理装置。
【請求項17】
前記少なくとも1つの対象となるメモリ・ロケーションは、前記少なくとも1つのメモリの異なる部分にある一対のメモリ・ロケーションを含み、前記テスト・プロシージャは:
(a)前記一対のメモリ・ロケーションから第1のデータ値及び第2のデータ値を読み取り、前記第1のデータ値及び前記第2のデータ値を第1の記憶ロケーション及び第2の記憶ロケーションに保存するステップと;
(b)選択されたデータ値を前記一対のメモリ・ロケーションに書き込むステップと;
(c)前記一対のメモリ・ロケーションから読み取られたデータ値が、前記一対のメモリ・ロケーションに書き込まれた、前記選択されたデータ値にマッチするかどうかチェックするステップと;
(d)前記第1の記憶ロケーション及び前記第2の記憶ロケーションからの前記第1のデータ値及び前記第2のデータ値を前記一対のメモリ・ロケーションに書き込むステップと;
(e)前記一対のメモリ・ロケーションから読み取られたデータ値が、前記第1の記憶ロケーション及び前記第2の記憶ロケーションに記憶された前記第1のデータ値及び前記第2のデータ値にマッチするかどうかチェックするステップと
を含む、請求項1に記載のデータ処理装置。
【請求項18】
前記制御回路は、前記第1のデータ値及び前記第2のデータ値が前記一対のメモリ・ロケーションに書き込まれた後、前記少なくとも1つの予約済みメモリ・ロケーションを非予約状態にするように構成されている、請求項17に記載のデータ処理装置。
【請求項19】
データを記憶するための少なくとも1つのメモリ手段と、
前記少なくとも1つのメモリ手段内のデータにアクセスするためのメモリ・トランザクションを発行するための処理手段と、
前記少なくとも1つのメモリ手段の少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するMBISTリクエストを受信するためのメモリ・ビルトイン・セルフテスト(MBIST)インターフェース手段と、
前記MBISTインターフェースにより受信される前記MBISTリクエストを検出し、前記MBISTリクエストを検出することに応答して、前記少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するための制御手段と
を含み、
前記テスト・プロシージャ中に、前記少なくとも1つのメモリ手段は、前記制御手段により予約された前記少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理手段により発行される前記メモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置。
【請求項20】
少なくとも1つのメモリと、前記少なくとも1つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路とを含むデータ処理装置のためのメモリ・ビルトイン・セルフテスト(MBIST)方法であって、
本方法は、
前記データ処理装置のMBISTインターフェースにより受信されるメモリ・ビルトイン・セルフテスト(MBIST)リクエストを検出するステップであり、前記MBISTリクエストは、前記少なくとも1つのメモリの少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示する、検出するステップと、
前記MBISTリクエストを検出する前記ステップに応答して、前記少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するステップと、
前記テスト・プロシージャ中に、前記少なくとも1つのメモリは、前記少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、前記処理回路により発行される前記メモリ・トランザクションをサービスするステップと
を含み、
前記データ処理装置は、前記MBISTリクエストを検出し、前記MBISTリクエストを検出する前記ステップに応答して、前記少なくとも1つの予約済みメモリ・ロケーションを予約する制御回路を含む、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技術はデータ処理の分野に関する。より詳細には、本技術はメモリ・ビルトイン・セルフテスト(MBIST:memory built−in self−test)を実施する技術に関する。
【背景技術】
【0002】
データ処理システムに、装置内に設けられているメモリをテストするセルフテスティング機構を付与することが知られており、その結果、メモリ回路が製作された場合に装置がセルフテスト又は一連のセルフテストを実施して、回路が拒絶されるべきであることを意味する何らかの欠陥が存在するかどうかを判定してもよい。そのような技術は、通常、メモリ・ビルトイン・セルフテスト(MBIST)と呼ばれる。データ処理装置の製造時にMBISTを実施するのと同様に、MBISTはまた、後に、集積回路がフィールド内に配備されその設計された機能を実施する時に実施され得る(「オンライン」MBIST、「ライブ」MBIST、又は「インフィールド」MBISTと呼ばれる可能性がある)。しかし、既存のオンラインMBIST技術は、処理回路の通常の機能遂行に大きな影響を及ぼす。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本技術はこの問題に対処しようと努めている。
【課題を解決するための手段】
【0004】
一態様から見ると、本技術は、データを記憶するように構成されている少なくとも1つのメモリと、
少なくとも1つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路と、
少なくとも1つのメモリの少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するMBISTリクエストを受信するように構成されているメモリ・ビルトイン・セルフテスト(MBIST)インターフェースと、
MBISTインターフェースにより受信されるMBISTリクエストを検出し、MBISTリクエストを検出することに応答して、前記少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するように構成されている制御回路と
を含み、
テスト・プロシージャ中に、少なくとも1つのメモリが、制御回路により予約されている少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理回路により発行されるメモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置を提供する。
【0005】
既存のオンライン・メモリ・テスト技術は、プロセッサ上で動作してメモリを直接テストするソフトウェア、又は外部デバイスがテスト・インターフェイースを介してテストを実施することができるように、テストされるメモリへのプロセッサ・アクセスを無効にするソフトウェアのどちらかを使用する。通常、ソフトウェアはその通常動作を停止し、テスト・モードに入る。これは極めてインベイシブであり、プロセッサがその通常機能を実施しないようにする。この問題に対処するために、少なくとも1つのメモリ内の少なくとも1つの対象となるメモリ・ロケーションにおいてテスト・プロシージャが実施されようとしていることを指示する、MBISTインターフェースにおいて受信されるMBISTリクエストを検出する制御回路が設けられている。MBISTリクエストの検出時に、設けられた制御回路は、テストされる少なくとも対象となるメモリ・ロケーションを含む少なくとも1つの予約メモリ・ロケーションをテストするために予約する。テスト・プロシージャが次いで実施された場合、少なくとも1つのメモリは、制御回路により予約されている少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とする、処理回路により発行されるメモリ・トランザクションをサービスし続けることができる。従って、少なくとも1つのメモリの一部分のみが予約され、他の部分が引き続き処理回路からのトランザクションをサービスすることができ、その結果、プロセッサは通常通り機能し続けてもよく、テスティングは、プロセッサ上で実行しているソフトウェアに対して透過的であり得る。(例えば、プロセッサが予約済みメモリ・ロケーションにアクセスする場合、プロセッサがストールされる可能性がある)テスティングのためのメモリを予約するためにハードウェアに専用の制御回路を設けることは、処理回路の処理に割り込んでMBISTを実施する必要を排除する。これは、MBISTプロシージャに起因するパフォーマンスへの影響を遥かに小さくすることに繋がり、従ってMBISTが回路の通常機能と共存することを可能にする。このことは、例えば、処理回路の通常処理を無効にすることは望ましくないと考えられるセーフクリティカル機能を実施するデータ処理装置にとって特に重要である。
【0006】
MBISTリクエストを検出し、テスティングのためにメモリ内のロケーションを予約する制御回路は、いくつかの場合、インターフェースにより受信されるトランザクションに対するデータ処理装置の応答を制御するためにMBISTインターフェースに連結されているMBISTインターフェース制御回路内に設けられていてもよい。他の場合に、制御回路は、少なくとも1つのメモリの1つ又は複数を制御するメモリ制御回路内に設けられていてもよい。例えば、所与のメモリのためのメモリ・コントローラは、そのメモリに向かって通過する全てのトランザクションを処理してもよく、また、テスティングのためのメモリ・ロケーションの予約及びテスト・トランザクションと通常メモリ・トランザクションとの間のアービトレーションを処理してもよい。メモリ・トランザクションのサービスを制御するための関数論理を再使用することができきるため、本手法は優れており、本手法はより良いタイミングを有し、メモリ・コントローラ関数論理をテストし、領域、電力、及びルーティングを減少させ、実施することが容易である。しかし、いくつかの場合に、制御回路は、MBISTインターフェース制御回路及びメモリ制御回路の両方の一部に対応してもよく、例えばMBISTインターフェース制御回路はMBISTリクエストを検出し、次いでメモリ制御回路をトリガしてテスティングのためのメモリ領域を予約させる。また、典型的なRAMマクロに論理を追加して、MBISTのためのメモリ・ロケーションを予約することにより制御回路を実装し、メモリ・トランザクションとMBISTテスト・トランザクションとの間でアービトレーションすることが可能であると考えられるが、これには、RAMの関数型インターフェースに待機信号を追加して、プロセッサが予約済みロケーションにアクセスしようとした場合に該プロセッサをストールする必要がある可能性がある。
【0007】
一般に、メモリ・ロケーションが何らかのテストをするために予約されてもよく、それにより、テスト・プロシージャが実施されている間に処理回路が予約済みメモリ・ロケーションにアクセスしないようになる。例えば、予約済みメモリ・ロケーションを対象とする、処理回路からのメモリ・トランザクションがストールされてもよいか、又は別途、サービスされないようにされてもよい。その間に、予約済み領域以外のメモリ領域を対象とする、処理回路により発行されるメモリ・トランザクションは、メモリにより通常通りサービスされ得る。プロセッサは様々な理由で(例えば、障害若しくは低速外部メモリへのアクセスに因り、又は要求されたデータ値がL1キャッシュ内に存在せず、そのためL2メモリからフェッチされなければならないため)ストールする可能性があるので、テスティングの理由で少数のクロック・サイクルの間ストールすることは異常ではないと考えられ、そのため全体的なパフォーマンスにそれほど悪影響を及ぼさないと考えられる。
【0008】
いくつかの場合に、制御回路は、単にメモリ・ユニット全体又はメモリ・ロケーションの特定のブロックへのアクセスを無効にする制御フラグを設定することにより、あるメモリ・トランザクションのサービスを阻止してもよい。他の場合に、制御回路は、どのロケーションが予約されているか否かを識別するロック・レコードを維持してもよい。メモリ制御回路内のアービトレーション・ユニットが、次いで、予約済みメモリ・ロケーションを対象とする、プロセッサからのメモリ・トランザクションをストールしてもよい。
【0009】
メモリ・ロケーションは、異なる粒度でのテスティングのために予約されてもよい。複数のメモリ・タイプを有するシステムでは、例えばデータ・キャッシュ、インストラクション・キャッシュ、データ密結合メモリ(DTCM:data tightly coupled memory)又はインストラクション密結合メモリ(ITCM:instruction tightly coupled memory)のうちのそのような2つ以上が設けられていてもよい。この場合、そのメモリ内の1つ又は複数のロケーションがテストされている場合に、メモリ・タイプ全体がテスティングのために予約されてもよく、一方、プロセッサは他のメモリ・タイプを使用し続けることができる。本手法は実際に実施するのに効率的である可能性がある。所与のメモリ・タイプを有していてもいなくてもよいシステム(例えば、DTCMは必ずしも設けられているとは限らない可能性がある)のために特定のプロセッサが設計されてもよいので、該装置は特定のメモリ・タイプを無効にする/有効にすることができる何らかの制御論理を既に有する可能性があり、該制御論理は、次いで、MBISTリクエストが受信されると、テスティングのためのメモリを予約するために再使用され得る。
【0010】
他方、また、メモリ・ロケーションが更なる微粒子レベルで予約され得ると考えられる。例えば、所与のメモリ・タイプがいくつかの論理メモリを含んでいてもよい(例えば、例えば2つのタグ・メモリと2つのデータ・メモリとを含めて、インストラクション・キャッシュが4つの論理メモリを含んでいてもよい)。各論理メモリはいくつかの物理メモリ・ユニットで作られていてもよく、各物理メモリ・ユニットは複数のバンク又はメモリ・ロケーションの他のサブ区分に分割されていてもよい。従って、所与のメモリ・タイプ、論理メモリ、物理メモリ・ユニット、バンク、行、又はテストされている対象となるロケーションを含むメモリ・ロケーションの他のサブ区分をテストするために予約することが可能である。また、メより大きなブロックのモリ・ロケーションではない、テスティングのための個々のロケーションを予約することが可能である。制御回路は、どのメモリ・ロケーション又はメモリ・ロケーションのグループがテスティングのためにロックされているのかを指示するロック情報を維持してもよく、その結果、これらのロケーションに対するメモリ・トランザクションがサービスされないようにされ得る。
【0011】
テスティングのためのメモリ・ロケーションの予約は、ソフトウェアの介入又は処理回路の割込みなしにハードウェアにおいて自動的に開始してもよい。MBISTリクエスト自体は、処理回路により実行されるソフトウェアによりトリガされてもよい一方、MBISTリクエストに対する応答は、制御回路によりハードウェア内にもたらされてもよく、その結果、テスティングは、処理回路上で実行しているソフトウェアに対して全体的に透過的である。
【0012】
テスト・プロシージャの完了後、制御回路は、処理回路により発行されるメモリ・トランザクションをサービスするために予約済みメモリ・ロケーションが再度使用可能になるように、予約済みメモリ・ロケーションを非予約状態にし(unreserve)てもよい。いくつかの場合、予約済みメモリ・ロケーションが非予約状態にされ得る前に、テスト・プロシージャが完全に終了する必要がない可能性がある。例えば、テスト・プロシージャの最終部分がテストされたメモリ・ロケーション内のデータを変更しなかった場合、且つこの時点までにテスト・プロシージャがこれらロケーション内のオリジナル・データを既に回復させていた場合、予約済みロケーションは、メモリが処理回路からのメモリ・トランザクションをサービスすることをより早く再開してMBISTのパフォーマンス・インパクトを低減することができるように、テスト・プロシージャの終了前に非予約状態にされてもよい。
【0013】
既存のMBISTテスト・プロシージャは、単一のテスト実行において、メモリ内のロケーション全てをテストする傾向がある。しかし、特にテスト・プロシージャがメモリの全ロケーションの端から端まで数度循環し、種々のチェックを実施することが多いので、これは完了するのに長時間を要する。これが、集積回路が使用可能であるかどうかを判定するために不良に関してメモリ空間全体がチェックされる必要がある場合、殆どのMBISTテスト・プロシージャが通常は製造テスティングのために設計されている理由である。しかし、オンラインMBISTを実施する場合、そのようなMBISTテスト・プロシージャは、重大なパフォーマンス・インパクトを引き起こすと考えられる。従って、既存のオンラインMBISTは、通常、いずれにせよプロセッサが完全に動作可能でない場合、パワーオン又はパワーオフで実施されるのみである。
【0014】
製造MBISTが既に製造中に実施されていると考えられるので、オンラインMBISTでは、テスト・プロシージャが製造MBISTと同じくらい完全であることを必要としないことを、本技術の発明者は分かっている。そのため、任意の1つのロケーションが不良であろう可能性は比較的少ないので、短時間にメモリ全体を調査するのではなく、長時間に亘ってテスティングを展開することが可能である。このことが活用されて、テスト・プロシージャのパフォーマンス・インパクトが低いことを確実にすることができ、その結果、オンラインMBISTは、パフォーマンス・インパクトを殆ど伴わずに、処理回路の通常動作と同時に実施され得る。
【0015】
従って、オンラインMBISTでは、テスティングがテスト・トランザクションの比較的短いバーストに分割されていてもよく、各バーストはメモリ・ロケーションのサブセットをテストするだけでもよい。例えば、トランザクションの各バーストは、1つ、2つ、又は他の比較的小さい数のメモリ・ロケーションをテストするだけでもよい。バーストが短いほど、処理パフォーマンスへの影響は小さくなる。更なるロケーションがテストされる必要がある場合、異なるロケーション・サブセットに関して複数のバーストが実施されてもよく、ある時間帯に亘って引き延ばされてもよい。経時的に、多数のバーストを実施することにより、メモリ全体がテストされ得る。連続バースト間の時間は、単一バーストのためのテスト・プロシージャを実施するのにかけられる時間よりずっと長い(例えば、例えば10,000クロック・サイクル毎などの、比較的低い頻度でバーストが発行され得るであろうが、単一バーストのためのテスト・プロシージャは20クロック・サイクル以下しかかからない可能性がある)。各短いテスト・バーストは、例えばカウンタによりトリガされて、定期的に起こり得る。カウンタが終了した場合、カウンタはMBISTコントローラに短いテスト・バーストを実施させ、MBISTリクエストを発行して制御回路をトリガし、データ処理装置がテスティングのために準備が整っているように設定させる。このように、パフォーマンス・インパクトは最小である。また、バーストの残りを完了させるのに長くかからないので、これらのテスト・プロシージャの1つの間にプロセッサにより割込みが受信された場合、割込みレイテンシは非常に低い。
【0016】
各バーストは、前のバーストに対して正確な間隔で起こる必要がない。重要なソフトウェアが実行されようとしているか又は現在実行されている時にバーストが起こる場合、それを延期するか又は実施しない能力を付与することが可能である。また、ソフトウェアがアイドルであるか又は非重要タスクを実施している可能性がある時に、例えば処理ループの最後に、バーストが起こるように、バーストはフトウェアに適合されることが可能であると考えられる。
【0017】
途中で、テスト・プロシージャのバーストに割り込む能力を付与することが可能である。例えば、プロセッサが重要な割込みをサービスする必要がある場合、割込みが起こる場合により、必要に応じて後で新しいバーストにおいて実施されることが可能であろうチェック・ステップを見逃すことにより、バーストは短縮されることが可能であると考えられる。しかし、バーストは非常に短い可能性があるので、バーストに割り込むことは、多くのクロック・サイクルを節約しない可能性があり、達成するのにより複雑なコントローラを必要とすると考えられる。従って、バーストが開始したら、テストされたロケーションが、バーストが開始した時にそれらがあった状態まで回復される時点まで割り込まれることが不可能であるように、テスト・プロシージャの各バーストを割込み不可能にすることは、より効率的である可能性がある。
【0018】
MBISTリクエストは、オフチップに配置されていてもよいMBISTコントローラからMBISTインターフェースにより受信されてもよい。或いは、オンチップ源がMBISTリクエストを生成してもよいか、又はMBISTコントローラの機能性はプロセッサ内に存在し得ると考えられる。
【0019】
制御回路がMBISTリクエストを検出した場合、制御回路は、MBIST信号面によりMBIST肯定応答信号を発行し、MBISTコントローラをトリガしてテスト・プロシージャを開始させてもよい。制御回路は、該装置がテスト・プロシージャを実施する準備が整った状態になるまで、確認応答信号を発行することを遅延させてもよい。例えば、プロセッサが、現在、割り込まれるべきでない重要なアクションを実行している場合、制御回路は確認応答を遅延させてもよい。また、確認応答信号が、処理回路により発行される少なくとも1つのインフライト・メモリ・トランザクションが完了されるまで遅延されてもよい。例えば、メモリ・トランザクションがキャッシュ・ミスに遭遇した可能性があり、これが外部メモリからの又は更なるキャッシュからのラインフィルをトリガした可能性がある。メモリ・コントローラ内の関数論理、例えば制御論理及びパイプライン・レジスタ、がMBISTトランザクションによりやはり使用されてもよいため、これもまた有益である。また、インフライト・トランザクションは、他のプロセッサが外部メモリ又はキャッシュにアクセスしないようにするいくつかのサブトランザクションで構成されているため、又は他の無関係のトランザクションがシステム内でブロックされる可能性があるため、インフライト・トランザクションをストールすることは望ましくない可能性がある。
【0020】
テスト・プロシージャの一部として、MBISTインターフェースは、少なくとも1つの対象となるメモリ・ロケーションをテストするために、MBISTコントローラからの少なくとも1つのテスト・トランザクションを受信してもよい。いくつかのシステムが、処理回路からの通常のメモリ・トランザクションに使用されるパスとは完全に別個の、インターフェースからメモリまでトランザクションを送る専用のMBISTトランザクション・パスを有していてもよい。この場合、各メモリが、インターフェースにより受信されるテスト・トランザクションとプロセッサからの通常のメモリ・トランザクションとの間で選択するマルチプレクサを有していてもよい。しかし、本手法は、回路の重複をもたらす可能性があり、機能タイミングに悪影響を及ぼす可能性があり、メモリにマルチプレクサを設けることは、メモリの部分がテストされている間に通常のメモリ・トランザクションがサービスされ続けることを可能にすることを難しくする可能性がある。
【0021】
従って、処理回路により使用されているメモリ制御回路の一部を再使用して、それがまたMBISTインターフェースからのテスト・トランザクションを搬送するように、メモリ・トランザクションをメモリへ送ることが有益である。例えば、各メモリが対応するメモリ・コントローラを有していてもよい。メモリ・コントローラは、通常のメモリ・トランザクションを処理する処理回路のロード/ストア・ユニットを備えたその通常インターフェースに加えて、(例えば、制御情報、アドレス、及びデータ値を含む)テスト・トランザクションを受信し且つそれらをメモリへ送るMBISTインターフェース・ユニットを有していてもよい。テスト・トランザクションのサービスを制御するメモリ制御回路を再使用することにより、テスト・トランザクションは、通常のメモリ・トランザクションと類似したレイテンシで「高速で」サービスされ得る。MBISTテスト・トランザクションがメモリ・インターフェースにおいてパイプライン・レジスタを通過させられることが可能であり且つ制御論理が再使用され得るので、これはメモリ・タイミングに殆ど又は全く影響を及ぼさず、回路領域及び電力消費を減少させる結果となり、また、メモリ・インターフェース論理の不良が検出可能であるため、テスト範囲が改善される。
【0022】
非透過的MBISTテスト・プロシージャが使用されてもよいが、テスト・プロシージャが透過的であることが特に有益であり、それは、(メモリ不良が検出されない場合)テスト・プロシージャの最後のテストされたメモリ・ロケーションのデータ値がテスト・プロシージャの開始時のデータ値と同じであることを意味する。従って、透過的テスト・プロシージャは、対象となるメモリ・ロケーションにおいて複数の動作を実施してもよいが、透過的テスト・プロシージャは、プロシージャの最後までに、メモリにオリジナル・データ値を回復させる。これは、プロセッサの通常処理への影響を増大させるであろう、ソフトウェアにおける状態保存/回復動作を、プロセッサが実施する必要をなくす。
【0023】
前述の通り、テスト・プロシージャは、一度に比較的少ないメモリ・ロケーションをテストする短いバーストにおいて実施されてもよい。より詳細には、テスト・プロシージャは、メモリの異なる部分に(例えば、異なるバンク、メモリの列又は行に)配置されている一対のメモリ・ロケーションをテストしてもよい。例えば、メモリ・ロケーションの対は、そのメモリ・アドレスが所与の定数で分離されている2つのロケーションであってもよい。一度に一対のロケーションをテストすることは、メモリ及びその関連制御論理により完全にストレスを掛けて、より強力なテストをもたらすのに有益であり得る。これが、最初に対の一方のロケーションから次いで他方から値を読み取り又は書き込むことが、異なる制御信号(例えば、ワード線又はバンク・セレクタ)がアサートされるようにするか若しくはクリアされるようにする可能性があるか、又はメモリ内の異なる回路が使用されるようにする可能性がある(例えば、ビット線調整及びセンス増幅器)理由であり、それは、メモリの一部へのアクセスにメモリの別の部分へのアクセスが続く可能性がある、メモリへの実際のアクセスに関連する遅延を、より正確に反映する可能性がある。また、特定のメモリ・トランザクションを完全機能速度で連続して実施することが望ましい。これは、最大機能速度で又はその付近でメモリ制御信号及び回路を切り替えることにより、メモリに更にストレスをかける。
【0024】
より詳細には、テスト・プロシージャの各バーストが、
(a)一対のメモリ・ロケーションから第1のデータ値及び第2のデータ値を読み取り、第1のデータ値及び第2のデータ値を第1の記憶ロケーション及び第2の記憶ロケーションに保存するステップと、
(b)選択されたデータ値を一対のメモリ・ロケーションに書き込むステップと、
(c)一対のメモリ・ロケーションから読み取られたデータ値が、一対のメモリ・ロケーションに書き込まれた、選択されたデータ値にマッチするかどうかチェックするステップと、
(d)第1の記憶ロケーション及び第2の記憶ロケーションからの第1のデータ値及び第2のデータ値を一対のメモリ・ロケーションに書き込むステップと、
(e)一対のメモリ・ロケーションから読み取られたデータ値が、第1の記憶ロケーション及び第2の記憶ロケーションに記憶された第1のデータ値及び第2のデータ値にマッチするかどうかチェックするステップと
を含んでいてもよい。
【0025】
従って、このテスト・アルゴリズムは、一対のロケーションから既存の値を読み取り、それらを(レジスタなどの)所定のロケーションに保存して、テストの最後にこれらの値が回復され得ることを確認してもよい。いくつかの選択されたデータ値が一対のメモリ・ロケーションに書き込まれ、次いでそれらが引き続き書き込まれた値と同じであるかどうかチェックするために読み取り戻される。選択されたデータ値は、一対のロケーションに関して同じであってもよいか又は異なっていてもよく、第1のデータ値及び第2のデータ値の1つに基づいていてもよく、又は代わりに完全に無関係な値であり得ると考えられる。オリジナルの第1のデータ値及び第2のデータ値は、次いで、メモリ・ロケーションに回復され、次いでそれらが正しいかどうかチェックするために読み取り戻される。全てのチェックが終わった場合、一対のロケーションはエラーなしと判定されてもよく、一方、チェックの1つが値の1つがその期待値にマッチしないことを発見した場合、エラーが信号で伝えられる。
【0026】
データ値及び関連するデータ・チェック論理を記憶するために使用されるレジスタは、MBISTコントローラの一部であってもよいか、又はプロセッサ内に、メモリに近接して、例えば各メモリ・コントローラ内に、あってもよい。このデータパス論理がプロセッサの内部に配置されている場合、MBISTコントローラは、各メモリ・トランザクションに関してアドレス及び制御情報を供給するのみであると考えられ、データ値を受信又は送信しないと考えられる。このデータパス論理をメモリに近接して配置する利点は、MBISTインターフェースにおいて読み取られたアドレスを発行することとデータ・レジスタに読み取り戻されたデータを受信することとの間のレイテンシが短縮され得ることである。これは、次いで、追加領域を犠牲にして、上記の例示的テスト・プロシージャの部分(a)と部分(b)との間の少数のクロック・サイクルを節約する。
【0027】
一対のメモリ・ロケーションへの第2の書込みが完了したら(上記の部分(d))、値が正しいかどうかチェックするための部分(e)での後続の読取りがメモリ内の値に影響を及ぼさず、そのため、プロセッサはこれらの領域へのメモリ・トランザクションの発行を再度開始することができるので、予約済みメモリ領域は非予約状態にされ得る。部分(e)でその後エラーが検出された場合、チェックが完了する前に不良メモリ・ロケーションに既に発行されていた任意のトランザクションの結果を処理回路が処理しないようにする可能性がある、エラー発見プロセスが起動され得る。
【0028】
別の態様から見ると、本技術は、
データを記憶するための少なくとも1つのメモリ手段と、
少なくとも1つのメモリ手段内のデータにアクセスするためのメモリ・トランザクションを発行するための処理手段と、
少なくとも1つのメモリ手段の少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示するMBISTリクエストを受信するためのメモリ・ビルトイン・セルフテスト(MBIST)インターフェース手段と、
MBISTインターフェースにより受信されるMBISTリクエストを検出し、MBISTリクエストを検出することに応答して、前記少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するための制御手段と
を含み、
テスト・プロシージャ中に、少なくとも1つのメモリ手段は、制御手段により予約された少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理手段により発行されるメモリ・トランザクションをサービスし続けるように構成されている、
データ処理装置を提供する。
【0029】
更なる態様から見ると、本技術は、少なくとも1つのメモリと、少なくとも1つのメモリ内のデータにアクセスするためのメモリ・トランザクションを発行するように構成されている処理回路とを含むデータ処理装置のためのメモリ・ビルトイン・セルフテスト(MBIST)方法を提供し、
本方法は、
データ処理装置のMBISTインターフェースにより受信されるメモリ・ビルトイン・セルフテスト(MBIST)リクエストを検出するステップであり、MBISTリクエストは、少なくとも1つのメモリの少なくとも1つの対象となるメモリ・ロケーションをテストするためにテスト・プロシージャが実施されることを指示する、検出するステップと、
MBISTリクエストを検出するステップに応答して、少なくとも1つの対象となるメモリ・ロケーションを含む少なくとも1つの予約済みメモリ・ロケーションをテストするために予約するステップと、
テスト・プロシージャ中に、少なくとも1つのメモリは、少なくとも1つの予約済みメモリ・ロケーション以外のメモリ・ロケーションを対象とするメモリ・トランザクションであって、処理回路により発行されるメモリ・トランザクションをサービスするステップと
を含み、
データ処理装置は、MBISTリクエストを検出し、MBISTリクエストを検出するステップに応答して、少なくとも1つの予約済みメモリ・ロケーションを予約する制御回路を含む、
方法。
【0030】
本技術の更なる態様、特徴、及び利点が、添付図面と併せて読まれるべきである以下の例の説明から明らかになるであろう。
【図面の簡単な説明】
【0031】
図1】メモリ・ビルトイン・セルフテスト能力を備えたデータ処理装置の例を概略的に示す図である。
図2】MBISTテスト・プロシージャ実施することの例を示す図である。
【発明を実施するための形態】
【0032】
図1は、CPU、GPU、又はL2キャッシュ・コントローラのようなメモリ・コントローラであってもよい処理回路4を含むデータ処理装置(集積回路又はチップ)2の例を概略的に示す。処理回路4は、データ処理を実施するプロセッサ・コア5を有する。コア5は、処理されるデータ値を記憶するレジスタ6のセットを有する。
【0033】
1つ又は複数のタイプのメモリが設けられており、そのうちのいくつかはオンチップであってもよく、他はオフチップであってもよい。この例では、メモリが、処理されるインストラクションを記憶するインストラクション・キャッシュ7と、プロセッサ4によりアクセスされるデータ値を記憶するデータ・キャッシュ8と、インストラクション密結合メモリ(ITCM)9と、1つ又は複数のデータ密結合メモリ(DTCM)10とを含む。プロセッサ・コア5により必要とされるインストラクション又はデータ値がレベル1(L1)インストラクション・キャッシュ7又はL1データ・キャッシュ8において使用不可能である場合、それは、レベル2(L2)キャッシュ14から又はL2キャッシュに存在しない場合はメイン・メモリ16からフェッチされる。この例では、L2キャッシュ14は、インストラクションL1キャッシュ7とデータL1キャッシュ8との間で共用されるが、当然のことながら、また、インストラクション及びデータのための別個のL2キャッシュが設けられることが可能であると考えられる。ITCM9及びDTCM10は、プロセッサにローカル接続の(且つそのためL2キャッシュ14及びメイン・メモリ16と比較してより低いアクセス・レイテンシを有する)、しかし、ラインフィル動作及び退避(eviction)がないため、インストラクション・キャッシュ7及びデータ・キャッシュ8より大きな予測可能性を有するメモリである。ITCM9又はDTCM10に記憶されるインストラクション又はデータは、プロセッサ・コア5により除去されるまで、密結合メモリ内に残っている。例えば、常時低レイテンシで使用可能であるべき重要なコード片又はデータ片が、ITCM9又はDTCM10内に配置されていてもよい。当然のことながら、いくつかの実施例は、図1に示されているメモリ・タイプ7、8、9、10の全てを有しているとは限らない可能性がある(例えば、いくつかのシステムは任意のTCMを有していなくてもよいか又は共用インストラクション/データ・キャッシュを有していてもよい)。
【0034】
各メモリ・タイプ7、8、9、10は、対応するメモリ・コントローラ17、18、19を有する。例えば、インストラクション・キャッシュ・ユニット17が、インストラクション・キャッシュ7を制御し、データ・キャッシュ・ユニット18がデータ・キャッシュ8を制御し、TCM制御ユニット19がTCM9、10を制御する。各メモリ・コントローラは、バス21を介して処理コア5のロード/ストア・ユニット20により発行されるメモリ・トランザクションを受信してもよい。トランザクションが、ロード若しくはストア・インストラクションの又はインストラクション・フェッチの結果であってもよい。バス21は、一度に複数のメモリ・トランザクション、最大メモリ7〜10につき1つまでを搬送してもよい。各メモリ・タイプ7、8、9、10はいくつかの論理メモリを含んでいてもよい(例えば、キャッシュ7、8は1つ又は複数のタグRAMユニット及び1つ又は複数のいくつかのデータRAMユニットを含んでいてもよい)。各論理メモリはいくつかの物理メモリ・バンクを含んでいてもよい。
【0035】
プロセッサ4を含むチップ2は、メモリ・ロケーションが不良であるかどうかテストするのに使用され得る(本明細書では、メモリ・ビルトイン・セルフテスト又はMBISTと称する)インビルト・セルフテスト能力を有する。MBIST論理は、フィールド内にチップ2が既に展開されており且つプロセッサ・コア5が動作可能なままである場合にメモリ7〜10が不良に関してテストされ得るオンラインMBISTを付与するのに使用されてもよい。メモリが完全にテストされ、製造においてエラーなしと判定された場合にも、様々な理由で後に不良が生じる可能性があるため、これは有益である。例えば、個々のメモリ・セルが老朽化したトランジスタに因り機能しなくなる可能性があり、ワード線タイミング不良が電子移動に因り生じる可能性があり、ビア若しくは接点が電子移動に因り磨耗する可能性があり、又はセンス増幅器がそれらのトランジスタ年齢につれて機能しなくなる可能性がある。通常、これらのエージング効果はメモリ回路のパフォーマンスを劣化させ、それによりメモリ回路が減速する。従って、連続して完全機能速度でメモリ・テスト・トランザクションを実施することは有益である。メモリ若しくは主要データ片から誤った値が読み取られた場合又は要求されたインストラクションを全く読み取ることができなかった場合、メモリ・ロケーションにおける不良が処理エラーに繋がる可能性がある。これは、セーフクリティカル用途に使用されるデバイス(例えば、自動車のアンチロック・ブレーキ・システムを制御するデバイス)にとって特に重要である。オンラインMBIST能力を付与することにより、そのようなエラーは、それらが安全性リスクを引き起こす前に検出され得る。
【0036】
オンラインMBISTをサポートするために、プロセッサ4は、MBISTインターフェース22(例えば、入力/出力ピンのセット)と、MBISTプロシージャ中にプロセッサ4を設定するMBISTインターフェース・ユニット24とを有する。また、データ処理装置2は、MBISTテスト・プロシージャのパフォーマンスを制御するMBISTコントローラ30を含む。他の実施例では、MBISTコントローラはプロセッサ4の内部に配置され得る。
【0037】
MBISTインターフェース24は、制御、アドレス、及びデータの情報が、MBISTコントローラ30とプロセッサ4との間で転送されることを可能にする。このインターフェース24は、(a)MBIST開始段階(MBIST entry phase)と、(b)対象となるメモリをテストするのに使用されるMBIST読取りトランザクション及びMBIST書込みトランザクションと、(c)MBIST終了段階(MBIST exit phase)とを含む標準化されたプロトコルを有する。MBIST開始段階は、インターフェース24の一部である、リクエスト信号及び肯定応答信号とアレイ・バスとを使用して、テストされる論理メモリを選択する。メモリ・トランザクション(b)は、MBIST開始段階(a)とMBIST終了段階(c)との間で起こる。MBIST終了段階は、インターフェース24の一部である、リクエスト信号及び肯定応答信号及びアレイ選択信号を使用して、開始シーケンス(a)において選択された論理メモリを非選択状態にする。アレイ信号は、プロトコル(a)、(b)及び(c)の全段階の間変化しない。このインターフェース24はプロセッサ4と同じクロック周波数で動作し、MBISTトランザクションを連続して搬送することができる。
【0038】
MBISTコントローラ30はMBISTインターフェース24を制御する。MBISTコントローラは、前述されているMBISTテスト・プロシージャを自律的に実施する機能を含む。MBISTコントローラは、プロセッサ4又は図に示されていないテスト制御プロセッサのどちらかにより、図1に示されていないインターフェースを介してプログラムされる。また、MBISTコントローラは、アドレスと、データと、アレイ(テストする論理メモリ)と、ステータスと、制御レジスタとを含む。MBISTコントローラは、それをトリガしてテスト・バーストを開始させる入力信号を有する。この信号に応答して、MBISTコントローラは、MBIST開始シーケンス、バーストを作り上げるメモリ読取りトランザクション及びメモリ書込みトランザクション、次いでMBIST終了シーケンスを実施する。バーストの最後に、MBISTコントローラは、次のバーストに対して準備が整っているアドレス・レジスタをアップデートする。論理メモリ内の全ロケーションがテストされたら、MBISTコントローラは、レジスタ内にテスト終了ステータス・ビットを設定し、プロセッサ4又は図に示されていないテスト制御プロセッサに割り込むのに使用されてもよいテスト終了信号をアサートする。バースト中にメモリ不良が検出された場合、MBISTコントローラは、レジスタ内にメモリ不良ステータス・ビットを設定し、プロセッサ4又はテスト制御プロセッサに割り込むのに使用されてもよいメモリ・不良信号をアサートする。プロセッサは、ステータス・レジスタ及びアドレス・レジスタを読み取り、どのメモリ・ロケーションが不良であるか判定することができる。MBISTコントローラ30は、プロセッサ4と同じクロック周波数で動作し、MBISTトランザクションを連続して実施することができる。
【0039】
MBISTインターフェース・ユニット24は、インターフェース24の一部であるアレイ信号に基づいて、リクエスト信号、肯定応答信号、及び論理メモリ選択信号、並びにMBISTインターフェース24とメモリ・コントローラ17、18又は19との間のメモリ・トランザクションを送る。
【0040】
アレイ・バスにより選択された論理メモリ上でテスト・プロシージャが実施されることを指示するMBISTコントローラ30からの(MBIST開始段階の間に起こる)MBISTリクエストに応答して、選択された論理メモリがその一部である、同じメモリ・タイプ7〜10の一部である全メモリが、関連するメモリ・コントローラ17〜19により予約(ロック)される。確認応答がMBISTコントローラ30へ戻される前に全インフライト・メモリ・トランザクションが完了したら、メモリがロックされる。ロックされたメモリは、MBIST終了段階の間に起こるロックの除去まで、プロセッサ・コア5からのメモリ・トランザクションをサービスすることができない。その間、テスト・プロシージャが実施される間にトランザクションは非予約状態にされたメモリ7〜10により引き続き処理されることが可能であり、その結果、プロセッサへのパフォーマンス・インパクトは低減される。また、プロセッサ4内のMBISTインターフェース・プロトコル、テスト・プロシージャ、及びMBIST論理は、ロックがアクティブである時間が可能な限り短く維持されることを確実にするように設計されている。
【0041】
図2は、メモリ7〜10の1つ内の1つ又は複数の対象となるメモリ・ロケーションをテストするためのMBISTテスト・プロシージャを実施するプロセスを示す。図2は、MBISTコントローラ30と、MBISTインターフェース・ユニット24と、メモリ・コントローラ18と、プロセッサ・コア5との間の相互作用を示す。データ・キャッシュ8のためのメモリ・コントローラ18がこの例に示されているが、同じ動作はその他のメモリ・タイプに適合し得る。
【0042】
ステップS1において、プロセッサはキャッシュ8へ複数のメモリ・トランザクションを発行し、メモリ・コントローラ18はキャッシュ8を制御して、相応に応答する。ステップS2において、MBISTコントローラ30はMBISTインターフェース・プロトコル開始段階に入る。これは、キャッシュ8内で論理メモリを選択する値にアレイ・バスを設定して、MBISTインターフェース22上でMBISTリクエスト信号をアサートする。アレイ・バスはリクエストをデータ・キャッシュ・メモリ・コントローラ18へ送るMBISTインターフェース・ユニット24によりデコードされる。例えば、MBISTリクエストは、あるテスティング・スケジュールに応答して、MBISTコントローラにより定期的にトリガされてもよく(例えば、テスト・タイマの経過によりトリガされる)、又はMBISTリクエストは、コア5により処理中に発見された処理エラーによりトリガされてもよい(例えば、エラー修正コードが使用されてエラーを検出してもよい)。
【0043】
ステップS3において、テスティングのために選択された論理メモリ8のための関連メモリ・コントローラ18は、それがプロセッサ・コア5からのいかなる新しいトランザクションもサービスすることができないように、自らテスティングの準備をして、メモリを予約する。予約されると、メモリ・コントローラ18は、テスト・プロシージャが完了するまで、プロセッサ・コア5からの任意の更なるトランザクションをストールする。ステップS4において、コア5、L2キャッシュ14、又はメイン・メモリ16に未処理のメモリ・トランザクションがある場合、メモリ・コントローラ18はこれらのトランザクションが完了するまで待機する。例えば、L2キャッシュ14からのキャッシュ・ラインフィルをトリガしたトランザクションは、ラインがキャッシュ・メモリ8内に書き込まれることを完了することを許可する。
【0044】
メモリ8のテスティングの準備が整ったら、ステップS5において、メモリ・コントローラ18はそのメモリのテスティングの準備が整っていることをMBISTインターフェース・ユニット24に信号で伝え、次いでステップS6において、MBISTインターフェース・ユニット24は、インターフェース22によりMBISTコントローラ30へMBIST確認応答を発行する。これは、プロセッサは現在テスティングの準備が整っていることをコントローラ30に知らせ、それによりMBIST開始段階が終了する。MBISTコントローラ30は、次いで、ステップS7においてテスト・プロシージャを開始する。当該テスト・プロシージャは、ひとつ又は複数の対象となるロケーションのためのMBISTトランザクションの短いバーストで構成されており、それらが正しく機能しているかどうかを調査する。テスト・プロシージャは以下により詳細に記載される。
【0045】
テスト・プロシージャが実施されている間、プロセッサ・コア5はメモリ・トランザクションを発行し続けることができる。テスティングのために予約されていなかったメモリ・タイプにアクセスするメモリ・トランザクションは、引き続きサービスされ得る。例えば、ステップS8において、プロセッサ・コア5はITCM9へトランザクションを発行し、TCM制御ユニット19はITCMを制御して、通常の方法で応答してもよい。しかし、ステップS9において、プロセッサ・コア5が、テスティングのために予約されているメモリ8へメモリ・トランザクションを発行しようとした場合、トランザクションは対応するメモリ・コントローラ18によりストールされる。
【0046】
テスト・プロシージャが完了したら、ステップS10において、MBISTコントローラ30がMBISTリクエスト信号をリリースすることにより、MBISTインターフェース・プロトコル終了段階を開始する。これは、ステップS11において、プロセッサ・コア5による使用のためにメモリが再度使用可能になるように、対象となるメモリのためのメモリ・コントローラ18にメモリを非予約状態にするように命令するMBISTインターフェース・ユニット24により、検出される。従って、ステップS12において、メモリ8への、ソフトウェアが起動したトランザクションによりプロセッサ・コア5がストールされた場合、これは通常通り進行し、プロセッサはMBISTトランザクションによりストールされていることを停止する。MBISTコントローラ30は、任意の未処理MBIST読取りトランザクションがプロセッサ4から戻されるのを待機し、それによりMBIST終了段階が終了する。
【0047】
他の例では、MBISTインターフェース・ユニット24はより小さい役割を担っていてもよく、単にMBISTインターフェース22とメモリ・コントローラ17〜19との間で情報を送ってもよい。この場合、MBISTリクエスト及びMBIST確認応答は、MBISTインターフェース22及びMBISTインターフェース24を介して、メモリ・コントローラ30とメモリ・コントローラ17〜19との間で直接交換されてもよい。
【0048】
より詳細には、ステップS3〜ステップS6において、以下のステップ:a)データ・キャッシュ・メモリ・コントローラとコアとの間に未処理トランザクションがある場合、これが完了され;b)メモリ予約(ロック)が適用され、それによりデータ・キャッシュ・メモリ・コントローラにより、コアからの任意の更なるトランザクションが開始されないようにし;c)データ・キャッシュ・メモリ・コントローラとL2キャッシュ又はメイン・メモリとの間に未処理トランザクションがある場合、これが完了され;及びd)次いで、肯定応答信号がMBISTインターフェース・ユニットに返送される、ことがいくつかの実施例において実施されてもよい。
【0049】
ステップS7におけるテスト・プロシージャは、プロセッサ・コア5による使用のためにメモリを解放する前に一度に所与の論理メモリ内の少数のメモリ・ロケーションをテストする(例えば、20処理サイクル未満の間続く)トランザクションの非常に短いバーストであってもよい。次のバーストは前のバーストとは異なるロケーションをテストする。従って、経時的にメモリ内の全ロケーションがテストされる。各バーストの長さと比較してバースト間の時間が大きい可能性があるので、各バーストは非常に短く、プロセッサはペナルティなしに予約されないメモリにアクセスすることができ、バーストはソフトウェアの関与なしに実施され、これは、プロセッサのパフォーマンスへのメモリ・テスティングの影響を殆ど無視できるほど小さくする。各短いテスト・バーストは、例えばカウンタの終了によりトリガされて、通常起こり得る。
【0050】
ステップS7においてテスト・プロシージャ中に実施されるトランザクションのバーストの例が、以下に示されている。バーストは、メモリ・ロケーションの所与の範囲に関する複数の値n上で(各バーストに対する別個のMBISTリクエストで)反復されて、メモリ範囲全体をテストすることができる。各バーストは、アドレスn、及び第1のロケーションのアドレスから量mだけずらされた第2のアドレスn+mにより特定される一対のメモリ・ロケーションを対象とする。ロケーションが一般にメモリの異なる部分にあるように、物理メモリ内の別のユニットが対の第2のトランザクションによりアクセスされるように、mの値は選択され、それはテスト中にメモリにより完全にストレスをかけるために有益である。以下のトランザクションにおいて、「X」は、ロケーションnから読み出された、レジスタX内の値を表し、「〜X」は、レジスタX内の値を反転させることに相当する値を表し、「Y」は、ロケーションn+mから読み出されたレジスタY内の値を表す。
【0051】
【表1】
【0052】
テスト・プロシージャの最後でロケーションn及びロケーションn+mの値がプロシージャの開始時と同じなので、このアルゴリズムは透過的MBISTテスト・プロシージャであり、その結果、プロセッサ・コア5は、テスト・プロシージャを有効にする前に、ソフトウェアにおいてデータを保存/回復する必要がない。ステップ9及びステップ10における後続の読取りがデータの妥当性に影響を及ぼさないので、バーストのステップ8における最後の書込みトランザクション後に、予約済みメモリが非予約状態にされることが可能であるため、プロセッサ・コア5から予約済みメモリ領域までのメモリ・トランザクションは、ステップ9及びステップ10と並行して実行されるように開始され得る。
【0053】
テスト・アルゴリズムは、通常のメモリ・トランザクションと類似した方法で、メモリ・コントローラにより「高速で」処理されてもよいので、通常のメモリ・トランザクションをサービスしている時にこのテスト・プロシージャはメモリの挙動の完全なテスティングを実現し、それは、他のテスティング方法は通常のメモリ・トランザクションには使用されない、メモリ内への代替経路を使用するため、より低速である他のテスティング方法では不可能である。ステップ1及びステップ2は連続して実施されてもよく、ステップ3〜10は連続して実施されてもよい。当該アルゴリズムは、実践においてステップ3後の動作間に従属関係がないように設計されている。いくつかのメモリでは、アクセス・レイテンシは、ステップ2とステップ3との間に少数サイクルのギャップがあることを意味する可能性がある。MBISTインターフェース・プロトコルは、前の読取りトランザクションがそれらの読取りデータに戻される前にトランザクションが開始することを可能にする。従って、プロトコルは、(最大、MBISTコントローラにより追跡される得る未処理トランザクションの数まで)任意の数の未処理トランザクションが一度に起こることを可能にする。
【0054】
上記のステップ1及びステップ2では、ロケーションn及びロケーションn+mから読み込まれた値はレジスタX、Yに記憶される。これらのレジスタはプロセッサのレジスタ6のうちのいくつかであってもよい。或いは、いくつかのレジスタは、値をレジスタに記憶すること及びレジスタから値を読み取り戻すことに関連するレイテンシが短縮されて、テスト・プロシージャに関連する全時間長を短縮することができるように、テストされているメモリのメモリ・コントローラ17〜19内に設けられてもよい。
【0055】
テスト・プロシージャのステップ5、6、9又は10におけるチェックの1つが、あるロケーションから読み取られた値がその期待値にマッチしないことを発見した場合、MBISTコントローラ30によりエラーにフラグが立てられることを発見している。エラーが検出された場合、該エラーに応答する種々の方法がある可能性がある。例えば、不良メモリ・ロケーションがメモリ・コントローラ17〜19内で使用不可能として設定されてもよい。いくつかの予備メモリ・ブロックが設けられるように、いくつかのシステムがいくらかの冗長性を有していてもよい。エラーが発生した場合、不良ブロックの代わりに予備ブロックが使用され得る。また、不良記憶ロケーションを含む行又は列が無効にされ、記憶ロケーションの冗長な行又は列に取って代わられることを可能にする修復特徴を、物理メモリ・マクロが含んでいてもよい。また、いくつかのシステムは、エラーが検出された場合にプロセッサ・コア5の機能性が低減されるリンプ・ホーム・モードを有していてもよい。例えば、L1データ・キャッシュ8が機能しなくなった場合、それは無効にされてもよく、L2キャッシュ14が遥かに長いレイテンシを有するので理想的ではないが、それでもプロセッサ・コア5が何らかの機能性をもたらすことを可能にする可能性があるL2キャッシュ14を使用して、全ての処理が実施されてもよい。いくつかの場合には、十分な不良が検出された場合、MBISTコントローラ30は、チップ2全体が交換されるべきであることを指示して、ユーザに対して警告が提示されるようにする信号を生成してもよい。例えば、自動車のダッシュボード上に警告灯が表示されてもよい。従って、検出されたエラーに応答する様々な方法がある。
【0056】
MBISTインターフェース・ユニット24及びメモリ・コントローラ17〜19が別個に図1に示されているが、いくつかの場合には、MBISTインターフェース・ユニット24の機能性はメモリ・コントローラ17〜19自体により実施されてもよい。また、いくつかの実施例では、MBISTインターフェース・ユニット24は、メモリ・コントローラの代わりに、テストされているメモリ・ロケーションをロックすることに責任を負っている可能性がある。従って、一般に、装置2は、MBISTコントローラ30によりテストされている少なくとも1つのロケーションを含むメモリ領域を予約するハードウェア内に実装されているいくつかの制御回路を有していてもよい。
【0057】
上記に示されている例では、テストの対象となる1つまたは複数のロケーションを含むメモリ・タイプ全体は、それがプロセッサからのメモリ・トランザクションをサービスすることができないように、テスト・プロシージャ中に予約される。しかし、また、同メモリ・タイプ内の他の領域がコア5により引き続きアクセスされ得るように、所与のメモリ・タイプ内のより小さい領域をロックし、ロック解除することが可能である。例えば、個々の論理メモリ、RAMユニット、バンク、行、又はメモリ・ロケーションの他のサブユニットは、MBISTインターフェース・ユニット24若しくはメモリ・コントローラ17〜19により個々にロックされてもよく、又はメモリ・ロケーションは個々にロックされてもよい。
【0058】
また、オンラインMBISTに使用されるMBISTインターフェース22、MBISTインターフェース・ユニット24、及びメモリ・コントローラ17〜19の機能性は、製造中に使用されて、製造MBISTを実施してもよい。これは、2つの別個のMBISTインターフェースの必要性をなくす。しかし、製造MBISTのためのテスト・プロシージャは、テスト・プロシージャのオンラインMBISTとは異なる可能性がある。従って、異なるMBISTコントローラ30が、異なるタイプのMBISTのために設けられることが可能であると考えられる。いくつかの場合には、MBISTコントローラは、メモリ・テスティングを実施するチップ2内の何らかの処理論理であってもよい。或いは(特に製造MBISTでは)、MBISTコントローラ30は、汎用コンピュータ、又はオフチップであり且つテスティングのためのMBISTインターフェース22に連結されていてもよい他の外部デバイスであってもよい。
【0059】
図1に示されている例では、各メモリ7〜10に近接しているメモリ・コントローラ17〜19のみが、MBISTテスト・トランザクションをメモリに搬送するために再使用される。従って、プロセッサ・コア5内の通常のメモリ・アクセス・パイプラインは、インストラクションを自由に実行することができ、通常は他のメモリに自由にアクセスすることができる。また、メモリ・コントローラ17〜19内のメモリ・インターフェースにおける最終パイプライン段階の前に、MBISTトランザクションが適用される。これは、メモリ・テスティングの付与に因る機能インターフェース・タイミング(functional interface timing)への影響が殆ど又は全くないこと、及びまた、MBISTテスティング中に機能メモリ・インターフェース論理(functional memory interface logic)がテストされることを意味する。
【0060】
添付図面を参照して、本発明の例示的実施例が本明細書に詳細に記載されたが、本発明はそれら詳細な実施例に限定されないこと、添付の特許請求の範囲により定められる本発明の範囲及び精神から逸脱することなく、当業者により種々の変更及び修正が実行され得ることは言うまでもない。
【符号の説明】
【0061】
4 プロセッサ
5 コア
6 レジスタ
7 インストラクション・キャッシュ
8 データ・キャッシュ
9 インストラクション密結合メモリ(ITCM)
10 データ密結合メモリ(DTCM)
14 L2キャッシュ14
16 メイン・メモリ
17 インストラクション・キャッシュ・ユニット
18 データ・キャッシュ・ユニット
19 TCM制御ユニット
20 ロード/ストア・ユニット
21 バス
24 MBISTインターフェース・ユニット
30 外部MBISTコントローラ
図1
図2