JP4677422B2 - プロセッサの動作を徐々に低速モードにするためのシステムおよび方法 - Google Patents

プロセッサの動作を徐々に低速モードにするためのシステムおよび方法 Download PDF

Info

Publication number
JP4677422B2
JP4677422B2 JP2007099182A JP2007099182A JP4677422B2 JP 4677422 B2 JP4677422 B2 JP 4677422B2 JP 2007099182 A JP2007099182 A JP 2007099182A JP 2007099182 A JP2007099182 A JP 2007099182A JP 4677422 B2 JP4677422 B2 JP 4677422B2
Authority
JP
Japan
Prior art keywords
processor
instruction
issue
unit
instructions
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.)
Expired - Fee Related
Application number
JP2007099182A
Other languages
English (en)
Other versions
JP2007287141A (ja
Inventor
ロナルド・ホール
クリストファー・マイケル・アバーナシー
カート・アラン・フェイスト
アルバート・ジェイムズ・ヴァン・ノーストランド・ジュニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007287141A publication Critical patent/JP2007287141A/ja
Application granted granted Critical
Publication of JP4677422B2 publication Critical patent/JP4677422B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本願は、一般的に、改良形データ処理システムおよび方法に関する。より詳細には、本願は、プロセッサの動作を徐々に低速モードにするためのシステムおよび方法に関する。プロセッサの低速モード動作は、プロセッサのコア内のライブロック(livelock)状態から抜け出すために使用される。
現代のプロセッサの設計、特に同時マルチスレッド(SMT)プロセッサ設計の場合には、ライブロック状態は、例えば、スレッドは実際に実行しているものの、何も成し遂げられていない状態のことであり、設計段階で発見し、解決するのが最も困難な問題の1つであり、多くの場合、後でハードウェアで設計が実施されるまで発見できない。ライブロック状態は、プロセッサが同じ一組の命令を反復して実行しているのに、実際には全然進行しない状態と表現することができる。ライブロック状態になる根本的な原因の1つは、あるプロセッサ・ユニットと他のプロセッサ・ユニットとの間の「調和のとれた」固定サイクル相互作用である。ライブロック状態の他の原因は、命令の反復フラッシュおよび再フェッチし、および発行キューからの再発行が反復して行われ、解放することができない満杯または使用中のリソース上で発生する反復フラッシュ状態のために命令をどうしても完全に実行することができないことである。
「調和のとれた」固定サイクル相互作用は、プロセッサ・パイプラインにおいては、命令の実行を処理し、完全に実行するために一定の数のサイクルが使用される結果である。複数のスレッドからの命令は、調和状態でプロセッサ・パイプラインを通して処理されるので、各スレッド内の各命令は、ほぼ同時に処理が完全に実行される。実行のスレッド間に従属関係がある場合で、そのため、あるスレッドが実行の他のスレッド内の命令の結果を必要とする場合には、ライブロック状態が発生する恐れがある。何故なら、両方の命令がプロセッサ・パイプラインを通して同時に処理され、リソースと従属関係が衝突するからである。従属命令は完了することができない。何故なら、他のスレッド内の命令の結果をまだ使用することができないからである。他のスレッド内の命令が、リソースの衝突に遭遇した場合には、両方のスレッドからの命令は、反復してフラッシュされ、パイプラインに再発行される。
図6および図7は、ライブロック状態を発生するコードおよび二重命令発行プロセッサ設計の一例を示す。図6は、SMTおよび二重命令発行プロセッサ・パイプライン設計を示す。この場合、1つ置きのサイクルの毎に各スレッドから2つの命令が発行される。図7は、図6のプロセッサ・パイプライン上で実行した場合に、両方のスレッドにプロセッサの特殊な目的のレジスタ(SPR)にアクセスさせようとする例示としてのユーザ・コードを示す。スレッド0は、そのSPRアクセスを完了する目的で、スレッド1コード上で待機するように、等しくなければ分岐(bneq)命令でコード化される。スレッド0コードは、後方に分岐を続行し、スレッド1の「記憶」命令が実行されたか否かをチェックし続ける。
図6のプロセッサ・パイプライン設計のSPRキューは、同時に2つのSPR命令しかサポートすることができない。それ故、スレッド1内の第3のSPR命令および第3のSPR命令の後のすべての命令は、常にフラッシュされ再発行される。スレッド0の命令およびスレッド1の命令の両方が、下記の表1に示す順序でコンパイルされると、「mt sprC R1」命令の前のすべてのスレッド1の命令の実行が完了する。スレッド1の「mt sprC R1」は最初にフラッシュされる。何故なら、SPRキューは、「mt sprA R3」および「mt sprB R2」が使用しているからである。「bneq CheckThread1SPR」の後のすべてのスレッド0の命令は、スレッド1の「R4 0x100の記憶」が実行されない限り発行され、フラッシュされる。
Figure 0004677422
表2は、n+1およびn+3のところでスレッド1の命令の後に発生する新しいコード・シーケンスが、両方のスレッドが再発行、フラッシュおよび再度の再発行中に命令の残りにより完了することを示す。表2に示すように、スレッド1の「mt sprC R1」は再度フラッシュされる。何故なら、スレッド0の「mt sprD R6」および「mt sprE R7」は、スレッド1の「mt sprC R1」の前に発行されるからである。スレッド0内のこれら2つの「SPRへ移動」命令は、分岐の予測ミスのために最終的にはフラッシュされる。両方のスレッドからのこれら2つのフラッシュ状態(スレッド0の分岐予測ミス・フラッシュおよびスレッド1のSPRへの第3の移動命令)は、引き続きフラッシュし、発行ユニットは、「調和」ウィンドウ内に位置する。それ故、表2内の両方のスレッド0およびスレッド1の命令は、反復して再発行し、フラッシュする。これにより、プロセッサは強制的にライブロック状態になる。
Figure 0004677422
上記のようなライブロック状態は、多くの場合、プロセッサのハードウェア上で実際のアプリケーションを稼働した場合に検出される。多くの場合、この時点で設計を調整するのはコストもかかるし、手遅れでもある。それ故、ハードウェアの確認の際に検出されるこのタイプの予測しないライブロック状態を検出し、解決するために、プロセッサ・コアに組み込んだ一般的な方法を有することは重要なことである。
通常、プロセッサの発行ユニット内の検出機構のようなプロセッサの設計自身内にハード・コード化することができるハードウェア・ベースの検出機構は、このようなライブロック状態を検出するためのものである。検出機構が、ライブロック状態を検出することができる方法は特殊な実施態様により異なる。例えば、検出機構は、特定の命令のフラッシュの数、または処理が完了しないのに命令が再発行された回数をカウントすることによりライブロック状態を検出することができる。このような状況は、前に進行しない状態の変化、それ故、潜在的なライブロック・シナリオを示す。
周知の設計の場合には、ライブロック検出機構により、ライブロック状態の発生が検出された場合、プロセッサのパイプラインは、単一ステップ・モード動作になり、そのため1つまたは複数のスレッドを横切って1回に1つの命令の処理しか完了しない。しかし、ライブロック状態を検出する度に、プロセッサのパイプラインを単一ステップ・モードにすると、プロセッサの性能全体がかなりの影響を受ける。何故なら、ライブロック状態は、プログラムの実行の際に非常に頻繁に発生するからである。このライブロック状態がライブロック・ウィンドウを有しているならば、このアプローチはまたやりすぎということになる。すなわち、プロセッサ内でライブロック状態が引き続き検出されるのは数プロセッサ・サイクルの間だけである。
例示としての実施形態は、プロセッサの動作を徐々にスローダウン・モードにするシステムおよび方法を提供する。プロセッサの動作を徐々に遅くすれば、プロセッサはライブロック状態から抜け出すことができる。さらに、速度の低減が徐々に行われるので、プロセッサは、種々の程度のライブロック状態を柔軟に回避することができる。例示としての実施形態の機構は、もっと軽度のライブロック状態に対する小さな性能に対する影響を取り上げ、ライブロック状態がもっと重度な場合だけにプロセッサの性能に対する影響を増大することにより、ライブロック状態の深刻さに基づいてプロセッサの性能全体に影響を与える。
例示としての実施形態の機構を使用すれば、ライブロック状態検出の複数の段階を関連するライブロック状態処理ロジックと一緒に使用することができる。関連するライブロック状態処理ロジックは、ライブロック状態から抜け出そうとするいくつかの行動を使用する。複数の段階内の以降の各段階は、ライブロック状態の深刻さの増大に関連する。初期の段階は、数プロセッサ・サイクルに過ぎないライブロック・ウィンドウに関連し、一方、後期の段階は遥かに長いライブロック・ウィンドウに関連する。各段階を通して、プロセッサの性能は徐々に低減するが、ライブロック状態から抜け出す可能性は増大する。
例示としての一実施形態の場合には、プロセッサ・パイプラインの発行ユニット内でスローダウン・モード制御ロジックを使用している。スローダウン・モード制御ロジックは、例えば、特定の命令のフラッシュの回数、または処理を完了しない命令の再発行の回数のような所定の基準に基づいて、ライブロック状態を検出するためのハング検出制御ロジックと結合している。ライブロック状態を検出した場合には、ハング検出制御ロジックは、スローダウン・モード制御ロジックにライブロック状態が存在することを示す信号をアサートする。スローダウン・モード制御ロジックは、プロセッサの動作を徐々に低減し始める。
ゆっくりした速度低減動作によれば、スローダウン・モード制御ロジックは、プロセッサ・パイプラインを通しての命令の流れをストールするために信号を出力する。この出力信号は、ORゲート等を介してデータ依存制御ロジックのような他の制御ロジックからの出力信号と論理的に結合される。それ故、スローダウン・モード制御ロジックまたは他の制御ロジックがプロセッサ・パイプラインを通しての命令の動きをストール(stall)するために信号を出力すると、命令は低減する。これらの信号がアサートされない場合には、命令は通常の方法でパイプラインを通して流れることができる。
スローダウン・モード制御ロジックは、スローダウン・モード制御ロジック内にハードワイヤードされるか、プログラムされるステージング(staging)スキームに従って命令の流れをストールするために信号を出力する。例えば、ハング検出制御ロジックがライブロック(またはハング)状態を検出した場合には、すなわち命令をコミットしないX個のフラッシュが存在することを検出した場合には(この場合、Xはハードウェア確認の後でプログラムすることができる)、スローダウン・モード制御ロジックは、発行ユニットの速度を低減することができ、そのためN回のプロセッサ・サイクル毎だけに発行ユニットにより命令が発行される(この場合、Nはハードウェア確認の後でプログラムすることができる)。発行ユニットの速度低減は、パイプラインを通しての命令の動きをストールするために信号をアサートすることにより行うことができる。この信号は、例えば、N回のような所定の数のサイクルに対してアサートすることができる。そのためN回のプロセッサ・サイクル毎に1つの命令だけが発行される。
この同じライブロック状態が再度発生した場合には、すなわち、命令をコミットしないX個のフラッシュが発生した場合には、発行ユニットの速度が再度低減し、そのため発行ユニットは、2N回のプロセッサ・サイクル毎に1つの命令を発行することができる。ライブロック状態が再度検出された場合には、発行ユニットの速度が再度低減し、そのため発行ユニットは、4N回のプロセッサ・サイクル毎に1つの命令を発行することができる。その後で、ライブロック状態がさらに再度検出された場合には、プロセッサは重度のライブロック状態にあると判定される。このような場合には、発行ユニットは、強制的に直列単一ステップ・モードにされ、前の命令の実行が完了するまで、1つの命令だけを発行することができるだけで、他の命令を発行することはできない。発行ユニットが発行および発行ユニットのディスパッチ・パイプラインにすべての命令を移動した場合には、プロセッサは通常の全速モード動作に戻る。ライブロック状態がもはや検出されない場合には、プロセッサは、ステージングスキームの前の段階のうちの任意の段階においてこの通常の全速モード動作に戻る。
例示としての一実施形態の場合には、ライブロック状態から抜け出すための方法を使用している。この方法は、例えば、データ処理装置内のライブロック状態を検出し、ライブロック状態の検出を続行しながら、処理サイクルの数を増大することにより、データ処理装置で命令の処理を徐々にストールするステップを含むことができる。この方法は、さらに、ライブロック状態から抜け出したことを検出した場合に、データ処理装置を全速モード動作に戻すステップを含むこともできる。
データ処理装置による命令の処理を徐々にストールするステップは、ステージングスキームに従ってライブロック状態を検出した場合に、データ処理装置を減速モード動作に設定するステップを含むことができる。ステージングスキームは、処理サイクルの量を変えることにより命令の処理を遅くする複数の段階を有することができる。
データ処理装置の減速モード動作に設定するステップは、データ処理装置により命令の処理を動作の第1のスローダウン・ステージに減速し、データ処理装置による命令の処理の減速後もライブロック状態が依然として存在するか否かを判定するステップを含むことができる。データ処理装置を減速モード動作に設定するステップは、さらに、命令の処理を動作の第1のスローダウン・ステージに減速した後でもライブロック状態が依然として存在する場合には、データ処理装置により命令の処理を動作の第2のスローダウン・ステージに減速するステップを含むことができる。動作の第2のスローダウン・ステージは、動作の第1のスローダウン・ステージより多い回数の処理サイクルにより、データ処理装置により命令の発行を遅らせることができる。動作の第2のスローダウン・ステージがデータ処理装置により命令の発行を遅らせる処理サイクルの数は、動作の第1のスローダウン・ステージがデータ処理装置による命令の発行を遅らせる処理サイクルの回数の2倍であってもよい。動作の第2のスローダウン・ステージは、動作の第1のスローダウン・ステージよりももっと重度のライブロック状態と関連付けることができる。
データ処理装置においてライブロック状態を検出するステップは、所定のしきい値に達する命令を完了しない特定の命令のフラッシュの数を検出するステップを含むことができる。さらに、データ処理装置においてライブロック状態を検出するステップは、所定のしきい値に達する命令の処理を完了しない命令の再発行の回数を含むことができる。
ステージングスキームの最後の段階は、データ処理装置による命令の処理を、前の命令の処理が完了するまで、1つの命令だけを発行することができるだけで、他の命令を発行することはできない動作の直列単一ステップ・モードに減速することができる。
データ処理装置はプロセッサであってもよく、その場合、プロセッサによる命令の処理は、プロセッサのパイプライン内での命令の発行を遅らせることにより徐々にストールする。この方法は、プロセッサの発行ユニットで実施することができる。プロセッサによる命令の処理は、発行および発行ユニットのディスパッチ・パイプラインを通しての命令の動きをストールすることにより徐々にストールすることができる。
ライブロック状態の検出に対する基準は、データ処理装置のハードウェアの製造後にデータ処理装置内にプログラムすることができる。さらに それによりステージングスキームの各段階に対する命令の発行を遅らせる処理サイクルの基本的な数をデータ処理装置のハードウェアの製造後にデータ処理装置内にプログラムすることができる。
他の例示としての実施形態の場合には、コンピュータ読み取り可能プログラムを有するコンピュータ使用可能媒体を備えるコンピュータ・プログラム製品を使用している。コンピューティング・デバイス上で実行した場合、コンピュータ読み取り可能プログラムは、コンピューティング・デバイスに方法の例示としての実施形態のところですでに概略説明した種々の動作およびその組合せを実行させる。
さらに他の例示としての実施形態の場合には、ライブロック状態を抜け出すためのシステムを使用している。このシステムは、発行ユニットおよび発行ユニットと結合しているプロセッサ・パイプラインを備えることができる。発行ユニットは、プロセッサ・パイプラインのライブロック状態を検出し、ライブロック状態の検出を続行しながら、処理サイクルの数を増大することによりプロセッサ・パイプラインによる命令の処理を徐々にストールし、ライブロック状態から抜け出したことを検出した場合には、プロセッサ・パイプラインを全速モード動作に戻すことができる。さらに、発行ユニットは、また、方法の例示としての実施形態のところですでに概略説明した種々の動作およびその組合せを実施することができる。
本発明のこれらおよび他の機能および利点については以下に説明するが、本発明の例示としての実施形態の下記の詳細な説明を読めば、当業者であればこれらを理解することができるだろう。
添付の特許請求の範囲に本発明の新規な機能と思われる特徴について記載する。しかし、本発明自身および好適な形態、その他の目的および利点は、添付の図面を参照しながら例示としての実施形態の下記の詳細な説明を読めば最もよく理解することができるだろう。
例示としての実施形態は、ライブロック状態から抜け出すために、プロセッサの動作を徐々にスローダウン・モードにするためのシステムおよび方法を提供する。例示としての実施形態は、任意のコンピューティング・デバイスの任意のプロセッサ内で実施することができる。例えば、例示としての実施形態は、サーバ・コンピューティング・デバイス、クライアント・コンピューティング・デバイス、通信デバイス、ポータブル・コンピューティング・デバイス等のうちの任意のもので使用することができる。図1〜図2は、例示としての実施形態の例示としての態様を実施することができる分散型データ処理環境およびコンピューティング・デバイスのいくつかの例を示す。図1〜図2は、単に例示としてのものであって、例示としての実施形態を実施することができるコンピューティング・デバイスのタイプについて何らかの制限を記述したり、意味したりするものではない。むしろ、例示としての実施形態は、プロセッサが最終的に動作する特定の機械またはコンピューティング・デバイスが何であれ、任意のプロセッサで実施することができる。
ここで図面を参照すると、図1は、例示としての実施形態の態様を実施することができる例示としての分散型データ処理システムの図面である。分散型データ処理システム100は、例示としての実施形態を実施することができるコンピュータのネットワークを含むことができる。分散型データ処理システム100は、分散型データ処理システム100内で一緒に接続している種々のデバイスおよびコンピュータ間で通信リンクを提供するために使用する媒体である少なくとも1つのネットワーク102を含む。ネットワーク102は、ワイヤ、無線通信リンク、または光ファイバ・ケーブルのような接続装置を含むことができる。
図の例の場合には、サーバ104およびサーバ106は、記憶装置ユニット108と一緒にネットワーク102に接続している。さらに、クライアント110、112および114も、ネットワーク102に接続している。これらのクライアント110、112および114は、例えばパーソナル・コンピュータ、ネットワーク・コンピュータ等であってもよい。図の例の場合には、サーバ104は、ブート・ファイル、オペレーティング・システム画像、およびクライアント110、112および114へのアプリケーションのようなデータを提供する。クライアント110、112および114は、図の例の場合には、サーバ104へのクライアントである。分散型データ処理システム100は、他のサーバ、クライアントおよび図示していない他のデバイスを含むこともできる。
図の例の場合には、分散型データ処理システム100は、相互に通信するための伝送制御プロトコル/インターネット・プロトコル(TCP/IP)スイートのプロトコルを使用するネットワークおよびゲートウェイの全世界の集合体を表すネットワーク102を含むインターネットである。インターネットの中心には、データおよびメッセージを経路指定する数千の商用、政府用、教育用および他のコンピュータ・システムから構成される主要なノードまたはホスト・コンピュータ間の高速データ通信ラインのバックボーンが位置する。もちろん、分散型データ処理システム100は、また例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)等のような多数の異なるタイプのネットワークを含むように実施することもできる。すでに説明したように、図1は、例示としてのものであって、本発明のいくつかの実施形態のアーキテクチャを制限するためのものではない。それ故、図1の特定の要素は、本発明の例示としての実施形態を実施することができる環境を制限するものと見なすべきではない。
ここで図2を参照すると、この図は、例示としての実施形態の態様を実施することができる例示としてのデータ処理システムのブロック図である。データ処理システム200は、本発明の例示としての実施形態のためにプロセスを実施するコンピュータ使用可能コードまたは命令を発見することができる図1のサーバ104またはクライアント110のようなコンピュータの一例である。
図の例の場合には、データ処理システム200は、北のブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202、および南のブリッジおよび入出力(1/O)コントローラ・ハブ(SB/ICH)204を含むハブ・アーキテクチャを使用する。処理ユニット206、主メモリ208、およびグラフィックス・プロセッサ210は、NB/MCH202に接続している。グラフィックス・プロセッサ210は、加速グラフィックス・ポート(AGP)を通してNB/MCH202に接続することができる。
図の例の場合には、ローカル・エリア・ネットワーク(LAN)アダプタ212は、SB/ICH204に接続している。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読出し専用メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、およびPCI/PCIeデバイス234は、バス238およびバス240を通してSB/ICH204に接続している。PCI/PCIeデバイスは、例えば、イーサネット・アダプタ、アドイン・カード、ノートブック・コンピュータ用のPCカードを含むことができる。PCIは、カード・バス・コントローラを使用し、PCIeは、このコントローラを使用しない。ROM224は、例えば、フラッシュ・バイナリ入出力システム(BIOS)であってもよい。
HDD226およびCD−ROMドライブ230は、バス240を通してSB/ICH204に接続している。HDD226およびCD−ROMドライブ230は、例えば、IDE(Integrated Drive Electronics)またはSATA(Serial Advanced Technology Attachment)インタフェースを使用することができる。スーパーI/O(SIO)デバイス236は、SB/ICH204に接続することができる。
オペレーティング・システムは、処理ユニット206上で稼働する。オペレーティング・システムは、図2のデータ処理システム200内の種々の構成要素と協力し、制御を行う。クライアントとして、オペレーティング・システムは、マイクロソフト(R)ウィンドウズ(R)XP(マイクロソフトおよびウィンドウズは、米国、その他の国または両方のマイクロソフト社の商標である)のような市販のオペレーティング・システムであってもよい。Java(TM)プログラミング・システムのようなオブジェクト指向プログラミング・システムを、オペレーティング・システムと一緒に実行することができ、データ処理システム200上で稼働しているJava(TM)プログラム、またはアプリケーションからオペレーティング・システムに呼出しを送ることができる(Javaは、米国、その他の国または両方のサン・マイクロシステムズ社の商標である)。
サーバとして、データ処理システム200は、例えば、新型対話型エクゼクティブ(AIX(R))オペレーティング・システムまたはLINUX(R)オペレーティング・システムを実行しているIBM(R)eServer(TM)pSeries(R)コンピュータ・システムであってもよい(eServer、pSeriesおよびAIXは、米国、その他の国または両方のインターナショナル・ビジネス・マシン社の商標であり、一方、LINUXは、米国、その他の国または両方のLinus Torvalds社の商標である)。データ処理システム200は、処理ユニット206内に複数のプロセッサを含む対称的なマルチプロセッサ(SMP)システムであってもよい。別の方法としては、1つのプロセッサ・システムを使用することもできる。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラム用の命令は、HDD226のような記憶装置の上に位置していて、処理ユニット206により実行するために主メモリ208内にロードすることができる。本発明の例示としての実施形態のための処理は、例えば、主メモリ208、ROM224のようなメモリ、または例えば、1つまたは複数の周辺デバイス226および230内に位置することができるコンピュータ使用可能プログラム・コードを使用する処理ユニット206により実行することができる。
図2のバス238またはバス240のようなバス・システムは、1つまたは複数のバスから形成することができる。もちろん、バス・システムは、ファブリックまたはアーキテクチャに取り付けられているいくつかの構成要素またはデバイス間でデータを転送するためのものである任意のタイプの通信ファブリックまたはアーキテクチャにより実施することもできる。図2のモデム222またはネットワーク・アダプタ212のような通信ユニットは、データを送受信するために使用する1つまたは複数のデバイスを含むことができる。メモリは、例えば、主メモリ208、ROM224または図2のNB/MCH202で使用しているようなキャッシュであってもよい。
当業者であれば、図1〜図2のハードウェアは、実施態様により異なることを理解することができるだろう。フラッシュ・メモリ、等価の不揮発性メモリ、または光ディスク・ドライブ等のような他の内部ハードウェアまたは周辺デバイスも、図1〜図2のハードウェアの他にまたは代わりに使用することができる。また、例示としての実施形態の処理は、本発明の精神および範囲から逸脱することなしに、上記SMPシステム以外のマルチプロセッサ・データ処理システムに適用することができる。
さらに、データ処理システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話または他の通信デバイス、携帯情報端末(PDA)等を含む多数の異なるデータ処理システムのうちの任意の形をとることができる。ある例示としての例の場合には、データ処理システム200は、例えば、オペレーティング・システム・ファイルおよび/またはユーザが生成したデータを記憶するための不揮発性メモリを提供するためのフラッシュ・メモリと一緒に構成するポータブル・コンピューティング・デバイスであってもよい。本質的には、データ処理システム200は、アーキテクチャの制限がない任意の周知のまたは後で開発されたデータ処理システムであってもよい。
図3は、例示としての一実施形態によるプロセッサのパイプラインを示す例示としての図面である。図3に示すように、プロセッサ300は、フェッチ・アドレス・マルチプレクサ304、フェッチ・ユニット310、復号ユニット320、発行ユニット330、実行ユニット340、完了ユニット350および分岐ユニット360から構成されるプロセッサ・パイプラインを含む。プロセッサ300は、メモリ・サブシステム370、ホスト・バス380、バス制御ユニット390、主メモリ・ユニット392、および他のプロセッサおよび例えば、図2に示すような外部機器394と結合している。
要素を上記のように配置すると、通常、ライブロック状態は、フェッチ・アドレス・マルチプレクサ304からフェッチ・ユニット310、復号ユニット320、発行ユニット330、完了ユニット350への、および任意の命令をコミットすることにより、実際の進行は何にも行わないで何回も複数回フラッシュ・アドレス経路323を通してフェッチ・アドレス・マルチプレクサ304に戻るプロセッサの流れ内の同じ一組の命令であるということができる。すでに説明したように、このようなライブロック状態の1つまたは複数の根本的原因は、あるプロセッサ・ユニットと他のプロセッサ・ユニットとの間の「調和」固定サイクル相互作用、反復してフラッシュされ、再度取り出される命令、または発行ユニット330の発行キューから反復して再発行され、解放することができないリソースの全または使用中の状態の時に発生する反復フラッシュ状態のために決して終了しない命令によるものである。
例示としての実施形態は、ライブロック状態を検出した場合に、発行ユニット330による命令の発行を徐々にストールするための機構を提供する。例示としての一実施形態の場合には、ライブロック状態検出の複数の段階が、関連するライブロック状態処理ロジックと一緒に発行ユニット330で使用される。関連ライブロック状態処理ロジックは、ライブロック状態から抜け出そうとするいくつかの行動を使用する。複数の段階内の以降の各段階は、ライブロック状態の深刻さの増大に関連する。初期の段階は、数プロセッサ・サイクルに過ぎないライブロック・ウィンドウズに関連し、一方、後期の段階は遥かに長いライブロック・ウィンドウズに関連する。各段階を通して、プロセッサの性能は次第に低減するが、ライブロック状態から抜け出す可能性は増大する。
例示としての一実施形態の場合には、プロセッサ・パイプラインの発行ユニット330内でスローダウン・モード制御ロジックを使用している。スローダウン・モード制御ロジックは、例えば、特定の命令のフラッシュの回数、または完了しない命令の再発行の回数のような所定の基準をベースとしてライブロック状態を検出するライブロック(またはハング)検出制御ロジックと結合している。ライブロック状態を検出した場合には、ライブロック検出制御ロジックは、スローダウン・モード制御ロジックに、ライブロック状態が存在することを示す信号をアサートする。スローダウン・モード制御ロジックは、発行ユニット330からの命令の発行をストールすることにより、プロセッサ300の動作を次第に低減し始める。
ゆっくりした速度低減動作によれば、スローダウン・モード制御ロジックは、プロセッサ・パイプラインを通しての命令の流れをストールするために信号を出力する。この出力信号は、ORゲート等を介して発行ユニット330のデータ依存制御ロジックのような他の制御ロジックからの出力信号と論理的に結合される。それ故、スローダウン・モード制御ロジックまたは他の制御ロジックが、発行ユニット330の発行およびディスパッチ・パイプラインを通しての命令の動きをストールするために信号を出力すると、命令はストールする。これらの信号がアサートされない場合には、命令は通常の方法で発行ユニット330の発行およびディスパッチ・パイプラインを通して流れることができる。
スローダウン・モード制御ロジックは、スローダウン・モード制御ロジック内にハードワイヤードされるか、プログラムされるステージングスキームに従って命令の流れをストールするために信号を出力する。例えば、ライブロック検出制御ロジックがライブロック(またはハング)状態を検出した場合には、すなわち命令がコミットされていないX個のフラッシュが存在することを検出した場合には(この場合、Xはハードウェア確認の後でプログラムすることができる)、スローダウン・モード制御ロジックは発行ユニット330の速度を低減することができ、そのためN回のプロセッサ・サイクル毎だけに発行ユニット330により1つの命令が発行される(この場合、Nはハードウェア確認の後でプログラムすることができる)。発行ユニット330の速度低減は、発行ユニット330を通しての命令の動きをストールするために信号をアサートすることにより行うことができる。この信号は、例えば、N回のような所定の数のサイクルに対してアサートすることができる。そのためN回のプロセッサ・サイクル毎に1つの命令だけが発行される。
発行ユニット330がストールすることができるサイクルの数は、同じライブロック状態を以降に検出する度に増大することができる。すなわち、命令の以降の連続している各再発行によりライブロック状態が検出されると、発行ユニットがストールすることができるサイクルの数を増大することができる。ライブロック状態が所定の数の回数検出されると、プロセッサ300は重度のライブロック状態にあると判定される。このような場合、発行ユニット330を強制的に直列単一ステップ・モードにすることができ、その場合、前の命令の処理が終了するまで、1つの命令しか発行することができず、他の命令を発行することはできない。
発行ユニット330が発行ユニット330の発行およびディスパッチ・パイプラインにすべての命令を移動した場合には、プロセッサ300は通常の全速モード動作に戻る。ライブロック状態がもはや検出されない場合には、プロセッサ300は、ステージングスキームの前の段階のうちの任意の段階においてこの通常の全速モード動作に戻る。
図4は、例示としての一実施形態による発行ユニットの詳細を示す例示としての図面である。図4に示すように、発行ユニット330は、一緒に発行ユニット330の発行およびディスパッチ・パイプラインを備える複数のレジスタ410〜414を含む。発行ユニット330は、さらにライブロック(またはハング)検出制御ロジック420、低速モード制御ロジック430、および発行およびディスパッチ・パイプラインを通しての命令の動きを制御するための他の制御ロジック440を含む。低速モード制御ロジック430および他の制御ロジック440からの出力は、ORゲートウェイ450に送られ、このORゲートは、これらレジスタ内に記憶している命令を発行およびディスパッチ・パイプライン内の次のレジスタにシフトするために(または実行ユニット340に命令を発行するために)、またはプロセッサ・サイクルに対する命令の処理をストールするために、ストール/シフト信号をレジスタ410〜414に出力する。
図4のプロセッサ・パイプラインを使用すれば、命令フェッチ・アドレスは、マルチプレクサ304により、プログラム・カウンタ・アドレス入力321、分岐ユニット360からの分岐アドレス入力322、リセット・アドレス325、完了ユニット350からのフラッシュ・アドレス323、または完了ユニット350からの割込みアドレス324の1つから選択される。フェッチ・アドレスは、フェッチ・ユニット310に送られ、このフェッチ・ユニット310は、メモリから適当な命令を取り出す。フェッチ・ユニット310は、通常、L1命令キャッシュから命令を取り出そうとし、命令がL1命令キャッシュ内に含まれていない場合には、フェッチ・ユニット310は、L2メモリ・キャッシュから命令を検索しようとする。命令がL2メモリ・キャッシュ内にも含まれていない場合には、フェッチ・ユニット310は、もっと遅いシステム・メモリから命令を検索する。
フェッチ・ユニット310が命令を取り出した後で、フェッチ・ユニット310は、この命令を復号ユニット320に送る。復号ユニット320は、特定の命令が何をするのかを判定するためのものである。復号ユニット320は、プロセッサが理解することができる各命令に対するマイクロコードを記憶している、例えば、読出し専用メモリ(ROM)のようなプロセッサ300内に位置するメモリ(図示せず)をチェックする。命令に対するマイクロコードは、例えばプロセッサ300の実行ユニット340のような実行ユニットにより、その特定の命令をどのように実行すべきかについてのステップ・バイ・ステップ・ガイドを提供する。例えば、ロードした命令がa+bである場合には、マイクロコードは、復号ユニット320に、2つのパラメータaおよびbが必要であることを通知する。次に、復号ユニット320は、フェッチ・ユニット310にaおよびbの値に適している次の2つのメモリ位置内に位置するデータを検索するように求める。復号ユニット320が、命令および命令を実行するのに必要な検索したすべてのデータを復号し、「変換した」後で、データおよび復号した命令は発行ユニット330に送られる。
命令およびデータは、発行およびディスパッチ・パイプラインの第1のレジスタ410内に記憶され、ライブロック検出制御ロジック420または他の制御ロジック440によりストール状態が検出されない限り、命令およびデータは、命令およびデータが実行ユニット340に発行されるまで、各プロセッサ・サイクル中にあるレジスタから他のレジスタにパイプラインを通してシフトすることができる。図面を見やすくするために図4には1つの実行ユニット340しか図示していないが、最新のコンピュータは同じかまたは異なるタイプの2つ以上の実行ユニット340を有することを理解されたい。それ故、実行ユニット340は、例えば、整数、浮動点等のような同じまたは異なるタイプの1つまたは複数の実行ユニットを表している。
ライブロック検出制御ロジック420は、命令処理の終了がうまくいかないのに、所定の数のプロセッサ・サイクルが発生したか否かを判定するために完了ユニット350を監視する。すなわち、実行ユニット340が実行した命令の処理に基づいて、実行ユニット340は、完了ユニット350に例外が発生したか否か、発行およびディスパッチ・パイプラインのフラッシュを行うべきか否か、または命令をコミットすべきか否か、すなわち成功中に終了すべきか否かを知らせる。次に、完了ユニット350は、このような情報を発行ユニット330に送ることができる。
ライブロック検出制御ロジック420は、完了ユニット350によりコミットされている命令の間にどれだけ多くのプロセッサ・サイクルが経過したかのカウントを維持するためのカウンタ422または他のロジックを含むことができる。このカウンタ422または他のロジックは、発行およびディスパッチ・パイプラインがフラッシュされる度に、および例えば、発行ユニット330の発行およびディスパッチ・パイプラインに命令が再発行される度に増大することができる。カウンタ422または他のロジックがコミット中の命令によりリセットされないで、フラッシュしきい値Xの所定の値に達すると、ライブロック検出制御ロジック420は、低速モード制御ロジック430に、低速モード制御ロジック430がプロセッサ300の低速制御の次の状態に移行すべきであることを示す低速モード信号をアサートする。例えば、カウントのしきい値がカウンタ値と一致した場合には、低速モード制御ロジック430内のカウンタ432は増大することができ、適当なストール信号がORゲート450にアサートされる。
ストール信号は、発行およびディスパッチ・パイプライン、すなわちレジスタ410〜414を通る命令の流れを1プロセッサ・サイクル中ストールさせる。低速モード制御ロジック430は、プロセッサ・サイクル(カウンタ)のしきい値数xNまで、以降のプロセッサ・サイクルに対するストール命令のアサートを続行することができる。ここで、Nは、ストールのためのプロセッサ・サイクルの基本的なしきい値数である。それ故、例えば、Nが4である場合には、低速モード制御ロジック430に低速モード信号が最初にアサートされた場合、低速モード制御ロジック430は、4プロセッサ・サイクルの間ストール信号をアサートし、次に発行ユニット330から命令を発行することができる。すなわち発行ユニット330からの1つの命令の発行まで、発行およびディスパッチ・パイプライン内で、命令をレジスタからレジスタ410〜414にシフトすることができる。4プロセッサ・サイクルが経過するまで次の命令を発行することはできない。ストールのためのプロセッサ・サイクルの基本的なしきい値数Nは、例えば、ハードウェア確認後に低速モード制御ロジック430内にプログラムすることができる。
このようにして、発行およびディスパッチ・パイプラインの速度は低減し、そのためN回のプロセッサ・サイクル毎に発行ユニット330から命令を1つだけ発行することができる。このプロセスは、ライブロック検出制御ロジック420により反復して行うことができ、命令がコミットされたか否か、命令の間のフラッシュの回数がコミットされたか否かを監視するために続行される。
低速モード信号をアサートした後で、ライブロック検出制御ロジック420は、そのカウンタを初期値にリセットし、コミットされた命令間の発行およびディスパッチ・パイプラインのフラッシュの回数のカウントをスタートする。フラッシュしきい値Xの所定の回数が、ライブロック検出制御ロジック420内のカウンタ422と一致する度に、ライブロック検出制御ロジック420は、低速モード信号を低速モード制御ロジック430にアサートする。低速モード制御ロジック430内のカウンタ433は増大し、低速モード制御ロジック430に、(カウンタ)xNのプロセッサ・サイクルに対する発行およびディスパッチ・パイプラインを通しての命令の動きをストールさせるために新しいカウンタ値が使用される。
上記のNの例示としての値、すなわち4プロセッサ・サイクルを使用した場合、ライブロック検出制御ロジック420によりライブロック状態が最初に検出されると、レジスタ410〜414から構成される発行およびディスパッチ・パイプライン内の命令は、4プロセッサ・サイクル中ストールする。その後で、さらにライブロック状態が検出されると、命令は、例えば8、12および16プロセッサ・サイクルのような4プロセッサ・サイクルの倍数の間ストールする。
カウンタ432の値が所定の重大なライブロック状態しきい値になると、低速モード制御ロジック430は、発行およびディスパッチ・パイプラインを直列単一ステップ・モード動作にする。この直列単一ステップ・モード動作は、処理の終了に成功するまで1つの命令しか発行することができない周知の単一ステップ・モード動作に似ている。発行およびディスパッチ・パイプライン内のすべての命令が発行されると、発行ユニット330は、ライブロック状態が再度検出されるまで命令が発行およびディスパッチ・パイプラインを通して流れることができる全速モード動作に戻ることができる。同様に、各スローダウン・ステージにおいて、すなわち低速モード信号のアサートの後の各低速状態において、発行およびディスパッチ・パイプライン内のすべての命令が1つの命令をコミットしないで、フラッシュのX倍の状態をチェックしないで移動した場合には、発行ユニット330は全速モードに戻ることができる。
図5は、もっと重度のライブロック状態が検出された場合に、低速モード制御ロジック420が進む種々のスローダウン・ステージの概略を示す。例示としての実施形態は、発行およびディスパッチ・パイプライン内の命令をストールするために、コミット中に命令間のフラッシュの回数の特定の倍数、およびプロセッサ・サイクルの回数の特定の倍数を使用しているが、本発明はこのような倍数に限定されないことに留意されたい。それどころか、各段階をストールするために、コミット中の命令間のフラッシュの回数の任意の値またはプロセッサ・サイクルの回数を、本発明の精神および範囲から逸脱することなしに使用することができる。実際には、ある例示としての実施形態の場合には、これらの値は、相互の倍数でなくても全然構わないし、ライブロック検出制御ロジック420および/または低速モード制御ロジック430内にプログラムされた特定の値であってもよい。
図5は、例示としての一実施形態によるライブロック状態検出および減速機構の動作のステージングスキームを示す例示としての図面である。図5に示すように、通常、プロセッサ、それ故プロセッサの発行ユニットは、全速モード動作510で動作する。第1のライブロック状態を検出した場合には、すなわち1つの命令をコミットしないでフラッシュをX回検出した場合には、プロセッサはプロセッサ・スローダウン・ステージ1 520に移行する。プロセッサ・スローダウン・ステージ1 520の場合には、発行ユニットは、各Nサイクル毎に命令を1つだけ発行する。
発行ユニットが1つの命令をコミットしないでX回のフラッシュの状態をチェックしないで、発行およびディスパッチ・パイプライン内のすべての命令を移動した場合には、プロセッサは全速モード動作510に戻る。そうでない場合には、プロセッサは発行ユニットが2Nサイクル毎に1つの命令を発行するプロセッサ・スローダウン・ステージ2 530に移行する。
プロセッサ・スローダウン・ステージ2 530においては、発行ユニットが1つの命令をコミットしないでX回のフラッシュの状態をチェックしないで、発行およびディスパッチ・パイプライン内のすべての命令を移動した場合には、プロセッサは全速モード動作510に戻る。そうでない場合には、プロセッサは、発行ユニットが4Nサイクル毎に1つの命令を発行するプロセッサ・スローダウン・ステージ3 540に移行する。発行ユニットが1つの命令をコミットしないでX回のフラッシュの状態をチェックしないで、発行およびディスパッチ・パイプライン内のすべての命令を移動した場合には、プロセッサは全速モード動作510に戻る。
1つの命令をコミットしないでX回のフラッシュの状態に遭遇した場合には、プロセッサは、重度のライブロック状態にあると判定され、プロセッサ・スローダウン・ステージ4 550に移行する。プロセッサ・スローダウン・ステージ4 550においては、発行ユニットは強制的に直列単一ステップ・モード動作にされ、前の命令の処理が完了するまで、1つの命令だけしか発行することができない。発行ユニットが、発行およびディスパッチ・パイプライン内のすべての命令を移動した場合には、プロセッサは全速モード動作510に戻る。
例示としての実施形態の例示としての動作として、発明の背景ですでに説明した図6および図7のシナリオについて再度考えてみよう。この状況はプログラムの実行の際に頻繁に発生し、発行およびディスパッチ・パイプラインが12の命令を含んでいると仮定する。ライブロック・ウィンドウの長さが4プロセッサ・サイクルである場合には、ライブロック状態は、第2のsprに移動命令mt sprE R7の後の4サイクル中に、第3のsprに移動命令mt sprC R1が発行された場合に発生する。各命令の処理が終了するのに10プロセッサ・サイクルかかるとすれば、プロセッサが全速モードから直列単一ステップ・モードに移行する場合、発行およびディスパッチ・パイプラインからすべての命令を取り出すには約120サイクルかかる。
しかし、本明細書に記載する例示としての実施形態を使用すれば、プロセッサ・スローダウン・ステージ1 520においてNを4にセットした場合、すべての命令を取り出すのに60プロセッサ・サイクル未満ですむ。それ故、例示としての実施形態は、直列単一ステップ・モード動作に直ちに移行する周知の機構と比較した場合、プロセッサの性能を2倍にする。プログラム中でこのタイプのライブロック状態が頻繁に発生する場合には、例示としての実施形態は、プロセッサの全体の性能に対するライブロック状態の影響を有意に最小限度まで低減する。
図8は、例示としての一実施形態によるライブロック状態を検出し、プロセッサ・パイプラインの動作を低減するための例示としての動作の概略を示すフローチャートである。図8に概略示す動作は、例えば、上記図3および図4の発行ユニット330のようなプロセッサの発行ユニット内で実行することができる。それ故、図8の種々の動作は、プロセッサのハードウェアで実施することができる。プロセッサは、単一プロセッサ・システムであってもよく、多重プロセッサ・システムであってもよい。例示としての一実施形態の場合には、プロセッサは、マイクロプロセッサまたはシステム・オン・ア・チップ(system-on-a-chip)の一部であってもよい。マイクロプロセッサまたはシステム・オン・ア・チップは、同じまたは異なる命令セットで動作している複数のプロセッサを含むことができる。例えば、マイクロプロセッサまたはシステム・オン・ア・チップは、いくつかのプロセッサが、例えば、RISC命令セットのような第1の命令セットで動作していて、一方、他のプロセッサが 例えばベクトル命令セットのような第2の命令セットで動作している異質デバイスであってもよい。プロセッサを実施することができるデバイスのタイプおよび配置は、この説明または本発明の精神および範囲により制限されない。
図8に示すように、動作は、全速モード動作で稼働しているプロセッサ、それ故発行ユニットによりスタートする(ステップ710)。発行ユニットはライブロック状態が検出されたか否かを判定する(ステップ720)。検出されなかった場合には、動作はステップ710に戻り、プロセッサおよび発行ユニットは全速で稼働を続行する。ライブロック状態が検出された場合には、例えば、図4のライブロック検出制御ロジック420が判定したように、プロセッサおよび発行ユニットは、N個の各プロセッサ・サイクル毎に1つの命令が発行されるプロセッサ・スローダウン・ステージ1に移行する(ステップ730)。図8に示すように、ライブロック状態が存在するという判定は、例えば、1つの命令をコミットしないでX回のフラッシュが発生したことを検出するライブロック検出制御ロジック420をベースとすることができる。
その後で、発行ユニットは、ライブロック状態が再度検出されたか否かを判定する(ステップ740)。検出されなかった場合には、プロセッサおよび発行ユニットは、全速モード動作に戻ることができる(ステップ710)。ライブロック状態が再度検出された場合には、プロセッサおよび発行ユニットは、2N個のプロセッサ・サイクル毎に1つの命令が発行されるプロセッサ・スローダウン・ステージ2に移行する(ステップ750)。図に示すように、ライブロック状態を再度検出したか否かの判定は、例えば、1つの命令をコミットしないで2X回のフラッシュが発生したことを検出するライブロック検出制御ロジック420をベースとすることができる。
その後で、発行ユニットは、ライブロック状態が検出されたか否かを再度判定する(ステップ760)。ライブロック状態が再度検出されなかった場合には、プロセッサおよび発行ユニットは、全速モード動作に戻ることができる(ステップ710)。ライブロック状態が再度検出された場合には、プロセッサおよび発行ユニットは、4N個のプロセッサ・サイクル毎に1つの命令が発行されるプロセッサ・スローダウン・ステージ3に移行する(ステップ770)。図に示すように、ライブロック状態を再度検出したか否かの判定は、例えば、1つの命令をコミットしないで3X回のフラッシュが発生したことを検出するライブロック検出制御ロジック420をベースとすることができる。
その後で、発行ユニットは、ライブロック状態が再度検出されたか否かを判定する(ステップ780)。検出されなかった場合には、プロセッサおよび発行ユニットは、全速モード動作に戻ることができる(ステップ710)。ライブロック状態が再度検出された場合には、プロセッサおよび発行ユニットは、従来技術で周知のように、発行ユニットが直列単一ステップ・モード動作に入るプロセッサ・スローダウン・ステージ4に移行する(ステップ790)。図に示すように、ライブロック状態を再度検出したか否かの判定は、例えば、1つの命令をコミットしないで4X回のフラッシュが発生したことを検出するライブロック検出制御ロジック420をベースとすることができる。
その後で、当業者であれば周知のように、ライブロック状態は直列単一ステップ・モード動作を介して解消する。それ故、プロセッサおよび発行ユニットは、全速モード動作に戻る(ステップ710)。この動作は、プロセッサが動作中続行され、プロセッサがオフラインになると終了することができる。
それ故、例示としての実施形態は、プロセッサ内の命令の発行を遅くするための漸進的スローダウン機構を提供することにより、プロセッサ内のライブロック状態から抜け出すための機構を提供する。ライブロック検出制御ロジックは、ライブロック状態の発生を検出するためのものであり、低速モード制御ロジックは、プロセッサの発行ユニットをスローダウン・ステージスキーム内であるスローダウン・ステージから次のスローダウン・ステージに移行させるためのものである。スローダウン・ステージスキーム内の任意の段階で、ライブロック状態がもはや検出されない場合には、プロセッサおよび発行ユニットは全速モード動作に戻ることができる。このようにして、直列単一ステップ・モード動作に直ちに移行しないことによりプロセッサの性能を向上させることができる。
すでに説明したように、プロセッサ回路は集積回路チップのための設計の一部であってもよい。チップの設計は、グラフィカル・コンピュータ・プログラミング言語で行うことができ、コンピュータ記憶媒体(ディスク、テープ、物理ハード・ディスク、または記憶装置アクセス・ネットワーク内でのような仮想ハード・ドライブなど)に記憶することができる。設計者が、チップ、またはチップを作るために使用するホトリソグラフィ・マスクを作らない場合には、設計者は、直接的または間接的に物理的手段(例えば、設計を記憶している記憶媒体のコピーを提供するというような)により、または電子的に(例えば、インターネットを通して)結果としての設計を上記エンティティに送信する。次に、記憶している設計を、ウェハ上に形成する当該チップ設計の複数のコピーを通常含んでいるホトリソグラフィ・マスクを製造するための適当なフォーマット(例えば、GDSII)に変換することができる。ホトリソグラフィ・マスクは、エッチングされるまたは他の方法で処理されるウェハの領域(および/またはその上の層)を画定するために使用される。
結果として得られる集積回路チップは、裸のダイとして、またはパッケージした形で、生のウェハの形で(すなわち、複数のパッケージしていないチップを有する1つのウェハとして)製造業者により配布される。後者の場合、チップはシングル・チップ・パッケージ(マザーボードまたは他のもっと高いレベルのキャリアに取り付けられているリード線を含むプラスチック・キャリアなど)内、またはマルチチップ・パッケージ(表面相互接続または埋込相互接続の一方または両方を有するセラミック・キャリアなど)内に装着することができる。いずれの場合も、次に、チップを、他のチップ、個々の回路素子、および/または(a)マザーボードのような中間製品、または(b)最終製品の一部としての他の信号処理装置と集積することができる。最終製品は、玩具および他のローエンド・アプリケーションからディスプレイ、キーボードまたは他の入力デバイスおよび中央プロセッサを有する高度のコンピュータ製品までの集積回路チップを内蔵する任意の製品であってもよい。さらに、集積回路チップを使用することができる最終製品としては、ゲーム・マシン、ゲーム・コンソール、ハンドヘルド・コンピューティング・デバイス、携帯情報端末、無線電話等のような通信デバイス、ラップトップ・コンピューティング・デバイス、デスクトップ・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、または任意の他のコンピューティング・デバイス等がある。
今まで完全に機能するデータ処理システムを参照しながら本発明を説明してきたが、当業者であれば、本発明のプロセスは、命令のコンピュータ読み取り可能媒体の形で、および種々の形で配布することができ、本発明は、配布するために実際に使用する信号搬送媒体の特定のタイプが何であろうと等しく適用することができることを理解することができることに注目することが重要である。コンピュータ読み取り可能媒体の例としては、フレキシブル・ディスク、ハード・ディスク・ドライブ、RAM、CD−ROM、DVD−ROMのような記録可能なタイプの媒体、およびデジタルおよびアナログ通信リンク、例えば、無線周波数伝送および光波伝送のような伝送形態を使用する有線または無線通信リンクのような送信タイプの媒体等がある。コンピュータ読み取り可能媒体は、特定のデータ処理システム内での実際の使用のために復号されるコード化したフォーマットの形をとることができる。
図示し、説明するために本発明について記述してきたが、この記述は開示の形で本発明のすべてを包括するためのものでもなければ、本発明を制限するためのものでもない。当業者であれば多くの修正および変更を思い付くだろう。本発明の原理および実際の用途を最も分かりやすく説明するために、また通常の他の当業者が目的の特定の用途に適している種々に修正された種々の実施形態のために本発明を理解することができるように実施形態を選択し、記述した。
例示としての実施形態の種々の態様を実施することができる分散型データ処理システムの例示としての図面である。 例示としての実施形態の種々の態様を実施することができるデータ処理装置の例示としてのブロック図である。 例示としての一実施形態によるプロセッサのパイプラインを示す例示としての図面である。 例示としての一実施形態による発行ユニットの詳細を示す例示としての図面である。 例示としての一実施形態によるライブロック状態検出およびスローダウン機構の動作のためのステージングスキームを示す例示としての図面である。 2つの命令が各スレッドの1つ置きのサイクルから発行されるSMTおよび二重命令発行プロセッサ・パイプラインを示す。 図6のプロセッサ・パイプライン上で実行した場合、両方のスレッドにプロセッサの特種目的のレジスタ(SPR)にアクセスさせようとする例示としてのユーザ・コードを示す。 例示としての一実施形態によるライブロック状態を検出し、プロセッサ・パイプラインの動作を減速するための例示としての動作の概略を示すフローチャートである。
符号の説明
100 分散型データ処理システム
102 ネットワーク
104,106 サーバ
108 記憶装置ユニット
110,112,114 クライアント
200 データ処理システム
202 北のブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)
204 南のブリッジおよび入出力(1/O)コントローラ・ハブ(SB/ICH)
206 処理ユニット
208 主メモリ
210 グラフィックス・プロセッサ
212 ローカル・エリア・ネットワーク(LAN)アダプタ
216 オーディオ・アダプタ
220 キーボードおよびマウス・アダプタ
222 モデム
224 読出し専用メモリ(ROM)
226 ハード・ディスク・ドライブ(HDD)
230 CD−ROMドライブ
232 ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート
234 PCI/PCIeデバイス
238,240 バス
300 プロセッサ
304 フェッチ・アドレス・マルチプレクサ
310 フェッチ・ユニット
320 復号ユニット
322 分岐アドレス入力
324 割込みアドレス
325 リセット・アドレス
330 発行ユニット
340 実行ユニット
350 完了ユニット
360 分岐ユニット
370 メモリ・サブシステム
380 ホスト・バス
390 バス制御ユニット
392 主メモリ・ユニット
394 外部機器
410〜414 レジスタ
420 ライブロック検出制御ロジック
430 低速モード制御ロジック
432 カウンタ
440 他の制御ロジック
450 ORゲート
510 全速モード動作
520 プロセッサ・スローダウン・ステージ1
530 プロセッサ・スローダウン・ステージ2
540 プロセッサ・スローダウン・ステージ3
550 プロセッサ・スローダウン・ステージ4

Claims (6)

  1. データ処理装置において、ライブロック状態から抜け出すための方法であって、
    前記データ処理装置において、命令が完了せずにフラッシュされる回数が所定の数に達した状態であるライブロック状態を検出するステップと、
    前記ライブロック状態が引き続き検出され続ける間は、処理サイクル数を増大することにより前記データ処理装置で命令の処理を徐々にストールするステップと、
    前記ライブロック状態から抜け出したことを検出した場合に、前記データ処理装置を全速モード動作に戻すステップとを含む方法。
  2. 前記データ処理装置がプロセッサであり、前記プロセッサによる命令の処理が、前記プロセッサのパイプライン内の命令の発行を遅延させることにより徐々にストールする請求項1に記載の方法。
  3. 前記方法が、前記プロセッサの発行ユニット内で実施される請求項2に記載の方法。
  4. 前記プロセッサによる命令の処理が、前記発行ユニットの発行およびディスパッチ・パイプラインを通しての命令の動きをストールすることにより徐々にストールする請求項3に記載の方法。
  5. ライブロック状態から抜け出すためのシステムであって、
    発行ユニットと、
    前記発行ユニットを含むプロセッサ・パイプラインとを備え、前記発行ユニットが、
    前記プロセッサ・パイプラインの、命令が完了せずにフラッシュされる回数が所定の数に達した状態であるライブロック状態を検出し、
    前記ライブロック状態が引き続き検出され続ける間は、処理サイクル数を増大することにより前記プロセッサ・パイプラインで命令の処理を徐々にストールし、
    前記ライブロック状態から抜け出したことを検出した場合に、前記プロセッサ・パイプラインを全速モード動作に戻すシステム。
  6. 前記発行ユニットが、前記発行ユニットの発行およびディスパッチ・パイプラインを通しての命令の動きをストールすることにより、前記プロセッサ・パイプラインにより命令の処理を徐々にストールする請求項5に記載のシステム。
JP2007099182A 2006-04-14 2007-04-05 プロセッサの動作を徐々に低速モードにするためのシステムおよび方法 Expired - Fee Related JP4677422B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/279,775 US7434033B2 (en) 2006-04-14 2006-04-14 Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline

Publications (2)

Publication Number Publication Date
JP2007287141A JP2007287141A (ja) 2007-11-01
JP4677422B2 true JP4677422B2 (ja) 2011-04-27

Family

ID=38606359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007099182A Expired - Fee Related JP4677422B2 (ja) 2006-04-14 2007-04-05 プロセッサの動作を徐々に低速モードにするためのシステムおよび方法

Country Status (4)

Country Link
US (2) US7434033B2 (ja)
JP (1) JP4677422B2 (ja)
CN (1) CN100530109C (ja)
TW (2) TWI502512B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7558946B2 (en) * 2005-12-12 2009-07-07 Intel Corporation Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US8719555B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for overcoming livelock in a multi-threaded system
US8719553B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for re-circulating a fragment through a rendering pipeline
US8789170B2 (en) 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
CN102567120B (zh) * 2012-02-13 2014-04-23 北京星网锐捷网络技术有限公司 一种节点调度优先级确定方法及装置
GB2551523B (en) 2016-06-20 2019-07-03 Imagination Tech Ltd Livelock recovery circuit
US10740102B2 (en) * 2017-02-24 2020-08-11 Oracle International Corporation Hardware mechanism to mitigate stalling of a processor core

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078794A1 (en) * 2001-06-22 2004-04-22 Burns David W. Method and apparatus for resolving instruction starvation in a processor or the like
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
JP2008513894A (ja) * 2004-09-23 2008-05-01 インテル・コーポレーション スレッドライブロックユニット

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618532B1 (en) * 1993-03-30 2000-01-26 Fujitsu Limited Deadlock detecting device
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6532574B1 (en) * 2000-08-17 2003-03-11 International Business Machines Corporation Post-manufacture signal delay adjustment to solve noise-induced delay variations
US6968431B2 (en) * 2001-11-15 2005-11-22 International Business Machines Corporation Method and apparatus for livelock prevention in a multiprocessor system
US20030115559A1 (en) * 2001-12-13 2003-06-19 International Business Machines Corporation Hardware validation through binary decision diagrams including functions and equalities
US7065596B2 (en) 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US20040093198A1 (en) * 2002-11-08 2004-05-13 Carbon Design Systems Hardware simulation with access restrictions
TWI242744B (en) * 2003-01-14 2005-11-01 Ip First Llc Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US20040078794A1 (en) * 2001-06-22 2004-04-22 Burns David W. Method and apparatus for resolving instruction starvation in a processor or the like
JP2008513894A (ja) * 2004-09-23 2008-05-01 インテル・コーポレーション スレッドライブロックユニット

Also Published As

Publication number Publication date
TWI502512B (zh) 2015-10-01
TWI421770B (zh) 2014-01-01
JP2007287141A (ja) 2007-11-01
TW200809629A (en) 2008-02-16
US20070245350A1 (en) 2007-10-18
TW201428630A (zh) 2014-07-16
CN101055531A (zh) 2007-10-17
CN100530109C (zh) 2009-08-19
US7434033B2 (en) 2008-10-07
US7818544B2 (en) 2010-10-19
US20090006817A1 (en) 2009-01-01

Similar Documents

Publication Publication Date Title
JP4677422B2 (ja) プロセッサの動作を徐々に低速モードにするためのシステムおよび方法
JP4608590B2 (ja) プロセッサを段階的減速動作モードに移行させる発行ユニット
US7412589B2 (en) Method to detect a stalled instruction stream and serialize micro-operation execution
US7343476B2 (en) Intelligent SMT thread hang detect taking into account shared resource contention/blocking
TW413787B (en) An apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6256775B1 (en) Facilities for detailed software performance analysis in a multithreaded processor
KR100951092B1 (ko) 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체
JP2001521215A (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
US6543002B1 (en) Recovery from hang condition in a microprocessor
JP2001521219A (ja) マルチスレッド式プロセッサでのスレッド優先順位の変更
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
JP2007507791A (ja) トレースキャッシュベースのプロセッサ中の例外命令を処理するためのシステム及び方法
JP2001521216A (ja) マルチスレッド式プロセッサ・システムでのスレッド切替え制御
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
US11182168B2 (en) Post completion execution in an out-of-order processor design
JP2017016638A (ja) 永続コミットプロセッサ、方法、システムおよび命令
US9626220B2 (en) Computer system using partially functional processor core
JP2001092656A (ja) 命令のインオーダ処理を効率的に実行するスーパースケーラ処理システム及び方法
JP2000099330A (ja) コンピュ―タ・プロセッサ・システム
KR20020096252A (ko) 프로세서에서의 명령 실행 방법, 컴퓨터 시스템에사용하기 위한 프로세서 및 데이터 처리 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101012

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101013

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: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110131

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4677422

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees