(57)【要約】【課題】プロセッサのライブロック状態の処理効率を向上する。【解決手段】プロセッサを段階的に減速作動モードに移行させる発行ユニットを提供する。該減速作動モードは、プロセッサ内の発行ユニットに対する減速操作の複数のステージを含み、段階的スキームに従って命令の発行が減速される。このプロセッサの段階的減速によってライブロック状態からのプロセッサの解放を可能にする。さらに、減速が段階的に行われるので、プロセッサは、さまざまな程度のライブロック状態をフレキシブルに回避することができる。例示的実施形態のメカニズムは、軽度のライブロック状態は小さなパフォーマンスへの影響で処理し、もっと重度のライブロック状態の場合だけプロセッサのパフォーマンスへの影響を増加させることにより、ライブロック状態の厳しさに基いてプロセッサの全体的パフォーマンスに影響させる。【選択図】図４
2009533738.tif 000002
【特許請求の範囲】
【請求項１】
ライブロック検知制御ロジックと、
前記ライブロック検知ロジックに連結された低速モード制御ロジックと、
前記ライブロック検知制御ロジック及び低速モード制御ロジックに連結された発行及び送出パイプラインと、
を含む発行ユニットであって、
前記ライブロック検知制御ロジックは、前記発行及び送出パイプライン中のライブロック状態を検出し、前記低速モード制御ロジックは、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける間は、処理のサイクル数を増大させて、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記低速モード制御ロジックは、前記ライブロック状態が解放されたのが検出されるのに応じてデータ処理装置を全速作動モードに戻す、
発行ユニット。
【請求項２】
前記ライブロック検知ロジックは、前記発行ユニットに関連付けられた、プロセッサの完了ユニットをモニタし、命令がうまく完了されずに所定のプロセッサ・サイクル数が経過したかどうかを判定する、請求項１に記載の発行ユニット。
【請求項３】
前記ライブロック検知ロジックは、前記完了ユニットの表示から、命令がうまく完了されずに経過したプロセッサ・サイクル数を数えるカウンタを含み、前記カウンタが所定の閾値に達するのに応じてライブロック状態が検出される、請求項２に記載の発行ユニット。
【請求項４】
前記低速モード制御ロジックは、前記ライブロック検知ロジックによって前記ライブロック状態が引き続き検出された回数を数えるためのカウンタを含み、前記低速モード制御ロジックは、前記カウンタの数の増加に基づいて、処理のサイクル数を増大させ前記発行及び送出パイプラインを通る命令の動きを抑制する、請求項１、２、又は３に記載の発行ユニット。
【請求項５】
別の基準に基づき、前記発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための前記発行ユニットの他の制御ロジックと、
前記他の制御ロジック及び前記低速モード制御ロジックに連結された論理ゲートと、
をさらに含み、前記論理ゲートは、前記別の制御ロジックと前記低速モード制御ロジックとからの、前記発行及び送出パイプラインを通る命令を抑制するかあるいはシフトするかを示す入力を受信し、前記論理ゲートは、前記発行及び送出パイプラインに対し、前記発行及び送出パイプラインを通る命令を抑制するかあるいはシフトする出力信号を送る、
請求項１、２、３又は４に記載の発行ユニット。
【請求項６】
前記低速モード制御ロジックは、
前記ライブロック検知制御ロジックが前記ライブロック状態を検出するのに応じて、段階的スキームに従い前記発行ユニットを減速動作モードに設定することによって、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記段階的スキームは、処理のサイクル数を変えることによって、前記発行及び送出パイプラインを通る命令の動きを減速する複数のステージを有する、
請求項１から５のいずれかに記載の発行ユニット。
【請求項７】
前記低速モード制御ロジックは、
前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、
前記発行ユニットを前記第一減速作動ステージに移行させた後に、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けるかどうかを判定し、
前記発行ユニットを前記第一減速作動ステージに移行させた後にも、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける場合、前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが前記第一処理サイクル数よりも大きな第二処理サイクル数に遅延される第二減速作動ステージに移行させる、
ことによって、前記発行ユニットを減速作動モードに設定する、請求項６に記載の発行ユニット。
【請求項８】
前記段階的スキームの最後のステージは、前記発行ユニットを、前記発行及び送出パイプラインから一つの命令だけを発行することができ、前記命令が完了するまでは前記発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定する、請求項６又は７に記載の発行ユニット。
【請求項９】
前記ライブロック状態を検出する基準は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記ライブロック検知制御ロジックの中にプログラムされる、請求項１から８のいずれかに記載の発行ユニット。
【請求項１０】
前記段階的スキームの各ステージに対する、命令発行を遅延させる基本処理サイクル数は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記低速モード制御ロジックの中にプログラムされる、請求項６に記載の発行ユニット。
【請求項１１】
データ処理装置のプロセッサ中に発行ユニットを設ける方法であって、
ライブロック検知制御ロジックを設ける工程と、
前記ライブロック検知ロジックに連結された低速モード制御ロジックを設ける工程と、
前記ライブロック検知制御ロジックと低速モード制御ロジックとに連結された発行及び送出パイプラインを設ける工程と、
を含み、
前記ライブロック検知制御ロジックは、前記発行及び送出パイプライン中のライブロック状態を検出し、前記低速モード制御ロジックは、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けている間は、処理のサイクル数を増加させて、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制し、前記ライブロック状態の解放が検出されたのに応じて、前記低速モード制御ロジックは、前記データ処理装置を全速作動モードに戻す、
方法。
【請求項１２】
前記ライブロック検知ロジックに、前記発行ユニットと関連付けられたプロセッサの完了ユニットをモニタして、命令がうまく完了されないまま所定のプロセッサ・サイクル数が経過したかどうかを判定する論理を備える工程を、
さらに含む、請求項１１に記載の方法。
【請求項１３】
前記ライブロック検知ロジックの中に、前記完了ユニットの表示から、命令がうまく完了されないまま経過したプロセッサ・サイクル数を数えるためのカウンタを設ける工程をさらに含み、前記カウンタが所定の閾値に達するのに応じてライブロック状態が検出される、
請求項１２に記載の方法。
【請求項１４】
前記低速モード制御ロジックの中に、前記ライブロック状態が前記ライブロック検知ロジックによって引き続き検出された回数を数えるためのカウンタを設ける工程をさらに含み、前記低速モード制御ロジックは、前記カウンタの数の増加に基いて、処理のサイクル数を増大させ、前記発行及び送出パイプラインを通る命令の動きが抑制される、
請求項１１、１２、又は１３に記載の方法。
【請求項１５】
別の基準に基づいて前記発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための、前記発行ユニットの別の制御ロジックを設ける工程と、
前記別の制御ロジックと前記低速モード制御ロジックとに連結された論理ゲートを設ける工程とを、
さらに含み、
前記論理ゲートは、前記別の制御ロジックと前記低速モード制御ロジックとからの、前記発行及び送出パイプラインを通る命令を抑制するか又はシフトするかどうかを示す入力を受信し、さらに、前記論理ゲートは、前記発行及び送出パイプラインを通る命令を抑制あるいはシフトする出力信号を、前記発行及び送出パイプラインに送信する、
請求項１１から１４のいずれかに記載の方法。
【請求項１６】
前記低速モード制御ロジックに、
前記ライブロック検知制御ロジックが前記ライブロック状態を検出するのに応じ、段階的スキームに従って前記発行ユニットを減速作動モードに設定することによって、前記発行及び送出パイプラインを通る命令の動きを段階的に抑制する論理を備える工程をさらに含み、
前記段階的スキームは、処理のサイクル数を変えることによって、前記発行及び送出パイプラインを通る命令の動きを減速する複数のステージを有する、
請求項１１から１５のいずれかに記載の方法。
【請求項１７】
前記低速モード制御ロジックに、
前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、
前記発行ユニットを前記第一減速作動ステージに移行させた後に、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続けるかどうかを判定し、
前記発行ユニットを前記第一減速作動ステージに移行させた後にも、前記ライブロック検知制御ロジックによって前記ライブロック状態が検出され続ける場合、前記発行ユニットを、前記発行及び送出パイプラインを通る命令の動きが前記第一処理サイクル数よりも大きな第二処理サイクル数に遅延される第二減速作動ステージに移行させる、
ことによって前記発行ユニットを減速作動モードに設定する論理を備える工程を、
さらに含む、請求項１６に記載の方法。
【請求項１８】
前記段階的スキームの最後のステージは、前記発行ユニットを、前記発行及び送出パイプラインから一つの命令だけを発行することができ、前記命令が完了するまでは前記発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定する、請求項１６に記載の方法。
【請求項１９】
前記ライブロック状態を検出する基準は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記ライブロック検知制御ロジックの中にプログラムされる、請求項１１から１８のいずれかに記載の方法。
【請求項２０】
前記段階的スキームの各ステージに対する、命令発行を遅延させる基本処理サイクル数は、前記発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、前記低速モード制御ロジック中にプログラムされる、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は一般にデータ処理システム及び方法の改善に関し、さらに具体的には、本出願は、プロセッサを段階的減速動作モードに移行させるシステム及び方法を対象とする。プロセッサの減速動作モードを使って、プロセッサ・コア内のライブロック状態を解放する。
【背景技術】
【０００２】
近年のプロセッサ設計、特に同時マルチスレッディング（ＳＭＴ）プロセッサ設計では、ライブロック(livelock)状態は、設計段階において発見し解決することが最も困難な問題の一つになっており、設計がハードウエアに実装された後で発見されることが多い。ライブロック状態は、プロセッサが同じ命令の組を繰り返し実行し、なんら実際の進行がない状態として表すことができよう。ライブロック状態に陥る根本原因の一つは、一つのプロセッサ・ユニットと別のユニットとの間での調和的固定サイクルの相互作用である。ライブロック状態の別の原因には、命令のフラッシュ及び再取り出しと、命令発行待ち行列からの再発行とが繰り返され、リソース満杯ないし使用中状態でフラッシュが繰り返され、これを解放することができないため、何時までも命令が完了しないということがある。
【０００３】
「調和的(harmonic)」固定サイクルの相互作用は、プロセッサ・パイプラインでは、固定のサイクル数を使って一命令の実行の処理及び達成が行われるという事実の産物である。複数のスレッドからの命令は、各スレッド中の各々の命令がほぼ同時に処理を完了するように、同調的な仕方で、プロセッサ・パイプラインを通って処理されることになる。一つのスレッドが、別の実行スレッド中の命令の結果を必要とするといった、実行スレッドの間に依存関係がある場合、両方の命令が同時にプロセッサ・パイプラインを通って処理され、リソース利用と依存関係とに不一致が生じ、ライブロック状態が発生することがある。依存する方の命令は、他方のスレッドの命令の結果がまだ利用できないので完了することができない。もし、この他方スレッドの命令が、リソース競合に出くわせば、両方のスレッドからの命令は繰り返しフラッシュされ、パイプラインに再発行されることになる。
【０００４】
ライブロック状態に陥る、コーディングとデュアル命令プロセッサ設計との例が図６のＡ及び図６のＢに示されている。図６のＡは、ＳＭＴ及びデュアル命令発行プロセッサ・パイプライン設計を示し、この設計では、一つおきのサイクルで各々のスレッドから２つの命令が発行される。図６のＢは、図６Ａに示したプロセッサ・パイプラインで実行された場合、両方のスレッドともプロセッサの専用レジスタ（ＳＰＲ）にアクセスしようとする、典型的なユーザ・コードを示す。スレッド０には、スレッド１のコードがＳＰＲへのアクセスを終えるのを待つための条件分岐（ｂｎｅｑ）命令がコードされている。スレッド０のコードは後方分岐しながら、スレッド１の「ｓｔｏｒｅ」命令が完了したかどうかの点検を続けることになる。
【０００５】
図６のＡに示されたプロセッサ・パイプライン中のＳＰＲ待ち行列は一度に２つのＳＰＲ命令に対応できるだけである。しかして、スレッド１の第三ＳＰＲ命令及び該第三ＳＰＲ命令の後方の全ての命令は、常にフラッシュされ再発行されることになる。もし、スレッド０とスレッド１との命令が下記の表１に示すような順序でコンパイルされていれば、スレッド１の「ｍｔ  ｓｐｒＣ  Ｒ１」命令の前の命令の全てが完了することになる。スレッド１の「ｍｔ  ｓｐｒＣ  Ｒ１」は、初回は、ＳＰＲの待ち行列が「ｍｔ  ｓｐｒＡ  Ｒ３」及び「ｍｔ  ｓｐｒＢ  Ｒ２」のためビジー状態なので、フラッシュされることになる。「ｂｎｅｑ  ＣｈｅｃｋＴｈｒｅａｄ１ＳＰＲ」より後ろのスレッド０の命令の全ては、スレッド１の「ｓｔｏｒｅ  Ｒ４  ０ｘ１００」が実行されない間は、発行されてはフラッシュされることになる。
【０００６】
【表１】
2009533738.tif 000003
【０００７】
表２は、ｎ＋１及びｎ＋３におけるスレッド１の命令が完了した後、双方のスレッドの残りの命令が、再発行され、フラッシュされ、再び再発行されることにより生成された新しいコードの系列である。表２に示されるように、スレッド１の「ｍｔ  ｓｐｒＣ  Ｒ１」は、スレッド０の「ｍｔ  ｓｐｒＤ  Ｒ６」及び「ｍｔ  ｓｐｒＥ  Ｒ７」がスレッド１の「ｍｔ  ｓｐｒＣ  Ｒ１」の前に発行されているので、再度フラッシュされることになる。スレッド０中のこれら２つの「ＳＰＲへ移動」命令は、分岐予測ミスのため最終的にはフラッシュされることになる。両方のスレッドからのこれら２つのフラッシュ状態（スレッド０の分岐予測ミスフラッシュ、及びスレッド１の、ＳＰＲへの第３の移動命令）は、継続してフラッシュされ、発行ユニットは「同調」ウィンドウ状態になる。従って、表２中のスレッド０及びスレッド１の命令は、何時までも繰り返し再発行されフラッシュされることになる。これによりプロセッサはライブロック状態に追い込まれる。
【０００８】
【表２】
2009533738.tif 000004
【０００９】
前述したようなライブロック状態の多くは、実際のアプリケーションが、プロセッサ・ハードウエアで実行される際に検出される。これは多くの場合高いコストにつき、この時点では設計を修正するには遅すぎる。従って、ハードウエアの妥当性確認段階で、こういった種類の予期しないライブロック状態を検出し解決できるような汎用的方法をプロセッサ・コアに組み込んでおくことが重要である。
【００１０】
通常、こういったライブロック状態を検出するため、プロセッサの発行ユニットの中など、プロセッサ設計自体の中にハードコードが可能なハードウエア・ベースの検知メカニズムが備えられる。こうした検知メカニズムによってライブロック状態を検出可能にするやり方は、個別の実装如何による。例えば、該検知メカニズムは、特定の命令のフラッシュの回数、又は、命令が完了されず再発行される回数を数えることによってライブロック状態を検出することができる。こういった状況は、前に進むことのない状態変化を示し、しかして潜在的なライブロック・シナリオを示すものである。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
既存の設計においては、ライブロック検知メカニズムを使い、ライブロック状態の発生が検出されるのに応じ、プロセッサのパイプラインは、一つ以上のスレッド全体に亘り、一度に一つの命令だけが遂行される単一ステップ動作モードに移行される。しかしながら、ライブロック状態が検出されるたびに、プロセッサのパイプラインを単一ステップ・モードに移行させるのは、プログラムの実行中にライブロック状態が頻繁に発生することもあるので、プロセッサの全体的パフォーマンスに大きな影響を与える。さらに、このアプローチは、ライブロック状況が、単に数プロセッサ・サイクルのライブロック・ウィンドウ、すなわちプロセッサ中にライブロック状態が継続して検出される期間のものである場合には過剰対応となる。
【課題を解決するための手段】
【００１２】
本発明の例示的実施形態は、プロセッサを段階的減速動作モードに移行させる発行ユニットを提供する。プロセッサを段階的に減速しながら、プロセッサをライブロック状態から解放する。さらに、減速が段階的に行われるで、プロセッサは、さまざまな程度のライブロック状態をフレキシブルに回避することができる。これら例示的実施形態のメカニズムは、ライブロック状態の厳しさに応じて、プロセッサの全体的パフォーマンスに影響をさせるもので、軽度のライブロック状態に対しては小さな影響で済ませ、ライブロック状態が重度の厳しさである場合にだけ、プロセッサのパフォーマンスへの影響を増加させる。
【００１３】
該例示的実施形態のメカニズムには、ライブロック状態検出の複数ステージが、各々のステージに対応するライブロック状態取扱い論理と共に備えられている。この関連付けられたライブロック状態取扱い論理は、いろいろな処置を用いてライブロック状態の解放を試みる。複数ステージ中の引き続く各ステージは、ライブロック状態の厳しさの増大に関連付けられる。早期段階のステージは単なる数プロセッサ・サイクルのライブロック・ウィンドウに関連付けられており、後段階のステージは、もっと長期のライブロック・ウィンドウに関連付けられている。各ステージごとに、プロセッサのパフォーマンスは段階的に低下するが、ライブロック状態が解放される可能性は増大する。
【００１４】
一つの例示的実施形態において、低速モード制御ロジックがプロセッサ・パイプラインの発行ユニット中に設けられる。該低速モード制御ロジックは、ハング検知制御ロジックと連結され、後者のロジックは、所定の基準、例えば、特定の命令のフラッシュの回数又は命令が完了せずに再発行された回数などに基いてライブロック状態を検出する役割を有する。ライブロック状態の検出に応じて、ハング検知制御ロジックは、低速モード制御ロジックに対しライブロック状態が存在することを示す信号をアサートする。低速モード制御ロジックは、プロセッサの段階的な減速を開始する。
【００１５】
この段階的減速操作によれば、低速モード制御ロジックはプロセッサ・パイプラインを通る命令の流れを抑制する信号を出力する。この出力信号は、ＯＲゲートを介するなどして、データ依存性制御ロジックなど、別の制御ロジックからの出力信号と論理的に組み合わされる。しかして、低速モード制御ロジック又は別の制御ロジックのいずれかが、プロセッサ・パイプラインを通る命令の動きを抑制する信号を出力すれば、命令は抑制される。このような信号がアサートされない場合は、命令は、通常のやり方でパイプラインを通って流れることができる。
【００１６】
低速モード制御ロジックは、低速モード制御ロジック内にハード配線あるいはプログラムされた段階的スキームに従って、命令の流れを抑制する信号を出力する。例えば、ハング検知制御ロジックが、ライブロック（ないしハング）状態、すなわち、命令が完遂されることなく、フラッシュ回数がＸとなったことを（このＸは、ハードウエアの妥当性確認の後でプログラムすることができる）検出したとき、低速モード制御ロジックは、Ｎプロセッサ・サイクルごとにだけ（このＮは、ハードウエアの妥当性確認の後でプログラムすることができる）発行ユニットが命令を発行するように、発行ユニットを減速させることができる。発行ユニットの減速は、パイプラインを通る命令の動きを抑制する信号をアサートすることにより行うことができる。この信号は、例えばＮサイクルなどあらかじめ定めたサイクル数に基き、Ｎプロセッサ・サイクルごとに一つだけの命令を発行するようにアサートすることができる。
【００１７】
これと同じライブロック状態、すなわち命令が処理されずにＸのフラッシュ回数が再度発生した場合、発行ユニットが２Ｎプロセッサ・サイクルごとに一つの命令を発行できるように、発行ユニットは再度減速される。さらにまだライブロック状態が検出される場合には、発行ユニットが４Ｎプロセッサ・サイクルごとに一つの命令を発行できるように、発行ユニットは再び減速される。その後においてもライブロック状態が再び検出された場合には、プロセッサは重度のライブロック状態にあると判定される。このような場合、発行ユニットは、一つだけの命令を発行することができ前の命令が完了するまでは他の一切の命令を発行できない、逐次単一ステップ・モードを強制される。発行ユニットが、発行ユニットの発行及び送出パイプライン中の全ての命令を排出したときに、プロセッサは通常の全速作動モードに戻される。ライブロック状態が検出されなくなれば、その前のステージが、段階的スキームのどのステージであっても、プロセッサは通常の全速作動モードに戻される。
【００１８】
一つの例示的実施形態において、ライブロック検知制御ロジックと、該ライブロック検知ロジックに連結された減速モード制御ロジックと、ライブロック検知制御ロジック及び減速制御ロジックに連結された発行及び送出パイプラインとを含む発行ユニットが提供される。ライブロック検知制御ロジックは、発行及び送出パイプライン中のライブロック状態を検出することができる。低速モード制御ロジックは、ライブロック検知制御ロジックによりライブロック状態が検出され続けている間は、処理のサイクル数を増大させて、発行及び送出パイプラインを通る命令の動きを段階的に減速することができる。低速モード制御ロジックは、ライブロック状態が解放されたのが検出されたのに応じて、データ処理装置を全速作動モードに戻すことができる。
【００１９】
ライブロック検知ロジックは、発行ユニットに関連するプロセッサの完了ユニットをモニタし、命令がうまく完了されないまま所定数のプロセッサ・サイクルが経過したかどうかを判定することができる。ライブロック検知制御ロジックには、完了ユニットの表示から、命令がうまく遂行されないまま経過したプロセッサ・サイクルの数を数えるカウンタを含めることができる。カウンタが所定の閾値に達するのに応じてライブロック状態を検出することができる。
【００２０】
低速モード制御ロジックには、ライブロック状態がライブロック検知ロジックラにより引き続き検出された回数を数えるためのカウンタを含めることができる。低速モード制御ロジックは、該カウンタの数の増加に基づき処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを抑制することができる。
【００２１】
発行ユニットには、別の基準に基づいて発行及び送出パイプラインを通る命令の動きをシフト又は抑制するための、発行ユニットの別の制御ロジックをさらに含めることができる。また、発行ユニットには、該別の制御ロジックと低速モード制御ロジックとに連結された論理ゲートをさらに含めることができ、該論理ゲートは、該別の制御ロジックと低速モード制御ロジックとからの、発行及び送出パイプラインを通る命令を抑制するか又はシフトするかどうかを示す入力を受信する。論理ゲートは、発行及び送出パイプラインを通る命令を抑制あるいはシフトする出力信号を、発行及び送出パイプラインに送信することができる。
【００２２】
低速モード制御ロジックは、ライブロック検知制御ロジックがライブロック状態を検出するのに応じて、段階的スキームに従い発行ユニットを減速動作モードに設定して、発行及び送出パイプラインを通る命令の動きを段階的に抑制することができる。段階的スキームには、処理のサイクル数を変えることによって、発行及び送出パイプラインを通る命令の動きを減速する複数のステージを設定することができる。
【００２３】
低速モード制御ロジックは、発行ユニットを減速作動モードに設定し、発行ユニットを、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数に遅延される第一減速作動ステージに移行させ、発行ユニットを第一減速作動ステージに移行させた後、ライブロック検知制御ロジックによってライブロック状態が検出され続けるかどうかを判定することができる。発行ユニットを第一減速作動ステージに移行させた後にも、ライブロック検知制御ロジックによってライブロック状態が検出され続ける場合、低速モード制御ロジックは、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数よりも大きな第二処理サイクル数に遅延される、第二減速作動ステージに発行ユニットを移行させることができる。
【００２４】
段階的スキームの最後のステージでは、発行ユニットを、発行及び送出パイプラインから一つの命令だけを発行することができ、その命令が完了するまでは発行及び送出パイプラインから他の命令を一切発行できない、逐次単一ステップ作動モードに設定することができる。
【００２５】
ライブロック状態を検出するための基準は、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、ライブロック検知制御ロジックの中にプログラムすることができる。さらに、段階的スキームの各ステージに対する、命令発行を遅延させる処理の基本サイクル数についても、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、低速モード制御ロジックの中にプログラムすることができる。
【００２６】
さらに別の例示的実施形態において、データ処理装置のプロセッサの中に発行ユニットを設けるある方法が提供される。この方法には、例えば、ライブロック検知制御ロジックを設ける工程、該ライブロック検知ロジックに連結された低速モード制御ロジックを設ける工程、及び、ライブロック検知制御ロジックと低速モード制御ロジックとに連結された発行及び送出パイプラインを設ける工程を含めることができる。ライブロック検知制御ロジックは、発行及び送出パイプライン中のライブロック状態を検出することができる。低速モード制御ロジックは、ライブロック検知制御ロジックによってライブロック状態が検出され続けている間は、処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを段階的に抑制することができる。ライブロック状態の解放が検出されたのに応じて、低速モード制御ロジックはデータ処理装置を全速作動モードに戻すことができる。
【００２７】
本方法には、発行ユニットと関連付けられたプロセッサの完了ユニットをモニタして、命令がうまく完了されないまま所定のプロセッサ・サイクル数が経過したかどうかを判定する論理を、ライブロック検知ロジックに備える工程をさらに含めることができる。本方法には、完了ユニットの表示から、命令がうまく完了されないまま経過したプロセッサ・サイクル数を数えるカウンタをライブロック検知制御ロジックの中に設ける工程を含めることができる。カウンタが所定の閾値に達するのに応じてライブロック状態を検出することができる。
【００２８】
本方法には、低速モード制御ロジックの中に、ライブロック状態がライブロック検知ロジックにより引き続き検出された回数を数えるためのカウンタを設ける工程をさらに含めることができる。低速モード制御ロジックは、該カウンタの数の増加に基づき処理のサイクル数を増加させて、発行及び送出パイプラインを通る命令の動きを抑制することができる。
【００２９】
また、本方法には、別の基準に基づいて発行及び送出パイプラインを通る命令の動きをシフトするか又は抑制するための、発行ユニットの別の制御ロジックを設ける工程を含めることができる。さらに、本方法には、該別の制御ロジックと低速モード制御ロジックとに連結された論理ゲートを設ける工程を含めることができる。該論理ゲートは、該別の制御ロジックと低速モード制御ロジックとからの、発行及び送出パイプラインを通る命令を抑制するかあるいはシフトするかを示す入力を受信することができる。論理ゲートは、発行及び送出パイプラインを通る命令を抑制するか又はシフトする出力信号を、発行及び送出パイプラインに送信することができる。
【００３０】
本方法には、ライブロック検知制御ロジックがライブロック状態を検出するのに応じて段階的スキームに従い発行ユニットを減速動作モードに設定し、発行及び送出パイプラインを通る命令の動きを段階的に抑制する論理を、低速モード制御ロジックに備える工程をさらに含めることができ、該段階的スキームには、処理のサイクル数を変えることによって、発行及び送出パイプラインを通る命令の動きを減速する複数のステージを設定することができる。
【００３１】
本方法には、発行ユニットを減速作動モードに設定し、発行及び送出パイプラインを通る命令の動きを第一処理サイクル数まで遅延させる第一減速作動ステージに発行ユニットを移行させる論理を、低速モード制御ロジックに備える工程をさらに含めることができる。該論理は、発行ユニットを第一減速作動ステージに移行させた後、ライブロック検知制御ロジックによってライブロック状態が検出され続けるかどうかを判定し、発行ユニットを第一減速作動ステージに移行させた後も、ライブロック検知制御ロジックによってライブロック状態が検出され続ける場合、発行ユニットを、発行及び送出パイプラインを通る命令の動きが第一処理サイクル数よりも大きな第二処理サイクル数に遅延される、第二減速作動ステージに移行させることができる。
【００３２】
段階的スキームの最後のステージでは、発行ユニットを、発行及び送出パイプラインから一つの命令だけを発行することができ、前の命令が完了するまでは発行及び送出パイプラインから他の一切の命令を発行できない、逐次単一ステップ作動モードに設定することができる。ライブロック状態を検出するための基準は、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、ライブロック検知制御ロジックの中にプログラムすることができる。さらに、段階的スキームの各ステージに対する、命令発行を遅延させる処理の基本サイクル数についても、発行ユニットがその一部となっているプロセッサのハードウエア製造の後で、低速モード制御ロジックの中にプログラムすることができる。
【００３３】
本発明のこれら及び他の特質及び利点は、以下の本発明の典型的な実施形態の詳細な説明に記述され、これを考察すれば当業者には明白となろう。
【００３４】
本発明を特徴付けると思われる新規性のある特質は添付の請求項に示されている。しかしながら、以下の例示的実施形態の詳細な説明を添付の図面と関連させて読み、参照することによって、本発明自体並びにその好適な使用モード、それらのさらなる用途及び利点についての最善の理解が得られよう。
【発明を実施するための最良の形態】
【００３５】
本発明の例示的実施形態は、ライブロック状態を解放するため、プロセッサを段階的減速作動モードに移行させるシステム及び方法を提供する。これら例示的実施形態は、任意の計算装置の任意のプロセッサに実装することができる。例えば、該例示的実施形態は、任意のサーバ計算装置、クライアント計算装置、通信装置、携帯型計算装置、又は類似の装置に使用することができる。図１〜２は、以降、該例示的実施形態の典型的態様が実行できる分散型データ処理環境及び計算装置の例として用いられる。図１〜２は典型例であり、該例示的実施形態が実行可能な計算装置の種類に関して、いかなる限定も明示又は暗示する意図はされていない。それとは反対に、該例示的実施形態は、究極的にプロセッサが作動しているのならば、特定のマシン又は計算装置に関わらず任意のプロセッサに実装することができる。
【００３６】
次に、図を参照すると、図１は、該例示的実施形態の態様が実施可能な典型的分散型データ処理システムの絵図表現を示す。分散型データ処理システム１００には、該例示的実施形態の態様を実装可能なコンピュータのネットワークを含めることができる。分散型データ処理システム１００は、少なくとも一つのネットワーク１０２を包含し、該ネットワークは、分散型データ処理システム１００内に一緒につながれたさまざまな装置及びコンピュータの間に通信リンクを提供するため使われる媒体である。ネットワーク１０２には、有線、無線通信リンク、又は光ファイバー・ケーブルなどの通信路を含めることができる。
【００３７】
示された例において、サーバ１０４及びサーバ１０６は、記憶装置１０８と共にネットワーク１０２につながれている。さらに、クライアント１１０、１１２、及び１１４もネットワーク１０２に結合されている。これらクライアント１１０、１１２、及び１１４は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどとすることができる。示された例において、サーバ１０４は、クライアント１１０、１１２、及び１１４のための起動ファイル、オペレーティング・システム・イメージ、及びアプリケーションなどのデータを備えている。示された例では、クライアント１１０、１１２、及び１１４はサーバ１０４のクライアントである。分散型データ処理システム１００には、図示されていないさらなるサーバ、クライアント、及び他の装置を含めることができる。
【００３８】
示された例において、分散型データ処理システム１００は、相互に通信するため、通信制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）など一式のプロトコルを用いるネットワーク及びゲートウェイの世界的集合体を表すネットワーク１０２を使うインターネットである。インターネットの中心には、データ及びメッセージを送信する何千もの商業、行政、教育、及び他のコンピュータ・システムから成る、主要ノード又はホスト・コンピュータ間の高速データ通信の基幹回線がある。当然、該分散型データ処理システム１００は、例えば、イントラネット、ローカルエリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）などの異なった多種類のネットワークを含めて実施することができる。前述したように、図１は例示を意図したものであり、本発明のいろいろな実施形態に対するアーキテクチャ上の限定を意味するものでなく、従って、図１に示される特定の要素については、本発明の例示的実施形態が実施可能な環境に関する限定をしていると見なすべきではない。
【００３９】
次に、図２を参照すると、該例示的実施形態の態様が実装可能な典型的データ処理システムのブロック図が示されている。データ処理システム２００は、本発明の例示的実施形態の処理を実行する、コンピュータ使用可能なコード又は命令を配置することが可能な、図１のサーバ１０４又はクライアント１１０などのコンピュータの例である。
【００４０】
示された例において、データ処理システム２００は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含むハブ・アーキテクチャを用いている。処理ユニット２０６、主メモリ２０８、及びグラフィックス・プロセッサ２１０は、ＮＢ／ＭＣＨ２０２に接続されている。グラフィックス・プロセッサ２１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ２０２に接続することができる。
【００４１】
示された例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２がＳＢ／ＩＣＨ２０４につながれている。オーディオ・アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読み取り専用メモリ（ＲＯＭ）２２４、ハードディスク・ドライブ（ＨＤＤ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他の通信ポート群２３２、及びＰＣＩ／ＰＣＩｅ装置２３４は、バス２３８とバス２４０とを介してＳＢ／ＩＣＨ２０４につながれている。ＰＣＩ／ＰＣＩｅ装置には、例えば、イーサネット・アダプタ、アドイン・カード、及びノート型パソコンに対するＰＣカードなどを含めることができる。ＰＣＩは、カード・バス・コントローラを用いるが、ＰＣＩｅは用いない。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入出力システム（ＢＩＯＳ）とすることができる。
【００４２】
ＨＤＤ２２６及びＣＤ−ＲＯＭ２３０は、バス２４０を介してＳＢ／ＩＣＨ２０４につながれている。ＨＤＤ２２６及びＣＤ−ＲＯＭ２３０に対しては、例えば、統合ドライブ接続方式（ＩＤＥ）又はシリアル・アタ（ＳＡＴＡ）インタフェースを使うことができる。スーパーＩ／Ｏ（ＳＩＯ）装置２３６をＳＢ／ＩＣＨ２０４につなぐことができる。
【００４３】
オペレーティング・システムにより処理ユニット２０６を駆動する。オペレーティング・システムは、図２のデータ処理システム２００内の各種構成要素を調整し、制御を行う。クライアントのオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰなど、市販のオペレーティング・システムとすることができる（Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは、米国内、他の国々又はその双方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）。Ｊａｖａ（商標）プログラミング・システムなどのオブジェクト指向プログラミング・システムを、オペレーティング・システムに関連させて作動させ、データ処理システム２００で実行されているＪａｖａ（商標）プログラム又はアプリケーションから、オペレーティング・システムに対する呼び出しを提供することができる（Ｊａｖａは、米国内、他の国々又はその双方におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の商標である）。
【００４４】
サーバのデータ処理システム２００は、例えば、エーアイエックス（ＡＩＸ（Ｒ））オペレーティング・システム又はＬＩＮＵＸ（Ｒ）オペレーティング・システムで作動するＩＢＭ（Ｒ）のｅＳｅｒｖｅｒ（商標）ｐＳｅｒｉｅｓコンピュータ・システムとすることができる（ｅＳｅｒｖｅｒ、ｐＳｅｒｉｅｓ及びＡＩＸは、米国内、他の国々又はその双方におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、ＬＩＮＵＸは、米国内、他の国々又はその双方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）。データ処理システム２００は、処理ユニット２０６中に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ）システムとすることができる。あるいは、単一プロセッサ・システムを用いることもできよう。
【００４５】
これらオペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション類又はプログラム類に対する命令は、ＨＤＤ２２６などの記憶装置に格納しておき、主メモリ２０８にロードして処理ユニット２０６に実行させることができる。本発明の例示的実施形態の処理は、コンピュータ使用可能なプログラム・コードを使い処理ユニット２０６が実施することができ、該プログラム・コードは、例えば、主メモリ２０８、ＲＯＭ２２４、又は、例えば一つ以上の周辺装置２２６及び２３０などに格納しておくことができる。
【００４６】
図２に示されたバス２３８又はバス２４０などのバス・システムには一つ以上のバスを含めることができる。当然ながら、通信ファブリック又はアーキテクチャに付属する各種校正要素又は装置の間でデータの転送ができる任意の種類のファブリック又はアーキテクチャを用いてバス・システムを実装することができる。図２のモデム２２２又はネットワーク・アダプタ２１２などの通信ユニットには、データを送信及び受信するため使う一つ以上の装置を含めることができる。メモリは、例えば主メモリ２０８、ＲＯＭ２２４、又は、図２のＮＢ／ＭＣＨ２０２中に含まれているキャッシュとすることができる。
【００４７】
当業者は、図１〜２中のハードウエアは、実装内容によって変更可能なことを十分理解していよう。図１〜２に示したハードウエアに加えて、又はその代わりに、フラッシュ・メモリ、同等な不揮発性メモリ、又は光ディスクなどといった、他の内部又は周辺装置を使うことができる。また、これら例示的実施形態による処理過程を、本発明の精神及び範囲から逸脱することなく、前述したＳＭＰシステム以外のマルチプロセッサ・データ処理システムに適用することができる。
【００４８】
さらに、データ処理システム２００は、クライアント計算装置、サーバ計算装置、タブレット・コンピュータ、ノート型コンピュータ、電話又は他の通信装置、携帯端末（ＰＤＡ）などを含め、数多くのデータ処理システムの任意の形態を取ることができる。いくつかの実施例において、データ処理システム２００は、例えば、オペレーティング・システム・ファイル又はユーザ作成データあるいはその両方を格納するための不揮発性メモリを備えたフラッシュ・メモリから成る携帯型計算装置とすることができる。基本的には、データ処理システム２００は、アーキテクチャ上の限定なく既存のあるいは今後開発される任意のデータ処理システムとすることができる。
【００４９】
図３は、一つの例示的実施形態によるプロセッサのパイプラインを示す典型図である。図３に示されるように、プロセッサ３００は、フェッチ・アドレス・マルチプレクサ３０４、フェッチ・ユニット３１０、復号ユニット３２０、発行ユニット３３０、実行ユニット３４０、完了ユニット３５０、及び分岐ユニット３６０から成るプロセッサ・パイプラインを含む。プロセッサ３００は、例えば図２に示されたような、メモリ・サブシステム３７０、ホスト・バス３８０、バス制御ユニット３９０、主メモリ・ユニット３９２、及び、他のプロセッサ及び外部装置３９４に連結される。
【００５０】
前記の諸要素の配置において、通常、ライブロック状態は、プロセッサ中の同一命令の組が、どの命令をも完了させることなく実際上の進行は一切なくして、繰り返して何回も、フェッチ・アドレス・マルチプレクサ３０４から、フェッチ・ユニット３１０、復号ユニット３２０、発行ユニット３３０、完了ユニット３５０と流れ、フラッシュ・アドレス・パス３２３を介してフェッチ・アドレス・マルチプレクサ３０４に戻る状態として表すことができる。前述したように、こういったライブロック状態の根本原因の一つは、一つのプロセッサ・ユニットと別のプロセッサ・ユニットとの間の「同調的」固定サイクル相互作用であり、命令は、繰り返しフラッシュ及び再フェッチされ、ないしは発行ユニット３３０の発行待ち行列から繰り返し再発行され、リソース満杯又は使用中状態で発生する、解放のできない繰り返しのフラッシュ状態のため何時までも完遂されない。
【００５１】
これらの例示的実施形態は、ライブロック状態の検出に応じて、発行ユニット３３０による命令の発行を段階的に抑制するメカニズムを提供する。一つの例示的実施形態において、発行ユニット３３０には、ライブロック状態検出の複数のステージが、関連するライブロック状態取扱い論理と共に設けられている。該関連ライブロック状態取扱い論理は、いくつかの相異なる処置を用いてライブロック状態の解放を試みる。複数ステージ中の引き続く各ステージは、ライブロック状態の厳しさの増大に関連付けられている。早期段階のステージは単なる数プロセッサ・サイクルのライブロック・ウィンドウに関連付けられており、後段階のステージは、もっと長期のライブロック・ウィンドウに関連付けられている。各ステージごとに、プロセッサのパフォーマンスは段階的に低下するが、ライブロック状態が解放される可能性は増大する。
【００５２】
一つの例示的実施形態において、低速モード制御ロジックがプロセッサ・パイプラインの発行ユニット３３０中に設けられる。該低速モード制御ロジックは、ライブロック（ないしハング）検知制御ロジックと連結され、後者のロジックは、所定の基準、例えば、特定の命令のフラッシュの回数又は命令が完了せずに再発行された回数などに基いてライブロック状態を検出する役割を有する。ライブロック状態の検出に応じて、ハング検知制御ロジックは、低速モード制御ロジックに対しライブロック状態が存在することを示す信号をアサートする。低速モード制御ロジックは、発行ユニット３３０からの命令の発行を抑制することによって、プロセッサ３００の段階的な減速を開始する。
【００５３】
この段階的減速操作によれば、低速モード制御ロジックはプロセッサ・パイプラインを通る命令の流れを抑制する信号を出力する。この出力信号は、ＯＲゲートを介するなどして、データ依存性制御ロジックなど、発行ユニット３３０の別の制御ロジックからの出力信号と論理的に組み合わされる。しかして、低速モード制御ロジック又は該別の制御ロジックのいずれかが、発行ユニット３３０の発行及び送出パイプラインを通る命令の動きを抑制する信号を出力すれば、命令は抑制される。このような信号がアサートされない場合は、命令は、通常のやり方で発行ユニット３３０の発行及び送出パイプラインを通って流れることができる。
【００５４】
低速モード制御ロジックは、低速モード制御ロジック内にハード配線あるいはプログラムされた、段階処理スキームに従って、命令の流れを抑制する信号を出力する。例えば、ハング検知制御ロジックが、ライブロック（ないしハング）状態、すなわち、命令が完遂されることなく、フラッシュ回数がＸとなったことを（このＸは、ハードウエアの妥当性確認の後でプログラムすることができる）検出したとき、低速モード制御ロジックは、Ｎプロセッサ・サイクルごとにだけ（このＮは、ハードウエアの妥当性確認の後でプログラムすることができる）発行ユニット３３０によって命令が発行されるように、発行ユニット３３０を減速させることができる。発行ユニット３３０の減速は、発行ユニット３３０を通る命令の動きを抑制する信号をアサートすることにより行うことができる。この信号は、例えばＮサイクルなどあらかじめ定めたサイクル数に基き、Ｎプロセッサ・サイクルごとに一つだけの命令を発行するようにアサートすることができる。
【００５５】
同様なライブロック状態が引き続き検出されるごとに、発行ユニット３３０を抑制するサイクル数を増加させることができる。言い換えれば、命令の再発行として、ライブロック状態が引き続き検出されるごとに、発行ユニットを抑制するサイクル数を増加させることができる。ライブロック状態が所定の回数検出された場合、プロセッサ３００は重度のライブロック状態にあると判定される。このような場合、発行ユニット３３０には、一つの命令だけを発行することができ、前の命令が完了するまでは他の一切の命令を発行できない、逐次単一ステップ・モードを強制することができる。
【００５６】
発行ユニット３３０が、発行ユニット３３０中の発行及び送出パイプラインの中の全ての命令を排出したときに、プロセッサ３００は通常の全速作動モードに戻される。ライブロック状態が検出されなくなれば、その前の段階が段階的スキームのどのステージであっても、プロセッサ３００は通常の全速作動モードに戻される。
【００５７】
図４は、一つの例示的実施形態による発行ユニットの細部を示す典型図である。図４に示されるように、発行ユニット３３０は、発行ユニット３３０の発行及び送出パイプラインを一緒に構成する複数のレジスタ４１０〜４１４を包含する。発行ユニット３３０は、ライブロック（ないしハング）検知制御ロジック４２０、低速モード制御ロジック４３０、及び、発行及び送出パイプラインを通る命令の動きを制御するための別の制御ロジック４４０をさらに含む。低速モード制御ロジック４３０及び該別の制御ロジック４４０からの出力はＯＲゲート４５０に送られ、該ゲートは、レジスタ４１０〜４１４に対し抑制／シフト信号を出力し、これらのレジスタに格納された命令を、発行及び送出パイプライン中の次のレジスタにシフトするか（ないしは、命令を実行ユニット３４０に発行するか）、あるいは命令を一プロセッサ・サイクル抑制する。
【００５８】
図４に示されたプロセッサ・パイプラインにおいて、命令フェッチ・アドレスは、マルチプレクサ３０４によって、プログラム・カウンタ・アドレス３２１、分岐ユニット３６０からの分岐アドレス入力３２２、リセット・アドレス３２５、完了ユニット３５０からのフラッシュ・アドレス３２３、又は完了ユニット３５０からの割り込みアドレス３２４のうちの一つから選定される。該フェッチ・アドレスは、メモリから適切な命令をフェッチするフェッチ・ユニット３１０に送られる。フェッチ・ユニット３１０は、通常、Ｌ１命令キャッシュから命令をフェッチするよう試み、Ｌ１命令キャッシュに当該命令がない場合は、フェッチ・ユニット３１０は、Ｌ２メモリ・キャッシュからの命令読み出しを試みることになる。さらにＬ２メモリ・キャッシュにも当該命令がない場合には、フェッチ・ユニット３１０は、より低速のシステム・メモリから命令を読み出すことになる。
【００５９】
フェッチ・ユニット３１０が命令をフェッチした後、フェッチ・ユニット３１０は、該命令を復号ユニット３２０に送る。復号ユニット３２０は、特定の命令が何をするのかを判断する役割を有する。復号ユニット３２０は、各命令について、プロセッサが理解できるマイクロコードを格納している、例えば、読み取り専用メモリ（ＲＯＭ）などプロセッサ内部に存在するメモリ（図示せず）を参照する。ある命令に対するマイクロコードは、その特定の命令が、例えばプロセッサ３００の実行ユニット３４０のような実行ユニットによってどのように実行されるかについてのステップバイステップのガイドを提示する。例えば、ロードされた命令がａ＋ｂの場合、マイクロコードは、復号ユニット３２０に、２つのパラメータ、ａとｂとが必要であることを示すことになる。次に、復号ユニット３２０は、フェッチ・ユニット３１０に、隣の２つのメモリ位置に在る、ａとｂとの値に該当するデータを取ってくるよう要求する。復号ユニット３２０が命令を復号し「翻訳」し、命令実行に必要な全てのデータが得られた後、該データ及び復号された命令は発行ユニット３３０に送られる。
【００６０】
命令及びデータは、発行及び送出パイプラインの第一レジスタ４１０に入れられ、ライブロック検知制御ロジック４２０又は別の制御ロジック４４０によって抑制状態が検知されていなければ、命令及び及びデータは、該命令及びデータが実行ユニット３４０に発行されるまで、プロセッサ・サイクルごとに一つのレジスタから次のレジスタへと、パイプラインを通って進むことができる。なお、簡明化のため、図４には一つの実行ユニット３４０しか示していないが、最新のコンピュータは、同種類又は異種の複数の実行ユニットを備えている。しかして、実行ユニット３４０は、例えば、整数型、不動小数点型などの同種類又は異種の一つ以上の実行ユニットを表す意味を持つ。
【００６１】
ライブロック検知制御ロジック４２０は、完了ユニット３５０をモニタし、命令がうまく完了せずに所定のプロセッサ・サイクル数が経過したかどうかを判定する。すなわち、実行ユニット３４０は、実行ユニット３４０が実施した命令の処理に基いて、完了ユニット３５０に対し、例外事象が発生しているか、発行及び送出パイプラインのフラッシュをすべきかどうか、あるいは、命令が完遂、すなわちうまく完了したかどうかを連絡する。これにより、完了ユニット３５０はその情報を発行ユニット３３０に伝達することができる。
【００６２】
ライブロック検知制御ロジック４２０には、完了ユニット３５０によって完遂される命令と命令との間にどの位の数のプロセッサ・サイクルか経過しているかのカウントを維持するためのカウンタ４２２又は他のロジックを含めることができる。このカウンタ４２２又は他のロジックは、例えば、発行ユニット３３０の発行及び送出パイプラインがフラッシュされ、発行及び送出パイプラインに命令が再発行されるごとに、カウント数を増やすことができる。命令の完遂によるリセットが行われず、カウンタ４２２又は他のロジックが所定のフラッシュ回数閾値Ｘに達した場合、ライブロック検知制御ロジック４２０は、低速モード制御ロジック４３０に対し、低速モード制御ロジック４３０がプロセッサ３００の減速制御の次の状態に移行すべきことを示す低速モード信号をアサートする。例えば、前記のカウンタの値がカウント閾値に達した場合、低速モード制御ロジック４３０中のカウンタ４３２の数を増し、対応する抑制信号をＯＲゲート４５０にアサートすることができる。
【００６３】
抑制信号は、発行及び送出パイプライン、すなわちレジスタ４１０〜４１４を通る命令の流れを一プロセッサ・サイクル抑制する。低速モード制御ロジック４３０は、（カウンタ値）×Ｎのプロセッサ・サイクル数閾値に至るまで、連続でプロセッサ・サイクルを抑制する命令をアサートし続けることができ、このＮは、プロセッサ・サイクルを抑制するための基本閾値数である。しかして、例えばＮが４の場合、低速モード制御ロジック４３０に対し低速モード信号が初回にアサートされたとき、低速モード制御ロジック４３０は、４プロセッサ・サイクルの間信号を抑制し、その後、発行ユニット３３０からの命令の発行を許す、すなわち、発行ユニット３３０から一つの命令が発行されている間だけ、発行及び送出パイプライン中のレジスタからレジスタ４１０〜４１４への命令の移動を可能にさせる。次の命令は、発行可能になる前に４プロセッサ・サイクル待たなければならない。該プロセッサ・サイクル抑制の基本閾値数Ｎについては、例えば、ハードウエアの妥当性確認の後で、低速モード制御ロジック４３０の中にプログラムすればよい。
【００６４】
このように、発行及び送出パイプラインは、Ｎプロセッサ・サイクル数ごとに発行ユニット３３０から一つの命令だけの発行が可能なように減速される。ライブロック検知制御ロジック４２０が、命令が完遂され命令の間のフラッシュ回数が閾値内かどうかをモニタし続けることによって、このプロセスを繰り返すことができる。
【００６５】
減速モード信号をアサートした後、ライブロック検知制御ロジック４２０は、そのカウンタを初期値に戻してリセットし、完遂された命令と命令との間の、発行及び送出パイプラインのフラッシュの回数のカウントを開始する。ライブロック検知制御ロジック４２０中のカウンタ４２２がフラッシュ閾値回数Ｘに達した都度、ライブロック検知制御ロジック４２０は、低速モード制御ロジック４３０に対し減速モード信号をアサートする。低速モード制御ロジック４３０中のカウンタ４３３は、増分され、この新しいカウンタ値を使って、低速モード制御ロジック４３０は、（カウンタ値）×Ｎのプロセッサ・サイクルの間発行及び送出パイプラインを通る命令の動きを抑制する。
【００６６】
前記のＮ値の例、すなわち４プロセッサ・サイクルを例に取れば、ライブロック状態が、ライブロック検知制御ロジック４２０によって、最初に検出されたときは、レジスタ４１０〜４１４で構成される発行及び送出パイプライン中の命令は、４プロセッサ・サイクルの間抑制される。その後、以降のライブロック検出については、４プロセッサ・サイクルの倍数、例えば８、１２、及び１６プロセッサ・サイクルの間、命令が抑制される。
【００６７】
カウンタ４３２の値があらかじめ定めた重度ライブロック状態閾値に達したならば、低速モード制御ロジック４３０は、発行及び送出パイプラインを逐次単一ステップ作動モードに移行させる。この逐次単一ステップ作動モードは、周知の単一ステップ動作モードと同様であり、うまくが完了するまでは一つの命令だけの発行が許される。発行及び送出パイプライン中の全ての命令の発行が完了すれば、発行ユニット３３０は、全速作動モードに戻ることが許され、再度ライブロック状態が検出されるまでは、命令が発行及び送出パイプラインを通り流れることが可能となる。同様に、各減速ステージ、すなわち減速モード信号のアサーション後の各減速において、一つの命令が完了されずにＸ回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てが排出されたならば、発行ユニット３３０は、全速モードに戻ることができる。
【００６８】
図５には、より厳しいライブロック状態が検出された際に、低速モード制御ロジック４３０がその処理に適用するさまざまな減速ステージの要点が記載されている。なお、前述の例示的実施形態では、処理された命令と命令との間のフラッシュの回数に対する特定の倍数が使われ、発行及び送出パイプライン中の命令を抑止するプロセッサ・サイクル数に対する特定の倍数が使われているが、本発明は、こういった倍数には限定されるものでない。それと反対に、本発明の精神及び範囲から逸脱することなく、処理された命令と命令との間のフラッシュ回数、又は各ステージにおける抑制プロセッサ・サイクル数には任意の値を使用することができる。ちなみに、一部の実施形態においては、これらの値は、相乗する倍数などでなく、ライブロック検知制御ロジック４２０又は低速モード制御ロジック４３０あるいはその両方の中にプログラムされた特定の値とすることができる。
【００６９】
図５は、一つの例示的実施形態による、ライブロック状態検出及び減速メカニズムの操作に対する段階的処理を示す典型図である。図５に示されるように、通常は、プロセッサ、従って該プロセッサの発行ユニットは、全速作動モード５１０で作動する。最初のライブロック状態、すなわち一つの命令が完遂されずＸ回のフラッシュ発生が検出されたとき、プロセッサは、プロセッサ減速ステージ１（５２０）に移行することになる。プロセッサ減速ステージ１（５２０）では、発行ユニットは、Ｎサイクルごとに一つの命令だけを発行することになる。
【００７０】
発行ユニットが、一命令が完了されずにＸ回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード５１０に戻る。さもなければ、プロセッサは、プロセッサ減速ステージ２（５３０）に移行し、該ステージでは、発行ユニット発行ユニットは２Ｎサイクルごとに一つの命令を発行することになる。
【００７１】
プロセッサ減速ステージ２（５３０）において、発行ユニットが、一命令が完了されずにＸ回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード５１０に戻る。さもなければ、プロセッサは、プロセッサ減速ステージ３（５４０）に移行し、該ステージでは、発行ユニットは４Ｎサイクルごとに一つの命令だけを発行する。発行ユニットが、一命令が完了されずにＸ回のフラッシュが生ずるといった状態が検知されることなく、発行及び送出パイプライン中の命令全てを排出すれば、プロセッサは全速作動モード５１０に戻る。
【００７２】
一つの命令が完了されずにＸ回のフラッシュがなお生ずるといった状態に遭遇した場合、プロセッサは重度のライブロック状態にあると判定され、プロセッサ減速ステージ４（５５０）に移行する。プロセッサ減速ステージ４（５５０）においては、発行ユニットは、完了するまでは一つの命令だけを発行する、逐次単一ステップ・モードを強制される。発行ユニットが、発行及び送出パイプラインの中の全ての命令を排出すれば、そのとき、プロセッサは全速作動モード５１０に戻る。
【００７３】
例示的実施形態の操作の例として、前記発明の背景で説明した図６Ａ及び６Ｂに示されたシナリオを再考察してみる。プログラムの実行中にこの状況が頻繁に発生し、発行及び送出パイプライン中に１２ヶの命令があると仮定する。ライブロック・ウィンドウが４プロセッサ・サイクルだけの場合、第三のｓｐｒへの移動命令、ｍｔ  ｓｐｒＣ  Ｒ１が、第二のｓｐｒへの移動命令、ｍｔ  ｓｐｒＥ  Ｒ７の後、４サイクル以内に発行された場合に、ライブロック状態が発生することになる。各々の命令を完了するのに１０プロセッサ・サイクルを要するとすれば、プロセッサが全速モードから逐次単一ステップモードに移行した場合、発行及び送出パイプラインから全ての命令を排出するのに約１２０サイクルを要することになる。
【００７４】
しかしながら、本明細書に記載された例示的実施形態であれば、プロセッサ減速ステージ１（５２０）においてＮが４に設定されている場合、全命令を排出するのに６０プロセッサ・サイクルより短くすることができる。しかして、該例示的実施形態では、逐次単一ステップ作動モードに直ちに移行させる既存のメカニズムに比較して、プロセッサのパフォーマンスが倍になる。この種のライブロック状態がプログラムで頻繁に発生する場合、該例示的実施形態は、プロセッサの全体的パフォーマンスに対するライブロック状態の影響を大幅に軽減する。
【００７５】
図７は、一つの例示的実施形態による、ライブロック状態を検出し、プロセッサ・パイプラインの作動を減速する典型的な操作の概要を示すフローチャートである。図７に概要が示された操作は、例えば、前記の図３及び４の発行ユニット３３０などの、プロセッサの発行ユニット内で実施できる。しかして、図７に示されたさまざまな操作は、プロセッサのハードウエアの中に実装することができる。該プロセッサは、単一プロセッサ・システムのプロセッサであっても、複数プロセッサ・システムのものであってもよい。一つの例示的実施形態において、該プロセッサを、マイクロプロセッサ又はシステム・オン・チップの一部とすることができる。このマイクロプロセッサ又はシステム・オン・チップには、同一の又は異なる命令の組によって作動する複数のプロセッサを含めることができる。例えば、該マイクロプロセッサ又はシステム・オン・チップは、一部のプロセッサが例えばＲＩＳＣ命令の組など第一命令セットを使って作動し、他のプロセッサが例えばベクトル命令の組など第二命令セットを使って作動する、異種デバイスとすることができる。プロセッサが実装される装置の種類及び構成は、こういった記述内容に、又は本発明の精神及び範囲からしても限定されるものではない。
【００７６】
図７に示されるように、この操作は、全速作動モードで稼動しているプロセッサすなわちその発行ユニットから始まる（ステップ７１０）。発行ユニットはライブロック状態が検出されたかどうかを判断する（ステップ７２０）。検出されなければ、作動はステップ７１０に戻り、プロセッサ及び発行ユニットは全速稼動を続ける。例えば図４のライブロック検知制御ロジック４２０の判定により、ライブロック状態が検出された場合、プロセッサ及び発行ユニットは、命令がＮプロセッサ・サイクルごとにだけ発行されるプロセッサ減速ステージ１に移行する（ステップ７３０）。図７に示されるように、ライブロック状態が存在するという判定については、例えば、ライブロック検知制御ロジック４２０が、命令が完遂されずにフラッシュがＸ回発生したのを検出するかどうかに基いて行うことができる。
【００７７】
その後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する（ステップ７４０）。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる（ステップ７１０）。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、２Ｎプロセッサ・サイクルごとに一つの命令が発行されるプロセッサ減速ステージ２に移行する（ステップ７５０）。図示するように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック４２０が、命令が完遂されずにフラッシュが２Ｘ回発生したのを検出するかどうかに基いて行うことができる。
【００７８】
前記の後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する（ステップ７６０）。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる（ステップ７１０）。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、４Ｎプロセッサ・サイクルごとに一つの命令が発行されるプロセッサ減速ステージ３に移行する（ステップ７７０）。図示のように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック４２０が、命令が完遂されずにフラッシュが３Ｘ回発生したのを検出するかどうかに基いて行うことができる。
【００７９】
前記の後、発行ユニットは、ライブロック状態が再度検出されるかどうか判定する（ステップ７８０）。検出されなければ、プロセッサ及び発行ユニットは全速作動モードに戻ることができる（ステップ７１０）。ライブロック状態が再度検出された場合、プロセッサ及び発行ユニットは、発行ユニットが、従来技術で周知のような逐次単一ステップ作動モードに置かれる、プロセッサ減速ステージ４に移行する（ステップ７９０）。図示のように、ライブロック状態が再度検出されたかどうかの判定は、例えば、ライブロック検知制御ロジック４２０が、命令が完遂されずにフラッシュが４Ｘ回発生したのを検出するかどうかに基いて行うことができる。
【００８０】
前記の後、ライブロック状態は、従来技術で周知のように、逐次単一ステップ作動モードを使って解放される。しかる後、プロセッサ及び発行ユニットは全速作動モードに戻される（ステップ７１０）。この操作は、プロセッサが作動している間中継続し、プロセッサがオフラインにされたとき終了することができる。
【００８１】
しかして、これらの例示的実施形態は、プロセッサ中における命令の発行を減速するための段階的減速メカニズムを備えることによって、ライブロック状態を解放するメカニズムを提供する。ライブロック状態の発生を検出するためライブロック検知制御ロジックが設けられ、プロセッサの発行ユニットを、段階的スキームの一つの減速ステージから次のステージへ移行させる低速モード制御ロジックが設けられる。段階的減速処理スキームのどのステージにおいても、ライブロック状態が検出されなくなれば、プロセッサ及び発行ユニットは、全速作動モードに戻り移行することができる。このように、逐次単一ステップ作動モードに直ちには移行させないことにより、より高いプロセッサ・パフォーマンスを得ることができる。
【００８２】
前述したプロセッサ回路を集積回路チップの設計の一部とすることができる。該チップ設計を図形処理コンピュータ・プログラミング言語で生成し、（例えば、ディスク、テープ、物理ハード・ドライブ、又は格納アクセス・ネットワーク中などの仮想ハード・ドライブといった）コンピュータ記憶媒体に格納することができる。設計者が、チップ又はそのフォトリソグラフィ・マスクを作製しない場合、該設計者は、生成した設計を（例えば、設計を格納した記憶媒体のコピーを提供するなど）物理的手段で、又は（例えば、インターネットを介するなど）電子的に、直接に又は間接的に作製事業体に伝えることができる。格納された設計は、フォトリソグラフィ・マスクの作製のため適切なフォーマット（例、ＧＤＳＩＩ）に変換することができ、通常、これはウエハ上に形成される、対象となるチップ設計の複数のコピーを含む。該フォトリソグラフィ・マスクは、エッチング又は他の処理を行うウエハ（又はその上の層、あるいはその両方）の区域を規定するため使用される。
【００８３】
作製者は、得られた集積回路チップを、未加工ウエハの形（すなわち、未パッケージの複数のチップを有する単一のウエハ）で、ベア・ダイとして、あるいはパッケージされた形で頒布することができる。後者の場合、チップは、単一チップ・パッケージ（マザーボード又はより高レベルの担体に取り付けるための、リードを有するプラスチック担体など）に、又は複数チップ・パッケージ（片面又は両面配線、又は内蔵配線を有するセラミック担体など）に搭載することができる。いずれの場合においても、チップは、次いで、（ａ）マザーボードなどの中間製品、もしくは（ｂ）最終製品の一部として、他のチップ、ディスクリート回路素子又は他の信号処理素子あるいはその両方と一体にされる。この最終製品は、玩具及び他のローエンドのアプリケーションから、ディスプレイ、キーボード又は他の入力装置、及び中央プロセッサを有する高度なコンピュータ製品までに亘る、集積回路チップを包含した任意の製品とすることができる。さらに、集積回路チップの設置が可能なこういった最終製品には、ゲーム・マシン、ゲーム・コンソール、携帯型計算装置、携帯端末、無線電話などの通信装置、ノート型計算装置、デスクトップ計算装置、サーバ計算装置、又は他の任意の計算装置を含めることができよう。
【００８４】
なお、本発明を、完全な機能を有するデータ処理システムに関連させて説明してきたが、当業者は、本発明のプロセスをコンピュータ可読の命令媒体の形、及びさまざまな他の形で頒布することが可能であり、頒布を行うため実際に使用される信号担持媒体の特定の種類に関わらず、それらを同様に本発明の頒布に利用できることを十分に理解していよう。コンピュータ可読媒体の例には、フレキシブル・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭといった記録可能なタイプの媒体、及び、デジタル及びアナログ通信リンク、例えば無線周波数及び光波通信などの通信方式を使う有線及び無線通信リンクといった通信タイプの媒体が含まれる。コンピュータ可読の媒体には、符号化されたフォーマット形式を用い、特定のデータ処理システムで実際に使うにあたってこれを復号することができる。
【００８５】
本発明の記載内容は、例示及び説明を目的として提示されたものであり、本発明を全網羅したり、開示した形態に限定することを意図したものではない。当業者には、多くの変更及び変形が可能なことは自明であろう。本明細書の実施形態は、本発明の原理、実際の応用を最善に説明し、他の当業者が本発明を理解して、意図する特定の用途に適したさまざまな変更を加えた多様な実施形態を作製可能にするために、選択され記述されたものである。
【図面の簡単な説明】
【００８６】
【図１】例示する実施形態の態様が実施可能な、分散型データ処理システムの典型図を示す。
【図２】例示する実施形態の態様が実施可能な、データ処理装置の典型的なブロック図を示す。
【図３】一つの例示的実施形態によるプロセッサのパイプラインを図示する典型図を示す。
【図４】一つの例示的実施形態による発行ユニットの細部を図示する典型図を示す。
【図５】一つの例示的実施形態による、ライブロック状態の検出及び減速メカニズム操作の段階的スキームを図示する典型図を示す。
【図６】図６Ａは、ＳＭＴ、及び一つおきサイクルで各スレッドから２つの命令が発行されるデュアル命令発行プロセッサ・パイプラインの設計を示す。図６Ｂは、図６Ａに示されたプロセッサ・パイプラインで実行されたとき、両方のスレッドに、プロセッサの専用レジスタへのアクセスを起こさせる典型的なユーザ・コードを示す。
【図７】一つの例示的実施形態による、ライブロック状態を検出して、プロセッサ・パイプラインの作動を減速する典型的な操作の要点を説明するフローチャートを示す。
【図１】
2009533738.tif 000005
【図２】
2009533738.tif 000006
【図３】
2009533738.tif 000007
【図４】
2009533738.tif 000008
【図５】
2009533738.tif 000009
【図６】
2009533738.tif 000010
【図７】
2009533738.tif 000011
【国際調査報告】
2009533738.tif 000012
2009533738.tif 000013