(57)【要約】【解決手段】１又は複数の実施形態では、プロセッサは、誤った分岐予測を検出することに応じて、命令パイプラインから、選択ベースで命令をフラッシュする１又は複数の回路を含み、これによって、誤った分岐予測に関連する分岐命令に依存するものとしてマークされた命令がフラッシュされる。従って、１又は複数の回路は、プロセッサの命令パイプラインに取得された命令をマークして、その分岐予測依存性を示し、誤った分岐予測を直接的又は間接的に検出し、誤った分岐予測に依存するものとしてマークされた命令パイプライン内の命令を直接的又は間接的にフラッシュするように構成される。【選択図】      図２
2008544353.tif 000002
【特許請求の範囲】
【請求項１】
命令パイプライン内の分岐予測を管理する方法であって、
前記命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことと、
誤った分岐予測を検出することと、
誤った分岐予測に依存するものとしてマークされた前記命令パイプライン内の命令をフラッシュすることと
を備える方法。
【請求項２】
前記命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことは、
分岐予測することに応じてビットインジケータをアクティブにすることと、
特定の分岐予測が解決されるまで、前記特定の分岐予測のための対応するビットインジケータをアクティブなままにしておくことと、
前記命令パイプラインに取得され、前記アクティブなビットインジケータの集まりを持つ命令の各々をマークすることと
を備える請求項１に記載の方法。
【請求項３】
誤った分岐予測に依存するものとしてマークされた前記命令パイプライン内の命令をフラッシュすることは、
前記誤った分岐予測に対応するビットインジケータに基づいてフラッシュ信号をブロードキャストすることと、
前記ビットインジケータでマークされた前記命令パイプライン内の命令をフラッシュすることと
を備える請求項２に記載の方法。
【請求項４】
誤った分岐予測を検出することと、
正しい分岐予測に依存しているとしてマークされた命令パイプライン内の命令から、前記正しい分岐予測に対応するビットインジケータをクリアするために、前記正しい分岐予測に対応するビットインジケータに基づいて、クリア信号をブロードキャストすることと
を更に備える請求項２に記載の方法。
【請求項５】
前記命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことは、
前記命令パイプラインに取得された少なくとも各条件付分岐命令へ分岐フラッシュタグを割り当てることと、
前記分岐フラッシュタグに基づく分岐パスタグを、前記命令パイプラインに取得された各命令へ追加することと
を備える請求項１に記載の方法。
【請求項６】
前記誤った分岐予測に依存するものとしてマークされた命令パイプライン内の命令をフラッシュすることは、
前記命令パイプラインの実行ステージ内の分岐条件を解決し、正しい分岐予測及び誤った分岐予測を検出することと、
誤った分岐予測に関し、関連する条件付分岐予測の分岐フラッシュタグに基づいて、前記命令パイプライン内にフラッシュ信号をブロードキャストすることと、
前記関連する条件付分岐命令の分岐フラッシュタグにその分岐パスタグが対応している命令パイプライン内の、全ての命令をフラッシュすることと
を備える請求項５に記載の方法。
【請求項７】
正しい分岐予測の検出に応答して、前記関連する条件付分岐命令の分岐フラッシュタグに基づいて、前記命令パイプライン内にクリア信号をブロードキャストすることと、
前記命令パイプライン内の現在の命令の分岐パスタグから、その分岐フラッシュタグに対応するインジケータをクリアすることと
を更に備える請求項６に記載の方法。
【請求項８】
進行中の命令取得動作と連携して新たな分岐予測依存性をマークするために、フラッシュ信号又はクリア信号がブロードキャストされた分岐フラッシュタグを再使用することを更に備える請求項７に記載の方法。
【請求項９】
前記関連する条件付分岐命令の分岐条件の解決後、又は、与えられた条件付分岐命令をフラッシュした後、前記与えられた条件付分岐命令に割り当てられた前記分岐フラッシュタグをリタイヤさせることと、
リタイヤした分岐フラッシュタグを必要に応じて、新たな分岐予測依存性をマークするために再使用することと
を更に備える請求項５に記載の方法。
【請求項１０】
フラッシュ制御回路を含み、命令パイプラインを備えたプロセッサであって、前記フラッシュ制御回路は、
前記命令パイプラインに取得された命令をマークして、その分岐予測依存性を示し、
誤った分岐予測を検出し、
誤った分岐予測に依存するものとしてマークされた前記命令パイプライン内の命令をフラッシュする
ように構成されたプロセッサ。
【請求項１１】
前記フラッシュ制御回路は、分岐予測することに応じてビットインジケータをアクティブにし、特定の分岐予測が解決されるまで、前記特定の分岐予測のための対応するビットインジケータをアクティブなままにしておき、前記命令パイプラインに取得され、前記アクティブなビットインジケータの集まりを持つ命令の各々をマークすることによって、前記命令パイプラインに取得された命令をマークして、その分岐予測依存性を示すように構成された請求項１０に記載のプロセッサ。
【請求項１２】
前記フラッシュ制御回路は、誤った分岐予測に対応するビットインジケータに基づいてフラッシュ信号をブロードキャストすることによって、前記誤った分岐予測に依存するものとしてマークされた、命令パイプライン内の命令をフラッシュし、もって、前記ビットインジケータでマークされた命令パイプライン内の命令のフラッシュを開始するように構成された請求項１１に記載のプロセッサ。
【請求項１３】
前記命令パイプラインの１又は複数のステージは、前記フラッシュ信号を受け取るように構成された命令フラッシュ回路を含み、更に、前記ビットインジケータでマークされた命令を、前記フラッシュ信号によってフラッシュするように構成された請求項１２に記載のプロセッサ。
【請求項１４】
前記フラッシュ制御回路は、正しい分岐予測に依存しているとしてマークされた命令パイプライン内の命令から、前記正しい分岐予測に対応するビットインジケータをクリアするために、前記正しい分岐予測に対応するビットインジケータに基づいて、クリア信号をブロードキャストするように構成された請求項１１に記載のプロセッサ。
【請求項１５】
前記命令パイプラインの１又は複数のステージは、前記クリア信号を受け取るように構成された命令フラッシュ回路を含み、更に、前記クリア信号によって、前記ビットインジケータに対応する命令からマークをクリアするように構成された請求項１４に記載のプロセッサ。
【請求項１６】
前記フラッシュ制御回路は、分岐フラッシュタグを、前記命令パイプラインに取得された少なくとも各条件付分岐命令へ割り当て、前記分岐フラッシュタグに基づく分岐パスタグを、前記命令パイプラインに取得された各命令へ追加することによって、前記命令パイプラインに取得された命令をマークして、その分岐予測依存性を示すように構成された請求項１０に記載のプロセッサ。
【請求項１７】
前記フラッシュ制御回路は、関連する条件付分岐予測の分岐フラッシュタグに基づいて、前記命令パイプライン内にフラッシュ信号をブロードキャストすることによって誤った分岐予測に依存するものとしてマークされた前記命令パイプライン内の命令をフラッシュし、もって、前記誤った分岐予測に対応する条件付分岐命令の分岐フラッシュタグを用いてその分岐パスタグがマークされた命令パイプライン内の、全ての命令のフラッシュを開始するように構成された請求項１６に記載のプロセッサ。
【請求項１８】
前記フラッシュ制御回路は、正しい分岐予測に対応する条件付分岐命令の分岐フラッシュタグに基づいて、前記命令パイプライン内にクリア信号をブロードキャストし、もって、前記命令パイプライン内の命令の分岐パスタグから、その分岐フラッシュタグに対応するインジケータをクリアすることを開始するように構成された請求項１７に記載のプロセッサ。
【請求項１９】
前記フラッシュ制御回路は、進行中の命令取得動作と連携して新たな分岐予測依存性をマークするために、フラッシュ信号又はクリア信号がブロードキャストされた分岐フラッシュタグを再使用するように構成された請求項１８に記載のプロセッサ。
【請求項２０】
前記フラッシュ制御回路は、与えられた条件付分岐命令の分岐条件が解決又はフラッシュされたことを検出した後、前記与えられた条件付分岐命令に割り当てられた前記分岐フラッシュタグをリタイヤさせ、リタイヤした分岐フラッシュタグを、必要に応じて、新たな分岐予測依存性をマークするために再使用するように構成された請求項１６に記載のプロセッサ。
【請求項２１】
前記命令パイプラインは、順番を外れたプログラム実行をサポートするスーパスカラ命令パイプラインを備え、前記フラッシュ制御回路は、前記スーパスカラ命令パイプラインを備える複数の並列した実行ステージをマークすること、検出すること、及び、前記実行ステージからフラッシュすることをサポートする請求項１０に記載のプロセッサ。
【請求項２２】
命令パイプライン内の分岐予測を管理する方法であって、
未解決の分岐条件を有する前記命令パイプライン内の分岐命令に対する分岐フラッシュタグをアクティブに維持することと、
前記アクティブな分岐フラッシュタグに対応する１又は複数のインジケータを含む分岐パスタグを用いて、前記パイプラインに取得された各命令をマークすることと、
関連する分岐条件を判定することによって、前記分岐命令のうち誤って予測されたものを検出することと、
誤って予測された分岐命令のアクティブな分岐フラッシュタグに対応するインジケータを含む分岐パスタグを有する命令パイプライン内の命令をフラッシュすることと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マイクロプロセッサに関し、特に、マイクロプロセッサの命令パイプライン内の命令フラッシングを管理することに関する。
【背景技術】
【０００２】
マイクロプロセッサは、処理電力が最大の設計考慮であるハイエンド計算システムから、コスト、サイズ、及び電力消費が主要な設計考慮であるローエンド組込システムまで及ぶ様々な製品における用途を見い出す。音楽プレーヤ、パームトップコンピュータ、ポータブルデジタルアシスタント（ＰＤＡ）等のバッテリ駆動型ポータブルデバイスは、競合する設計考慮の特に複雑な組み合わせを示す。一方、プロセッサの性能は、デバイスの意図した機能をサポートし、かつ満足なユーザ「体験」を提供するのに十分でなければならない。また一方、低プロセッサ電力消費によって、許容可能なバッテリ寿命を達成しながら、合理的にサイジングされたバッテリシステムを用いることが可能となった。
【０００３】
上記設計トレードオフの組み合わせの結果、多数のプロセッサ性能や効率的な改良が得られた。例えば、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャに基づく最近のパイプラインプロセッサは、命令パイプライン「ストール」（stall）を防ぐために、しばしば、分岐予測方法を使用する。命令パイプラインによって、連続する命令処理の異なる局面が、一般に、パイプラインの異なるステージにおいて生じる。例えば、与えられた命令パイプラインは、連続的に設定された取得ステージ、復号ステージ、発行ステージ、及び実行ステージを含みうる。各ステージは一般に、各命令クロックサイクルにおいて、異なる命令上で動作する。例えば、１つの命令の実行が、実行ステージ中において完了されている間、他の命令が取得され、復号され、発行されている。ステージ化された実行によって、パイプラインプロセッサは、平均して、クロックサイクル毎に１つの命令を実行することが可能となる。
【０００４】
しかしながら、１クロックサイクル毎に平均して１つの命令を実行することを維持することは、パイプラインを命令で一杯にしておくことに基づく。一方、パイプラインを命令で一杯にしておくことは、パイプライン化されたプロセッサが、一般に、与えられたプログラム分岐が採用されるか否かを判定しながら、プログラム命令取得を停止する余裕がないことを意味する。すなわち、プロセッサは、一般に、与えられたプログラム分岐が採用されるか否かを推定（予測）しなければならない。予測が「採用される」（taken）場合、命令取得は、分岐ターゲットアドレスから続く。予測が採用されない場合、命令取得は、分岐命令後の次の命令アドレスから続く。
【０００５】
何れの場合であれ、そのような予測の次のパイプラインへと取得された命令は、その予測が誤っているのであれば「誤った」命令となるであろう。パイプラインは、どの時間においても、未解決の多数の予測を有する。すなわち、様々なパイプラインステージにおいて、実行中の多くの未解決の分岐命令を有する。従って、パイプライン内の実行中の命令のうちの任意の１つは、未解決の分岐予測のうちの１又は複数に依存するか、又は、それらの何れにも依存しない。
【０００６】
そのような可能性は、誤った分岐予測の状況では、処理の複雑さをもたらす。一般に、実行中の命令のうちの少なくとも幾つかは、未解決の分岐予測のうちの少なくとも１つに依存するだろう。従って、対応する誤った分岐予測の検出に応じて、命令パイプラインからフラッシングされるべきである。チャンレンジは、実行中の命令の分岐予測依存を正しく識別又は追跡することが困難であることから生じる。なぜなら、幾つかの命令は、オリジナルのプログラム順から外れて実行されるかもしれないからである。
【０００７】
例えば、与えられた命令は、キャッシュミスによって、及び、データが外部メモリから取得されている間、パイプラインをストールすることなく、データ上で待機しなれればならない。また、その命令の実行は、パイプラインが他の実行中の命令の処理を続けている間、延期されるかもしれない。より一般的には、プログラム順から外れた命令を実行することは、並列セットのパイプラインステージを備えたスーパスカラ命令パイプラインの処理パフォーマンス利点の１つである。そのようなスーパスカラパイプラインは、プログラム順を外れても実行可能な極めて多くの実行中命令を有することができる。
【０００８】
従って、特定の分岐誤予測に依存する命令だけを選択的にフラッシュすることは、あまりにも多くのトラッキング複雑さを導入することなく、そのような依存を正確に識別することが可能であるという観点から、潜在的に重要なチャレンジを示している。もちろん、命令を選択的にフラッシングすることの代替例は、分岐誤予測が検出された場合、これら命令の各々が、誤予測された分岐命令に実際に依存しているかを配慮せずに、パイプラインから全ての命令をフラッシュすることである。そのアプローチの欠点は、既に取得され、少なくとも部分的に処理されている有効な命令をパイプラインからフラッシュすることに関連するパフォーマンス及び効率のロスである。
【発明の開示】
【０００９】
本発明は、マイクロプロセッサの命令パイプライン内の命令のフラッシングを管理する方法及び装置を備える。少なくとも１つの実施形態では、マイクロプロセッサに含まれた１又は複数の回路は、命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことと、誤った分岐予測を検出することと、誤った分岐予測に依存するものとしてマークされた命令パイプライン内の命令をフラッシュすることとに基づいて、命令フラッシングを管理するように構成されている。
【００１０】
命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことは、少なくとも１つの実施形態では、分岐予測に応じてビットインジケータをアクティブにすることと、特定の分岐予測が解決されるまで、その分岐予測のための対応するビットインジケータをアクティブなままにしておくことと、命令パイプラインに取得され、アクティブなビットインジケータの集まりを持つ命令の各々をマークすることとを含む。例えば、誤った分岐予測に依存するものとしてマークされた、命令パイプライン内の命令をフラッシュすることは、誤った分岐予測に対応するビットインジケータに基づいてフラッシュ信号をブロードキャストすることと、ビットインジケータでマークされた命令パイプライン内の命令をフラッシュすることとを含む。同様に、分岐予測に依存しているとしてマークされた命令パイプライン内の命令から、対応するビットインジケータをクリアするために、正しい分岐予測に対応するビットインジケータに基づいて、クリア信号がブロードキャストされうる。このクリアによって、ビットインジケータは、依存性マーク処理において再使用されるようになる。
【００１１】
１又は複数の実施形態では、命令パイプラインに取得された命令をマークして、分岐予測依存性を示すことは、命令パイプラインに取得された少なくとも条件付分岐命令の各々に、「分岐フラッシュタグ」を割り当てることと、以前に割り当てられた分岐フラッシュタグに基づく「分岐パスタグ」を、命令パイプラインに取得された各命令へ追加することとを備える。この実施形態の状況では、誤った分岐予測に依存するものとしてマークされた命令パイプライン内の命令をフラッシュすることは、命令パイプラインの実行ステージ内の分岐条件を解決し、正しい分岐予測及び誤った分岐予測を検出することと、誤った分岐予測に関し、関連する条件付分岐予測の分岐フラッシュタグに基づいて、命令パイプライン内にフラッシュ信号をブロードキャストすることとに基づく。このブロードキャストに応じて、関連する条件付分岐命令の分岐フラッシュタグで分岐パスタグがマークされている命令パイプライン内の命令がフラッシュされる。
【００１２】
従って、１又は複数のプロセッサ実施形態は、命令パイプラインに取得された命令をマークして、分岐予測依存性を示し、誤った分岐予測を検出し、誤った分岐予測に依存するものとしてマークされた命令パイプライン内の命令をフラッシュするように構成されたフラッシュ制御回路を含む。このフラッシュ制御回路は、これらの動作を実行する際に、分岐フラッシュタグ及び分岐パスタグを生成して保持する。そして、上述したような動作のクリア及びフラッシュを実行するために、あるいは、これら動作の変形例を実行するために、命令パイプラインステージの１又は複数と協働する回路を含む。
【発明を実施するための最良の形態】
【００１３】
図１は、プロセッサコア１２、事前命令取得ユニット１４、命令キャッシュ１６、命令キャッシュコントローラ１８、ロード／ストアユニット２０、データキャッシュ２２、データキャッシュコントローラ２４、及びメイン変換索引バッファ（translation lookaside buffer）２６を備えるメインマイクロプロセッサ１０を少なくとも部分的に例示している。プロセッサ１０の１又は複数の実施形態では、プロセッサコア１２の命令パイプライン３０は、フラッシュ制御回路３２を含んでいるか、又は、関連付けられている。フラッシュ制御回路３２は、分岐予測ターゲットアドレス予測の管理の一部として、実行中の命令を命令パイプライン３０からフラッシュすることをサポートする。
【００１４】
限定しない例によれば、プロセッサ１０は、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャに基づくパイプラインプロセッサでありうる。プロセッサ１０の少なくとも１つの実施形態では、命令パイプライン３０は、順番を外れたプログラム命令をサポートし、複数の並列した実行ステージ（図示せず）を含むスーパスカラ命令パイプラインを備えうる。
【００１５】
プロセッサ１０がスーパスカラ機能を組み込んでもいてもいなくても、コア１２は、プログラム命令を実行し、対応するロード／ストアデータ動作を実行する。メイン変換索引バッファ２６は、コア１２からの入力を受け取り、コア１２に出力を提供する。更に詳しくは、メイン変換索引バッファ２６は、コア１２を、命令キャッシュ１６及びデータキャッシュ２２へそれぞれ接続する。命令キャッシュ１６及びデータキャッシュ２２は、高速の内蔵メモリを備えている。プロセッサ１０は、命令キャッシュコントローラ１８及びデータキャッシュコントローラ２４を介して命令及びデータの事前取得を用い、キャッシュを、次に必要な命令及びデータで満たされた状態に保つ。
【００１６】
命令事前取得の１つの局面では、プロセッサ１０が、分岐予測を用いて、その全体パフォーマンスを加速する。分岐予測を用いて、条件付分岐命令がプログラムフロー内で認識される場合には、プロセッサ１０は一般にコアの命令取得動作に割り込まず、むしろ、プログラム分岐が採用されるか否かを予測することに依存して、次の連続する命令アドレスから、又は、分岐ターゲットアドレスから、命令の取得を続ける。限定しない例によれば、コア１２は、「静的な」分岐予測を実行するように構成され、事前取得ユニット１４は、分岐予測統計等の蓄積に基づいて、動的な分岐予測を実行するように構成されている。そのような動作をサポートするために他の回路構成を使用することもでき、当業者であれば、留意すべき一般的なポイントは、プロセッサ１０が分岐予測プロセッサであり、命令パイプライン３０に取得された命令のうちの少なくとも幾つかは、プログラム実行中、プロセッサ１０によってなされている分岐予測に依存することを認識するだろう。
【００１７】
一般に、予測が採用されたプログラム分岐の場合、命令取得が、分岐命令によってターゲットとされた命令アドレスから続き、予測が採用されないプログラム分岐の場合、命令取得が、命令シーケンス内の分岐命令に続く命令アドレスから続く。従って、幾つかの分岐予測が誤って採用又は不採用される限りは、「誤った」プログラム命令が、プロセッサの命令パイプライン３０へ取得されるだろう。
【００１８】
その点を念頭におき、フラッシュ制御回路３０は、誤った分岐予測に依存するものとして「マーク」され、パイプライン３０内に既に存在するこれら命令を直接的又は間接的にフラッシュするように構成されている。そのようなフラッシュ動作は、命令パイプライン３０に関して更に説明される。図２は、命令パイプライン３０及びフラッシュ制御回路３２の１つの実施形態を図示する。図示する命令パイプライン３０は、取得ステージ４０、命令復号ステージ４２、命令発行ステージ４４、及び命令実行ステージ４６を備える。実行ステージ４６は、条件付分岐命令に関連した条件を評価する条件判定回路４８を含んでいるか、関連付けられている。言い換えれば、条件判定回路４８は、分岐条件を判定することによって、未判定の分岐命令を「解決」する。条件付分岐命令に関連した分岐条件を判定することによって、これら分岐命令のためになされた分岐予測が正しいか否かを判定することができる。
【００１９】
例えば、命令パイプライン３０に関連付けられている分岐予測回路５０は、命令復号ステージ４２によって復号された後の分岐命令を認識し、これら分岐が採用されるか否かに関する予測を行うように構成されうる。そのような予測は分岐条件の解決前になされ、与えられた分岐予測のためになされた予測の正しさは、その分岐命令の条件が条件評価回路４８によって評価されるまで分からない。この回路４８は、実行ステージ４６によって実行された各条件付分岐命令の条件解決を示す出力を提供するように構成することができる。従って、分岐予測回路５０及び／又はフラッシュ制御回路３２は、条件評価回路４８によって出力された条件評価結果を受け取り、与えられた分岐命令が採用されたものとして、あるいは採用されないものとして正しく予測されたかを判定するように構成することができる。
【００２０】
分岐命令が採用されるものとして誤って予測されたか、あるいは、採用されないものとして誤って予測された場合には、フラッシュ制御回路３２は、誤って予測された分岐に依存する命令パイプライン３０内で実行中の命令をフラッシュするように動作する。更に詳しくは、少なくとも１つの実施形態では、フラッシュ制御回路３２は、命令パイプライン３０に取得された命令の分岐予測依存性を「マーク」し、誤った分岐予測を検出することに応じて、誤った特定の分岐予測に依存してマークされた命令パイプライン３０内の現在の命令がフラッシュされるように動作する。少なくとも１つの実施形態では、ＮＯＰ（ノーオペレーション）命令が、フラッシュ動作によって、生成された「バブル」を、命令パイプライン３０内を満たすために使用される。しかしながら、他の実施形態は、フラッシュ後の命令パイプライン３０内の動作を続けるために、ＮＯＰを挿入しないかもしれないし、必要に応じて他のステップを採用するかもしれない。フラッシングの一部として、又はフラッシングに続いて、命令パイプライン３０は、適切なアドレスから命令を取得することによって再び満たされる。
【００２１】
図３は、命令フラッシングのための処理ロジックを図示しており、フラッシュ制御回路３２内で実行されるか、又は、その回路の動作のサポートのもとで実行される。図示するロジックは、命令取得が進行中であり、かつ、フラッシュ制御回路３２が、命令パイプライン３０に取得された命令をマークしてその分岐予測依存性を示していると仮定する（ステップ１００）。一般に、パイプラインへ取得された命令は、命令パイプライン３０内で現在未解決である未解決の分岐予測に直接的又は間接的に依存していることが理解されるべきである。従って、新たな予測がなされ、古い予測が解決されると、分岐予測依存性はプログラム実行中に変化し、それに従って、フラッシュ制御回路３２の分岐予測依存性マーキング動作が変化する。
【００２２】
マークされた命令が、命令パイプラインの様々なステージを通って進み、かつ、分岐条件が命令パイプライン３０内の幾つかの点で解決されている（ステップ１０２）と仮定すると、フラッシュ制御回路３２は、誤った分岐予測を直接的（又は間接的）に検出し（ステップ１０４）、それに従って応答する。具体的には、フラッシュ制御回路３２の少なくとも１つの実施形態では、フラッシュ制御回路３２が、誤った分岐予測に依存するとしてマークされている命令パイプライン３０における現在の全ての命令をフラッシュする（ステップ１０６）。
【００２３】
１又は複数の実施形態では、フラッシングを遂行するための１つのメカニズムは、実際のフラッシングを実行するために、命令パイプライン３０内のステージのうちの１又は複数における対応する回路によって使用されるフラッシュ信号を「ブロードキャスト」することが理解されるべきである。同様に、正しく予測された分岐については、フラッシュ制御回路３２は、分岐に依存するものとしてマークされた命令から、対応する依存性マークをクリアするために、命令パイプライン３０のステージの１又は複数で使用されるクリア信号をブロードキャストする（ステップ１０８）。少なくとも１つの実施形態では、このクリア動作はオプションである。しかしながら、クリアメカニズムを提供することによって、後に取得される命令のために同じ依存性マークを再び使用することを可能にすることを含めて、幾つかの利点を提供する。
【００２４】
このようなフラッシュ制御回路３２のインジケータ再使用の局面に関わらず、図４は、分岐予測依存性マーキングのより基本的な局面の更なる理解を容易にする。これは、「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」および「Ｆ」のように示されたプログラムフロー順に従った６つの命令によって示されている。これら命令は、プログラム順に命令パイプライン３０へ取得され、かつ、円で囲まれた命令Ｃ及び命令Ｅは、対応する分岐アドレスターゲットが採用又は不採用として予測される条件付分岐命令であると仮定される。従って、命令Ｄ及び命令Ｅは、分岐予測Ｃのためになされた採用／不採用予測に依存する位置から取得される。同様に、命令Ｆは、分岐命令Ｅに対してなされた採用／不採用予測に直接的に依存する位置から取得され、かつ、命令Ｃに対してなされた前の予測に直接的又は間接的に依存している。簡単に言えば、命令Ｄ，Ｅ，Ｆは、分岐命令Ｃについてなされた分岐予測に依存しており、命令Ｆは更に、分岐予測Ｅについてなされた分岐予測に依存している。
【００２５】
図５は、命令パイプライン３０のスーパスカラ実施形態において、プログラム順を外れて実行されている命令Ａ−Ｆを図示する。更に詳しくは、図示する実行ステージ４６は、ステージＥ１−Ａ乃至Ｅ４−Ａとしてラベルされた実行ステージと、ステージＥ１−Ｂ乃至Ｅ４−Ｂとしてラベルされた実行ステージとからなる２つの並列した実行ステージのセットを備えている。もちろん、現実的には命令パイプライン３０は、より複雑な実行ステージ構成を使用したり、異なるステージ構成を使用したり、あるいは、本明細書で一般的に例示されていないステージやその他の構成要素を使用するかもしれないことが理解されるべきである。
【００２６】
何れの場合であれ、本明細書で教示された依存性マークがなければ、誤った分岐予測によってフラッシュされる命令パイプライン３０内の命令を識別するタスクは、極めて複雑になることが容易に理解されるだろう。もちろん、誤った分岐予測を検出した場合、単純に、命令パイプライン３０の全体をフラッシュしてもよいが、それは、命令パイプライン３０内で既に実行中の非依存命令を保持することによって得られるパフォーマンス及び効率の恩恵を失うだろう。
【００２７】
依存する命令がフラッシュされることが保証される限り、フラッシュ制御回路３０はそれらの恩恵を保つことができる。フラッシュ制御回路３２の少なくとも１つの実施形態では、フラッシュ制御回路３２は、命令パイプライン３０へ取得された命令をマークして、分岐予測することに応じてビットインジケータをアクティブにし、特定の分岐予測が解決されるまで、その特定の分岐予測のための対応するビットインジケータをアクティブなままにしておき、命令パイプラインに取得され、アクティブなビットインジケータの集まりを持つ命令の各々をマークすることによって、それらの分岐予測依存性を示す。このようなマーキングは、もしも命令フローパス内に配置されているか、あるいはそのパスへのアクセスを有しているのであれば、例えば取得ステージ４０、復号ステージ４２、又はフラッシュ制御回路３２内のように、命令パイプライン３０内の便利なポイントでなされる。
【００２８】
少なくとも１つの実施形態では、誤った分岐予測に依存するものとしてマークされた命令パイプライン３０内のフラッシング命令は、ビットインジケータを用いてマークされた命令パイプライン３０内にフラッシュ信号及びフラッシュ命令をブロードキャストすることを含む。フラッシュ信号は、誤って予測された分岐命令の分岐フラッシュタグに対応するビットインジケータに基づいたベクトルでありうる。同様に、正しく予測されたとして検出された分岐予測の場合、フラッシュ制御回路３２は、正しい分岐予測に対応するビットインジケータに基づきクリア信号をブロードキャストし、もって、その分岐予測に依存するとしてマークされた命令パイプライン３０内の命令から、対応するビットインジケータをクリアするように構成される。クリア信号は、その分岐の分岐フラッシュタグの反対のベクトルであり、分岐パスタグ内の適切なビットをクリアするために、各命令の分岐パスタグとの論理的なＡＮＤをとることができる。正しく予測された分岐に対する依存性インジケータをクリアすることによって、これらインジケータ位置を再使用することが可能になることに着目されたい。
【００２９】
上述したマーキング方法の１つの実施形態が、図４で既に例示された命令設定について図６及び図７に例示されている。少なくとも分岐予測がなされる分岐命令は、対応する「分岐フラッシュタグ」が割り当てられる。この分岐フラッシュタグは、ビットベクトルとして実際の分岐命令に追加され、これによって、命令パイプライン３０を通って分岐命令とともに運ばれるようになる。更に、命令パイプラインへ取得された各命令がマークされ、それに「分岐パスタグ」が追加されることによって、その分岐予測依存性が示される。分岐パスタグは、現在未解決の分岐フラッシュタグの論理的集りとして生成される。
【００３０】
従って、分岐フラッシュタグが、ユニークな１つのホットベクトルの設定、−すなわち、分岐フラッシュタグがそれぞれ異なるビット位置設定を持っている−として実施される場合、分岐パスタグが生成され、現在のアクティブな分岐フラッシュタグの論理的ＯＲを取ることによって各命令に追加される。この種の論理的ＯＲの一例が図６に例示されている。
【００３１】
命令Ａ及びＢは、分岐命令ではないので、ゼロからなる分岐フラッシュタグが割り当てられており（すなわち、分岐フラッシュタグが全く割り当てられておらず）、全てゼロからなる分岐パスタグが割り当てられている。これは、命令Ａ及びＢが命令パイプラインに取得された場合、未解決の分岐予測が存在しないことを仮定している。命令Ｃは分岐命令であり、ユニークな１つのホットベクトルビット位置を有する分岐フラッシュタグが割り当てられている。しかしながら、命令Ｃが取得されたとき、未解決の分岐予測は存在していなかったので、その分岐パスタグは全てゼロに設定される。
【００３２】
命令Ｄは、それ自身分岐命令ではないので、分岐フラッシュは割り当てられない。あるいは、命令Ｄは、全てゼロの分岐フラッシュタグが割り当てられる。何れの場合も、命令Ｄに追加される分岐パスタグは、命令Ｃの分岐フラッシュタグ内のマーカビットに対応する位置にビット設定を有する。従って、命令Ｄは、分岐命令Ｃのためになされた分岐予測に依存するとしてマークされる。同様に、命令Ｅ及び命令Ｆは、分岐命令Ｃのためになされた分岐予測に依存することを示す分岐パスタグを用いてマークされる。更に、命令Ｆに追加された分岐パスタグは更に、分岐命令Ｅのためになされた分岐予測への依存性を示すようにマークされる。
【００３３】
上記方法を用いて、各条件付分岐予測は一般に、ユニークな分岐フラッシュタグが割り当てられ、パイプライン内に未だに存在する未解決の分岐命令によって現在要求されているタグを再使用しない。条件付分岐が一旦パイプライン内で解決されるか、あるいは、パイプラインからフラッシュされると、その分岐フラッシュタグは「リタイヤ」され、再使用可能となる。すなわち、以前に割り当てられた分岐フラッシュタグは、リタイヤ可能であり、例えば、分岐フラッシュタグが割り当てられていた分岐が解決された場合、あるいは、フラッシュされた別の命令（分岐）に依存しておりパイプラインからフラッシュされた場合、あるいは、割込関連フラッシュによって、再使用のためにマークされる。
【００３４】
少なくとも１つの実施形態では、分岐フラッシュタグと分岐パスタグとの幅は等しい。この幅は、タグが割り当てられるまで、命令が順番に保たれることを仮定して、タグが割り当てられたステージと、分岐条件が解決されたステージとの間で、プロセッサパイプライン内に存在することが許可された未解決の分岐数によって決定される。適切なタグ幅は、最大でも、プロセッサパイプライン内の２つの指定されたポイント間のステージ数に等しいであろう。しかしながら、少なくとも１つの実施形態では、タグ幅はステージ数未満である。なぜなら、全てのステージが条件付分岐を含んでいることは、ありそうもないからである。もちろん、必要とされるタグ幅、−つまり、条件付分岐マーカ数−は、順番をはずれた命令が、当該パイプラインにおいて許されるのであれば、更に詳しくは、含まれているプロセッサパイプラインの詳細に従って決定されるのであれば、より多いかもしれない。
【００３５】
何れの場合も、図８は、分岐予測依存性マーキングの上述した実施形態に対する処理の詳細の例に沿って進む。ここでは、フラッシュ制御回路３２が、少なくとも、未解決の分岐条件を有する条件付分岐命令に対して、分岐フラッシュタグをアクティブにする（ステップ１１０）。このようにアクティブにすることは、命令パイプライン３０内の様々なポイントで行うことができる。例えば、マーキングは、復号ステージ４２による命令復号の一部としてなされたり、あるいは、そのステージの直後になされたりする。
【００３６】
実行ステージ４６によって出力される分岐条件結果が、予測がなされた分岐命令のそれぞれについて識別されるように、分岐フラッシュタグが、条件付分岐命令に追加される。プロセッサ１０は、分岐フラッシュタグを、条件付であろうとなかろうと全ての分岐命令に追加することによって、分岐フラッシュタグを簡素化できることに着目されたい。
【００３７】
分岐命令に特有である上述した分岐フラッシュタグ処理に関連して、命令パイプライン３０へ取得された全ての命令は、一般に、現在アクティブである分岐フラッシュタグに対応する１又は複数のインジケータを含む分岐パスタグを用いてマークされる（例えば、アクティブな分岐フラッシュタグの論理的ＯＲによって）（ステップ１１２）。分岐パスタグは、フラッシュ制御回路３２内の回路によって、又は、命令パイプライン３０内の何れかに位置する回路によって追加される。例えば、依存性マーキングは、取得ステージ４０又は復号ステージ４２内の回路によって実施される。
【００３８】
分岐命令に追加された分岐フラッシュタグによって、条件評価回路４８が、対応する分岐フラッシュタグに「タグ」された分岐条件評価結果を出力するように構成されうる。すなわち、条件評価回路４８は、与えられた条件結果に関連した分岐フラッシュタグを識別するように構成され、更に、正しく及び誤って予測された分岐に対して、その情報をフラッシュ制御回路３２及び／又は分岐予測回路５０にシグナルするように構成される（ステップ１１４）。
【００３９】
正しく予測された分岐の場合、フラッシュ制御回路３２は、対応する分岐命令の分岐フラッシュタグに基づいてクリア信号をブロードキャストするように構成することができる（ステップ１１６）。クリア信号は、命令パイプライン３０を含むステージの１又は複数において受け取られる。そして、これらステージに関連付けられたフラッシュ回路が、現在解決された分岐予測に依存するものとして以前にマークされたステージ内の命令の分岐パスタグから、対応するインジケータをクリアする。そのような回路は、単に、クリア信号によって示された分岐フラッシュタグに対応する設定ビットを備えた追加された分岐パスタグを有する命令を識別するように構成される。幾つかの実施形態では、そのような回路は、個々のステージの一部であると考えられ、他の実施形態では、フラッシュ制御回路３２の一部であると考えられる。
【００４０】
誤って予測された分岐の場合、フラッシュ制御回路３２は、対応する分岐命令の分岐フラッシュタグに基づいて、フラッシュ信号をブロードキャストするように構成される（ステップ１１８）。フラッシュ信号は、命令パイプライン３０を含むステージの１又は複数において受け取られる。そして、これらステージに関連付けられたフラッシュ回路が、現在解決された分岐予測に依存するものとしてマークされた分岐パスタグを有する命令をフラッシュする。
【００４１】
当業者であれば、上記処理ロジックは、実行中の命令の分岐予測依存性をマークし、これによって、特定の分岐命令が誤って予測されたとの検出に応じて、命令パイプライン３０から命令を選択的にフラッシュすることができるより広い方法の１つの実施形態を単に示していることを認識するだろう。一般に、プロセッサ１０は、命令をマークして、それが依存している特定の分岐命令を示し、個々の分岐命令の誤った予測を検出し、これらマークを用いて、誤って予測された分岐に依存する命令を識別することによって、命令パイプライン３０から命令を選択的にフラッシュするように構成される。
【００４２】
このように、本発明は、前述した説明によって限定されず、かつ、添付図面によっても限定されない。正確に言えば、本発明は、特許請求の範囲及びその法的な等価物によってのみ限定される。
【図面の簡単な説明】
【００４３】
【図１】図１は、命令パイプライン及び関連するフラッシュ制御回路を含むマイクロプロセッサを図示するブロック図である。
【図２】図２は、命令パイプライン及び関連するフラッシュ制御回路の１つの実施形態のブロック図である。
【図３】図３は、分岐予測依存性のマーク及び追跡に基づいて命令パイプラインから命令をフラッシュする１つの実施形態をサポートする処理ロジックのロジックフロー図である。
【図４】図４は、プログラムフロー順で命令パイプラインへ取得される６つの命令を図示するプログラム命令フロー図である。
【図５】図５は、順番を外れた命令実行をサポートするスーパスカラ命令パイプラインのブロック図である。
【図６】図６は、分岐フラッシュタグを生成し、命令パイプラインに取得された分岐命令へ追加し、更に、命令パイプラインに取得された全てのタイプの命令へ分岐パスタグを追加することを示すテーブルである。
【図７】図７は、与えられた数の未解決の分岐予測に対応する分岐フラッシュタグと、個々の分岐フラッシュタグを論理的に集める対応する分岐パスタグとの代表的な設定のブロック図である。
【図８】図８は、分岐フラッシュタグを生成し、対応する分岐パスタグを用いて命令をマークし、フラッシュ信号又はクリア信号をブロードキャストすることに基づいて命令パイプライン内の命令をフラッシュ又はクリアする１つの実施形態を例示する論理フロー図である。
【図１】
2008544353.tif 000003
【図２】
2008544353.tif 000004
【図３】
2008544353.tif 000005
【図４】
2008544353.tif 000006
【図５】
2008544353.tif 000007
【図６】
2008544353.tif 000008
【図７】
2008544353.tif 000009
【図８】
2008544353.tif 000010
【国際調査報告】
2008544353.tif 000011