(57)【要約】 本発明の一実施形態は、命令がプログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を保留することを容易にするシステムを提供する。通常実行モードの間、システムは、プログラムオーダーに従って実行されるように、命令を発行する。システムは、命令の実行中に未確定のデータ依存性に直面した際、プログラムの実行を命令の時点に戻すのに繰り返し用いられ得るチェックポイントを生成する。次に、システムは、その後の命令をエクセキュート・アヘッド・モードにおいて実行する。エクセキュート・アヘッド・モードとは、未確定のデータ依存性のために実行され得ない命令が保留され、その他の保留されない命令がプログラムオーダーに従って実行されるモードを言う。
2007508640.tif 000002
【特許請求の範囲】
【請求項１】
命令が、プログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を保留にする方法であって、
通常実行モード中にプログラムオーダーに従って実行されるように命令を発行するステップと、
命令の実行中に未確定のデータ依存性に直面した際に、
該プログラムの実行を該命令の時点まで戻すために繰り返し用いられ得るチェックポイントを生成し、
その後の命令をエクセキュート・アヘッド・モードにおいて実行するステップと
を含み、
未確定のデータ依存性のために実行され得ない命令は保留にされ、その他の保留にされない命令はプログラムオーダーに従って実行される、
方法。
【請求項２】
前記未確定のデータ依存性がエクセキュート・アヘッド・モード中に確定された場合に、
前記方法が、
保留にされた命令を保留実行モードにおいて実行するステップと、
保留にされた命令が全て実行された場合、前記通常実行モードに戻り、エクセキュート・アヘッド・モードが終了した時点から通常のプログラム実行を再開するステップと
を更に含む、請求項１に記載の方法。
【請求項３】
保留にされた命令を前記保留実行モードにおいて実行するステップが、
保留にされた命令をプログラムオーダーに従って実行されるように発行するステップと、
未確定のデータ依存性のため、未だに実行され得ない保留にされた命令の実行を保留にするステップと、
実行され得るその他の保留にされた命令を、プログラムオーダーに従って実行するステップと
を含む、請求項２に記載の方法。
【請求項４】
保留にされた命令のいくつかが再び保留にされた場合に、前記方法が、エクセキュート・アヘッド・モードが終了した時点のエクセキュート・アヘッド・モードに戻るステップを更に含む、請求項３に記載の方法。
【請求項５】
チェックポイントを生成するステップが、前記プロセッサの正確なアーキテクチャ状態をセーブし、エクセキュート・アヘッド・モードまたは保留モードの間に発生する例外から、その後のリカバリを容易にするステップを含む、請求項２に記載の方法。
【請求項６】
命令を実行するステップが、データ依存性を追跡して、命令が未確定のデータ依存性の対象であるか否かを決定することを容易にするステップを含む、請求項１に記載の方法。
【請求項７】
データ依存性を追跡するステップが、各レジスタに対する状態情報を保存するステップを含み、該状態情報は該レジスタ内の値が未確定のデータ依存性に依存するか否かを示す情報である、請求項１に記載の方法。
【請求項８】
前記未確定のデータ依存性が、
先のロードミスから戻っていないオペランドの使用と、
先のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）ミスから戻っていないオペランドの使用と、
ストアバッファ動作からの、先の全リード・アフター・ライト（ＲＡＷ）または部分リード・アフター・ライトから戻っていないオペランドの使用と、
未確定のデータ依存性の対象である他のオペランドに依存するオペランドの使用と
を含み得る、請求項１に記載の方法。
【請求項９】
通常モードまたはエクセキュート・アヘッド・モードにおいて実行している間、非データ依存ストール条件に直面した場合に、前記方法が、
スカウトモードに移行するステップであって、フューチャーロードをプリフェッチするために投機的に命令が実行されるが、前記プロセッサのアーキテクチャ状態に結果が拘束されない、ステップと、
ラウンチポイント・ストール条件（本来はシステムを通常実行モードから退出させるために課された、前記未確定なデータ依存性、または、前記非データ依存ストール条件）が最終的に確定された場合に、前記チェックポイントを用いて、ラウンチポイント命令（本来はラウンチポイント・ストール条件に直面した命令）から、通常モードにおいて実行を再開するステップと
を更に含む、請求項１に記載の方法。
【請求項１０】
前記非データ依存ストール条件が、
メモリバリア・オペレーションと、
ロードバッファ完全条件と、
ストアバッファ完全条件と
を含み得る、請求項９に記載の方法。
【請求項１１】
命令を保留にするステップが、先入先出バッファとして構成された保留バッファ内に命令を格納するステップを含む、請求項１に記載の方法。
【請求項１２】
プログラムオーダーに従って実行されるように命令を発行するステップが、先入先出バッファとして構成された命令バッファから命令を発行するステップを含む、請求項１に記載の方法。
【請求項１３】
命令が、プログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を保留にする装置であって、
通常実行モード中にプログラムオーダーに従って実行されるように命令を発行するように構成された実行機構と、
未確定のデータ依存性を検出するように構成された検出機構と
を備え、
該実行機構は、命令の実行中に未確定のデータ依存性が検出された場合に、
該プログラムの実行を該命令の時点まで戻すために繰り返し用いられ得るチェックポイントを生成し、
その後の命令をエクセキュート・アヘッド・モードにおいて実行する
ように構成された機構であり、
未確定のデータ依存性のために実行され得ない命令は保留にされ、その他の保留にされない命令はプログラムオーダーに従って実行される、
装置。
【請求項１４】
前記実行機構は、前記未確定のデータ依存性がエクセキュート・アヘッド・モード中に確定された場合に、保留にされた命令を保留実行モードにおいて実行するように構成され、
前記実行機構は、保留にされた命令が保留実行モードの間に全て実行された場合に、該通常実行モードに戻り、該エクセキュート・アヘッド・モードが終了した時点から、通常のプログラム実行を再開するように構成されている、請求項１３に記載の装置。
【請求項１５】
前記実行機構が、保留された命令を前記保留実行モードにおいて実行している間に、
保留にされた命令をプログラムオーダーに従って実行されるように発行し、
未確定のデータ依存性のため、未だに実行され得ない保留にされた命令の実行を保留にし、
実行され得るその他の保留にされた命令を、プログラムオーダーに従って実行する
ように構成されている、請求項１４に記載の装置。
【請求項１６】
前記実行機構が、保留にされた命令のいくつかが再び保留にされた場合に、エクセキュート・アヘッド・モードが終了した時点のエクセキュート・アヘッド・モードに戻るように構成されている、請求項１５に記載の装置。
【請求項１７】
前記実行機構が、チェックポイントを生成している間に前記プロセッサの正確なアーキテクチャ状態をセーブし、エクセキューション・アヘッド・モードまたは保留モードの間に発生する例外からその後のリカバリを容易にするように構成される、請求項１４に記載の装置。
【請求項１８】
前記実行機構が、データ依存性を追跡して、命令が未確定のデータ依存性の対象であるか否かを決定することを容易にするように構成される、請求項１３に記載の装置。
【請求項１９】
前記実行機構が、データ依存性を追跡している間に各レジスタに対する状態情報を保存し、該状態情報は該レジスタ内の値が未確定のデータ依存性に依存するか否かを示す、請求項１３に記載の装置。
【請求項２０】
前記未確定のデータ依存性が、
先のロードミスから戻っていないオペランドの使用と、
先のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）ミスから戻っていないオペランドの使用と、
ストアバッファ動作からの、先の全リード・アフター・ライト（ＲＡＷ）または部分リード・アフター・ライトから戻っていないオペランドの使用と、
未確定のデータ依存性の対象である他のオペランドに依存するオペランドの使用と
を含み得る、請求項１３に記載の装置。
【請求項２１】
前記実行機構は、通常モードまたはエクセキュート・アヘッド・モードにおいて実行している間、非データ依存ストール条件に直面した場合に、スカウトモードに移行するように構成され、
スカウトモードの間、フューチャーロードをプリフェッチするために投機的に命令が実行されるが、結果は前記プロセッサのアーキテクチャ状態に拘束されず、
スカウトモードは、ラウンチポイント・ストール条件（本来はシステムを通常実行モードから退出させるために課された、前記未確定なデータ依存性、または、前記非データ依存ストール条件）が最終的に確定された場合に、前記チェックポイントがラウンチポイント命令（本来はラウンチポイント・ストール条件に直面した命令）から、通常モードにおいて実行を再開するように用いられる
請求項１３に記載の装置。
【請求項２２】
前記非データ依存ストール条件が、
メモリバリア・オペレーションと、
ロードバッファ完全条件と、
ストアバッファ完全条件と
を含み得る、請求項２１に記載の装置。
【請求項２３】
保留にされた命令を格納するための保留バッファを更に備え、該保留バッファは先入先出バッファとして構成されている、請求項１３に記載の装置。
【請求項２４】
プログラムオーダーに従って実行されるように発行された命令を格納するための命令バッファを更に備え、該命令バッファは先入先出バッファとして構成されている、請求項１３に記載の装置。
【請求項２５】
命令が、プログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を保留にするマイクロプロセッサであって、
１つ以上のマイクロプロセッサ・コアを含むマイクロチップと、
マイクロプロセッサ・コア内の実行機構であって、通常実行モード中にプログラムオーダーに従って実行されるように命令を発行するように構成された実行機構と、
該マイクロプロセッサ・コア内の検出機構であって、命令の実行中に未確定のデータ依存性を検出するように構成された、検出機構と
を備え、
該実行機構は、命令の実行中に未確定のデータ依存性が検出された場合に、
該プログラムの実行を該命令の時点まで戻すために繰り返し用いられ得るチェックポイントを生成し、
その後の命令をエクセキュート・アヘッド・モードにおいて実行する
ように構成された機構であり、
未確定のデータ依存性のために実行され得ない命令は保留にされ、その他の保留にされない命令はプログラムオーダーに従って実行される、
マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムの性能を向上させるための技術に関する。更に詳しくは、本発明は、命令がプログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を選択的に保留することによって、プログラムの実行を高速化させるための方法と装置とに関する。
【背景技術】
【０００２】
半導体製造技術の進歩により、マイクロプロセッサのクロック速度において目覚しい高速化がもたらされた。マイクロプロセッサのクロック速度におけるこの高速化は、それに対応したメモリアクセス速度における高速化とは調和が取れていなかった。その後、マイクロプロセッサのクロック速度とメモリアクセス速度との間の不均衡は増大化し、深刻な性能上の問題を生じ始めている。高速マイクロプロセッサ・システムに対する実行プロファイルは、マイクロプロセッサ・コア内ではなくマイクロプロセッサ外のメモリ構造において、実行時間のうちの多くが消費されたと言うことを示す。このことは、マイクロプロセッサ・システムが、計算オペレーションを実行する代わりに、メモリ参照を待機するために多くの時間を消費したと言うことを意味する。
【０００３】
効果的なキャッシュ・スキーム（ｃａｃｈｉｎｇ  ｓｃｈｅｍｅ）は、メモリアクセスの実行数を減らすのに役立つ。しかしながら、メモリ参照時、例えば、ロード動作（ｌｏａｄ  ｏｐｅｒａｔｉｏｎ）がキャッシュミスを生成する時に、レベル２（Ｌ２）キャッシュまたはメモリへのアクセスは、数十または数百のクロックサイクルを要求し得る。一般に、その間の時間、プロセッサはアイドルであって、有用な仕事を実行しない。
【０００４】
現在では、このキャッシュミス・レイテンシ（ｃａｃｈｅ−ｍｉｓｓ  ｌａｔｅｎｃｙ）を隠すために、多くの技術が用いられている（または提唱されて来た）。いくつかのプロセッサは、アウト・オブ・オーダー（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）実行をサポートするために用いられる。アウト・オブ・オーダー実行とは、命令が発行キュー（ｉｓｓｕｅ  ｑｕｅｕｅ）に保存され、オペランドが入手可能になった時に、上記命令が「アウト・オブ・オーダーに」発行されることを言う。残念ながら、アウト・オブ・オーダー・デザインが存在すると、ハードウェアの複雑度は、発行キューのサイズに伴い、２次方程式のように（ｑｕａｄｒａｔｉｃａｌｌｙ）増大する。事実上、この拘束は、発行キューへのエントリ数を１００から２００に制限する。これは、プロセッサが高速化し続けることに伴うメモリ・レイテンシを隠すには不十分である。更に、アウト・オブ・オーダー実行の間、レジスタをリネームするために利用可能な物理レジスタの個数に対する拘束もまた、発行キューの有効サイズを制限する。
【０００５】
一部のデザイナーは、スカウト・アヘッド（ｓｃｏｕｔ−ａｈｅａｄ）実行モードを提唱して来た。スカウト・アヘッド実行モードとは、命令がフューチャーロード（ｆｕｔｕｒｅ  ｌｏａｄ）をプリフェッチするために投機的（ｓｐｅｃｕｌａｔｉｖｅｌｙ）に実行されるが、プロセッサのアーキテクチャ状態に結果が拘束（ｃｏｍｍｉｔ）されないモードのことを言う。例えば、Ｓｈａｉｌｅｎｄｅｒ  ＣｈａｕｄｈｒｙとＭａｒｃ  Ｔｒｅｍｂｌａｙとによって発明された、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｕｓｉｎｇ  ａｎ  Ａｓｓｉｓｔ  Ｐｒｏｃｅｓｓｏｒ  ｔｏ  ＰｒｅＦｅｔｃｈ  Ｄａｔａ  Ｖａｌｕｅｓ  ｆｏｒ  ａ  Ｐｒｉｍａｒｙ  Ｐｒｏｃｅｓｓｏｒ」と題された、米国特許第６，４１５，３５６号を参照されたい。レイテンシ問題に対するこの解決方法は、発行キューとリネームユニット（ｒｅｎａｍｅ  ｕｎｉｔ）の複雑性を解消し、更に、メモリレベルでのパラレリズムをも実現する。しかしながら、スカウト・アヘッド・モードの間に実行される全ての計算オペレーションを再計算しなければいけないという不都合を被る。
【０００６】
このため、既存のプロセッサ・デザインが抱える上述の欠点を有さない、メモリ・レイテンシを隠すための方法と装置が必要となる。
【発明の開示】
【課題を解決するための手段】
【０００７】
（発明の要約）
本発明の一実施形態は、命令がプログラムオーダーに従って実行されるように発行されている時に、未確定のデータ依存性を有する命令の実行を保留にすることを容易にするシステムを提供する。通常実行モードの間、システムは、命令をプログラムオーダーに従って実行されるように発行する。命令の実行中に未確定のデータ依存性に直面した際に、システムは、プログラムの実行を上記命令の時点まで戻すために繰り返し用いられ得るチェックポイントを生成する。次に、システムは、その後の命令をエクセキュート・アヘッド・モード（ｅｘｅｃｕｔｅ−ａｈｅａｄ  ｍｏｄｅ）において実行し、未確定のデータ依存性のために実行され得ない命令は保留にされ、その他の保留にされない命令はプログラムオーダーに従って実行される。
【０００８】
上記実施形態のバリエーションにおいて、システムは、未確定のデータ依存性がエクセキュート・アヘッド・モード中に確定された場合に、保留実行モードに移行する。保留実行モードとは、システムが保留された命令を実行するモードのことを言う。上記保留実行モードの間に保留にされた命令の全てが実行されると、システムは通常実行モードに戻り、エクセキュート・アヘッド・モードが終了した時点から、通常のプログラム実行を再開する。
【０００９】
更なるバリエーションにおいては、保留された命令を保留実行モードにおいて実行することは、その他の保留にされた命令に関してプログラムオーダー（但し、その他の既に実行された命令に関してはアウト・オブ・オーダーである）に従って実行されるように、保留された命令を発行することと、未確定のデータ依存性のため、未だに実行され得ない保留された命令の実行を保留にすることと、実行され得るその他の保留にされた命令をプログラムオーダーに従って実行することとを含む。
【００１０】
更なるバリエーションにおいて、システムは、保留にされた命令のいくつかが再び保留にされた場合に、エクセキュート・アヘッド・モードが終了した時点のエクセキュート・アヘッド・モードに戻る。
【００１１】
更なるバリエーションにおいて、チェックポイントを生成することは、プロセッサの正確なアーキテクチャ状態をセーブし、エクセキュート・アヘッド・モードまたは保留モードの間に発生する例外（ｅｘｃｅｐｔｉｏｎ）から、その後のリカバリを容易にすることを含む。
【００１２】
本実施形態のバリエーションにおいて、システムは、命令の実行中にデータ依存性を追跡することによって、未確定のデータ依存性の対象である命令であるか否かを決定することを容易にする。データ依存性を追跡することは、各レジスタに対する状態情報を保存することを含み得る。ここに、状態情報とは、レジスタ内の値が未確定のデータ依存性に依存するか否かを示す情報を言う。
【００１３】
本実施形態のバリエーションにおいて、未確定のデータ依存性は、先のロードミスから戻っていないオペランドを用いることと、先のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）ミスから戻っていないオペランドを用いることと、ストアバッファ動作からの、先の全リード・アフター・ライト（ＲＡＷ）または部分リード・アフター・ライトから戻っていないオペランドを用いることと、未確定のデータ依存性の対象である他のオペランドに依存するオペランドを用いることとを含み得る。
【００１４】
本実施形態のバリエーションにおいて、システムは、通常モードまたはエクセキュート・アヘッド・モードにおいて実行している間、非データ依存ストール条件に直面した場合に、スカウト・アヘッド・モードに移行する。スカウト・アヘッド・モードにおいては、フューチャーロードをプリフェッチするために命令が投機的に実行されるが、結果はプロセッサのアーキテクチャ状態に拘束されない。ラウンチポイント・ストール条件（本来はシステムを通常実行モードから退出させるために課された、未確定のデータ依存性、または、非データ依存ストール条件）が最終的に確定された場合、システムは、チェックポイントを用いて、ラウンチポイント命令（本来はラウンチポイント・ストール条件に直面した命令）から、通常モードにおいて実行を再開する。
【００１５】
更なるバリエーションにおいて、非データ依存ストール条件は、メモリバリア・オペレーションと、ロードバッファ完全条件と、ストアバッファ完全条件とを含み得る。
【００１６】
本実施形態のバリエーションにおいて、システムは、先入先出バッファとして構成された保留バッファ内に保留された命令を格納する。
【００１７】
本実施形態のバリエーションにおいて、システムは、先入先出バッファとして構成された命令バッファから、プログラムオーダーに従って実行されるように命令を発行する。
【００１８】
本発明が従来のアウト・オブ・オーダー・デザインに対して多くの優位性を有しているという点に留意されたい。第１に、命令バッファは単純な先入先出（ＦＩＦＯ）バッファであり、上記バッファは従来のアウト・オブ・オーダー・ウィンドウとは異なり、連想記憶装置（ＣＡＭ）オペレーションに対して複雑な回路を要求しないと言う点。更に、上記ＦＩＦＯバッファは、単一の読み取りポートと単一の書き込みポートとを有する共通のＳＲＡＭセルである。このため、それらの領域（ａｒｅａ）はサイズに伴い線形的に増大し、これにより、数千個の保留された命令を格納することが可能になる。実際、ＳＲＡＭの記憶密度の優位性が与えられた場合、これら数千の命令は、従来のアウト・オブ・オーダー発行バッファによって用いられていたのと同一の領域内に格納され得る。従来のアウト・オブ・オーダー発行バッファは、１２８個の命令しか保存できないバッファであった。（本発明に係る上述の実施形態はＦＩＦＯバッファを用い、命令バッファ１０８と保留バッファ１１２の両方を実装するが、ＳＲＡＭのような他の非ＦＩＦＯ構造が命令バッファ１０８と保留バッファ１１２とを実装するために用いられ得ることに留意せよ。）
第２に、独立なデータレディ命令が直ちに（ａｔ  ｏｎｃｅ）実行されるため、従属な命令のみが保留バッファ内に保存されると言う点。これにより、チップリソースが節約される。発行されたデータレディ命令は、従来のアウト・オブ・オーダー・デザインにおいては、中止されるまで発行キュー（または同等な構造）においてスペースを消費し続けるという点に留意されたい。
【００１９】
更に、アーキテクチャレジスタを物理レジスタにリネームすることは、必ずしも必要ではない。そのため、リネームユニットの複雑さを解消することが出来る。このことは、アウト・オブ・オーダー・ウィンドウのサイズがレジスタ・ファイルのサイズによって制限されないことを意味する。このため、本発明によって、アウト・オブ・オーダー実行を潜在的には無数の命令にまで容易に拡張することが出来るようになる。
【発明を実施するための最良の形態】
【００２０】
（詳細な記述）
以下の記述は、任意の当業者が本発明を実施および利用可能とするために提示されたものであり、特定の応用とその実施要件とに照らして提供されたものである。当業者は、開示された実施形態に対する様々な改良を容易に理解し得る。また、ここで規定された原則は、本発明の精神と目的から逸れずに、その他の実施形態と応用例とに適用され得る。そのため、本発明は、示されている実施形態には制限されず、ここで開示されている原則と特徴とに矛盾しない、最大限の範囲に合致する。
【００２１】
（プロセッサ）
図１Ａは、本発明の実施形態に関連したプロセッサ１００のデザインを示している。一般に、プロセッサ１００は、任意のタイプのプロセッサを含み得る。例えば、マイクロプロセッサ、メインフレームコンピュータ、デジタル信号プロセッサ、パーソナルオーガナイザー（ｐｅｒｓｏｎａｌ  ｏｒｇａｎｉｚｅｒ）、デバイスコントローラ、および、計算エンジンと計算装置を含み得るが、これらには限定されない。図１に示されているように、プロセッサ１００は、命令キャッシュ１０２、フェッチユニット１０４、デコードユニット１０６、命令バッファ１０８、保留バッファ１１２、グループ論理（ｇｒｏｕｐｉｎｇ  ｌｏｇｉｃ）１１０、メモリ１１３、算術的論理ユニット（ＡＬＵ）１１４、ＡＬＵ１１６、ブランチパイプ１１８、および、浮動小数点ユニット１２０を含む。
【００２２】
動作中、フェッチユニット１０４は、実行されることになる命令を命令キャッシュ１０２から読み出し、それら命令をデコードユニット１０６に送る。デコードユニット１０６は、実行されることになる命令を命令バッファ１０８に転送する。上記命令バッファは、ＦＩＦＯバッファとして構成されている。命令バッファ１０８は、プログラムオーダーに従ってグループ論理１１０に命令を転送する。上記グループ論理は、命令をグループ化し、（アクセスメモリ１２４に対する）メモリパイプ１２２、ＡＬＵ１１４、ＡＬＵ１１６、（条件付ブランチ計算を確定する）ブランチパイプ１１８、および、浮動小数点ユニット１２０を含む実行ユニットに、それらを送信する。
【００２３】
ロード動作から戻っていないオペランドのような未確定のデータ依存性のために命令が実行され得ない場合、システムは、命令の実行を保留し、上記命令を保留バッファ１１２に移す。命令バッファ１０８と同様に、保留バッファ１１２もまた、ＦＩＦＯバッファとして構成されていることに留意されたい。
【００２４】
データ依存性が最終的に確定した場合、保留バッファ１１２からの命令は、その他の保留命令に関連し、その他の既に実行された保留されていない命令には関連せずに、プログラムオーダーに従って実行される。このプロセスは、図２を参照して以下でより詳細に述べられる。
【００２５】
（依存性の追跡）
本発明は、命令が未確定のデータ依存性の対象であるか否かを決定するために、データ依存性を追跡する。このことは、本発明の一実施形態においては、各レジスタに対する状態情報を保存することを含み得る。状態情報とは、上記レジスタ内の値が未確定のデータ依存性に依存しているか否かを示す情報である。例えば、図１Ｂは、本発明の一実施形態に関連したレジスタ・ファイル１３０を示している。レジスタ・ファイル１３０内の各レジスタは、「ノット・ゼア（ｎｏｔ  ｔｈｅｒｅ）」ビットに関連している。上記ノット・ゼア・ビットは、レジスタ内に有効なオペランド値が含まれているか否か、または、未確定のデータ依存性のためにオペランドが生成され得ないか否かを追跡する。例えば、ロード動作からオペランドが戻って来るのを待機するレジスタの場合、対応するノット・ゼア・ビットは、所望のオペランド値がレジスタ内に存在しないことを示すようにセットされる。その後の命令がノット・ゼアとしてマークされた（ｍａｒｋｅｄ）ソース・オペランド値を参照し、宛先レジスタ（ｄｅｓｔｉｎａｔｉｏｎ  ｒｅｇｉｓｔｅｒ）に格納される結果を生成する場合、システムは、宛先レジスタ内の値もまた未確定のデータ依存性に依存していると言うことを明示するために、宛先レジスタをノット・ゼアとしてマークする。このことは、上記命令のソース・レジスタに対するノット・ゼア・ビットの「ＯＲ」を用いて、宛先レジスタのノット・ゼア・ビットをマークすることによって達成され得る。
【００２６】
（状態図）
図２は、本発明の一実施形態に関連した、エクセキュート・アヘッド・モードを含む状態図を示している。システムは、通常モード２０２から開始する。通常モードでは、命令バッファ１０８（図１を参照のこと）から発行された命令は、プログラムオーダーに従って実行される。
【００２７】
次に、命令の実行中に未確定のデータ依存性が発生した場合、システムは、エクセキュート・アヘッド・モード２０４に移行する。未確定のデータ依存性は、先のロードミスから戻っていないオペランドを用いることと、先のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）ミスから戻っていないオペランドを用いることと、ストアバッファ動作からの、先の全リード・アフター・ライト（ＲＡＷ）または部分リード・アフター・ライトから戻っていないオペランドを用いることと、未確定のデータ依存性の対象となる他のオペランドに依存するオペランドを用いることとを含み得る。
【００２８】
エクセキュート・アヘッド・モード２０４に移行する間、システムは、命令のチェックポインティングを実行し、使用され得るチェックポイントを生成する。また、必要に応じて、未確定のデータ依存性に直面したポイントまで、プロセスの実行を戻す。このポイントは、「ラウンチポイント（ｌａｕｎｃｈ  ｐｏｉｎｔ）」として参照される。（チェックポイントを生成することは、プロセッサの正確なアーキテクチャ状態をセーブし、エクセキュート・アヘッド・モードまたは保留モードの間に発生する例外からその後のリカバリを容易にすることを含み得るという点に留意されたい。）システムはまた、未確定のデータ依存性に直面した命令の実行を「保留」し、保留された命令を保留バッファ１１２内に格納する。
【００２９】
エクセキュート・アヘッド・モード２０４において、システムは、命令バッファ１０８から受け取った命令をプログラムオーダーで実行し続け、未確定のデータ依存性のために実行され得ない任意の命令は、保留バッファ１１２内に保存される。
【００３０】
システムがエクセキュート・アヘッド・モード２０４にある時、未確定のデータ依存性がついに確定した場合、システムは、保留モード２０６に移行する。保留モードでは、保留バッファ１１２からの命令がプログラムオーダーに従って実行される。システムは、保留実行モード２０６の間、保留バッファ１１２からの、保留された命令を実行しようと試みる。保留バッファ１１２内のその他の保留された命令に関連し、その他の既に実行された保留されていない命令とは関連せずに（また、保留バッファ１１２を介して既に受け渡された、保留された命令とは関連せずに）、システムが、これらの命令をプログラムオーダーに従って実行しようと試みると言うことに留意されたい。システムは、このプロセスの間、未確定のデータ依存性のため、未だに実行され得ない保留された命令の実行を保留にし、これら再度保留された命令を保留バッファ１１２に戻す。システムは、互いに関連してプログラムオーダーに従って実行され得るその他の命令を実行する。
【００３１】
システムが保留バッファ１１２を介した受け渡しを完了した後、保留バッファ１１２が空の場合、上記システムは、通常実行モード２０２に戻る。このことは、エクセキュート・アヘッド・モード２０４の間に行われたコミットチェンジ（ｃｏｍｍｉｔｔｉｎｇ  ｃｈａｎｇｅ）と、そのような変更が未だに行われていなかった場合は、プロセッサのアーキテクチャ状態への保留実行モード２０６とを含み得る。また、システムがエクセキュート・アヘッド・モード２０４に移行した時に生成されたチェックポイントを破棄することをも含み得る。
【００３２】
一方、システムが保留バッファ１１２を介した受け渡しを完了した後に保留バッファ１１２が空でない場合、上記システムは、エクセキュート・アヘッド・モードに戻り、エクセキュート・アヘッド・モード２０４が終了した時点から、命令バッファ１０８から受け取った命令を実行する。
【００３３】
非データ依存ストール条件は、システムが通常実行モード２０２またはエクセキュート・アヘッド・モード２０４にあるときに発生し、上記システムはスカウトモード（ｓｃｏｕｔ  ｍｏｄｅ）２０８に移行する。（この非データ依存ストール条件は、メモリバリア・オペレーションと、ロードバッファ完全条件と、ストアバッファ完全条件と、または、保留バッファ完全条件とを含み得る。）スカウトモード２０８において、命令は、フューチャーロードをプリフェッチするために投機的に実行されるが、結果はプロセッサのアーキテクチャ状態に拘束されない。
【００３４】
スカウトモードは、Ｓｈａｉｌｅｎｄｅｒ  ＣｈａｕｄｈｒｙとＭａｒｃ  Ｔｒｅｍｂｌａｙとによって発明された、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｕｓｉｎｇ  ａｎ  Ａｓｓｉｓｔ  Ｐｒｏｃｅｓｓｏｒ  ｔｏ  Ｐｒｅ−Ｆｅｔｃｈ  Ｄａｔａ  Ｖａｌｕｅｓ  ｆｏｒ  ａ  Ｐｒｉｍａｒｙ  Ｐｒｏｃｅｓｓｏｒ」と題された、米国特許第６，４１５，３５６号において更に詳しく記述されている。また、Ｓｈａｉｌｅｎｄｅｒ  ＣｈａｕｄｈｒｙとＭａｒｃ  Ｔｒｅｍｂｌａｙとによって発明された、「Ｇｅｎａｒａｔｉｎｇ  Ｐｒｅｆｅｔｃｈｅｓ  ｂｙ  Ｓｐｅｃｕｌａｔｉｖｅｌｙ  Ｅｘｅｃｕｔｉｎｇ  Ｃｏｄｅ  Ｔｈｒｏｕｇｈ  Ｈａｒｄｗａｒｅ  Ｓｃｏｕｔ  Ｔｈｒｅａｄｉｎｇ」と題された、米国仮出願第６０／４３６，５３９号（２００２年１２月２４日出願）においても記述されている。更に、Ｓｈａｉｌｅｎｄｅｒ  ＣｈａｕｄｈｒｙとＭａｒｃ  Ｔｒｅｍｂｌａｙとによって発明された、「Ｐｅｒｆｏｒｍｉｎｇ  Ｈａｒｄｗａｒｅ  Ｓｃｏｕｔ  Ｔｈｒｅａｄｉｎｇ  ｉｎ  ａ  Ｓｙｓｔｅｍ  ｔｈａｔ  Ｓｕｐｐｏｒｔｓ  Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ」と題された、米国仮出願第６０／４３６，４９２号（２００２年１２月２４日出願）においても記述されている。上記に記載された参考文献は、参考のため本明細書に添付し、スカウトモードが如何に動作するかについての詳細を提供する。
【００３５】
残念ながら、上記オペレーションは、スカウト・アヘッド・モードの間に実行された計算オペレーションを再計算する必要がある場合に、膨大な計算作業を必要とし得る。
【００３６】
本来の「ラウンチポイント」ストール条件が最終的に確定された場合、システムは、通常モード２０２に戻る。その際、既に生成されたチェックポイントを用い、ラウンチポイント命令（最初にストール条件に直面した命令）から実行を再開する。
【００３７】
ラウンチポイント・ストール条件は、本来は、システムを通常実行モード２０２から退出させるためのストール条件である。例えば、ラウンチポイント・ストール条件は、システムをスカウトモード２０８に移行させる前に、通常実行モード２０２からエクセキュート・アヘッド・モード２０４に移行させる、データ依存ストール条件であり得る。代替的に、ラウンチポイント・ストール条件は、システムを通常実行モード２０２からスカウトモード２０８に直接的に移行させる、非データ依存ストール条件であり得る。
【００３８】
本発明の実施形態に係る上述の記述は、例示と解説のみを目的として提示されたものである。これらは、網羅を期したものではなく、本発明を開示された形態に限定することを期したものでもない。従って、当業者には、多くの改良とバリエーションが理解され得る。加えて、上記の開示は、本発明を限定するものではない。本発明の範囲は、添付の請求項によって規定される。
【図面の簡単な説明】
【００３９】
【図１Ａ】図１Ａは、本発明の実施形態に関連したプロセッサを示している。
【図１Ｂ】図１Ｂは、本発明の実施形態に関連したレジスタ・ファイルを示している。
【図２】図２は、本発明の実施形態に関連したエクセキュート・アヘッド・モードを含む、状態図を示している。
【図１Ａ】
2007508640.tif 000003
【図１Ｂ】
2007508640.tif 000004
【図２】
2007508640.tif 000005
【国際調査報告】
2007508640.tif 000006
2007508640.tif 000007
2007508640.tif 000008
2007508640.tif 000009
2007508640.tif 000010