説明

プロセッサを段階的減速動作モードに移行させる発行ユニット

【課題】プロセッサのライブロック状態の処理効率を向上する。
【解決手段】プロセッサを段階的に減速作動モードに移行させる発行ユニットを提供する。該減速作動モードは、プロセッサ内の発行ユニットに対する減速操作の複数のステージを含み、段階的スキームに従って命令の発行が減速される。このプロセッサの段階的減速によってライブロック状態からのプロセッサの解放を可能にする。さらに、減速が段階的に行われるので、プロセッサは、さまざまな程度のライブロック状態をフレキシブルに回避することができる。例示的実施形態のメカニズムは、軽度のライブロック状態は小さなパフォーマンスへの影響で処理し、もっと重度のライブロック状態の場合だけプロセッサのパフォーマンスへの影響を増加させることにより、ライブロック状態の厳しさに基いてプロセッサの全体的パフォーマンスに影響させる。

【発明の詳細な説明】
【技術分野】
【0001】
本出願は一般にデータ処理システム及び方法の改善に関し、さらに具体的には、本出願は、プロセッサを段階的減速動作モードに移行させるシステム及び方法を対象とする。プロセッサの減速動作モードを使って、プロセッサ・コア内のライブロック状態を解放する。
【背景技術】
【0002】
近年のプロセッサ設計、特に同時マルチスレッディング(SMT)プロセッサ設計では、ライブロック(livelock)状態は、設計段階において発見し解決することが最も困難な問題の一つになっており、設計がハードウエアに実装された後で発見されることが多い。ライブロック状態は、プロセッサが同じ命令の組を繰り返し実行し、なんら実際の進行がない状態として表すことができよう。ライブロック状態に陥る根本原因の一つは、一つのプロセッサ・ユニットと別のユニットとの間での調和的固定サイクルの相互作用である。ライブロック状態の別の原因には、命令のフラッシュ及び再取り出しと、命令発行待ち行列からの再発行とが繰り返され、リソース満杯ないし使用中状態でフラッシュが繰り返され、これを解放することができないため、何時までも命令が完了しないということがある。
【0003】
「調和的(harmonic)」固定サイクルの相互作用は、プロセッサ・パイプラインでは、固定のサイクル数を使って一命令の実行の処理及び達成が行われるという事実の産物である。複数のスレッドからの命令は、各スレッド中の各々の命令がほぼ同時に処理を完了するように、同調的な仕方で、プロセッサ・パイプラインを通って処理されることになる。一つのスレッドが、別の実行スレッド中の命令の結果を必要とするといった、実行スレッドの間に依存関係がある場合、両方の命令が同時にプロセッサ・パイプラインを通って処理され、リソース利用と依存関係とに不一致が生じ、ライブロック状態が発生することがある。依存する方の命令は、他方のスレッドの命令の結果がまだ利用できないので完了することができない。もし、この他方スレッドの命令が、リソース競合に出くわせば、両方のスレッドからの命令は繰り返しフラッシュされ、パイプラインに再発行されることになる。
【0004】
ライブロック状態に陥る、コーディングとデュアル命令プロセッサ設計との例が図6のA及び図6のBに示されている。図6のAは、SMT及びデュアル命令発行プロセッサ・パイプライン設計を示し、この設計では、一つおきのサイクルで各々のスレッドから2つの命令が発行される。図6のBは、図6Aに示したプロセッサ・パイプラインで実行された場合、両方のスレッドともプロセッサの専用レジスタ(SPR)にアクセスしようとする、典型的なユーザ・コードを示す。スレッド0には、スレッド1のコードがSPRへのアクセスを終えるのを待つための条件分岐(bneq)命令がコードされている。スレッド0のコードは後方分岐しながら、スレッド1の「store」命令が完了したかどうかの点検を続けることになる。
【0005】
図6のAに示されたプロセッサ・パイプライン中のSPR待ち行列は一度に2つのSPR命令に対応できるだけである。しかして、スレッド1の第三SPR命令及び該第三SPR命令の後方の全ての命令は、常にフラッシュされ再発行されることになる。もし、スレッド0とスレッド1との命令が下記の表1に示すような順序でコンパイルされていれば、スレッド1の「mt sprC R1」命令の前の命令の全てが完了することになる。スレッド1の「mt sprC R1」は、初回は、SPRの待ち行列が「mt sprA R3」及び「mt sprB R2」のためビジー状態なので、フラッシュされることになる。「bneq CheckThread1SPR」より後ろのスレッド0の命令の全ては、スレッド1の「store R4 0x100」が実行されない間は、発行されてはフラッシュされることになる。
【0006】
【表1】

【0007】
表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の命令は、何時までも繰り返し再発行されフラッシュされることになる。これによりプロセッサはライブロック状態に追い込まれる。
【0008】
【表2】

【0009】
前述したようなライブロック状態の多くは、実際のアプリケーションが、プロセッサ・ハードウエアで実行される際に検出される。これは多くの場合高いコストにつき、この時点では設計を修正するには遅すぎる。従って、ハードウエアの妥当性確認段階で、こういった種類の予期しないライブロック状態を検出し解決できるような汎用的方法をプロセッサ・コアに組み込んでおくことが重要である。
【0010】
通常、こういったライブロック状態を検出するため、プロセッサの発行ユニットの中など、プロセッサ設計自体の中にハードコードが可能なハードウエア・ベースの検知メカニズムが備えられる。こうした検知メカニズムによってライブロック状態を検出可能にするやり方は、個別の実装如何による。例えば、該検知メカニズムは、特定の命令のフラッシュの回数、又は、命令が完了されず再発行される回数を数えることによってライブロック状態を検出することができる。こういった状況は、前に進むことのない状態変化を示し、しかして潜在的なライブロック・シナリオを示すものである。
【発明の開示】
【発明が解決しようとする課題】
【0011】
既存の設計においては、ライブロック検知メカニズムを使い、ライブロック状態の発生が検出されるのに応じ、プロセッサのパイプラインは、一つ以上のスレッド全体に亘り、一度に一つの命令だけが遂行される単一ステップ動作モードに移行される。しかしながら、ライブロック状態が検出されるたびに、プロセッサのパイプラインを単一ステップ・モードに移行させるのは、プログラムの実行中にライブロック状態が頻繁に発生することもあるので、プロセッサの全体的パフォーマンスに大きな影響を与える。さらに、このアプローチは、ライブロック状況が、単に数プロセッサ・サイクルのライブロック・ウィンドウ、すなわちプロセッサ中にライブロック状態が継続して検出される期間のものである場合には過剰対応となる。
【課題を解決するための手段】
【0012】
本発明の例示的実施形態は、プロセッサを段階的減速動作モードに移行させる発行ユニットを提供する。プロセッサを段階的に減速しながら、プロセッサをライブロック状態から解放する。さらに、減速が段階的に行われるで、プロセッサは、さまざまな程度のライブロック状態をフレキシブルに回避することができる。これら例示的実施形態のメカニズムは、ライブロック状態の厳しさに応じて、プロセッサの全体的パフォーマンスに影響をさせるもので、軽度のライブロック状態に対しては小さな影響で済ませ、ライブロック状態が重度の厳しさである場合にだけ、プロセッサのパフォーマンスへの影響を増加させる。
【0013】
該例示的実施形態のメカニズムには、ライブロック状態検出の複数ステージが、各々のステージに対応するライブロック状態取扱い論理と共に備えられている。この関連付けられたライブロック状態取扱い論理は、いろいろな処置を用いてライブロック状態の解放を試みる。複数ステージ中の引き続く各ステージは、ライブロック状態の厳しさの増大に関連付けられる。早期段階のステージは単なる数プロセッサ・サイクルのライブロック・ウィンドウに関連付けられており、後段階のステージは、もっと長期のライブロック・ウィンドウに関連付けられている。各ステージごとに、プロセッサのパフォーマンスは段階的に低下するが、ライブロック状態が解放される可能性は増大する。
【0014】
一つの例示的実施形態において、低速モード制御ロジックがプロセッサ・パイプラインの発行ユニット中に設けられる。該低速モード制御ロジックは、ハング検知制御ロジックと連結され、後者のロジックは、所定の基準、例えば、特定の命令のフラッシュの回数又は命令が完了せずに再発行された回数などに基いてライブロック状態を検出する役割を有する。ライブロック状態の検出に応じて、ハング検知制御ロジックは、低速モード制御ロジックに対しライブロック状態が存在することを示す信号をアサートする。低速モード制御ロジックは、プロセッサの段階的な減速を開始する。
【0015】
この段階的減速操作によれば、低速モード制御ロジックはプロセッサ・パイプラインを通る命令の流れを抑制する信号を出力する。この出力信号は、ORゲートを介するなどして、データ依存性制御ロジックなど、別の制御ロジックからの出力信号と論理的に組み合わされる。しかして、低速モード制御ロジック又は別の制御ロジックのいずれかが、プロセッサ・パイプラインを通る命令の動きを抑制する信号を出力すれば、命令は抑制される。このような信号がアサートされない場合は、命令は、通常のやり方でパイプラインを通って流れることができる。
【0016】
低速モード制御ロジックは、低速モード制御ロジック内にハード配線あるいはプログラムされた段階的スキームに従って、命令の流れを抑制する信号を出力する。例えば、ハング検知制御ロジックが、ライブロック(ないしハング)状態、すなわち、命令が完遂されることなく、フラッシュ回数がXとなったことを(このXは、ハードウエアの妥当性確認の後でプログラムすることができる)検出したとき、低速モード制御ロジックは、Nプロセッサ・サイクルごとにだけ(このNは、ハードウエアの妥当性確認の後でプログラムすることができる)発行ユニットが命令を発行するように、発行ユニットを減速させることができる。発行ユニットの減速は、パイプラインを通る命令の動きを抑制する信号をアサートすることにより行うことができる。この信号は、例えばNサイクルなどあらかじめ定めたサイクル数に基き、Nプロセッサ・サイクルごとに一つだけの命令を発行するようにアサートすることができる。
【0017】
これと同じライブロック状態、すなわち命令が処理されずにXのフラッシュ回数が再度発生した場合、発行ユニットが2Nプロセッサ・サイクルごとに一つの命令を発行できるように、発行ユニットは再度減速される。さらにまだライブロック状態が検出される場合には、発行ユニットが4Nプロセッサ・サイクルごとに一つの命令を発行できるように、発行ユニットは再び減速される。その後においてもライブロック状態が再び検出された場合には、プロセッサは重度のライブロック状態にあると判定される。このような場合、発行ユニットは、一つだけの命令を発行することができ前の命令が完了するまでは他の一切の命令を発行できない、逐次単一ステップ・モードを強制される。発行ユニットが、発行ユニットの発行及び送出パイプライン中の全ての命令を排出したときに、プロセッサは通常の全速作動モードに戻される。ライブロック状態が検出されなくなれば、その前のステージが、段階的スキームのどのステージであっても、プロセッサは通常の全速作動モードに戻される。
【0018】
一つの例示的実施形態において、ライブロック検知制御ロジックと、該ライブロック検知ロジックに連結された減速モード制御ロジックと、ライブロック検知制御ロジック及び減速制御ロジックに連結された発行及び送出パイプラインとを含む発行ユニットが提供される。ライブロック検知制御ロジックは、発行及び送出パイプライン中のライブロック状態を検出することができる。低速モード制御ロジックは、ライブロック検知制御ロジックによりライブロック状態が検出され続けている間は、処理のサイクル数を増大させて、発行及び送出パイプラインを通る命令の動きを段階的に減速することができる。低速モード制御ロジックは、ライブロック状態が解放されたのが検出されたのに応じて、データ処理装置を全速作動モードに戻すことができる。
【0019】
ライブロック検知ロジックは、発行ユニットに関連するプロセッサの完了ユニットをモニタし、命令がうまく完了されないまま所定数のプロセッサ・サイクルが経過したかどうかを判定することができる。ライブロック検知制御ロジックには、完了ユニットの表示から、命令がうまく遂行されないまま経過したプロセッサ・サイクルの数を数えるカウンタを含めることができる。カウンタが所定の閾値に達するのに応じてライブロック状態を検出することができる。
【0020】
低速モード制御ロジックには、ライブロック状態がライブロック検知ロジックラにより引き続き検出された回数を数えるためのカウンタを含めることができる。低速モード制御ロジックは、該カウンタの数の増加に基づき処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを抑制することができる。
【0021】
発行ユニットには、別の基準に基づいて発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための、発行ユニットの別の制御ロジックをさらに含めることができる。また、発行ユニットには、該別の制御ロジックと低速モード制御ロジックとに連結された論理ゲートをさらに含めることができ、該論理ゲートは、該別の制御ロジックと低速モード制御ロジックとからの、発行及び送出パイプラインを通る命令を抑制するか又はシフトするかどうかを示す入力を受信する。論理ゲートは、発行及び送出パイプラインを通る命令を抑制あるいはシフトする出力信号を、発行及び送出パイプラインに送信することができる。
【0022】
低速モード制御ロジックは、ライブロック検知制御ロジックがライブロック状態を検出するのに応じて、段階的スキームに従い発行ユニットを減速動作モードに設定して、発行及び送出パイプラインを通る命令の動きを段階的に抑制することができる。段階的スキームには、処理のサイクル数を変えることによって、発行及び送出パイプラインを通る命令の動きを減速する複数のステージを設定することができる。
【0023】
低速モード制御ロジックは、発行ユニットを減速作動モードに設定し、発行ユニットを、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、発行ユニットを第一減速作動ステージに移行させた後、ライブロック検知制御ロジックによってライブロック状態が検出され続けるかどうかを判定することができる。発行ユニットを第一減速作動ステージに移行させた後にも、ライブロック検知制御ロジックによってライブロック状態が検出され続ける場合、低速モード制御ロジックは、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数よりも大きな第二処理サイクル数に遅延される、第二減速作動ステージに発行ユニットを移行させることができる。
【0024】
段階的スキームの最後のステージでは、発行ユニットを、発行及び送出パイプラインから一つの命令だけを発行することができ、その命令が完了するまでは発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定することができる。
【0025】
ライブロック状態を検出するための基準は、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、ライブロック検知制御ロジックの中にプログラムすることができる。さらに、段階的スキームの各ステージに対する、命令発行を遅延させる処理の基本サイクル数についても、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、低速モード制御ロジックの中にプログラムすることができる。
【0026】
さらに別の例示的実施形態において、データ処理装置のプロセッサの中に発行ユニットを設けるある方法が提供される。この方法には、例えば、ライブロック検知制御ロジックを設ける工程、該ライブロック検知ロジックに連結された低速モード制御ロジックを設ける工程、及び、ライブロック検知制御ロジックと低速モード制御ロジックとに連結された発行及び送出パイプラインを設ける工程を含めることができる。ライブロック検知制御ロジックは、発行及び送出パイプライン中のライブロック状態を検出することができる。低速モード制御ロジックは、ライブロック検知制御ロジックによってライブロック状態が検出され続けている間は、処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを段階的に抑制することができる。ライブロック状態の解放が検出されたのに応じて、低速モード制御ロジックはデータ処理装置を全速作動モードに戻すことができる。
【0027】
本方法には、発行ユニットと関連付けられたプロセッサの完了ユニットをモニタして、命令がうまく完了されないまま所定のプロセッサ・サイクル数が経過したかどうかを判定する論理を、ライブロック検知ロジックに備える工程をさらに含めることができる。本方法には、完了ユニットの表示から、命令がうまく完了されないまま経過したプロセッサ・サイクル数を数えるカウンタをライブロック検知制御ロジックの中に設ける工程を含めることができる。カウンタが所定の閾値に達するのに応じてライブロック状態を検出することができる。
【0028】
本方法には、低速モード制御ロジックの中に、ライブロック状態がライブロック検知ロジックにより引き続き検出された回数を数えるためのカウンタを設ける工程をさらに含めることができる。低速モード制御ロジックは、該カウンタの数の増加に基づき処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを抑制することができる。
【0029】
また、本方法には、別の基準に基づいて発行及び送出パイプラインを通る命令の動きをシフトするか又は抑制するための、発行ユニットの別の制御ロジックを設ける工程を含めることができる。さらに、本方法には、該別の制御ロジックと低速モード制御ロジックとに連結された論理ゲートを設ける工程を含めることができる。該論理ゲートは、該別の制御ロジックと低速モード制御ロジックとからの、発行及び送出パイプラインを通る命令を抑制するかあるいはシフトするかを示す入力を受信することができる。論理ゲートは、発行及び送出パイプラインを通る命令を抑制するか又はシフトする出力信号を、発行及び送出パイプラインに送信することができる。
【0030】
本方法には、ライブロック検知制御ロジックがライブロック状態を検出するのに応じて段階的スキームに従い発行ユニットを減速動作モードに設定し、発行及び送出パイプラインを通る命令の動きを段階的に抑制する論理を、低速モード制御ロジックに備える工程をさらに含めることができ、該段階的スキームには、処理のサイクル数を変えることによって、発行及び送出パイプラインを通る命令の動きを減速する複数のステージを設定することができる。
【0031】
本方法には、発行ユニットを減速作動モードに設定し、発行及び送出パイプラインを通る命令の動きを第一処理サイクル数まで遅延させる第一減速作動ステージに発行ユニットを移行させる論理を、低速モード制御ロジックに備える工程をさらに含めることができる。該論理は、発行ユニットを第一減速作動ステージに移行させた後、ライブロック検知制御ロジックによってライブロック状態が検出され続けるかどうかを判定し、発行ユニットを第一減速作動ステージに移行させた後も、ライブロック検知制御ロジックによってライブロック状態が検出され続ける場合、発行ユニットを、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数よりも大きな第二処理サイクル数に遅延される、第二減速作動ステージに移行させることができる。
【0032】
段階的スキームの最後のステージでは、発行ユニットを、発行及び送出パイプラインから一つの命令だけを発行することができ、前の命令が完了するまでは発行及び送出パイプラインから他の一切の命令を発行できない、逐次単一ステップ作動モードに設定することができる。ライブロック状態を検出するための基準は、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、ライブロック検知制御ロジックの中にプログラムすることができる。さらに、段階的スキームの各ステージに対する、命令発行を遅延させる処理の基本サイクル数についても、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、低速モード制御ロジックの中にプログラムすることができる。
【0033】
本発明のこれら及び他の特質及び利点は、以下の本発明の典型的な実施形態の詳細な説明に記述され、これを考察すれば当業者には明白となろう。
【0034】
本発明を特徴付けると思われる新規性のある特質は添付の請求項に示されている。しかしながら、以下の例示的実施形態の詳細な説明を添付の図面と関連させて読み、参照することによって、本発明自体並びにその好適な使用モード、それらのさらなる用途及び利点についての最善の理解が得られよう。
【発明を実施するための最良の形態】
【0035】
本発明の例示的実施形態は、ライブロック状態を解放するため、プロセッサを段階的減速作動モードに移行させるシステム及び方法を提供する。これら例示的実施形態は、任意の計算装置の任意のプロセッサに実装することができる。例えば、該例示的実施形態は、任意のサーバ計算装置、クライアント計算装置、通信装置、携帯型計算装置、又は類似の装置に使用することができる。図1〜2は、以降、該例示的実施形態の典型的態様が実行できる分散型データ処理環境及び計算装置の例として用いられる。図1〜2は典型例であり、該例示的実施形態が実行可能な計算装置の種類に関して、いかなる限定も明示又は暗示する意図はされていない。それとは反対に、該例示的実施形態は、究極的にプロセッサが作動しているのならば、特定のマシン又は計算装置に関わらず任意のプロセッサに実装することができる。
【0036】
次に、図を参照すると、図1は、該例示的実施形態の態様が実施可能な典型的分散型データ処理システムの絵図表現を示す。分散型データ処理システム100には、該例示的実施形態の態様を実装可能なコンピュータのネットワークを含めることができる。分散型データ処理システム100は、少なくとも一つのネットワーク102を包含し、該ネットワークは、分散型データ処理システム100内に一緒につながれたさまざまな装置及びコンピュータの間に通信リンクを提供するため使われる媒体である。ネットワーク102には、有線、無線通信リンク、又は光ファイバー・ケーブルなどの通信路を含めることができる。
【0037】
示された例において、サーバ104及びサーバ106は、記憶装置108と共にネットワーク102につながれている。さらに、クライアント110、112、及び114もネットワーク102に結合されている。これらクライアント110、112、及び114は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどとすることができる。示された例において、サーバ104は、クライアント110、112、及び114のための起動ファイル、オペレーティング・システム・イメージ、及びアプリケーションなどのデータを備えている。示された例では、クライアント110、112、及び114はサーバ104のクライアントである。分散型データ処理システム100には、図示されていないさらなるサーバ、クライアント、及び他の装置を含めることができる。
【0038】
示された例において、分散型データ処理システム100は、相互に通信するため、通信制御プロトコル/インターネット・プロトコル(TCP/IP)など一式のプロトコルを用いるネットワーク及びゲートウェイの世界的集合体を表すネットワーク102を使うインターネットである。インターネットの中心には、データ及びメッセージを送信する何千もの商業、行政、教育、及び他のコンピュータ・システムから成る、主要ノード又はホスト・コンピュータ間の高速データ通信の基幹回線がある。当然、該分散型データ処理システム100は、例えば、イントラネット、ローカルエリア・ネットワーク(LAN)、広域ネットワーク(WAN)などの異なった多種類のネットワークを含めて実施することができる。前述したように、図1は例示を意図したものであり、本発明のいろいろな実施形態に対するアーキテクチャ上の限定を意味するものでなく、従って、図1に示される特定の要素については、本発明の例示的実施形態が実施可能な環境に関する限定をしていると見なすべきではない。
【0039】
次に、図2を参照すると、該例示的実施形態の態様が実装可能な典型的データ処理システムのブロック図が示されている。データ処理システム200は、本発明の例示的実施形態の処理を実行する、コンピュータ使用可能なコード又は命令を配置することが可能な、図1のサーバ104又はクライアント110などのコンピュータの例である。
【0040】
示された例において、データ処理システム200は、ノース・ブリッジ及びメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジ及び入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを用いている。処理ユニット206、主メモリ208、及びグラフィックス・プロセッサ210は、NB/MCH202に接続されている。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(AGP)を介してNB/MCH202に接続することができる。
【0041】
示された例において、ローカル・エリア・ネットワーク(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)とすることができる。
【0042】
HDD226及びCD−ROM230は、バス240を介してSB/ICH204につながれている。HDD226及びCD−ROM230に対しては、例えば、統合ドライブ接続方式(IDE)又はシリアル・アタ(SATA)インタフェースを使うことができる。スーパーI/O(SIO)装置236をSB/ICH204につなぐことができる。
【0043】
オペレーティング・システムにより処理ユニット206を駆動する。オペレーティング・システムは、図2のデータ処理システム200内の各種構成要素を調整し、制御を行う。クライアントのオペレーティング・システムは、Microsoft(R)Windows(R)XPなど、市販のオペレーティング・システムとすることができる(Microsoft及びWindowsは、米国内、他の国々又はその双方におけるMicrosoft Corporationの商標である)。Java(商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムを、オペレーティング・システムに関連させて作動させ、データ処理システム200で実行されているJava(商標)プログラム又はアプリケーションから、オペレーティング・システムに対する呼び出しを提供することができる(Javaは、米国内、他の国々又はその双方におけるSun Microsystems,Inc.の商標である)。
【0044】
サーバのデータ処理システム200は、例えば、エーアイエックス(AIX(R))オペレーティング・システム又はLINUX(R)オペレーティング・システムで作動するIBM(R)のeServer(商標)pSeriesコンピュータ・システムとすることができる(eServer、pSeries及びAIXは、米国内、他の国々又はその双方におけるInternational Business Machine Corporationの商標であり、LINUXは、米国内、他の国々又はその双方におけるLinus Torvaldsの商標である)。データ処理システム200は、処理ユニット206中に複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムとすることができる。あるいは、単一プロセッサ・システムを用いることもできよう。
【0045】
これらオペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション類又はプログラム類に対する命令は、HDD226などの記憶装置に格納しておき、主メモリ208にロードして処理ユニット206に実行させることができる。本発明の例示的実施形態の処理は、コンピュータ使用可能なプログラム・コードを使い処理ユニット206が実施することができ、該プログラム・コードは、例えば、主メモリ208、ROM224、又は、例えば一つ以上の周辺装置226及び230などに格納しておくことができる。
【0046】
図2に示されたバス238又はバス240などのバス・システムには一つ以上のバスを含めることができる。当然ながら、通信ファブリック又はアーキテクチャに付属する各種校正要素又は装置の間でデータの転送ができる任意の種類のファブリック又はアーキテクチャを用いてバス・システムを実装することができる。図2のモデム222又はネットワーク・アダプタ212などの通信ユニットには、データを送信及び受信するため使う一つ以上の装置を含めることができる。メモリは、例えば主メモリ208、ROM224、又は、図2のNB/MCH202中に含まれているキャッシュとすることができる。
【0047】
当業者は、図1〜2中のハードウエアは、実装内容によって変更可能なことを十分理解していよう。図1〜2に示したハードウエアに加えて、又はその代わりに、フラッシュ・メモリ、同等な不揮発性メモリ、又は光ディスクなどといった、他の内部又は周辺装置を使うことができる。また、これら例示的実施形態による処理過程を、本発明の精神及び範囲から逸脱することなく、前述したSMPシステム以外のマルチプロセッサ・データ処理システムに適用することができる。
【0048】
さらに、データ処理システム200は、クライアント計算装置、サーバ計算装置、タブレット・コンピュータ、ノート型コンピュータ、電話又は他の通信装置、携帯端末(PDA)などを含め、数多くのデータ処理システムの任意の形態を取ることができる。いくつかの実施例において、データ処理システム200は、例えば、オペレーティング・システム・ファイル又はユーザ作成データあるいはその両方を格納するための不揮発性メモリを備えたフラッシュ・メモリから成る携帯型計算装置とすることができる。基本的には、データ処理システム200は、アーキテクチャ上の限定なく既存のあるいは今後開発される任意のデータ処理システムとすることができる。
【0049】
図3は、一つの例示的実施形態によるプロセッサのパイプラインを示す典型図である。図3に示されるように、プロセッサ300は、フェッチ・アドレス・マルチプレクサ304、フェッチ・ユニット310、復号ユニット320、発行ユニット330、実行ユニット340、完了ユニット350、及び分岐ユニット360から成るプロセッサ・パイプラインを含む。プロセッサ300は、例えば図2に示されたような、メモリ・サブシステム370、ホスト・バス380、バス制御ユニット390、主メモリ・ユニット392、及び、他のプロセッサ及び外部装置394に連結される。
【0050】
前記の諸要素の配置において、通常、ライブロック状態は、プロセッサ中の同一命令の組が、どの命令をも完了させることなく実際上の進行は一切なくして、繰り返して何回も、フェッチ・アドレス・マルチプレクサ304から、フェッチ・ユニット310、復号ユニット320、発行ユニット330、完了ユニット350と流れ、フラッシュ・アドレス・パス323を介してフェッチ・アドレス・マルチプレクサ304に戻る状態として表すことができる。前述したように、こういったライブロック状態の根本原因の一つは、一つのプロセッサ・ユニットと別のプロセッサ・ユニットとの間の「同調的」固定サイクル相互作用であり、命令は、繰り返しフラッシュ及び再フェッチされ、ないしは発行ユニット330の発行待ち行列から繰り返し再発行され、リソース満杯又は使用中状態で発生する、解放のできない繰り返しのフラッシュ状態のため何時までも完遂されない。
【0051】
これらの例示的実施形態は、ライブロック状態の検出に応じて、発行ユニット330による命令の発行を段階的に抑制するメカニズムを提供する。一つの例示的実施形態において、発行ユニット330には、ライブロック状態検出の複数のステージが、関連するライブロック状態取扱い論理と共に設けられている。該関連ライブロック状態取扱い論理は、いくつかの相異なる処置を用いてライブロック状態の解放を試みる。複数ステージ中の引き続く各ステージは、ライブロック状態の厳しさの増大に関連付けられている。早期段階のステージは単なる数プロセッサ・サイクルのライブロック・ウィンドウに関連付けられており、後段階のステージは、もっと長期のライブロック・ウィンドウに関連付けられている。各ステージごとに、プロセッサのパフォーマンスは段階的に低下するが、ライブロック状態が解放される可能性は増大する。
【0052】
一つの例示的実施形態において、低速モード制御ロジックがプロセッサ・パイプラインの発行ユニット330中に設けられる。該低速モード制御ロジックは、ライブロック(ないしハング)検知制御ロジックと連結され、後者のロジックは、所定の基準、例えば、特定の命令のフラッシュの回数又は命令が完了せずに再発行された回数などに基いてライブロック状態を検出する役割を有する。ライブロック状態の検出に応じて、ハング検知制御ロジックは、低速モード制御ロジックに対しライブロック状態が存在することを示す信号をアサートする。低速モード制御ロジックは、発行ユニット330からの命令の発行を抑制することによって、プロセッサ300の段階的な減速を開始する。
【0053】
この段階的減速操作によれば、低速モード制御ロジックはプロセッサ・パイプラインを通る命令の流れを抑制する信号を出力する。この出力信号は、ORゲートを介するなどして、データ依存性制御ロジックなど、発行ユニット330の別の制御ロジックからの出力信号と論理的に組み合わされる。しかして、低速モード制御ロジック又は該別の制御ロジックのいずれかが、発行ユニット330の発行及び送出パイプラインを通る命令の動きを抑制する信号を出力すれば、命令は抑制される。このような信号がアサートされない場合は、命令は、通常のやり方で発行ユニット330の発行及び送出パイプラインを通って流れることができる。
【0054】
低速モード制御ロジックは、低速モード制御ロジック内にハード配線あるいはプログラムされた、段階処理スキームに従って、命令の流れを抑制する信号を出力する。例えば、ハング検知制御ロジックが、ライブロック(ないしハング)状態、すなわち、命令が完遂されることなく、フラッシュ回数がXとなったことを(このXは、ハードウエアの妥当性確認の後でプログラムすることができる)検出したとき、低速モード制御ロジックは、Nプロセッサ・サイクルごとにだけ(このNは、ハードウエアの妥当性確認の後でプログラムすることができる)発行ユニット330によって命令が発行されるように、発行ユニット330を減速させることができる。発行ユニット330の減速は、発行ユニット330を通る命令の動きを抑制する信号をアサートすることにより行うことができる。この信号は、例えばNサイクルなどあらかじめ定めたサイクル数に基き、Nプロセッサ・サイクルごとに一つだけの命令を発行するようにアサートすることができる。
【0055】
同様なライブロック状態が引き続き検出されるごとに、発行ユニット330を抑制するサイクル数を増加させることができる。言い換えれば、命令の再発行として、ライブロック状態が引き続き検出されるごとに、発行ユニットを抑制するサイクル数を増加させることができる。ライブロック状態が所定の回数検出された場合、プロセッサ300は重度のライブロック状態にあると判定される。このような場合、発行ユニット330には、一つの命令だけを発行することができ、前の命令が完了するまでは他の一切の命令を発行できない、逐次単一ステップ・モードを強制することができる。
【0056】
発行ユニット330が、発行ユニット330中の発行及び送出パイプラインの中の全ての命令を排出したときに、プロセッサ300は通常の全速作動モードに戻される。ライブロック状態が検出されなくなれば、その前の段階が段階的スキームのどのステージであっても、プロセッサ300は通常の全速作動モードに戻される。
【0057】
図4は、一つの例示的実施形態による発行ユニットの細部を示す典型図である。図4に示されるように、発行ユニット330は、発行ユニット330の発行及び送出パイプラインを一緒に構成する複数のレジスタ410〜414を包含する。発行ユニット330は、ライブロック(ないしハング)検知制御ロジック420、低速モード制御ロジック430、及び、発行及び送出パイプラインを通る命令の動きを制御するための別の制御ロジック440をさらに含む。低速モード制御ロジック430及び該別の制御ロジック440からの出力はORゲート450に送られ、該ゲートは、レジスタ410〜414に対し抑制/シフト信号を出力し、これらのレジスタに格納された命令を、発行及び送出パイプライン中の次のレジスタにシフトするか(ないしは、命令を実行ユニット340に発行するか)、あるいは命令を一プロセッサ・サイクル抑制する。
【0058】
図4に示されたプロセッサ・パイプラインにおいて、命令フェッチ・アドレスは、マルチプレクサ304によって、プログラム・カウンタ・アドレス321、分岐ユニット360からの分岐アドレス入力322、リセット・アドレス325、完了ユニット350からのフラッシュ・アドレス323、又は完了ユニット350からの割り込みアドレス324のうちの一つから選定される。該フェッチ・アドレスは、メモリから適切な命令をフェッチするフェッチ・ユニット310に送られる。フェッチ・ユニット310は、通常、L1命令キャッシュから命令をフェッチするよう試み、L1命令キャッシュに当該命令がない場合は、フェッチ・ユニット310は、L2メモリ・キャッシュからの命令読み出しを試みることになる。さらにL2メモリ・キャッシュにも当該命令がない場合には、フェッチ・ユニット310は、より低速のシステム・メモリから命令を読み出すことになる。
【0059】
フェッチ・ユニット310が命令をフェッチした後、フェッチ・ユニット310は、該命令を復号ユニット320に送る。復号ユニット320は、特定の命令が何をするのかを判断する役割を有する。復号ユニット320は、各命令について、プロセッサが理解できるマイクロコードを格納している、例えば、読み取り専用メモリ(ROM)などプロセッサ内部に存在するメモリ(図示せず)を参照する。ある命令に対するマイクロコードは、その特定の命令が、例えばプロセッサ300の実行ユニット340のような実行ユニットによってどのように実行されるかについてのステップバイステップのガイドを提示する。例えば、ロードされた命令がa+bの場合、マイクロコードは、復号ユニット320に、2つのパラメータ、aとbとが必要であることを示すことになる。次に、復号ユニット320は、フェッチ・ユニット310に、隣の2つのメモリ位置に在る、aとbとの値に該当するデータを取ってくるよう要求する。復号ユニット320が命令を復号し「翻訳」し、命令実行に必要な全てのデータが得られた後、該データ及び復号された命令は発行ユニット330に送られる。
【0060】
命令及びデータは、発行及び送出パイプラインの第一レジスタ410に入れられ、ライブロック検知制御ロジック420又は別の制御ロジック440によって抑制状態が検知されていなければ、命令及び及びデータは、該命令及びデータが実行ユニット340に発行されるまで、プロセッサ・サイクルごとに一つのレジスタから次のレジスタへと、パイプラインを通って進むことができる。なお、簡明化のため、図4には一つの実行ユニット340しか示していないが、最新のコンピュータは、同種類又は異種の複数の実行ユニットを備えている。しかして、実行ユニット340は、例えば、整数型、不動小数点型などの同種類又は異種の一つ以上の実行ユニットを表す意味を持つ。
【0061】
ライブロック検知制御ロジック420は、完了ユニット350をモニタし、命令がうまく完了せずに所定のプロセッサ・サイクル数が経過したかどうかを判定する。すなわち、実行ユニット340は、実行ユニット340が実施した命令の処理に基いて、完了ユニット350に対し、例外事象が発生しているか、発行及び送出パイプラインのフラッシュをすべきかどうか、あるいは、命令が完遂、すなわちうまく完了したかどうかを連絡する。これにより、完了ユニット350はその情報を発行ユニット330に伝達することができる。
【0062】
ライブロック検知制御ロジック420には、完了ユニット350によって完遂される命令と命令との間にどの位の数のプロセッサ・サイクルか経過しているかのカウントを維持するためのカウンタ422又は他のロジックを含めることができる。このカウンタ422又は他のロジックは、例えば、発行ユニット330の発行及び送出パイプラインがフラッシュされ、発行及び送出パイプラインに命令が再発行されるごとに、カウント数を増やすことができる。命令の完遂によるリセットが行われず、カウンタ422又は他のロジックが所定のフラッシュ回数閾値Xに達した場合、ライブロック検知制御ロジック420は、低速モード制御ロジック430に対し、低速モード制御ロジック430がプロセッサ300の減速制御の次の状態に移行すべきことを示す低速モード信号をアサートする。例えば、前記のカウンタの値がカウント閾値に達した場合、低速モード制御ロジック430中のカウンタ432の数を増し、対応する抑制信号をORゲート450にアサートすることができる。
【0063】
抑制信号は、発行及び送出パイプライン、すなわちレジスタ410〜414を通る命令の流れを一プロセッサ・サイクル抑制する。低速モード制御ロジック430は、(カウンタ値)×Nのプロセッサ・サイクル数閾値に至るまで、連続でプロセッサ・サイクルを抑制する命令をアサートし続けることができ、このNは、プロセッサ・サイクルを抑制するための基本閾値数である。しかして、例えばNが4の場合、低速モード制御ロジック430に対し低速モード信号が初回にアサートされたとき、低速モード制御ロジック430は、4プロセッサ・サイクルの間信号を抑制し、その後、発行ユニット330からの命令の発行を許す、すなわち、発行ユニット330から一つの命令が発行されている間だけ、発行及び送出パイプライン中のレジスタからレジスタ410〜414への命令の移動を可能にさせる。次の命令は、発行可能になる前に4プロセッサ・サイクル待たなければならない。該プロセッサ・サイクル抑制の基本閾値数Nについては、例えば、ハードウエアの妥当性確認の後で、低速モード制御ロジック430の中にプログラムすればよい。
【0064】
このように、発行及び送出パイプラインは、Nプロセッサ・サイクル数ごとに発行ユニット330から一つの命令だけの発行が可能なように減速される。ライブロック検知制御ロジック420が、命令が完遂され命令の間のフラッシュ回数が閾値内かどうかをモニタし続けることによって、このプロセスを繰り返すことができる。
【0065】
減速モード信号をアサートした後、ライブロック検知制御ロジック420は、そのカウンタを初期値に戻してリセットし、完遂された命令と命令との間の、発行及び送出パイプラインのフラッシュの回数のカウントを開始する。ライブロック検知制御ロジック420中のカウンタ422がフラッシュ閾値回数Xに達した都度、ライブロック検知制御ロジック420は、低速モード制御ロジック430に対し減速モード信号をアサートする。低速モード制御ロジック430中のカウンタ433は、増分され、この新しいカウンタ値を使って、低速モード制御ロジック430は、(カウンタ値)×Nのプロセッサ・サイクルの間発行及び送出パイプラインを通る命令の動きを抑制する。
【0066】
前記のN値の例、すなわち4プロセッサ・サイクルを例に取れば、ライブロック状態が、ライブロック検知制御ロジック420によって、最初に検出されたときは、レジスタ410〜414で構成される発行及び送出パイプライン中の命令は、4プロセッサ・サイクルの間抑制される。その後、以降のライブロック検出については、4プロセッサ・サイクルの倍数、例えば8、12、及び16プロセッサ・サイクルの間、命令が抑制される。
【0067】
カウンタ432の値があらかじめ定めた重度ライブロック状態閾値に達したならば、低速モード制御ロジック430は、発行及び送出パイプラインを逐次単一ステップ作動モードに移行させる。この逐次単一ステップ作動モードは、周知の単一ステップ動作モードと同様であり、うまくが完了するまでは一つの命令だけの発行が許される。発行及び送出パイプライン中の全ての命令の発行が完了すれば、発行ユニット330は、全速作動モードに戻ることが許され、再度ライブロック状態が検出されるまでは、命令が発行及び送出パイプラインを通り流れることが可能となる。同様に、各減速ステージ、すなわち減速モード信号のアサーション後の各減速において、一つの命令が完了されずにX回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てが排出されたならば、発行ユニット330は、全速モードに戻ることができる。
【0068】
図5には、より厳しいライブロック状態が検出された際に、低速モード制御ロジック430がその処理に適用するさまざまな減速ステージの要点が記載されている。なお、前述の例示的実施形態では、処理された命令と命令との間のフラッシュの回数に対する特定の倍数が使われ、発行及び送出パイプライン中の命令を抑止するプロセッサ・サイクル数に対する特定の倍数が使われているが、本発明は、こういった倍数には限定されるものでない。それと反対に、本発明の精神及び範囲から逸脱することなく、処理された命令と命令との間のフラッシュ回数、又は各ステージにおける抑制プロセッサ・サイクル数には任意の値を使用することができる。ちなみに、一部の実施形態においては、これらの値は、相乗する倍数などでなく、ライブロック検知制御ロジック420又は低速モード制御ロジック430あるいはその両方の中にプログラムされた特定の値とすることができる。
【0069】
図5は、一つの例示的実施形態による、ライブロック状態検出及び減速メカニズムの操作に対する段階的処理を示す典型図である。図5に示されるように、通常は、プロセッサ、従って該プロセッサの発行ユニットは、全速作動モード510で作動する。最初のライブロック状態、すなわち一つの命令が完遂されずX回のフラッシュ発生が検出されたとき、プロセッサは、プロセッサ減速ステージ1(520)に移行することになる。プロセッサ減速ステージ1(520)では、発行ユニットは、Nサイクルごとに一つの命令だけを発行することになる。
【0070】
発行ユニットが、一命令が完了されずにX回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード510に戻る。さもなければ、プロセッサは、プロセッサ減速ステージ2(530)に移行し、該ステージでは、発行ユニット発行ユニットは2Nサイクルごとに一つの命令を発行することになる。
【0071】
プロセッサ減速ステージ2(530)において、発行ユニットが、一命令が完了されずにX回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード510に戻る。さもなければ、プロセッサは、プロセッサ減速ステージ3(540)に移行し、該ステージでは、発行ユニットは4Nサイクルごとに一つの命令だけを発行する。発行ユニットが、一命令が完了されずにX回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード510に戻る。
【0072】
一つの命令が完了されずにX回のフラッシュがなお生ずるといった状態に遭遇した場合、プロセッサは重度のライブロック状態にあると判定され、プロセッサ減速ステージ4(550)に移行する。プロセッサ減速ステージ4(550)においては、発行ユニットは、完了するまでは一つの命令だけを発行する、逐次単一ステップ・モードを強制される。発行ユニットが、発行及び送出パイプラインの中の全ての命令を排出すれば、そのとき、プロセッサは全速作動モード510に戻る。
【0073】
例示的実施形態の操作の例として、前記発明の背景で説明した図6A及び6Bに示されたシナリオを再考察してみる。プログラムの実行中にこの状況が頻繁に発生し、発行及び送出パイプライン中に12ヶの命令があると仮定する。ライブロック・ウィンドウが4プロセッサ・サイクルだけの場合、第三のsprへの移動命令、mt sprC R1が、第二のsprへの移動命令、mt sprE R7の後、4サイクル以内に発行された場合に、ライブロック状態が発生することになる。各々の命令を完了するのに10プロセッサ・サイクルを要するとすれば、プロセッサが全速モードから逐次単一ステップモードに移行した場合、発行及び送出パイプラインから全ての命令を排出するのに約120サイクルを要することになる。
【0074】
しかしながら、本明細書に記載された例示的実施形態であれば、プロセッサ減速ステージ1(520)においてNが4に設定されている場合、全命令を排出するのに60プロセッサ・サイクルより短くすることができる。しかして、該例示的実施形態では、逐次単一ステップ作動モードに直ちに移行させる既存のメカニズムに比較して、プロセッサのパフォーマンスが倍になる。この種のライブロック状態がプログラムで頻繁に発生する場合、該例示的実施形態は、プロセッサの全体的パフォーマンスに対するライブロック状態の影響を大幅に軽減する。
【0075】
図7は、一つの例示的実施形態による、ライブロック状態を検出し、プロセッサ・パイプラインの作動を減速する典型的な操作の概要を示すフローチャートである。図7に概要が示された操作は、例えば、前記の図3及び4の発行ユニット330などの、プロセッサの発行ユニット内で実施できる。しかして、図7に示されたさまざまな操作は、プロセッサのハードウエアの中に実装することができる。該プロセッサは、単一プロセッサ・システムのプロセッサであっても、複数プロセッサ・システムのものであってもよい。一つの例示的実施形態において、該プロセッサを、マイクロプロセッサ又はシステム・オン・チップの一部とすることができる。このマイクロプロセッサ又はシステム・オン・チップには、同一の又は異なる命令の組によって作動する複数のプロセッサを含めることができる。例えば、該マイクロプロセッサ又はシステム・オン・チップは、一部のプロセッサが例えばRISC命令の組など第一命令セットを使って作動し、他のプロセッサが例えばベクトル命令の組など第二命令セットを使って作動する、異種デバイスとすることができる。プロセッサが実装される装置の種類及び構成は、こういった記述内容に、又は本発明の精神及び範囲からしても限定されるものではない。
【0076】
図7に示されるように、この操作は、全速作動モードで稼動しているプロセッサすなわちその発行ユニットから始まる(ステップ710)。発行ユニットはライブロック状態が検出されたかどうかを判断する(ステップ720)。検出されなければ、作動はステップ710に戻り、プロセッサ及び発行ユニットは全速稼動を続ける。例えば図4のライブロック検知制御ロジック420の判定により、ライブロック状態が検出された場合、プロセッサ及び発行ユニットは、命令がNプロセッサ・サイクルごとにだけ発行されるプロセッサ減速ステージ1に移行する(ステップ730)。図7に示されるように、ライブロック状態が存在するという判定については、例えば、ライブロック検知制御ロジック420が、命令が完遂されずにフラッシュがX回発生したのを検出するかどうかに基いて行うことができる。
【0077】
その後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する(ステップ740)。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる(ステップ710)。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、2Nプロセッサ・サイクルごとに一つの命令が発行されるプロセッサ減速ステージ2に移行する(ステップ750)。図示するように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック420が、命令が完遂されずにフラッシュが2X回発生したのを検出するかどうかに基いて行うことができる。
【0078】
前記の後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する(ステップ760)。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる(ステップ710)。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、4Nプロセッサ・サイクルごとに一つの命令が発行されるプロセッサ減速ステージ3に移行する(ステップ770)。図示のように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック420が、命令が完遂されずにフラッシュが3X回発生したのを検出するかどうかに基いて行うことができる。
【0079】
前記の後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する(ステップ780)。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる(ステップ710)。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、発行ユニットが、従来技術で周知のような逐次単一ステップ作動モードに置かれる、プロセッサ減速ステージ4に移行する(ステップ790)。図示のように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック420が、命令が完遂されずにフラッシュが4X回発生したのを検出するかどうかに基いて行うことができる。
【0080】
前記の後、ライブロック状態は、従来技術で周知のように、逐次単一ステップ作動モードを使って解放される。しかる後、プロセッサ及び発行ユニットは全速作動モードに戻される(ステップ710)。この操作は、プロセッサが作動している間中継続し、プロセッサがオフラインにされたとき終了することができる。
【0081】
しかして、これらの例示的実施形態は、プロセッサ中における命令の発行を減速するための段階的減速メカニズムを備えることによって、ライブロック状態を解放するメカニズムを提供する。ライブロック状態の発生を検出するためライブロック検知制御ロジックが設けられ、プロセッサの発行ユニットを、段階的スキームの一つの減速ステージから次のステージへ移行させる低速モード制御ロジックが設けられる。段階的減速処理スキームのどのステージにおいても、ライブロック状態が検出されなくなれば、プロセッサ及び発行ユニットは、全速作動モードに戻り移行することができる。このように、逐次単一ステップ作動モードに直ちには移行させないことにより、より高いプロセッサ・パフォーマンスを得ることができる。
【0082】
前述したプロセッサ回路を集積回路チップの設計の一部とすることができる。該チップ設計を図形処理コンピュータ・プログラミング言語で生成し、(例えば、ディスク、テープ、物理ハード・ドライブ、又は格納アクセス・ネットワーク中などの仮想ハード・ドライブといった)コンピュータ記憶媒体に格納することができる。設計者が、チップ又はそのフォトリソグラフィ・マスクを作製しない場合、該設計者は、生成した設計を(例えば、設計を格納した記憶媒体のコピーを提供するなど)物理的手段で、又は(例えば、インターネットを介するなど)電子的に、直接に又は間接的に作製事業体に伝えることができる。格納された設計は、フォトリソグラフィ・マスクの作製のため適切なフォーマット(例、GDSII)に変換することができ、通常、これはウエハ上に形成される、対象となるチップ設計の複数のコピーを含む。該フォトリソグラフィ・マスクは、エッチング又は他の処理を行うウエハ(又はその上の層、あるいはその両方)の区域を規定するため使用される。
【0083】
作製者は、得られた集積回路チップを、未加工ウエハの形(すなわち、未パッケージの複数のチップを有する単一のウエハ)で、ベア・ダイとして、あるいはパッケージされた形で頒布することができる。後者の場合、チップは、単一チップ・パッケージ(マザーボード又はより高レベルの担体に取り付けるための、リードを有するプラスチック担体など)に、又は複数チップ・パッケージ(片面又は両面配線、又は内蔵配線を有するセラミック担体など)に搭載することができる。いずれの場合においても、チップは、次いで、(a)マザーボードなどの中間製品、もしくは(b)最終製品の一部として、他のチップ、ディスクリート回路素子又は他の信号処理素子あるいはその両方と一体にされる。この最終製品は、玩具及び他のローエンドのアプリケーションから、ディスプレイ、キーボード又は他の入力装置、及び中央プロセッサを有する高度なコンピュータ製品までに亘る、集積回路チップを包含した任意の製品とすることができる。さらに、集積回路チップの設置が可能なこういった最終製品には、ゲーム・マシン、ゲーム・コンソール、携帯型計算装置、携帯端末、無線電話などの通信装置、ノート型計算装置、デスクトップ計算装置、サーバ計算装置、又は他の任意の計算装置を含めることができよう。
【0084】
なお、本発明を、完全な機能を有するデータ処理システムに関連させて説明してきたが、当業者は、本発明のプロセスをコンピュータ可読の命令媒体の形、及びさまざまな他の形で頒布することが可能であり、頒布を行うため実際に使用される信号担持媒体の特定の種類に関わらず、それらを同様に本発明の頒布に利用できることを十分に理解していよう。コンピュータ可読媒体の例には、フレキシブル・ディスク、ハード・ディスク・ドライブ、RAM、CD−ROM、DVD−ROMといった記録可能なタイプの媒体、及び、デジタル及びアナログ通信リンク、例えば無線周波数及び光波通信などの通信方式を使う有線及び無線通信リンクといった通信タイプの媒体が含まれる。コンピュータ可読の媒体には、符号化されたフォーマット形式を用い、特定のデータ処理システムで実際に使うにあたってこれを復号することができる。
【0085】
本発明の記載内容は、例示及び説明を目的として提示されたものであり、本発明を全網羅したり、開示した形態に限定することを意図したものではない。当業者には、多くの変更及び変形が可能なことは自明であろう。本明細書の実施形態は、本発明の原理、実際の応用を最善に説明し、他の当業者が本発明を理解して、意図する特定の用途に適したさまざまな変更を加えた多様な実施形態を作製可能にするために、選択され記述されたものである。
【図面の簡単な説明】
【0086】
【図1】例示する実施形態の態様が実施可能な、分散型データ処理システムの典型図を示す。
【図2】例示する実施形態の態様が実施可能な、データ処理装置の典型的なブロック図を示す。
【図3】一つの例示的実施形態によるプロセッサのパイプラインを図示する典型図を示す。
【図4】一つの例示的実施形態による発行ユニットの細部を図示する典型図を示す。
【図5】一つの例示的実施形態による、ライブロック状態の検出及び減速メカニズム操作の段階的スキームを図示する典型図を示す。
【図6】図6Aは、SMT、及び一つおきサイクルで各スレッドから2つの命令が発行されるデュアル命令発行プロセッサ・パイプラインの設計を示す。図6Bは、図6Aに示されたプロセッサ・パイプラインで実行されたとき、両方のスレッドに、プロセッサの専用レジスタへのアクセスを起こさせる典型的なユーザ・コードを示す。
【図7】一つの例示的実施形態による、ライブロック状態を検出して、プロセッサ・パイプラインの作動を減速する典型的な操作の要点を説明するフローチャートを示す。

【特許請求の範囲】
【請求項1】
ライブロック検知制御ロジックと、
前記ライブロック検知ロジックに連結された低速モード制御ロジックと、
前記ライブロック検知制御ロジック及び低速モード制御ロジックに連結された発行及び送出パイプラインと、
を含む発行ユニットであって、
前記ライブロック検知制御ロジックは、前記発行及び送出パイプライン中のライブロック状態を検出し、前記低速モード制御ロジックは、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける間は、処理のサイクル数を増大させて、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記低速モード制御ロジックは、前記ライブロック状態が解放されたのが検出されるのに応じてデータ処理装置を全速作動モードに戻す、
発行ユニット。
【請求項2】
前記ライブロック検知ロジックは、前記発行ユニットに関連付けられた、プロセッサの完了ユニットをモニタし、命令がうまく完了されずに所定のプロセッサ・サイクル数が経過したかどうかを判定する、請求項1に記載の発行ユニット。
【請求項3】
前記ライブロック検知ロジックは、前記完了ユニットの表示から、命令がうまく完了されずに経過したプロセッサ・サイクル数を数えるカウンタを含み、前記カウンタが所定の閾値に達するのに応じてライブロック状態が検出される、請求項2に記載の発行ユニット。
【請求項4】
前記低速モード制御ロジックは、前記ライブロック検知ロジックによって前記ライブロック状態が引き続き検出された回数を数えるためのカウンタを含み、前記低速モード制御ロジックは、前記カウンタの数の増加に基づいて、処理のサイクル数を増大させ前記発行及び送出パイプラインを通る命令の動きを抑制する、請求項1、2、又は3に記載の発行ユニット。
【請求項5】
別の基準に基づき、前記発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための前記発行ユニットの他の制御ロジックと、
前記他の制御ロジック及び前記低速モード制御ロジックに連結された論理ゲートと、
をさらに含み、前記論理ゲートは、前記別の制御ロジックと前記低速モード制御ロジックとからの、前記発行及び送出パイプラインを通る命令を抑制するかあるいはシフトするかを示す入力を受信し、前記論理ゲートは、前記発行及び送出パイプラインに対し、前記発行及び送出パイプラインを通る命令を抑制するかあるいはシフトする出力信号を送る、
請求項1、2、3又は4に記載の発行ユニット。
【請求項6】
前記低速モード制御ロジックは、
前記ライブロック検知制御ロジックが前記ライブロック状態を検出するのに応じて、段階的スキームに従い前記発行ユニットを減速動作モードに設定することによって、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記段階的スキームは、処理のサイクル数を変えることによって、前記発行及び送出パイプラインを通る命令の動きを減速する複数のステージを有する、
請求項1から5のいずれかに記載の発行ユニット。
【請求項7】
前記低速モード制御ロジックは、
前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、
前記発行ユニットを前記第一減速作動ステージに移行させた後に、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けるかどうかを判定し、
前記発行ユニットを前記第一減速作動ステージに移行させた後にも、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける場合、前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが前記第一処理サイクル数よりも大きな第二処理サイクル数に遅延される第二減速作動ステージに移行させる、
ことによって、前記発行ユニットを減速作動モードに設定する、請求項6に記載の発行ユニット。
【請求項8】
前記段階的スキームの最後のステージは、前記発行ユニットを、前記発行及び送出パイプラインから一つの命令だけを発行することができ、前記命令が完了するまでは前記発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定する、請求項6又は7に記載の発行ユニット。
【請求項9】
前記ライブロック状態を検出する基準は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記ライブロック検知制御ロジックの中にプログラムされる、請求項1から8のいずれかに記載の発行ユニット。
【請求項10】
前記段階的スキームの各ステージに対する、命令発行を遅延させる基本処理サイクル数は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記低速モード制御ロジックの中にプログラムされる、請求項6に記載の発行ユニット。
【請求項11】
データ処理装置のプロセッサ中に発行ユニットを設ける方法であって、
ライブロック検知制御ロジックを設ける工程と、
前記ライブロック検知ロジックに連結された低速モード制御ロジックを設ける工程と、
前記ライブロック検知制御ロジックと低速モード制御ロジックとに連結された発行及び送出パイプラインを設ける工程と、
を含み、
前記ライブロック検知制御ロジックは、前記発行及び送出パイプライン中のライブロック状態を検出し、前記低速モード制御ロジックは、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けている間は、処理のサイクル数を増加させて、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記ライブロック状態の解放が検出されたのに応じて、前記低速モード制御ロジックは、前記データ処理装置を全速作動モードに戻す、
方法。
【請求項12】
前記ライブロック検知ロジックに、前記発行ユニットと関連付けられたプロセッサの完了ユニットをモニタして、命令がうまく完了されないまま所定のプロセッサ・サイクル数が経過したかどうかを判定する論理を備える工程を、
さらに含む、請求項11に記載の方法。
【請求項13】
前記ライブロック検知ロジックの中に、前記完了ユニットの表示から、命令がうまく完了されないまま経過したプロセッサ・サイクル数を数えるためのカウンタを設ける工程をさらに含み、前記カウンタが所定の閾値に達するのに応じてライブロック状態が検出される、
請求項12に記載の方法。
【請求項14】
前記低速モード制御ロジックの中に、前記ライブロック状態が前記ライブロック検知ロジックによって引き続き検出された回数を数えるためのカウンタを設ける工程をさらに含み、前記低速モード制御ロジックは、前記カウンタの数の増加に基いて、処理のサイクル数を増大させ、前記発行及び送出パイプラインを通る命令の動きが抑制される、
請求項11、12、又は13に記載の方法。
【請求項15】
別の基準に基づいて前記発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための、前記発行ユニットの別の制御ロジックを設ける工程と、
前記別の制御ロジックと前記低速モード制御ロジックとに連結された論理ゲートを設ける工程とを、
さらに含み、
前記論理ゲートは、前記別の制御ロジックと前記低速モード制御ロジックとからの、前記発行及び送出パイプラインを通る命令を抑制するか又はシフトするかどうかを示す入力を受信し、さらに、前記論理ゲートは、前記発行及び送出パイプラインを通る命令を抑制あるいはシフトする出力信号を、前記発行及び送出パイプラインに送信する、
請求項11から14のいずれかに記載の方法。
【請求項16】
前記低速モード制御ロジックに、
前記ライブロック検知制御ロジックが前記ライブロック状態を検出するのに応じ、段階的スキームに従って前記発行ユニットを減速作動モードに設定することによって、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制する論理を備える工程をさらに含み、
前記段階的スキームは、処理のサイクル数を変えることによって、前記発行及び送出パイプラインを通る命令の動きを減速する複数のステージを有する、
請求項11から15のいずれかに記載の方法。
【請求項17】
前記低速モード制御ロジックに、
前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、
前記発行ユニットを前記第一減速作動ステージに移行させた後に、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けるかどうかを判定し、
前記発行ユニットを前記第一減速作動ステージに移行させた後にも、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける場合、前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが前記第一処理サイクル数よりも大きな第二処理サイクル数に遅延される第二減速作動ステージに移行させる、
ことによって前記発行ユニットを減速作動モードに設定する論理を備える工程を、
さらに含む、請求項16に記載の方法。
【請求項18】
前記段階的スキームの最後のステージは、前記発行ユニットを、前記発行及び送出パイプラインから一つの命令だけを発行することができ、前記命令が完了するまでは前記発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定する、請求項16に記載の方法。
【請求項19】
前記ライブロック状態を検出する基準は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記ライブロック検知制御ロジックの中にプログラムされる、請求項11から18のいずれかに記載の方法。
【請求項20】
前記段階的スキームの各ステージに対する、命令発行を遅延させる基本処理サイクル数は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記低速モード制御ロジック中にプログラムされる、請求項16に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2009−533738(P2009−533738A)
【公表日】平成21年9月17日(2009.9.17)
【国際特許分類】
【出願番号】特願2009−504675(P2009−504675)
【出願日】平成19年3月27日(2007.3.27)
【国際出願番号】PCT/EP2007/052903
【国際公開番号】WO2007/118769
【国際公開日】平成19年10月25日(2007.10.25)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】