JP2017502443A - ハングを検出するためのロジック・アナライザ - Google Patents

ハングを検出するためのロジック・アナライザ Download PDF

Info

Publication number
JP2017502443A
JP2017502443A JP2016563275A JP2016563275A JP2017502443A JP 2017502443 A JP2017502443 A JP 2017502443A JP 2016563275 A JP2016563275 A JP 2016563275A JP 2016563275 A JP2016563275 A JP 2016563275A JP 2017502443 A JP2017502443 A JP 2017502443A
Authority
JP
Japan
Prior art keywords
tag
arb
microprocessor
logic analyzer
pipe
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016563275A
Other languages
English (en)
Other versions
JP6192858B2 (ja
Inventor
フーカー,ロドニー,イー
リード,ダグラス,アール
Original Assignee
ヴィア アライアンス セミコンダクター カンパニー リミテッド
ヴィア アライアンス セミコンダクター カンパニー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ヴィア アライアンス セミコンダクター カンパニー リミテッド, ヴィア アライアンス セミコンダクター カンパニー リミテッド filed Critical ヴィア アライアンス セミコンダクター カンパニー リミテッド
Publication of JP2017502443A publication Critical patent/JP2017502443A/ja
Application granted granted Critical
Publication of JP6192858B2 publication Critical patent/JP6192858B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Abstract

マイクロプロセッサが、タグ・アレイを含むキャッシュと、タグ・アレイに対するアクセスをアービトレートするタグパイプと、スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザとを備える。タグパイプに結合された読出しロジックを備えるロジック・アナライザは、タグ・アレイにアクセスするトランザクションのスナップショットを記録するように構成されている。

Description

本発明は、ハング検出ロジックに関し、より詳細には、最終レベル・キャッシュのハング検出ロジックに関する。
ラストレベル・キャッシュ(Last−level cache:LLC)に対するタグ・パイプラインは、タグ・アレイ、MESIアレイ、及びLRUアレイにアクセスするウェイ(way)を提供する。タグ・パイプライン(本明細書では、タグパイプとも呼ばれる)は、リクエストに優先順位を付け、特定のリクエストにいかに応答すべきかについての決定を行う。例として、L1Dなどのより低いレベル・キャッシュからのロード・リクエストにより、キュー・エントリは、状態を追跡する目的のため、プッシュされることになる。次いで、データ・ロード・キュー・エントリは、タグ・パイプラインに対する所有権についてアービトレート(arbitrate)する。一旦、タグ・パイプランに所有権が認められると、キュー・エントリは、タグMESIアレイにアクセスして、そのアドレスがアレイ内にあるかどうかを調べる。アドレスがある場合には、パイプラインの終わりにおいて、アドレスがキャッシュ内にあるかどうか、及び他の何のキャッシュがラインを有するかに基づいて、キュー・エントリは、ヒットが存在することになるか、又はミスが存在することになるか、或いは他のキャッシュをスヌープすることが必要になるかどうかを決定する。
LLCに対するアクセスをアービトレートするのに使用されるロジックは、結果として、コーディング・エラーの障害でもなく、プログラマが予測もできないハング(hang)をもたらす場合がある。例として、デッドロックは、単一のリクエスト又は1対のリクエストが完了しないときに生じる。リクエストは、繰り返しパイプラインへアービトレートし、再生する。デッドロックの一般的な原因は、いくつかの外部刺激におけるリクエスト待ちである。別の一般的な原因は、1対のリクエストのうちの各リクエストが、リクエストのうちの他方が完了するのを待っているという依存性チェーンの存在である。
別の一般的な例は、マルチスレッドのプログラムにおいて、それぞれのスレッドが同じ共有リソースについて競合するときに生じる未解決のハング及びスターベーション(starvation)である。コードにおいては、所有権は、しばしば、リソースが利用可能である場合は0、リソースが利用不可能である(すなわち、スレッドのうちの1つによってすでに所有されている)場合は1である変数によって信号伝達される。スレッドは、ビットを読み出すと同時に、ビットを1に設定して、スレッドが所有権を得ることができるかどうかを調べる。スレッドが、0を読み出すが1を設定することができる場合に、このとき、そのスレッドは、所有権を得る。1つのスレッドが所有権を得たとき、他のスレッドは、第1のスレッドが共有リソースを解放するのを待ちながら、この場所に対する読出し/修正/書込みを絶えず行う。ハングは、スレッド0がリソースを所有し、そのタスクにより終了するが、リソースを獲得しようと試みるスレッド1及びスレッド2の繰り返される読出し/修正/書込みによってリソースを解放するように0に書き込むことが妨げられる場合に生じる。これらの種類のスターベーション状態は、ロードが他のロードに対してどのように優先順位を付けられるかを確定するアーキテクチャの意図しない特徴であり、予測することが困難である。
実際には、一般的なデッドロック状態を検出し、そのデッドロック状態に応答するマイクロプロセッサを作り出すことは、そのような状態が決して又はほとんど生じないマクロプロセッサを作り出すことよりも、費用、処理速度、及び論理的複雑さの点で、より効率的である可能性がある。したがって、ハングを示すパターンを検出するヒューリスティックベースのタグパイプ・トラフィック監視ロジックの必要性が存在する。また、検出されたハングにこれらハングを解決しようとする試みで応答するロジックの必要性も存在する。
本発明は、多くの形態で表すことができる。本発明を表すことができる1つの形態は、タグ・アレイを含むキャッシュと;タグ・アレイに対するアクセスをアービトレートするタグパイプと;スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザと;を備えたマイクロプロセッサである。
数多くのクロック、例えば千個のクロックにわたって、デッドロックは、あったとしてもほとんど完了しないトラフィック・パターン、多数の再生、及び1つだけ又は2つの異なる種類のarbとしてよく現れる。ロジック・アナライザは、そのようなトラフィック・パターンを識別するために提供される。
ロジック・アナライザは、タグパイプに結合された読出しロジックを備える。このロジック・アナライザは、本明細書でタグパイプarbと呼ばれる、タグ・アレイにアクセスするトランザクションのスナップショットを記録するように構成されている。
タグパイプは、複数のステージを備えることができ、ロジック・アナライザは、arbが他のキュー・プッシュを再生、完了、及び/又は要求しようとしているかをタグパイプが判定した後、パイプラインのステージに結合される。
スナップショットは、以下の情報、すなわち、タグパイプarbが、ロード、スヌープ、記憶、又は他のarbタイプであるか、タグパイプarbは、完了したか、又は再生されたか、並びにarbが割り当てられるセット及びウェイを識別する情報、のうちの一部或いはすべてを含むことができる。
ロジック・アナライザは、ロジックを備えて、様々なタイプの再生状態を一緒に論理ORすることによってスナップショットを圧縮し、スナップショットをマイクロプロセッサのプライベート・ランダム・アクセス・メモリ(private random access memory:PRAM)に記憶することができる。
ロジック・アナライザはまた、ユーザが、どのスナップショットをロジック・アナライザが記録するかを選択的に構成すること、及びタグパイプarbのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成することを可能にする構成ロジックを備えることができる。
本発明はまた、多くの他の形態でも表すことができ、そのいくつかは、上記に表された形態よりも広範であってよい。したがって、本発明を上記に表す形態は、特許請求の範囲において本発明を表す形態を映し出すものとみなすべきではない。
共有LLCを有するマルチコア・マイクロプロセッサの一実施形態のブロック図である。 図1のLLCのブロック図である。 図2のLLCについて、タグパイプ・ステージング・アーキテクチャの一実施形態のブロック図である。 LLC及びハング検出アーキテクチャの一実施形態のトップレベルの図を示すブロック図である。 図4のロジック・アナライザを示すブロック図である。 図5のロジック・アナライザによって取り込まれたスナップショットの一実施形態の内容を示す図である。 図4のパターン検出器を示すブロック図である。 図7のパターン検出器に組み込まれた累積レジスタの一実施形態の内容を示す図である。 図7の条件付きパターン検出器の動作を示す機能ブロック図である。 図4の条件付きパターン検出器を示すブロック図である。 図10の構成可能なレジスタのうちの1つの一実施形態の内容を示す図である。 1つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出するための分散型ハング・ロジック・アーキテクチャの一実施形態を示す図である。 複数の回復ルーチンを示す機能ブロック図である。
ここで、図1を参照すると、マルチコア・マイクロプロセッサ100を示すブロック図が示されている。マイクロプロセッサ100は、複数の処理コア102と、共有ラストレベル・キャッシュ(LLC)メモリ120と、バス・インターフェース・ユニット(bus interface unit:BIU)122とを含む。
図1の例示的な実施形態では、まとめてコア102と呼ばれ、総称して個々にコア102と呼ばれるコア0の102−0、コア1の102−1、コア2の102−2、及びコア3の102−3と示された4つのコア102が存在する。まとめてインターフェース118と呼ばれ、総称して個々にインターフェース118と呼ばれる各インターフェース118−0、118−1、118−2、118−3を介して、コア102−0、102−1、102−2、102−3のそれぞれは、LLC120にアクセスする。バス・インターフェース・ユニット122も、インターフェース118−4を介してLLC120にアクセスする。マイクロプロセッサ100は、より大型のコンピュータ・システム(図示せず)の一部であり、このコンピュータ・システムは、LLC120が、システム・バス124を通じてバス・インターフェース・ユニット122を介して通信するシステム・メモリ及び周辺装置(これらも、図示せず)を含む。図1の実施形態は、4つのコア102を備えたプロセッサ100を示しているが、異なる数のコア102を備えた他の実施形態が企図される。すべてのコア102は、LLC106を共有する。
それぞれの処理コア102は、命令キャッシュ104と、マイクロコード108を含む命令トランスレータ106と、実行ユニット110と、アーキテクチャ型レジスタ112と、メモリ・サブシステム114(例えばメモリ・オーダ・バッファ、データ・キャッシュ、及びテーブル・ウォーク・エンジン)とを備える。命令ユニット110には、整数ユニット、浮動小数点ユニット、媒体ユニット、分岐ユニット、ロード・ユニット、及び記憶ユニットを含めることができる。他の機能ユニット(図示せず)は、とりわけ、仮想から物理アドレスへの変換を生成する変換テーブル・ウォークを行うテーブル・ウォーク・エンジンと、分岐予測器と、リネーム・ユニットと、リオーダ・バッファと、予約ステーションと、命令フェッチ・ユニットと、命令デコーダと、命令スケジューラと、命令ディスパッチャと、データ・プリフェッチ・ユニットと、非アーキテクチャ型レジスタとを含むことができる。様々なマイクロアーキテクチャ型機能をコア102に含めることができる。例えば、コア102は、クロック・サイクル毎に複数の命令を実行ユニット110に発行して実行することができるスーパースカラであってよく、又はスカラであってもよい。別の例として、コア102は、命令をインオーダで(順番に)、又はアウトオブオーダで(順序に関係なく)実行することができ、アウトオブオーダは、発行すべき命令をプログラム順序から外れて実行することを可能にする。一実施形態では、コア102は、実質的にはx86命令セット・アーキテクチャに従うが、特定の命令セット・アーキテクチャに限定されず、グラフィック処理ユニット(graphic processing unit:GPU)、又はフィールド・プログラマブル・ゲート・アレイ(field programmable gate array:FPGA)などの他のメモリ・リクエスト・エージェントを含んでもよい。
また、まとめてプライベート・キャッシュ・メモリ階層116と呼ばれ、総称して個々にプライベート・キャッシュ・メモリ階層116と呼ばれるそれぞれのプライベート・キャッシュ・メモリ階層116−0、116−1、116−2、116−3を、コア102−0、102−1、102−2、102−3のそれぞれは含む。好ましくは、プライベート・キャッシュ・メモリ階層116のキャッシュ・メモリは、LLC120より小さく、比較的小さいアクセス・レイテンシを有する。一実施形態では、プライベート・キャッシュ・メモリ階層116は、レベル1(L1)命令キャッシュ(L1I)及びL1データ・キャッシュ(L1D)を含む。
図2は、マイクロプロセッサの最終レベル・キャッシュ(LLC)120の高レベルのブロック構造を示している。LLC120は、一時的なトランザクション状態を保持するキュー130を収容したコア・インターフェース126及びバス・インターフェース128と、タグ、MESI、LRU、及びデータ情報を保持するアレイ132〜136と、キューが適したタイミングで共有アレイにアクセスすることを可能にする1つ又は複数のタグ・パイプライン140(「タグパイプ」とも呼ばれる)及びデータ・パイプライン160(「データパイプ」とも呼ばれる)とを含んだいくつかのサブモジュールを含む。
図2の実施形態では、2つのタグパイプ140、TagPipeAとTagPipeBとが、クアドコア・プロセッサのLLCをサポートするように示されている。複数のコアのうちの2つが、TagPipeAについてアービトレートし、他の2つのコアが、TagPipeBについてアービトレートする。別の実施形態では(図示せず)、単一のタグパイプ140が、LLC用に設けられる。さらに他の実施形態では(これも図示せず)、3つ以上のタグパイプ140が設けられる。
タグパイプ140の独自の特徴は、タグパイプ140が、ほとんどすべてのLLCトラフィックがそれを通って移動するような中心点として動作することである。それぞれのタグパイプ140は、Least−Recently−Used(LRU;最長時間未使用の)アレイ及びTag/MESIアレイ132、134に対するアクセスを提供し、タグパイプ140にアービトレートするあらゆるキュー・エントリについてアクション決定を行う。この特徴により、タグパイプ140は、ハングを検出し、回避する際に有用になる。
LLCのキュー130は、コア・インターフェース・キューと、外部インターフェース・キューとに分類可能である。コア・インターフェース・キューの例には、L1キャッシュ(又は中間キャッシュ)からLLCへのロードを扱うロード・キュー、L1キャッシュからLLCへの強制退去を扱う強制退去キュー、及びLLCからL1キャッシュへのスヌープを扱うスヌープ・キューが含まれる。一実施形態では、別個のロード、強制退去、及びスヌープのキューが、データ及びコード用に設けられる。別の実施形態では、そのようなコア・インターフェース・キューのグループが、プロセッサのコアごとに設けられる。
外部インターフェース・キューには、LLCへの新規割当て及びLLCからの強制退去を扱う充填バッファ(Fill Buffer)、バスに由来するスヌープを扱うスヌープ・キュー、及び(とりわけ)コアからのバス書込みを扱う書込みキューが含まれる。
LLCはまた、状態マシンと、検証機能と、Forthプログラムを働かせるPPU139とを含んだ他の小さいブロックを含む。
外の世界からLLCに入るトランザクション(例えば、データ・ロード)、又はLLC内で実現するトランザクション(例えば、プリフェッチ)は、それらの対応するキュー130にエントリをプッシュする。次いで、キュー130は、タグ・パイプライン140又はデータ・パイプライン160のいずれかにアービトレートするか、外側ブロックと通信するか、或いはその両方のいずれかによって、トランザクションを完了するのに必要な状態の維持を担う。
マイクロプロセッサは、いくつかのタイプのトランザクションに対して、いくつかの他のタイプのトランザクションより高い優先度を与える。一実施形態では、LLCにおける最高優先度のトランザクションは、L1dロードである。LLCが、新規のロード・リクエストを検出したとき、通常のキュー・プッシュに並行して、アービトレーション・ロジックに直接ロード・リクエスト信号をステージングし、それにより、ロードは、LLCがリクエストを検出し次第、アービトレートを開始することが可能になる。
図3は、それぞれA、B、C、D、及びEに指定される複数の主要ステージ141〜145に分割されたタグパイプ140の一実施形態を示している。本明細書では「タグパイプarb」と呼ばれるキャッシュにアクセスするトランザクションは、タグパイプ140のステージを進む。Aステージ141中、トランザクションは、タグパイプ140にアービトレートする。Bステージ142中、タグは、アレイに送信される。Cステージ中、MESI情報と、タグがLLCにおいてヒットするか又はミスするかについての指示とがアレイから受信される。Dステージ中、アレイから受信した情報に照らして、どのようなアクションを取るべきかについての決定が行われる。Eステージ中、アクション決定(完了/再生、充填キューをプッシュするなど)は、リクエスト中のキューに戻ってステージングされる。
一実施形態では、タグパイプ140はまた、それに続くステージを含むが、これらは、Dステージにおけるより古いリクエストからより新しいリクエストへのパスの転送を行う目的のためだけに存在する。したがって、図3の実施形態では、1つ又は複数のタイプの検出器150を使用してEステージ145を監視することは有用である。しかしながら、監視するために最適なステージ(複数可)は、例えば、より多いステージの場合の実施形態、又はより少ないステージの場合の実施形態において、タグパイプ設計によって異なることになる。したがって、図4では、「ステージN」149は、ハングの検出及び分析を可能にするために、arbについての十分な量の情報(特に、arbが他のキュー・プッシュを再生、完了、及び/又は要求しようとしているか)を収容したタグパイプ・ステージを象徴している。
図4は、最終レベル・キャッシュ及びハング検出アーキテクチャ170の一実施形態のトップレベルの図を示すブロック図である。LLC及びハング検出アーキテクチャ170は、1つ又は複数のデータ・アレイ136と、1つ又は複数のタグ・アレイ132と、アービトレーション・ロジック172とを備える。リクエスト・キュー130及びデータパイプ160に結合されたアービトレーション・ロジック172は、データ・アレイ136へのアクセスをアービトレートする。タグパイプ140に結合されたアービトレーション・ロジック172は、Tag/MESIアレイ132に対するアクセスをアービトレートする。3つの異なるハング検出器、すなわち、ロジック・アナライザ200、パターン検出器300、及び条件付きパターン検出器400は、タグパイプ140のステージN149に結合されており、1つ又は複数のスターベーション、ライブロック、又はデッドロックの状態を検出する。リクエスト・キュー130に結合された分散型ハング検出器ロジック500は、ハングから回復するように複数の回復ルーチンを提供する。
図5は、図4のロジック・アナライザ200の一実施形態を示している。ロジック・アナライザ200は、タグパイプ140のステージN149に接続されたarb読出しロジック202を備え、このarb読出しロジック202は、タグパイプarbのスナップショット220を読み出し、取り込む。構成ロジック208は、ユーザが、開始ポインタ212と終了ポインタ214との間の情報を読み出す及び/又は記憶するように、別法として、ローリング取込み216を実行すべきかどうかを示すように、及び特定のトランザクションを選択的に無視する218ように、ロジック・アナライザ200を選択的に構成することを可能にする。ロジック・アナライザ200の圧縮ロジック204は、arb読出しロジック202によって取り込まれたスナップショット220を取り出し、様々なタイプの再生状態を一緒に論理ORする。ストレージ・ロジック206は、圧縮されたスナップショットをマイクロプロセッサのプライベート・ランダム・アクセス・メモリ(PRAM)に記憶する。この統合された情報は、どのタグパイプarbがハングを含み、又はハングにつながるかを判定するために使用される。
図6に示すように、それぞれのスナップショット220は、タグパイプarbについての関連情報を記憶する複数のビットを含む。トランザクション識別子222は、arbのキュー・インデックスを識別する。例えば、トランザクション識別子222は、0から15の間の数とすることができる。トランザクション・タイプ・フィールド224は、対応するタグパイプarbが、ロード、スヌープ、強制退去、又は他のarbタイプであるかを識別する。イベント・フィールド226は、タグパイプarbが完了したか、又は再生されたかを示す。割当てフィールド228は、arbについての他の有用な情報、例えば、対応するarbが割り当てられるセット及びウェイ、又はarbと関連しているレジスタ・バンクを識別する。これは、arbが割り当てられるセット及びウェイを判定する状態に起因し得るハングを識別するのに有用である。
図7は、図4のパターン検出器300の一実施形態のブロック図である。パターン検出器300は、スナップショット取込みロジック301と、ストレージ・レジスタ316と、複数の構成可能な設定部322と、比較ロジック318とを備える。
スナップショット取込みロジック301は、タグパイプ140のステージN149に接続されたarb読出しロジック302を備え、このarb読出しロジック302は、タグパイプarbのスナップショットを取り込む。スナップショット取込みロジック301はまた、ライン・デコーダ304を備え、このライン・デコーダ304は、タグパイプ140を進むarbのx桁トランザクション識別子222とトランザクション・タイプ224を、それらのトランザクション識別子とトランザクション・タイプの2ビットフィールド表示にデコードする。次いで、アキュムレータ306が、デコードされたトランザクション識別子とトランザクション・タイプを累積レジスタ314に累積する。
例えば、トランザクション・タイプ224は、arb読出しロジック302によって回復されると、Xビット(例えば、4ビット)バイナリ・コードの形態で表示可能である。デコーダ342は、Xビット・トランザクション識別子をYビット(例えば、16ビット)フィールドにデコードし、ただし、2−1<Y≦2であり、それにより、Yビット・フィールドのそれぞれのビットは、異なる種類(又は類似した種類のカテゴリ)のタグパイプarbを表す。アキュムレータ306は、トランザクション識別子の直近に累積された値と共に、直近にデコードされたトランザクション識別子の論理ORのBoolean等価である関数によりトランザクション識別子を累積するので、ユーザが構成可能な期間中、タグパイプ140を進むあらゆる種類のタグパイプarbのビットマスクを累積レジスタ314に累積する。
パターン検出器300はまた、特定のイベントをカウントする複数の演算アキュムレータ308を含む。例えば、1つの演算アキュムレータ308は、構成可能な期間中に完了するarbトランザクションの数をカウントする。別の演算アキュムレータ308は、その期間中に再生されるarbの数をカウントする。さらに別の演算アキュムレータ308は、その期間中に受けた再生タイプのビットマスクを累積する。
図8は、累積レジスタ314の一実施形態の内容を示している。ビット0〜10を含んだフィールド341は、演算アキュムレータ310によってカウントされた再生の数を記録する。ビット11〜18を含んだフィールド343は、演算アキュムレータ308によってカウントされた完了の数を記録する。ビット19〜31を含んだフィールド345は、その期間中に検出された再生タイプを記録する。ビット32〜47を含んだフィールド347は、その期間中に受けたトランザクション識別子(例えば、キュー・インデックス)を記録する。ビット48〜63を含んだフィールド349は、アキュムレータ306から受信したデコード済みのarb状態を記録する。
パターン検出器300は、パターン検出器300を動作させるために、ユーザが構成可能な設定部322を備える。これらの設定部は、例えば、クロック・サイクルの構成可能な数323、又はタグパイプ140を進む有効トランザクションの構成可能な数(図示せず)を含むことができる。これらの設定部はまた、カウントされた完了の数の閾値325、及びカウントされた再生の数の閾値327をそれぞれ含んで、ハングを信号伝達することができる。
図9は、図6のパターン検出器300の動作を示している。ブロック350で、arb読出しロジック302が、ステージN149におけるarbのスナップショットを生成する。ブロック352で、パターン検出器300は、スナップショットをレジスタ314に累積する。ブロック354で、パターン検出器300は、ユーザが構成可能な期間が完了済みかどうかを確認する。未完了の場合、パターン検出器300は、スナップショットをレジスタ314に累積することを継続する。ユーザが構成可能な期間が完了した場合には、ブロック356で、パターン検出器300は、レジスタ314の累積されたビットを、記憶された履歴としてストレージ・レジスタ316のうちの1つに保存する。マイクロプロセッサはまた、レジスタ314をクリアし、その後に続く期間の新規ビットマスクを累積するようにレジスタ314を準備する。
ブロック358、360、及び362で、パターン検出器300内の比較ロジック318は、1つ又は複数のあらかじめ定められた比較、及び/又は構成可能な比較を行う。例えば、パターン検出器300は、完了の数が、ユーザが構成可能な閾値225を下回るか(ブロック358)、再生の数が、ユーザが構成可能な設定部322において設定された再生閾値327に一致するか、又はこの再生閾値327を超えるか(ブロック360)を評価すること、及び/又は2つの直近に保存されたレジスタの再生データを比較して、2つのレジスタにおいて、カウントされた再生数が同じであるか、又はほとんど同じであるかを判定することができる(ブロック362)。パターン検出器300はまた、又は別法で、カウントされた再生数とカウントされた完了数との差異が閾値を超えるかどうかを評価することができる。ブロック364で、1つ又は複数のあらかじめ定められた状態及び/又は構成可能な状態が一致する場合には、ブロック366で、パターン検出器300は、ハングを信号伝達し、ひいては、1つ又は複数の回復又は取込みのルーチン320をトリガする(ブロック368)。
図10は、図4の条件付きパターン検出器400の一実施形態のブロック図である。条件付きパターン検出器400は、図7のパターン検出器300より複雑で、構成可能な形態である。検出器400は、スナップショット取込みロジック401を備え、このスナップショット取込みロジック401は、図7のスナップショット取込みロジック301のように、arb読出しロジック402及びマスキング・ロジック404を有して、タグパイプarbのスナップショットを取り込む。検出器400は、複数の構成可能なトリガ・レジスタ・モジュール410を備える。それぞれのトリガ・レジスタ・モジュール410は、トランザクションを検出するために複数の構成可能なフィールドを有し、この構成可能なフィールドは、任意選択でトリガ状態にある別のトリガ・レジスタ・モジュール410に関して条件付けられた、指定の特性を有する。複数のトリガ・レジスタ・モジュール410は共に、arbのユーザ指定のパターンを検出するように、及びパターンが検出されたとき、L2取込み及び/又は回復応答432をトリガするように構成可能である。
それぞれのトリガ・レジスタ・モジュール410は、3つの出力を有する。トリガ・レジスタ・モジュール410がトリガされたことを信号伝達する第1の出力422は、他のトリガ・レジスタ・モジュール410のそれぞれに供給される。第2の出力424は、L2取込みをトリガするように、つまり、タグパイプ140を通過するものすべての取込みを開始するように、下流ロジック420に信号伝達する。それぞれのトリガ・レジスタ・モジュール410のトリガL2取込み出力424は共に、ORブロック428によって示されるようにORされる。第3の出力426は、PPU割込みをトリガするように、下流ロジック430に信号伝達し、ひいては、それにより、1つ又は複数の回復ルーチン432が実行されるようになる。それぞれのトリガ・レジスタ・モジュール410のトリガPPU出力426もまた共に、ORブロック429によって示されるようにORされる。
図11は、構成可能なトリガ・レジスタ・モジュール410の一実施形態の内容を示している。トリガ・レジスタ・モジュール410は、再生ベクトル413、arbタイプ414、トリガ依存ビットマップ416、及びタイムアウト値417を指定するためのフィールドを備える。レジスタ・モジュールが、指定されたタイムアウト期間を有する場合には、タイムアウト期間は、レジスタがトリガされた状態にあることをそのレジスタが示すとき、開始する。タイムアウト期間の期限切れ後、パターン検出器は、いずれの依存レジスタ・モジュールもディスエーブルにして、トリガされた状態に入らないようにする。
トリガ・レジスタ・モジュール410はまた、下流ロジックをトリガしてPPU割込み又はL2取込みをトリガするようにトリガ・レジスタ・モジュール410をイネーブルにするために、それぞれ1ビットの長さのフィールド418及び419を備える。フィールド411は、トリガがイネーブルにされたかどうかを識別する。フィールド421は、レジスタは、一旦トリガすると、イネーブルの状態のままになるかどうかを指定する。構成可能なレジスタ・モジュール410は、より特殊化したフィールド、例えば、タグパイプ・セレクタ415をサポートすることができる。
図12は、1つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出するための、マルチプロセッサ・マイクロプロセッサにおける分散型ハング・ロジック・アーキテクチャ500の一実施形態を示している。複数のキュー・エントリ512をそれぞれが収容した複数のキュー130(図2)は、キャッシュ・アクセシング・トランザクション、及びキャッシュをバイパスするトランザクション(例えば、キャッシュ不可能なロード)についての一時的トランザクション状態情報を収容する。複数の検出器520は、1つ又は複数の起こり得るスターベーション、ライブロック、又はデッドロックの状態について複数のクエリ・エントリ512を監視する。複数の回復ロジック・モジュール530は、マイクロプロセッサ内に分散される。検出器520は、起こり得るスターベーション、ライブロック、又はデッドロックの状態を検出したとき、その状態について、検出器520の最も近くの回復ロジック・モジュール530と通信する(例えば、「ImHung」信号)。一実施形態で有限状態マシンを構成するそれぞれの回復ロジック・モジュール530は、結合された検出器520が、起こり得るスターベーション、ライブロック、又はデッドロックの状態を識別したとき、1つ又は複数のローカル回復ルーチン535を実装するように構成されている。
一実施形態では、ラストレベル・キャッシュ・タグパイプ140にアービトレーションをリクエストするそれぞれのキュー・エントリ512は、対応する検出器520と関連付けられる。また一実施形態では、検出器520は、飽和カウンタを備える。構成ロジック550が、カウントすべき1つ又は複数の状態555を指定するように設けられる。
一実施形態では、分散型ハング・ロジック・アーキテクチャ500は、関連キュー・エントリ512が新規に割り当てられたとき、それぞれの飽和カウンタをリセットするように、及び関連キュー・エントリ512が再生されるときはいつでも、飽和カウンタをインクリメントするように構成されている。第2の実施形態では、それぞれの飽和カウンタは、関連キュー・エントリが、アービトレーションをリクエストするが、アービトレーションが認められないときはいつでも、インクリメントする。第3の実施形態では、それぞれの飽和カウンタは、関連キュー・エントリがアービトレーションをリクエストする前にいくつかの外部刺激を待っているときはいつでも、インクリメントする。第4の実施形態では、それぞれの飽和カウンタは、構成可能な閾値で飽和する。
分散型ハング・ロジック・アーキテクチャ500は、一実施形態でやはり有限状態マシンである中央回復ロジック540をさらに備える。回復ロジック・モジュール530は、起こり得るスターベーション、ライブロック、又はデッドロックの状態について、検出器520によって通知されたとき、回復ロジック・モジュール530は、中央回復ロジック540と通信する。中央回復ロジック540は、複数の回復ロジック・モジュール530のそれぞれに、それら自体のローカル回復ルーチンのうちの1つ又は複数を行うように、応答可能なように命令する。
回復ルーチン535は、検出されたハングを解決しようと試みるために、関連キュー・エントリからのアービトレーション・リクエストを操作するように構成されている。図13は、回復ロジック540に提供される回復ルーチン560のセットの一実施形態のブロック図である。
回復ルーチン562のうちの1つは、アービトレーション・リクエストを系統的にブロックすることによって、タグ・パイプラインにバブルを挿入することを含む。第2の回復ルーチン564は、リクエスト中のキュー・エントリのあらかじめ定められたセットを、それらのリクエストを資格解除することによってブロックすることを含む。第3の回復ルーチン566は、関連するキュー・エントリにそれらのアービトレーション・リクエストを資格解除させることによって、起こり得るスターベーション、ライブロック、又はデッドロックの状態をアサートしていない検出器に関連するすべてのリクエスタをブロックすることを含む。第4の回復ルーチン568は、ラウンドロビン・リクエスト資格解除を含み、ここで、個々のキュー又はキュー・エントリからのアービトレーションのリクエストは、連続的に進行することのみ許容される。一実施形態では、回復ロジックは、1つの回復ルーチンを実行させ、ハング状態について再確認してから、次の回復ルーチンを実行させる。しかしながら、特許請求の範囲でそのように指定していない場合、本発明は、これらの回復ルーチン、回復ルーチンの何らかの特定のセット、又は回復ルーチンの何らかの特定の順序付けに限定されない。
本発明の様々な実施形態について本明細書で説明してきたが、それら実施形態は、限定ではなく、例として提示されていることを理解されたい。形態及び細部の様々な変更が本発明の範囲から逸脱することなく行われ得ることは、関連コンピュータ技術の当業者には明らかになろう。ソフトウェアによって、例えば、本明細書に記載の装置並びに方法の機能、製作、モデリング、シミュレーション、記述、及び/又は検査をイネーブルにすることができる。これは、汎用プログラミング言語(例えば、C、C++)、VerilogのHDL、及びVHDLなどを含むハードウェア記述言語(HDL)、又は他の利用可能なプログラムの使用を通じて達成可能である。そのようなソフトウェアは、磁気テープ、半導体、磁気ディスク、又は光ディスク(例えば、CD−ROM、DVD−ROMなど)、ネットワーク、有線、無線、又は他の通信媒体などの任意の既知のコンピュータが使用可能な媒体に配置可能である。本明細書に記載の装置及び方法の諸実施形態は、(例えば、HDLで実現され、又は指定される)マイクロプロセッサ・コアなど、半導体知的財産コアに含めることができ、集積回路の生産におけるハードウェアに変換することができる。加えて、本明細書に記載の装置及び方法は、ハードウェアとソフトウェアとの組合せとして実現可能である。したがって、本発明は、本明細書に記載の例示的な諸実施形態のいずれによっても限定すべきではなく、添付の特許請求の範囲、及びそれらの均等物に従ってのみ定義すべきである。具体的には、本発明は、汎用コンピュータにおいて使用可能なマイクロプロセッサ・デバイス内で実装可能である。最後に、当業者は、自分らが、本発明の同一の目的を遂行するように他の構造を設計し、又は修正するための礎として、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、本開示の概念及び具体的な諸実施形態を容易に使用することができることを理解すべきである。

Claims (20)

  1. タグ・アレイを含むキャッシュと、
    前記タグ・アレイに対するアクセスをアービトレートするタグパイプと、
    スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザとを備えるマイクロプロセッサであって、
    前記ロジック・アナライザは、前記タグパイプに結合された読出しロジックを備え、
    前記ロジック・アナライザは、前記タグ・アレイにアクセスするトランザクションであるタグパイプarbのスナップショットを記録するように構成されている、
    マイクロプロセッサ。
  2. 前記スナップショットは、前記タグパイプarbが、ロード、スヌープ、記憶、又は他のarbタイプであるかについての情報を含む、請求項1に記載のマイクロプロセッサ。
  3. 前記スナップショットは、前記タグパイプarbが完了したか、又は再生されたかについての情報を含む、請求項1に記載のマイクロプロセッサ。
  4. 前記スナップショットは、前記arbが割り当てられるセット及びウェイを識別する情報を含む、請求項1に記載のマイクロプロセッサ。
  5. 前記タグパイプは、複数のステージを含み、前記ロジック・アナライザは、あるarbが他のキュー・プッシュを再生、完了、及び/又は要求しようとしているかを前記タグパイプが判定した後、前記パイプラインのステージのスナップショットを取り込む、請求項1に記載のマイクロプロセッサ。
  6. 前記ロジック・アナライザは、ユーザが、どのスナップショットを前記ロジック・アナライザが記録するかを選択的に構成することを可能にする構成ロジックをさらに備える、請求項1に記載のマイクロプロセッサ。
  7. 前記ロジック・アナライザは、ユーザが、タグパイプarbのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成することを可能にする構成ロジックをさらに備える、請求項1に記載のマイクロプロセッサ。
  8. 前記ロジック・アナライザは、様々なタイプの再生状態を一緒に論理ORすることによって前記スナップショットを圧縮するように構成されている、請求項1に記載のマイクロプロセッサ。
  9. 前記ロジック・アナライザは、前記スナップショットを当該マイクロプロセッサのプライベート・ランダム・アクセス・メモリ(PRAM)に記憶するように構成されている、請求項1に記載のマイクロプロセッサ。
  10. マイクロプロセッサにおけるスターベーション、ライブロック、又はデッドロックの状態を調査する際に使用するための情報を収集するための方法であって、
    タグ・アレイにアクセスするトランザクションであるタグパイプarbを、タグパイプに結合されたロジック・アナライザの使用によって読み出すステップと、
    前記スターベーション、ライブロック、又はデッドロックの状態を調査する際に使用するために、前記ロジック・アナライザの使用によって、前記タグパイプarbの少なくとも一部分をメモリ・ストレージに記録するステップと、
    を含む方法。
  11. 前記記録するステップは、前記タグパイプarbが、ロード、スヌープ、記憶、又は他のarbタイプであるかについての情報を記録するステップを含む、請求項10に記載の方法。
  12. 前記記録するステップは、前記タグパイプarbが、完了したか、又は再生されたかについての情報を記録するステップを含む、請求項10に記載の方法。
  13. 前記記録するステップは、前記arbが割り当てられるセット及びウェイを識別する情報を記録するステップを含む、請求項10に記載の方法。
  14. 前記タグパイプは、複数のステージを備え、前記ロジック・アナライザは、あるarbが、他のキュー・プッシュを再生、完了、及び/又は要求しようとしているかを前記タグパイプが判定した後、前記タグパイプのステージに結合される、請求項10に記載の方法。
  15. どのスナップショットを前記ロジック・アナライザが記録するかを構成するステップをさらに含む、請求項10に記載の方法。
  16. 特定のタグパイプarbを選択的に無視するように、前記ロジック・アナライザを構成するステップをさらに含む、請求項10に記載の方法。
  17. タグパイプarbのスナップショットを、相互の間で記録する開始ポインタと終了ポインタとを選択的に構成するステップをさらに含む、請求項10に記載の方法。
  18. 様々なタイプの再生状態を一緒に論理ORすることによってスナップショットを圧縮するステップをさらに含む、請求項10に記載の方法。
  19. スナップショットを前記マイクロプロセッサのプライベート・ランダム・アクセス・メモリ(PRAM)に記憶するステップをさらに含む、請求項10に記載の方法。
  20. コンピュータ装置と共に使用するための少なくとも1つの非一時的コンピュータ可読媒体においてエンコードされるコンピュータ・プログラム製品において、当該コンピュータ・プログラム製品は、マイクロプロセッサを指定するための、前記媒体において実装されるコンピュータ可読プログラム・コードを含んでおり、前記マイクロプロセッサは、
    タグ・アレイを含むキャッシュと、
    前記タグ・アレイに対するアクセスをアービトレートするタグパイプと、
    スターベーション、ライブロック、又はデッドロックの状態を調査するためのロジック・アナライザと、を有しており、
    前記ロジック・アナライザは、前記タグパイプに結合された読出しロジックを備え、
    前記ロジック・アナライザは、前記タグ・アレイにアクセスするトランザクションであるタグパイプarbのスナップショットを記録するように構成されている、
    コンピュータ・プログラム製品。
JP2016563275A 2014-12-13 2014-12-13 ハングを検出するためのロジック・アナライザ Active JP6192858B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/003174 WO2016092345A1 (en) 2014-12-13 2014-12-13 Logic analyzer for detecting hangs

Publications (2)

Publication Number Publication Date
JP2017502443A true JP2017502443A (ja) 2017-01-19
JP6192858B2 JP6192858B2 (ja) 2017-09-06

Family

ID=56106781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016563275A Active JP6192858B2 (ja) 2014-12-13 2014-12-13 ハングを検出するためのロジック・アナライザ

Country Status (5)

Country Link
US (1) US10067871B2 (ja)
EP (1) EP3066559B1 (ja)
JP (1) JP6192858B2 (ja)
CN (1) CN105980979B (ja)
WO (1) WO2016092345A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105934743B (zh) 2014-12-13 2019-06-04 上海兆芯集成电路有限公司 一种微处理器及在其中检测arb的模式的方法
EP3047380B1 (en) 2014-12-13 2019-04-24 VIA Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328141A (ja) * 1998-04-30 1999-11-30 Internatl Business Mach Corp <Ibm> コンピュ―タ・システムのデッドロックを生じる要求の解決機構
US20060179289A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation Intelligent SMT thread hang detect taking into account shared resource contention/blocking
US20080301374A1 (en) * 2006-09-11 2008-12-04 International Business Machines Corporation Structure for dynamic livelock resolution with variable delay memory access queue
US7496918B1 (en) * 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US20100286952A1 (en) * 2009-05-07 2010-11-11 Oracle International Coporation Method, system, and computer program product for determining a hang state and distinguishing a hang state from an idle state
US20130318530A1 (en) * 2012-03-29 2013-11-28 Via Technologies, Inc. Deadlock/livelock resolution using service processor
US20140052966A1 (en) * 2012-08-14 2014-02-20 Ali Vahidsafa Mechanism for consistent core hang detection in a processor core

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233849A (ja) * 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
EP0229379A3 (en) 1985-12-23 1989-12-20 Nec Corporation Digital picture signal coding/decoding circuit
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5301333A (en) 1990-06-14 1994-04-05 Bell Communications Research, Inc. Tree structured variable priority arbitration implementing a round-robin scheduling policy
US5269016A (en) * 1990-09-24 1993-12-07 Charles Stark Draper Laboratory, Inc. Byzantine resilient fault tolerant shared memory data processing system
US5692152A (en) * 1994-06-29 1997-11-25 Exponential Technology, Inc. Master-slave cache system with de-coupled data and tag pipelines and loop-back
US5649088A (en) * 1994-12-27 1997-07-15 Lucent Technologies Inc. System and method for recording sufficient data from parallel execution stages in a central processing unit for complete fault recovery
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US6490658B1 (en) * 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6073199A (en) * 1997-10-06 2000-06-06 Cisco Technology, Inc. History-based bus arbitration with hidden re-arbitration during wait cycles
US6543002B1 (en) 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US6553512B1 (en) 2000-02-16 2003-04-22 Hewlett Packard Development Company, L.P. Method and apparatus for resolving CPU deadlocks
JP2001243070A (ja) 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法
US6697904B1 (en) 2000-03-28 2004-02-24 Intel Corporation Preventing starvation of agents on a bus bridge
US20020169935A1 (en) 2001-05-10 2002-11-14 Krick Robert F. System of and method for memory arbitration using multiple queues
US6915396B2 (en) 2001-05-10 2005-07-05 Hewlett-Packard Development Company, L.P. Fast priority determination circuit with rotating priority
US6918021B2 (en) 2001-05-10 2005-07-12 Hewlett-Packard Development Company, L.P. System of and method for flow control within a tag pipeline
US6973544B2 (en) * 2002-01-09 2005-12-06 International Business Machines Corporation Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system
US6904431B2 (en) * 2002-01-25 2005-06-07 Openwave Systems Inc. Algorithm for dynamic selection of data locking granularity
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7051131B1 (en) 2002-12-27 2006-05-23 Unisys Corporation Method and apparatus for recording and monitoring bus activity in a multi-processor environment
US7000047B2 (en) 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7508836B2 (en) * 2004-12-01 2009-03-24 Arm Limited Data processing apparatus and method for handling transactions
US7873795B2 (en) 2005-03-22 2011-01-18 Hewlett-Packard Development Company, L.P. Multi-process support in a shared register
US7627807B2 (en) * 2005-04-26 2009-12-01 Arm Limited Monitoring a data processor to detect abnormal operation
US7590825B2 (en) 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US9304773B2 (en) 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
TW200742452A (en) * 2006-04-26 2007-11-01 Avermedia Tech Inc Video storage and playback system and signal pickup method of the same
US7760669B2 (en) 2006-06-27 2010-07-20 International Business Machines Corporation Method and apparatus for preventing starvation in a slotted ring data communications network
US7826399B2 (en) 2006-06-27 2010-11-02 International Business Machines Corporation Structure for preventing starvation in a slotted ring data communications network
US7500035B2 (en) 2006-09-19 2009-03-03 International Business Machines Corporation Livelock resolution method
US20080091883A1 (en) 2006-10-12 2008-04-17 International Business Machines Corporation Load starvation detector and buster
JP5082479B2 (ja) * 2007-02-08 2012-11-28 日本電気株式会社 データ一貫性制御システム及びデータ一貫性制御方法
US7730265B1 (en) * 2007-03-06 2010-06-01 Oracle America, Inc. Starvation-avoiding unbounded transactional memory
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US7676636B2 (en) * 2007-07-10 2010-03-09 Sun Microsystems, Inc. Method and apparatus for implementing virtual transactional memory using cache line marking
US8103833B2 (en) 2007-09-04 2012-01-24 Freescale Semiconductor, Inc. Cache memory and a method for servicing access requests
US7752505B2 (en) 2007-09-13 2010-07-06 International Business Machines Corporation Method and apparatus for detection of data errors in tag arrays
US7657693B2 (en) 2007-09-28 2010-02-02 Intel Corporation Router to use three levels of arbitration for a crossbar channel
US20090210286A1 (en) * 2008-02-14 2009-08-20 International Business Machines Corporation Method for automatic optimized price display
JP4888839B2 (ja) 2008-10-03 2012-02-29 日本電気株式会社 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8769357B1 (en) 2009-07-23 2014-07-01 Gidel Ltd. System and method for evaluation of a field programmable gate array (FPGA)
US8789173B2 (en) * 2009-09-03 2014-07-22 Juniper Networks, Inc. Protecting against distributed network flood attacks
US8977730B2 (en) * 2010-11-18 2015-03-10 International Business Machines Corporation Method and system for reducing message passing for contention detection in distributed SIP server environments
JP2012198803A (ja) 2011-03-22 2012-10-18 Fujitsu Ltd 演算処理装置及び演算処理方法
JP2012209755A (ja) 2011-03-29 2012-10-25 Fujitsu Ltd 演算回路及び2進数の変換方法
US20130054852A1 (en) * 2011-08-24 2013-02-28 Charles Fuoco Deadlock Avoidance in a Multi-Node System
US9336125B2 (en) 2011-08-24 2016-05-10 University Of Washington Through Its Center For Commercialization Systems and methods for hardware-assisted type checking
US9298469B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9026705B2 (en) 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9021306B2 (en) * 2012-12-13 2015-04-28 Apple Inc. Debug access mechanism for duplicate tag storage
CN105765525A (zh) 2013-10-25 2016-07-13 超威半导体公司 加载和存储单元以及数据高速缓存的排序和带宽改进
EP3047380B1 (en) 2014-12-13 2019-04-24 VIA Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic
CN105934743B (zh) 2014-12-13 2019-06-04 上海兆芯集成电路有限公司 一种微处理器及在其中检测arb的模式的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328141A (ja) * 1998-04-30 1999-11-30 Internatl Business Mach Corp <Ibm> コンピュ―タ・システムのデッドロックを生じる要求の解決機構
US7496918B1 (en) * 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US20060179289A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation Intelligent SMT thread hang detect taking into account shared resource contention/blocking
US20080301374A1 (en) * 2006-09-11 2008-12-04 International Business Machines Corporation Structure for dynamic livelock resolution with variable delay memory access queue
US20100286952A1 (en) * 2009-05-07 2010-11-11 Oracle International Coporation Method, system, and computer program product for determining a hang state and distinguishing a hang state from an idle state
US20130318530A1 (en) * 2012-03-29 2013-11-28 Via Technologies, Inc. Deadlock/livelock resolution using service processor
US20140052966A1 (en) * 2012-08-14 2014-02-20 Ali Vahidsafa Mechanism for consistent core hang detection in a processor core

Also Published As

Publication number Publication date
WO2016092345A1 (en) 2016-06-16
US20160350223A1 (en) 2016-12-01
US10067871B2 (en) 2018-09-04
EP3066559B1 (en) 2019-05-29
EP3066559A1 (en) 2016-09-14
CN105980979A (zh) 2016-09-28
EP3066559A4 (en) 2017-07-19
CN105980979B (zh) 2018-11-20
JP6192858B2 (ja) 2017-09-06

Similar Documents

Publication Publication Date Title
US9946651B2 (en) Pattern detector for detecting hangs
US9911508B2 (en) Cache memory diagnostic writeback
US9195606B2 (en) Dead block predictors for cooperative execution in the last level cache
US20110055838A1 (en) Optimized thread scheduling via hardware performance monitoring
US9575816B2 (en) Deadlock/livelock resolution using service processor
US20150161053A1 (en) Bypassing a store-conditional request around a store queue
US10324842B2 (en) Distributed hang recovery logic
TW201610677A (zh) 指示異動狀態之一致性協定增強
US9753799B2 (en) Conditional pattern detector for detecting hangs
JP6192858B2 (ja) ハングを検出するためのロジック・アナライザ
US9223714B2 (en) Instruction boundary prediction for variable length instruction set
US20220058025A1 (en) Throttling while managing upstream resources

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170411

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170808

R150 Certificate of patent or registration of utility model

Ref document number: 6192858

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250