(57)【要約】  マイクロプロセッサが、タグ・アレイを含むキャッシュと、タグ・アレイに対するアクセスをアービトレートするタグパイプと、スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザとを備える。タグパイプに結合された読出しロジックを備えるロジック・アナライザは、タグ・アレイにアクセスするトランザクションのスナップショットを記録するように構成されている。
2017502443.tif 000002
【特許請求の範囲】
【請求項１】
タグ・アレイを含むキャッシュと、
前記タグ・アレイに対するアクセスをアービトレートするタグパイプと、
スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザとを備えるマイクロプロセッサであって、
前記ロジック・アナライザは、前記タグパイプに結合された読出しロジックを備え、
前記ロジック・アナライザは、前記タグ・アレイにアクセスするトランザクションであるタグパイプａｒｂのスナップショットを記録するように構成されている、
マイクロプロセッサ。
【請求項２】
前記スナップショットは、前記タグパイプａｒｂが、ロード、スヌープ、記憶、又は他のａｒｂタイプであるかについての情報を含む、請求項１に記載のマイクロプロセッサ。
【請求項３】
前記スナップショットは、前記タグパイプａｒｂが完了したか、又は再生されたかについての情報を含む、請求項１に記載のマイクロプロセッサ。
【請求項４】
前記スナップショットは、前記ａｒｂが割り当てられるセット及びウェイを識別する情報を含む、請求項１に記載のマイクロプロセッサ。
【請求項５】
前記タグパイプは、複数のステージを含み、前記ロジック・アナライザは、あるａｒｂが他のキュー・プッシュを再生、完了、及び／又は要求しようとしているかを前記タグパイプが判定した後、前記パイプラインのステージのスナップショットを取り込む、請求項１に記載のマイクロプロセッサ。
【請求項６】
前記ロジック・アナライザは、ユーザが、どのスナップショットを前記ロジック・アナライザが記録するかを選択的に構成することを可能にする構成ロジックをさらに備える、請求項１に記載のマイクロプロセッサ。
【請求項７】
前記ロジック・アナライザは、ユーザが、タグパイプａｒｂのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成することを可能にする構成ロジックをさらに備える、請求項１に記載のマイクロプロセッサ。
【請求項８】
前記ロジック・アナライザは、様々なタイプの再生状態を一緒に論理ＯＲすることによって前記スナップショットを圧縮するように構成されている、請求項１に記載のマイクロプロセッサ。
【請求項９】
前記ロジック・アナライザは、前記スナップショットを当該マイクロプロセッサのプライベート・ランダム・アクセス・メモリ（ＰＲＡＭ）に記憶するように構成されている、請求項１に記載のマイクロプロセッサ。
【請求項１０】
マイクロプロセッサにおけるスターベーション、ライブロック、又はデッドロックの状態を調査する際に使用するための情報を収集するための方法であって、
タグ・アレイにアクセスするトランザクションであるタグパイプａｒｂを、タグパイプに結合されたロジック・アナライザの使用によって読み出すステップと、
前記スターベーション、ライブロック、又はデッドロックの状態を調査する際に使用するために、前記ロジック・アナライザの使用によって、前記タグパイプａｒｂの少なくとも一部分をメモリ・ストレージに記録するステップと、
を含む方法。
【請求項１１】
前記記録するステップは、前記タグパイプａｒｂが、ロード、スヌープ、記憶、又は他のａｒｂタイプであるかについての情報を記録するステップを含む、請求項１０に記載の方法。
【請求項１２】
前記記録するステップは、前記タグパイプａｒｂが、完了したか、又は再生されたかについての情報を記録するステップを含む、請求項１０に記載の方法。
【請求項１３】
前記記録するステップは、前記ａｒｂが割り当てられるセット及びウェイを識別する情報を記録するステップを含む、請求項１０に記載の方法。
【請求項１４】
前記タグパイプは、複数のステージを備え、前記ロジック・アナライザは、あるａｒｂが、他のキュー・プッシュを再生、完了、及び／又は要求しようとしているかを前記タグパイプが判定した後、前記タグパイプのステージに結合される、請求項１０に記載の方法。
【請求項１５】
どのスナップショットを前記ロジック・アナライザが記録するかを構成するステップをさらに含む、請求項１０に記載の方法。
【請求項１６】
特定のタグパイプａｒｂを選択的に無視するように、前記ロジック・アナライザを構成するステップをさらに含む、請求項１０に記載の方法。
【請求項１７】
タグパイプａｒｂのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成するステップをさらに含む、請求項１０に記載の方法。
【請求項１８】
様々なタイプの再生状態を一緒に論理ＯＲすることによってスナップショットを圧縮するステップをさらに含む、請求項１０に記載の方法。
【請求項１９】
スナップショットを前記マイクロプロセッサのプライベート・ランダム・アクセス・メモリ（ＰＲＡＭ）に記憶するステップをさらに含む、請求項１０に記載の方法。
【請求項２０】
コンピュータ装置と共に使用するための少なくとも１つの非一時的コンピュータ可読媒体においてエンコードされるコンピュータ・プログラム製品において、当該コンピュータ・プログラム製品は、マイクロプロセッサを指定するための、前記媒体において実装されるコンピュータ可読プログラム・コードを含んでおり、前記マイクロプロセッサは、
タグ・アレイを含むキャッシュと、
前記タグ・アレイに対するアクセスをアービトレートするタグパイプと、
スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザと、を有しており、
前記ロジック・アナライザは、前記タグパイプに結合された読出しロジックを備え、
前記ロジック・アナライザは、前記タグ・アレイにアクセスするトランザクションであるタグパイプａｒｂのスナップショットを記録するように構成されている、
コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハング検出ロジックに関し、より詳細には、最終レベル・キャッシュのハング検出ロジックに関する。
【背景技術】
【０００２】
ラストレベル・キャッシュ（Ｌａｓｔ−ｌｅｖｅｌ  ｃａｃｈｅ：ＬＬＣ）に対するタグ・パイプラインは、タグ・アレイ、ＭＥＳＩアレイ、及びＬＲＵアレイにアクセスするウェイ(way)を提供する。タグ・パイプライン（本明細書では、タグパイプとも呼ばれる）は、リクエストに優先順位を付け、特定のリクエストにいかに応答すべきかについての決定を行う。例として、Ｌ１Ｄなどのより低いレベル・キャッシュからのロード・リクエストにより、キュー・エントリは、状態を追跡する目的のため、プッシュされることになる。次いで、データ・ロード・キュー・エントリは、タグ・パイプラインに対する所有権についてアービトレート(arbitrate)する。一旦、タグ・パイプランに所有権が認められると、キュー・エントリは、タグＭＥＳＩアレイにアクセスして、そのアドレスがアレイ内にあるかどうかを調べる。アドレスがある場合には、パイプラインの終わりにおいて、アドレスがキャッシュ内にあるかどうか、及び他の何のキャッシュがラインを有するかに基づいて、キュー・エントリは、ヒットが存在することになるか、又はミスが存在することになるか、或いは他のキャッシュをスヌープすることが必要になるかどうかを決定する。
【０００３】
ＬＬＣに対するアクセスをアービトレートするのに使用されるロジックは、結果として、コーディング・エラーの障害でもなく、プログラマが予測もできないハング(hang)をもたらす場合がある。例として、デッドロックは、単一のリクエスト又は１対のリクエストが完了しないときに生じる。リクエストは、繰り返しパイプラインへアービトレートし、再生する。デッドロックの一般的な原因は、いくつかの外部刺激におけるリクエスト待ちである。別の一般的な原因は、１対のリクエストのうちの各リクエストが、リクエストのうちの他方が完了するのを待っているという依存性チェーンの存在である。
【０００４】
別の一般的な例は、マルチスレッドのプログラムにおいて、それぞれのスレッドが同じ共有リソースについて競合するときに生じる未解決のハング及びスターベーション(starvation)である。コードにおいては、所有権は、しばしば、リソースが利用可能である場合は０、リソースが利用不可能である（すなわち、スレッドのうちの１つによってすでに所有されている）場合は１である変数によって信号伝達される。スレッドは、ビットを読み出すと同時に、ビットを１に設定して、スレッドが所有権を得ることができるかどうかを調べる。スレッドが、０を読み出すが１を設定することができる場合に、このとき、そのスレッドは、所有権を得る。１つのスレッドが所有権を得たとき、他のスレッドは、第１のスレッドが共有リソースを解放するのを待ちながら、この場所に対する読出し／修正／書込みを絶えず行う。ハングは、スレッド０がリソースを所有し、そのタスクにより終了するが、リソースを獲得しようと試みるスレッド１及びスレッド２の繰り返される読出し／修正／書込みによってリソースを解放するように０に書き込むことが妨げられる場合に生じる。これらの種類のスターベーション状態は、ロードが他のロードに対してどのように優先順位を付けられるかを確定するアーキテクチャの意図しない特徴であり、予測することが困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実際には、一般的なデッドロック状態を検出し、そのデッドロック状態に応答するマイクロプロセッサを作り出すことは、そのような状態が決して又はほとんど生じないマクロプロセッサを作り出すことよりも、費用、処理速度、及び論理的複雑さの点で、より効率的である可能性がある。したがって、ハングを示すパターンを検出するヒューリスティックベースのタグパイプ・トラフィック監視ロジックの必要性が存在する。また、検出されたハングにこれらハングを解決しようとする試みで応答するロジックの必要性も存在する。
【課題を解決するための手段】
【０００６】
本発明は、多くの形態で表すことができる。本発明を表すことができる１つの形態は、タグ・アレイを含むキャッシュと；タグ・アレイに対するアクセスをアービトレートするタグパイプと；スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザと；を備えたマイクロプロセッサである。
【０００７】
数多くのクロック、例えば千個のクロックにわたって、デッドロックは、あったとしてもほとんど完了しないトラフィック・パターン、多数の再生、及び１つだけ又は２つの異なる種類のａｒｂとしてよく現れる。ロジック・アナライザは、そのようなトラフィック・パターンを識別するために提供される。
【０００８】
ロジック・アナライザは、タグパイプに結合された読出しロジックを備える。このロジック・アナライザは、本明細書でタグパイプａｒｂと呼ばれる、タグ・アレイにアクセスするトランザクションのスナップショットを記録するように構成されている。
【０００９】
タグパイプは、複数のステージを備えることができ、ロジック・アナライザは、ａｒｂが他のキュー・プッシュを再生、完了、及び／又は要求しようとしているかをタグパイプが判定した後、パイプラインのステージに結合される。
【００１０】
スナップショットは、以下の情報、すなわち、タグパイプａｒｂが、ロード、スヌープ、記憶、又は他のａｒｂタイプであるか、タグパイプａｒｂは、完了したか、又は再生されたか、並びにａｒｂが割り当てられるセット及びウェイを識別する情報、のうちの一部或いはすべてを含むことができる。
【００１１】
ロジック・アナライザは、ロジックを備えて、様々なタイプの再生状態を一緒に論理ＯＲすることによってスナップショットを圧縮し、スナップショットをマイクロプロセッサのプライベート・ランダム・アクセス・メモリ（ｐｒｉｖａｔｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＰＲＡＭ）に記憶することができる。
【００１２】
ロジック・アナライザはまた、ユーザが、どのスナップショットをロジック・アナライザが記録するかを選択的に構成すること、及びタグパイプａｒｂのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成することを可能にする構成ロジックを備えることができる。
【００１３】
本発明はまた、多くの他の形態でも表すことができ、そのいくつかは、上記に表された形態よりも広範であってよい。したがって、本発明を上記に表す形態は、特許請求の範囲において本発明を表す形態を映し出すものとみなすべきではない。
【図面の簡単な説明】
【００１４】
【図１】共有ＬＬＣを有するマルチコア・マイクロプロセッサの一実施形態のブロック図である。
【図２】図１のＬＬＣのブロック図である。
【図３】図２のＬＬＣについて、タグパイプ・ステージング・アーキテクチャの一実施形態のブロック図である。
【図４】ＬＬＣ及びハング検出アーキテクチャの一実施形態のトップレベルの図を示すブロック図である。
【図５】図４のロジック・アナライザを示すブロック図である。
【図６】図５のロジック・アナライザによって取り込まれたスナップショットの一実施形態の内容を示す図である。
【図７】図４のパターン検出器を示すブロック図である。
【図８】図７のパターン検出器に組み込まれた累積レジスタの一実施形態の内容を示す図である。
【図９】図７の条件付きパターン検出器の動作を示す機能ブロック図である。
【図１０】図４の条件付きパターン検出器を示すブロック図である。
【図１１】図１０の構成可能なレジスタのうちの１つの一実施形態の内容を示す図である。
【図１２】１つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出するための分散型ハング・ロジック・アーキテクチャの一実施形態を示す図である。
【図１３】複数の回復ルーチンを示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
ここで、図１を参照すると、マルチコア・マイクロプロセッサ１００を示すブロック図が示されている。マイクロプロセッサ１００は、複数の処理コア１０２と、共有ラストレベル・キャッシュ（ＬＬＣ）メモリ１２０と、バス・インターフェース・ユニット（ｂｕｓ  ｉｎｔｅｒｆａｃｅ  ｕｎｉｔ：ＢＩＵ）１２２とを含む。
【００１６】
図１の例示的な実施形態では、まとめてコア１０２と呼ばれ、総称して個々にコア１０２と呼ばれるコア０の１０２−０、コア１の１０２−１、コア２の１０２−２、及びコア３の１０２−３と示された４つのコア１０２が存在する。まとめてインターフェース１１８と呼ばれ、総称して個々にインターフェース１１８と呼ばれる各インターフェース１１８−０、１１８−１、１１８−２、１１８−３を介して、コア１０２−０、１０２−１、１０２−２、１０２−３のそれぞれは、ＬＬＣ１２０にアクセスする。バス・インターフェース・ユニット１２２も、インターフェース１１８−４を介してＬＬＣ１２０にアクセスする。マイクロプロセッサ１００は、より大型のコンピュータ・システム（図示せず）の一部であり、このコンピュータ・システムは、ＬＬＣ１２０が、システム・バス１２４を通じてバス・インターフェース・ユニット１２２を介して通信するシステム・メモリ及び周辺装置（これらも、図示せず）を含む。図１の実施形態は、４つのコア１０２を備えたプロセッサ１００を示しているが、異なる数のコア１０２を備えた他の実施形態が企図される。すべてのコア１０２は、ＬＬＣ１０６を共有する。
【００１７】
それぞれの処理コア１０２は、命令キャッシュ１０４と、マイクロコード１０８を含む命令トランスレータ１０６と、実行ユニット１１０と、アーキテクチャ型レジスタ１１２と、メモリ・サブシステム１１４（例えばメモリ・オーダ・バッファ、データ・キャッシュ、及びテーブル・ウォーク・エンジン）とを備える。命令ユニット１１０には、整数ユニット、浮動小数点ユニット、媒体ユニット、分岐ユニット、ロード・ユニット、及び記憶ユニットを含めることができる。他の機能ユニット（図示せず）は、とりわけ、仮想から物理アドレスへの変換を生成する変換テーブル・ウォークを行うテーブル・ウォーク・エンジンと、分岐予測器と、リネーム・ユニットと、リオーダ・バッファと、予約ステーションと、命令フェッチ・ユニットと、命令デコーダと、命令スケジューラと、命令ディスパッチャと、データ・プリフェッチ・ユニットと、非アーキテクチャ型レジスタとを含むことができる。様々なマイクロアーキテクチャ型機能をコア１０２に含めることができる。例えば、コア１０２は、クロック・サイクル毎に複数の命令を実行ユニット１１０に発行して実行することができるスーパースカラであってよく、又はスカラであってもよい。別の例として、コア１０２は、命令をインオーダで（順番に）、又はアウトオブオーダで（順序に関係なく）実行することができ、アウトオブオーダは、発行すべき命令をプログラム順序から外れて実行することを可能にする。一実施形態では、コア１０２は、実質的にはｘ８６命令セット・アーキテクチャに従うが、特定の命令セット・アーキテクチャに限定されず、グラフィック処理ユニット（ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＧＰＵ）、又はフィールド・プログラマブル・ゲート・アレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）などの他のメモリ・リクエスト・エージェントを含んでもよい。
【００１８】
また、まとめてプライベート・キャッシュ・メモリ階層１１６と呼ばれ、総称して個々にプライベート・キャッシュ・メモリ階層１１６と呼ばれるそれぞれのプライベート・キャッシュ・メモリ階層１１６−０、１１６−１、１１６−２、１１６−３を、コア１０２−０、１０２−１、１０２−２、１０２−３のそれぞれは含む。好ましくは、プライベート・キャッシュ・メモリ階層１１６のキャッシュ・メモリは、ＬＬＣ１２０より小さく、比較的小さいアクセス・レイテンシを有する。一実施形態では、プライベート・キャッシュ・メモリ階層１１６は、レベル１（Ｌ１）命令キャッシュ（Ｌ１Ｉ）及びＬ１データ・キャッシュ（Ｌ１Ｄ）を含む。
【００１９】
図２は、マイクロプロセッサの最終レベル・キャッシュ（ＬＬＣ）１２０の高レベルのブロック構造を示している。ＬＬＣ１２０は、一時的なトランザクション状態を保持するキュー１３０を収容したコア・インターフェース１２６及びバス・インターフェース１２８と、タグ、ＭＥＳＩ、ＬＲＵ、及びデータ情報を保持するアレイ１３２〜１３６と、キューが適したタイミングで共有アレイにアクセスすることを可能にする１つ又は複数のタグ・パイプライン１４０（「タグパイプ」とも呼ばれる）及びデータ・パイプライン１６０（「データパイプ」とも呼ばれる）とを含んだいくつかのサブモジュールを含む。
【００２０】
図２の実施形態では、２つのタグパイプ１４０、ＴａｇＰｉｐｅＡとＴａｇＰｉｐｅＢとが、クアドコア・プロセッサのＬＬＣをサポートするように示されている。複数のコアのうちの２つが、ＴａｇＰｉｐｅＡについてアービトレートし、他の２つのコアが、ＴａｇＰｉｐｅＢについてアービトレートする。別の実施形態では（図示せず）、単一のタグパイプ１４０が、ＬＬＣ用に設けられる。さらに他の実施形態では（これも図示せず）、３つ以上のタグパイプ１４０が設けられる。
【００２１】
タグパイプ１４０の独自の特徴は、タグパイプ１４０が、ほとんどすべてのＬＬＣトラフィックがそれを通って移動するような中心点として動作することである。それぞれのタグパイプ１４０は、Ｌｅａｓｔ−Ｒｅｃｅｎｔｌｙ−Ｕｓｅｄ（ＬＲＵ；最長時間未使用の）アレイ及びＴａｇ／ＭＥＳＩアレイ１３２、１３４に対するアクセスを提供し、タグパイプ１４０にアービトレートするあらゆるキュー・エントリについてアクション決定を行う。この特徴により、タグパイプ１４０は、ハングを検出し、回避する際に有用になる。
【００２２】
ＬＬＣのキュー１３０は、コア・インターフェース・キューと、外部インターフェース・キューとに分類可能である。コア・インターフェース・キューの例には、Ｌ１キャッシュ（又は中間キャッシュ）からＬＬＣへのロードを扱うロード・キュー、Ｌ１キャッシュからＬＬＣへの強制退去を扱う強制退去キュー、及びＬＬＣからＬ１キャッシュへのスヌープを扱うスヌープ・キューが含まれる。一実施形態では、別個のロード、強制退去、及びスヌープのキューが、データ及びコード用に設けられる。別の実施形態では、そのようなコア・インターフェース・キューのグループが、プロセッサのコアごとに設けられる。
【００２３】
外部インターフェース・キューには、ＬＬＣへの新規割当て及びＬＬＣからの強制退去を扱う充填バッファ(Fill Buffer)、バスに由来するスヌープを扱うスヌープ・キュー、及び（とりわけ）コアからのバス書込みを扱う書込みキューが含まれる。
【００２４】
ＬＬＣはまた、状態マシンと、検証機能と、Ｆｏｒｔｈプログラムを働かせるＰＰＵ１３９とを含んだ他の小さいブロックを含む。
【００２５】
外の世界からＬＬＣに入るトランザクション（例えば、データ・ロード）、又はＬＬＣ内で実現するトランザクション（例えば、プリフェッチ）は、それらの対応するキュー１３０にエントリをプッシュする。次いで、キュー１３０は、タグ・パイプライン１４０又はデータ・パイプライン１６０のいずれかにアービトレートするか、外側ブロックと通信するか、或いはその両方のいずれかによって、トランザクションを完了するのに必要な状態の維持を担う。
【００２６】
マイクロプロセッサは、いくつかのタイプのトランザクションに対して、いくつかの他のタイプのトランザクションより高い優先度を与える。一実施形態では、ＬＬＣにおける最高優先度のトランザクションは、Ｌ１ｄロードである。ＬＬＣが、新規のロード・リクエストを検出したとき、通常のキュー・プッシュに並行して、アービトレーション・ロジックに直接ロード・リクエスト信号をステージングし、それにより、ロードは、ＬＬＣがリクエストを検出し次第、アービトレートを開始することが可能になる。
【００２７】
図３は、それぞれＡ、Ｂ、Ｃ、Ｄ、及びＥに指定される複数の主要ステージ１４１〜１４５に分割されたタグパイプ１４０の一実施形態を示している。本明細書では「タグパイプａｒｂ」と呼ばれるキャッシュにアクセスするトランザクションは、タグパイプ１４０のステージを進む。Ａステージ１４１中、トランザクションは、タグパイプ１４０にアービトレートする。Ｂステージ１４２中、タグは、アレイに送信される。Ｃステージ中、ＭＥＳＩ情報と、タグがＬＬＣにおいてヒットするか又はミスするかについての指示とがアレイから受信される。Ｄステージ中、アレイから受信した情報に照らして、どのようなアクションを取るべきかについての決定が行われる。Ｅステージ中、アクション決定（完了／再生、充填キューをプッシュするなど）は、リクエスト中のキューに戻ってステージングされる。
【００２８】
一実施形態では、タグパイプ１４０はまた、それに続くステージを含むが、これらは、Ｄステージにおけるより古いリクエストからより新しいリクエストへのパスの転送を行う目的のためだけに存在する。したがって、図３の実施形態では、１つ又は複数のタイプの検出器１５０を使用してＥステージ１４５を監視することは有用である。しかしながら、監視するために最適なステージ（複数可）は、例えば、より多いステージの場合の実施形態、又はより少ないステージの場合の実施形態において、タグパイプ設計によって異なることになる。したがって、図４では、「ステージＮ」１４９は、ハングの検出及び分析を可能にするために、ａｒｂについての十分な量の情報（特に、ａｒｂが他のキュー・プッシュを再生、完了、及び／又は要求しようとしているか）を収容したタグパイプ・ステージを象徴している。
【００２９】
図４は、最終レベル・キャッシュ及びハング検出アーキテクチャ１７０の一実施形態のトップレベルの図を示すブロック図である。ＬＬＣ及びハング検出アーキテクチャ１７０は、１つ又は複数のデータ・アレイ１３６と、１つ又は複数のタグ・アレイ１３２と、アービトレーション・ロジック１７２とを備える。リクエスト・キュー１３０及びデータパイプ１６０に結合されたアービトレーション・ロジック１７２は、データ・アレイ１３６へのアクセスをアービトレートする。タグパイプ１４０に結合されたアービトレーション・ロジック１７２は、Ｔａｇ／ＭＥＳＩアレイ１３２に対するアクセスをアービトレートする。３つの異なるハング検出器、すなわち、ロジック・アナライザ２００、パターン検出器３００、及び条件付きパターン検出器４００は、タグパイプ１４０のステージＮ１４９に結合されており、１つ又は複数のスターベーション、ライブロック、又はデッドロックの状態を検出する。リクエスト・キュー１３０に結合された分散型ハング検出器ロジック５００は、ハングから回復するように複数の回復ルーチンを提供する。
【００３０】
図５は、図４のロジック・アナライザ２００の一実施形態を示している。ロジック・アナライザ２００は、タグパイプ１４０のステージＮ１４９に接続されたａｒｂ読出しロジック２０２を備え、このａｒｂ読出しロジック２０２は、タグパイプａｒｂのスナップショット２２０を読み出し、取り込む。構成ロジック２０８は、ユーザが、開始ポインタ２１２と終了ポインタ２１４との間の情報を読み出す及び／又は記憶するように、別法として、ローリング取込み２１６を実行すべきかどうかを示すように、及び特定のトランザクションを選択的に無視する２１８ように、ロジック・アナライザ２００を選択的に構成することを可能にする。ロジック・アナライザ２００の圧縮ロジック２０４は、ａｒｂ読出しロジック２０２によって取り込まれたスナップショット２２０を取り出し、様々なタイプの再生状態を一緒に論理ＯＲする。ストレージ・ロジック２０６は、圧縮されたスナップショットをマイクロプロセッサのプライベート・ランダム・アクセス・メモリ（ＰＲＡＭ）に記憶する。この統合された情報は、どのタグパイプａｒｂがハングを含み、又はハングにつながるかを判定するために使用される。
【００３１】
図６に示すように、それぞれのスナップショット２２０は、タグパイプａｒｂについての関連情報を記憶する複数のビットを含む。トランザクション識別子２２２は、ａｒｂのキュー・インデックスを識別する。例えば、トランザクション識別子２２２は、０から１５の間の数とすることができる。トランザクション・タイプ・フィールド２２４は、対応するタグパイプａｒｂが、ロード、スヌープ、強制退去、又は他のａｒｂタイプであるかを識別する。イベント・フィールド２２６は、タグパイプａｒｂが完了したか、又は再生されたかを示す。割当てフィールド２２８は、ａｒｂについての他の有用な情報、例えば、対応するａｒｂが割り当てられるセット及びウェイ、又はａｒｂと関連しているレジスタ・バンクを識別する。これは、ａｒｂが割り当てられるセット及びウェイを判定する状態に起因し得るハングを識別するのに有用である。
【００３２】
図７は、図４のパターン検出器３００の一実施形態のブロック図である。パターン検出器３００は、スナップショット取込みロジック３０１と、ストレージ・レジスタ３１６と、複数の構成可能な設定部３２２と、比較ロジック３１８とを備える。
【００３３】
スナップショット取込みロジック３０１は、タグパイプ１４０のステージＮ１４９に接続されたａｒｂ読出しロジック３０２を備え、このａｒｂ読出しロジック３０２は、タグパイプａｒｂのスナップショットを取り込む。スナップショット取込みロジック３０１はまた、ライン・デコーダ３０４を備え、このライン・デコーダ３０４は、タグパイプ１４０を進むａｒｂのｘ桁トランザクション識別子２２２とトランザクション・タイプ２２４を、それらのトランザクション識別子とトランザクション・タイプの２ｘビットフィールド表示にデコードする。次いで、アキュムレータ３０６が、デコードされたトランザクション識別子とトランザクション・タイプを累積レジスタ３１４に累積する。
【００３４】
例えば、トランザクション・タイプ２２４は、ａｒｂ読出しロジック３０２によって回復されると、Ｘビット（例えば、４ビット）バイナリ・コードの形態で表示可能である。デコーダ３４２は、Ｘビット・トランザクション識別子をＹビット（例えば、１６ビット）フィールドにデコードし、ただし、２Ｘ−１＜Ｙ≦２Ｘであり、それにより、Ｙビット・フィールドのそれぞれのビットは、異なる種類（又は類似した種類のカテゴリ）のタグパイプａｒｂを表す。アキュムレータ３０６は、トランザクション識別子の直近に累積された値と共に、直近にデコードされたトランザクション識別子の論理ＯＲのＢｏｏｌｅａｎ等価である関数によりトランザクション識別子を累積するので、ユーザが構成可能な期間中、タグパイプ１４０を進むあらゆる種類のタグパイプａｒｂのビットマスクを累積レジスタ３１４に累積する。
【００３５】
パターン検出器３００はまた、特定のイベントをカウントする複数の演算アキュムレータ３０８を含む。例えば、１つの演算アキュムレータ３０８は、構成可能な期間中に完了するａｒｂトランザクションの数をカウントする。別の演算アキュムレータ３０８は、その期間中に再生されるａｒｂの数をカウントする。さらに別の演算アキュムレータ３０８は、その期間中に受けた再生タイプのビットマスクを累積する。
【００３６】
図８は、累積レジスタ３１４の一実施形態の内容を示している。ビット０〜１０を含んだフィールド３４１は、演算アキュムレータ３１０によってカウントされた再生の数を記録する。ビット１１〜１８を含んだフィールド３４３は、演算アキュムレータ３０８によってカウントされた完了の数を記録する。ビット１９〜３１を含んだフィールド３４５は、その期間中に検出された再生タイプを記録する。ビット３２〜４７を含んだフィールド３４７は、その期間中に受けたトランザクション識別子（例えば、キュー・インデックス）を記録する。ビット４８〜６３を含んだフィールド３４９は、アキュムレータ３０６から受信したデコード済みのａｒｂ状態を記録する。
【００３７】
パターン検出器３００は、パターン検出器３００を動作させるために、ユーザが構成可能な設定部３２２を備える。これらの設定部は、例えば、クロック・サイクルの構成可能な数３２３、又はタグパイプ１４０を進む有効トランザクションの構成可能な数（図示せず）を含むことができる。これらの設定部はまた、カウントされた完了の数の閾値３２５、及びカウントされた再生の数の閾値３２７をそれぞれ含んで、ハングを信号伝達することができる。
【００３８】
図９は、図６のパターン検出器３００の動作を示している。ブロック３５０で、ａｒｂ読出しロジック３０２が、ステージＮ１４９におけるａｒｂのスナップショットを生成する。ブロック３５２で、パターン検出器３００は、スナップショットをレジスタ３１４に累積する。ブロック３５４で、パターン検出器３００は、ユーザが構成可能な期間が完了済みかどうかを確認する。未完了の場合、パターン検出器３００は、スナップショットをレジスタ３１４に累積することを継続する。ユーザが構成可能な期間が完了した場合には、ブロック３５６で、パターン検出器３００は、レジスタ３１４の累積されたビットを、記憶された履歴としてストレージ・レジスタ３１６のうちの１つに保存する。マイクロプロセッサはまた、レジスタ３１４をクリアし、その後に続く期間の新規ビットマスクを累積するようにレジスタ３１４を準備する。
【００３９】
ブロック３５８、３６０、及び３６２で、パターン検出器３００内の比較ロジック３１８は、１つ又は複数のあらかじめ定められた比較、及び／又は構成可能な比較を行う。例えば、パターン検出器３００は、完了の数が、ユーザが構成可能な閾値２２５を下回るか（ブロック３５８）、再生の数が、ユーザが構成可能な設定部３２２において設定された再生閾値３２７に一致するか、又はこの再生閾値３２７を超えるか（ブロック３６０）を評価すること、及び／又は２つの直近に保存されたレジスタの再生データを比較して、２つのレジスタにおいて、カウントされた再生数が同じであるか、又はほとんど同じであるかを判定することができる（ブロック３６２）。パターン検出器３００はまた、又は別法で、カウントされた再生数とカウントされた完了数との差異が閾値を超えるかどうかを評価することができる。ブロック３６４で、１つ又は複数のあらかじめ定められた状態及び／又は構成可能な状態が一致する場合には、ブロック３６６で、パターン検出器３００は、ハングを信号伝達し、ひいては、１つ又は複数の回復又は取込みのルーチン３２０をトリガする（ブロック３６８）。
【００４０】
図１０は、図４の条件付きパターン検出器４００の一実施形態のブロック図である。条件付きパターン検出器４００は、図７のパターン検出器３００より複雑で、構成可能な形態である。検出器４００は、スナップショット取込みロジック４０１を備え、このスナップショット取込みロジック４０１は、図７のスナップショット取込みロジック３０１のように、ａｒｂ読出しロジック４０２及びマスキング・ロジック４０４を有して、タグパイプａｒｂのスナップショットを取り込む。検出器４００は、複数の構成可能なトリガ・レジスタ・モジュール４１０を備える。それぞれのトリガ・レジスタ・モジュール４１０は、トランザクションを検出するために複数の構成可能なフィールドを有し、この構成可能なフィールドは、任意選択でトリガ状態にある別のトリガ・レジスタ・モジュール４１０に関して条件付けられた、指定の特性を有する。複数のトリガ・レジスタ・モジュール４１０は共に、ａｒｂのユーザ指定のパターンを検出するように、及びパターンが検出されたとき、Ｌ２取込み及び／又は回復応答４３２をトリガするように構成可能である。
【００４１】
それぞれのトリガ・レジスタ・モジュール４１０は、３つの出力を有する。トリガ・レジスタ・モジュール４１０がトリガされたことを信号伝達する第１の出力４２２は、他のトリガ・レジスタ・モジュール４１０のそれぞれに供給される。第２の出力４２４は、Ｌ２取込みをトリガするように、つまり、タグパイプ１４０を通過するものすべての取込みを開始するように、下流ロジック４２０に信号伝達する。それぞれのトリガ・レジスタ・モジュール４１０のトリガＬ２取込み出力４２４は共に、ＯＲブロック４２８によって示されるようにＯＲされる。第３の出力４２６は、ＰＰＵ割込みをトリガするように、下流ロジック４３０に信号伝達し、ひいては、それにより、１つ又は複数の回復ルーチン４３２が実行されるようになる。それぞれのトリガ・レジスタ・モジュール４１０のトリガＰＰＵ出力４２６もまた共に、ＯＲブロック４２９によって示されるようにＯＲされる。
【００４２】
図１１は、構成可能なトリガ・レジスタ・モジュール４１０の一実施形態の内容を示している。トリガ・レジスタ・モジュール４１０は、再生ベクトル４１３、ａｒｂタイプ４１４、トリガ依存ビットマップ４１６、及びタイムアウト値４１７を指定するためのフィールドを備える。レジスタ・モジュールが、指定されたタイムアウト期間を有する場合には、タイムアウト期間は、レジスタがトリガされた状態にあることをそのレジスタが示すとき、開始する。タイムアウト期間の期限切れ後、パターン検出器は、いずれの依存レジスタ・モジュールもディスエーブルにして、トリガされた状態に入らないようにする。
【００４３】
トリガ・レジスタ・モジュール４１０はまた、下流ロジックをトリガしてＰＰＵ割込み又はＬ２取込みをトリガするようにトリガ・レジスタ・モジュール４１０をイネーブルにするために、それぞれ１ビットの長さのフィールド４１８及び４１９を備える。フィールド４１１は、トリガがイネーブルにされたかどうかを識別する。フィールド４２１は、レジスタは、一旦トリガすると、イネーブルの状態のままになるかどうかを指定する。構成可能なレジスタ・モジュール４１０は、より特殊化したフィールド、例えば、タグパイプ・セレクタ４１５をサポートすることができる。
【００４４】
図１２は、１つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出するための、マルチプロセッサ・マイクロプロセッサにおける分散型ハング・ロジック・アーキテクチャ５００の一実施形態を示している。複数のキュー・エントリ５１２をそれぞれが収容した複数のキュー１３０（図２）は、キャッシュ・アクセシング・トランザクション、及びキャッシュをバイパスするトランザクション（例えば、キャッシュ不可能なロード）についての一時的トランザクション状態情報を収容する。複数の検出器５２０は、１つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態について複数のクエリ・エントリ５１２を監視する。複数の回復ロジック・モジュール５３０は、マイクロプロセッサ内に分散される。検出器５２０は、起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出したとき、その状態について、検出器５２０の最も近くの回復ロジック・モジュール５３０と通信する（例えば、「ＩｍＨｕｎｇ」信号）。一実施形態で有限状態マシンを構成するそれぞれの回復ロジック・モジュール５３０は、結合された検出器５２０が、起こり得るスターベーション、ライブロック、又はデッドロックの状態を識別したとき、１つ又は複数のローカル回復ルーチン５３５を実装するように構成されている。
【００４５】
一実施形態では、ラストレベル・キャッシュ・タグパイプ１４０にアービトレーションをリクエストするそれぞれのキュー・エントリ５１２は、対応する検出器５２０と関連付けられる。また一実施形態では、検出器５２０は、飽和カウンタを備える。構成ロジック５５０が、カウントすべき１つ又は複数の状態５５５を指定するように設けられる。
【００４６】
一実施形態では、分散型ハング・ロジック・アーキテクチャ５００は、関連キュー・エントリ５１２が新規に割り当てられたとき、それぞれの飽和カウンタをリセットするように、及び関連キュー・エントリ５１２が再生されるときはいつでも、飽和カウンタをインクリメントするように構成されている。第２の実施形態では、それぞれの飽和カウンタは、関連キュー・エントリが、アービトレーションをリクエストするが、アービトレーションが認められないときはいつでも、インクリメントする。第３の実施形態では、それぞれの飽和カウンタは、関連キュー・エントリがアービトレーションをリクエストする前にいくつかの外部刺激を待っているときはいつでも、インクリメントする。第４の実施形態では、それぞれの飽和カウンタは、構成可能な閾値で飽和する。
【００４７】
分散型ハング・ロジック・アーキテクチャ５００は、一実施形態でやはり有限状態マシンである中央回復ロジック５４０をさらに備える。回復ロジック・モジュール５３０は、起こり得るスターベーション、ライブロック、又はデッドロックの状態について、検出器５２０によって通知されたとき、回復ロジック・モジュール５３０は、中央回復ロジック５４０と通信する。中央回復ロジック５４０は、複数の回復ロジック・モジュール５３０のそれぞれに、それら自体のローカル回復ルーチンのうちの１つ又は複数を行うように、応答可能なように命令する。
【００４８】
回復ルーチン５３５は、検出されたハングを解決しようと試みるために、関連キュー・エントリからのアービトレーション・リクエストを操作するように構成されている。図１３は、回復ロジック５４０に提供される回復ルーチン５６０のセットの一実施形態のブロック図である。
【００４９】
回復ルーチン５６２のうちの１つは、アービトレーション・リクエストを系統的にブロックすることによって、タグ・パイプラインにバブルを挿入することを含む。第２の回復ルーチン５６４は、リクエスト中のキュー・エントリのあらかじめ定められたセットを、それらのリクエストを資格解除することによってブロックすることを含む。第３の回復ルーチン５６６は、関連するキュー・エントリにそれらのアービトレーション・リクエストを資格解除させることによって、起こり得るスターベーション、ライブロック、又はデッドロックの状態をアサートしていない検出器に関連するすべてのリクエスタをブロックすることを含む。第４の回復ルーチン５６８は、ラウンドロビン・リクエスト資格解除を含み、ここで、個々のキュー又はキュー・エントリからのアービトレーションのリクエストは、連続的に進行することのみ許容される。一実施形態では、回復ロジックは、１つの回復ルーチンを実行させ、ハング状態について再確認してから、次の回復ルーチンを実行させる。しかしながら、特許請求の範囲でそのように指定していない場合、本発明は、これらの回復ルーチン、回復ルーチンの何らかの特定のセット、又は回復ルーチンの何らかの特定の順序付けに限定されない。
【００５０】
本発明の様々な実施形態について本明細書で説明してきたが、それら実施形態は、限定ではなく、例として提示されていることを理解されたい。形態及び細部の様々な変更が本発明の範囲から逸脱することなく行われ得ることは、関連コンピュータ技術の当業者には明らかになろう。ソフトウェアによって、例えば、本明細書に記載の装置並びに方法の機能、製作、モデリング、シミュレーション、記述、及び／又は検査をイネーブルにすることができる。これは、汎用プログラミング言語（例えば、Ｃ、Ｃ＋＋）、ＶｅｒｉｌｏｇのＨＤＬ、及びＶＨＤＬなどを含むハードウェア記述言語（ＨＤＬ）、又は他の利用可能なプログラムの使用を通じて達成可能である。そのようなソフトウェアは、磁気テープ、半導体、磁気ディスク、又は光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなど）、ネットワーク、有線、無線、又は他の通信媒体などの任意の既知のコンピュータが使用可能な媒体に配置可能である。本明細書に記載の装置及び方法の諸実施形態は、（例えば、ＨＤＬで実現され、又は指定される）マイクロプロセッサ・コアなど、半導体知的財産コアに含めることができ、集積回路の生産におけるハードウェアに変換することができる。加えて、本明細書に記載の装置及び方法は、ハードウェアとソフトウェアとの組合せとして実現可能である。したがって、本発明は、本明細書に記載の例示的な諸実施形態のいずれによっても限定すべきではなく、添付の特許請求の範囲、及びそれらの均等物に従ってのみ定義すべきである。具体的には、本発明は、汎用コンピュータにおいて使用可能なマイクロプロセッサ・デバイス内で実装可能である。最後に、当業者は、自分らが、本発明の同一の目的を遂行するように他の構造を設計し、又は修正するための礎として、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、本開示の概念及び具体的な諸実施形態を容易に使用することができることを理解すべきである。
【図１】
2017502443.tif 000003
【図２】
2017502443.tif 000004
【図３】
2017502443.tif 000005
【図４】
2017502443.tif 000006
【図５】
2017502443.tif 000007
【図６】
2017502443.tif 000008
【図７】
2017502443.tif 000009
【図８】
2017502443.tif 000010
【図９】
2017502443.tif 000011
【図１０】
2017502443.tif 000012
【図１１】
2017502443.tif 000013
【図１２】
2017502443.tif 000014
【図１３】
2017502443.tif 000015
【国際調査報告】
2017502443.tif 000016
2017502443.tif 000017