(57)【特許請求の範囲】
【請求項１】
命令を実行する少なくとも一つの実行ユニットと、
前記少なくとも一つの実行ユニットに結合され、前記少なくとも一つの実行ユニットによって実行するためにメモリ・システムから命令をフェッチする命令順序付け論理であって、命令フェッチ・アドレスとして使用するために予測済み分岐先アドレスを出力する分岐論理を含む前記命令順序付け論理とを有するプロセッサであって、
前記分岐論理は、
夫々が個別に複数個のエントリを有し、各エントリが少なくともタグを予測済み分岐先アドレスに関連付けた、レベル１の分岐先アドレス・キャッシュ（以下、ＢＴＡＣと云う）およびレベル２のＢＴＡＣを含み、
前記分岐論理は、
前記レベル１のＢＴＡＣおよび前記レベル２のＢＴＡＣを第１の命令フェッチ・アドレスの少なくともタグ部分と並列に評価して、
第１のプロセッサ・クロック・サイクルにおいて第２の命令フェッチ・アドレスとして使用されるような、前記レベル１のＢＴＡＣからの第１の予測済み分岐先アドレス、および
前記第１のプロセッサ・クロック・サイクルの後の第２のプロセッサ・クロック・サイクルにおいて第３の命令フェッチ・アドレスとして使用されるような、前記レベル２のＢＴＡＣからの第２の予測済み分岐先アドレスを得る、前記プロセッサ。
【請求項２】
前記レベル1のＢＴＡＣが単一サイクルの評価待ち時間を有する、請求項1に記載のプロセッサ。
【請求項３】
前記分岐論理は、Ｎを２以上の整数とする、Ｎ個のレベルのＢＴＡＣを含み、
前記Ｎ個のレベルのＢＴＡＣの各々が、他のレベルのＢＴＡＣとは異なる評価待ち時間を有する、請求項１に記載のプロセッサ。
【請求項４】
前記分岐論理は、もし前記Ｎ個のレベルのＢＴＡＣが複数個の異なる予測済み分岐先アドレスを同じプロセッサ・クロック・サイクルで出力するなら、命令フェッチ・アドレスとして与えられるべき最高のレベルのＢＴＡＣによって予測済み分岐先アドレス出力を選択する、請求項３に記載のプロセッサ。
【請求項５】
前記少なくとも一つの実行ユニットが、分岐命令を実行する分岐実行ユニットを含み、
前記分岐実行ユニットが、実行される分岐命令を前記分岐論理に出力し、
前記分岐論理が、前記実行される分岐命令の出力に基づき前記Ｎ個のレベルの中から選択されたレベルのＢＴＡＣに新しい分岐先アドレスを挿入する、
請求項３に記載のプロセッサ。
【請求項６】
前記分岐論理が、少なくとも一つ前の命令フェッチ・アドレスを保持するバッファを含み、
前記分岐論理が前記新しい分岐先アドレス予測に対応する特定の前の命令フェッチ・アドレスのバッファにおける利用可能性に基づいて前記選択されたレベルを選択する、
請求項５に記載のプロセッサ。
【請求項７】
前記分岐論理が分岐方向予測論理を含み、
前記分岐論理が、前記分岐方向予測論理の分岐方向予測に基づき前記Ｎ個のレベルのＢＴＡＣの中から選択されたレベルのＢＴＡＣにある分岐先アドレス予測を無効化する、請求項５に記載のプロセッサ。
【請求項８】
前記メモリ・システムが前記プロセッサの中にキャッシュ・メモリを含み、前記命令順序付け論理が前記レベル１のＢＴＡＣ、前記レベル２のＢＴＡＣおよび
前記キャッシュ・メモリを前記第１の命令フェッチ・アドレスと同時に評価する
前記請求項１に記載のプロセッサ。
【請求項９】
命令を実行する少なくとも一つの実行ユニットと、
前記少なくとも一つの実行ユニットに結合され、前記少なくとも一つの実行ユニットによって実行するためにメモリ・システムから命令をフェッチする命令順序付け論理であって、命令フェッチ・アドレスとして使用するために予測済み分岐先アドレスを出力する分岐論理を含む前記命令順序付け論理とを有するプロセッサであって、
前記分岐論理は、
夫々が個別に複数個のエントリを有し、各エントリが少なくともタグを予測済み分岐先アドレスに関連付けた、レベル１の分岐先アドレス・キャッシュ（以下、ＢＴＡＣと云う）およびレベル２のＢＴＡＣを含み、
前記分岐論理は、
前記レベル１のＢＴＡＣおよび前記レベル２のＢＴＡＣを第１の命令フェッチ・アドレスの少なくともタグ部分と並列に評価して、
第１のプロセッサ・クロック・サイクルにおいて第２の命令フェッチ・アドレスとして使用されるような、前記レベル１のＢＴＡＣからの第１の予測済み分岐先アドレス、および
前記第１のプロセッサ・クロック・サイクルの後の第２のプロセッサ・クロック・サイクルにおいて第３の命令フェッチ・アドレスとして使用されるような、前記レベル２のＢＴＡＣからの第２の予測済み分岐先アドレスを得る、前記プロセッサと、
前記プロセッサに結合された相互接続手段と、
前記相互接続手段に結合されたメモリ・システムと
を含むデータ処理システム。
【請求項１０】
少なくとも一つの実行ユニットと、レベル１の分岐先アドレス・キャッシュ（以下、ＢＴＡＣと云う）およびレベル２のＢＴＡＣを含む分岐論理を含む命令順序付け論理とを含むプロセッサにおいてデータを処理する方法であって、
前記プロセッサの少なくとも一つの実行ユニットにより実行するためにメモリ・システムから命令をフェッチし、
前記分岐論理が前記レベル１のＢＴＡＣおよび前記レベル２のＢＴＡＣを第１の命令フェッチ・アドレスの少なくともタグ部分と並列に評価することを含み、
前記評価するのに応答して、
第１のプロセッサ・クロック・サイクルにおいて第２の命令フェッチ・アドレスとして使用されるような、前記レベル１のＢＴＡＣからの第１の予測済み分岐先アドレスを出力し、かつ
前記第１のプロセッサ・クロック・サイクルの後の第２のプロセッサ・クロック・サイクルにおいて第３の命令フェッチ・アドレスとして使用されるような、前記レベル２のＢＴＡＣからの第２の予測済み分岐先アドレスを出力することを含む、
データ処理方法。
【請求項１１】
前記第１のプロセッサ・クロック・サイクルは、前記分岐論理が前記レベル１のＢＴＡＣを評価する際の前のプロセッサ・クロック・サイクルの直後にある、請求項１０に記載の方法。
【請求項１２】
前記分岐論理は、Ｎを２以上の整数とする、Ｎ個のレベルのＢＴＡＣを含み、
前記Ｎ個のレベルのＢＴＡＣの各々が、他のレベルのＢＴＡＣとは異なる評価待ち時間を有する、請求項１０に記載の方法。
【請求項１３】
前記レベル２のＢＴＡＣが前記第１のプロセッサ・クロック・サイクルにおいて第３の予測済み分岐先アドレスを出力し、
前記分岐論理は、前記第２の命令フェッチ・アドレスとして前記第３の予測済み分岐先アドレスではなく前記レベル１のＢＴＡＣにより前記第１の予測済み分岐先アドレスの出力を選択する、
請求項１２に記載の方法。
【請求項１４】
前記少なくとも一つの実行ユニットが、分岐命令を実行する分岐実行ユニットを含み、
前記分岐実行ユニットが、実行される分岐命令を前記分岐論理に出力し、
前記分岐論理が、前記実行される分岐命令の出力に基づき前記Ｎ個のレベルの中から選択されたレベルのＢＴＡＣに新しい分岐先アドレスを挿入する、
請求項１２に記載の方法。
【請求項１５】
前記分岐論理が、少なくとも一つ前の命令フェッチ・アドレスを保持するバッファを含み、
前記分岐論理が前記新しい分岐先アドレス予測に対応する特定の前の命令フェッチ・アドレスのバッファにおける利用可能性に基づいて前記選択されたレベルを選択する、
請求項１４に記載の方法。
【請求項１６】
前記分岐論理が分岐方向予測論理を含み、
前記分岐論理が、前記分岐方向予測論理の分岐方向予測に基づき前記Ｎ個のレベルのＢＴＡＣの中から選択されたレベルのＢＴＡＣにある分岐先アドレス予測を無効化する、請求項１４に記載の方法。
【請求項１７】
前記メモリ・システムが前記プロセッサの中にキャッシュ・メモリを含み、前記評価することが、前記レベル１のＢＴＡＣ、前記レベル２のＢＴＡＣおよび前記
キャッシュ・メモリを前記第１の命令フェッチ・アドレスと同時に評価することを更に含む前記請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理に関し、特に分岐予測に関する。もっと具体的には、本発明が、改良された分岐先アドレス・キャッシュ（ＢＴＡＣ）を備えたデータ処理システム、プロセッサおよびデータ処理に関する。
【背景技術】
【０００２】
従来技術のマイクロプロセッサは、例えば命令およびデータを格納するためのキャッシュと、そのキャッシュからの命令をフェッチ（取り出）し、そのフェッチされた命令を順序付けし、そのフェッチされた命令を実行させるために送り出す命令順序付けユニットと、順序付けられた命令を処理するための１個もしくはそれ以上の命令を処理するための実行ユニットと、分岐（ブランチ）命令を処理するための分岐処理ユニット（ＢＰＵ）とを含むことができる。
【０００３】
ＢＰＵによって処理される分岐命令は条件付き分岐命令もしくは無条件分岐命令としてクラス分けされ得る。無条件分岐命令は逐次の実行パスから或る特定の分岐先（ターゲット）実行パスにプログラム命令のフローを変更する分岐命令であってかつ或るイベントの発生により与えられる条件に依存しない分岐命令である。従って、無条件分岐命令により特定される分岐は常に採用される。それに対し、条件付き分岐命令は、プロセッサ中の条件次第、例えば特定の状態のレジスタの（１個もしくは複数の）ビットもしくはカウンタの値次第で、プログラム・フロー中の指示された分岐が採用されたりされなかったりする分岐命令である。
【０００４】
条件付き分岐命令は、ＢＰＵ（分岐処理ユニット）によりその条件付き分岐命令が評価されるときにその分岐が依存する条件を使用できるか否かに基づいて解決され、あるいは解決されないとして更にクラス分けされることができる。或る解決済みの条件付き分岐命令が依存する条件は実行前に既知であるので、解決済みの条件付き分岐命令は典型的には実行されることができ、逐次の命令の実行の際、殆どもしくは全く遅延なしに分岐先命令パス中の命令がフェッチされることができる。他方で、未解決の条件付き分岐は、もしその分岐が依存している条件が使用できるようになるまでそしてその分岐が解決されるまで逐次命令のフェッチが遅延されるなら、重大なパフォーマンス・ペナルティを生じかねない。
【０００５】
従って、実行ストールを最小限にするためには、幾つかのプロセッサが、未解決の分岐命令の出力を取るもしくは取らないと投機的に予測する。その予測の結果を利用して、命令順序付けユニットはその分岐の解決前に投機的実行パス中で命令をフェッチすることができ、これによって分岐が予測どおり後で解決される場合にその実行パイプライン中のストールを回避することができる。従来は、未解決の条件付き分岐命令の予測が、プログラムの実行前に決定される基準に基づき分岐命令の解決を予測する静的分岐予測、あるいは分岐履歴テーブル（ＢＨＴ）もしくは分岐アドレス・キャッシュ（ＢＴＡＣ）またはその両方の中でアドレス単位の基準で(a per-address basis)収集された分岐命令の解決を予測する動的分岐予測を用いて達成されてきた。
【０００６】
今日のマイクロプロセッサは命令キャッシュから命令をフェッチし、分岐のためにフェッチされた命令を走査し、未解決の条件付き分岐命令の結果を予測するのに複数のサイクルを必要とする。いずれかの分岐を取ることが予想されるなら、命令フェッチは新しい予測されたアドレスに再指向される。どの命令がフェッチされるかを変更するプロセスは「命令フェッチ再指向」と呼ばれる。この命令フェッチ、分岐走査および命令フェッチ再指向に必要な幾つかのサイクル中、命令は採用しなかったパスに沿ってフェッチされ続ける。予測され採用された分岐の場合にはその予測され採用された分岐中の命令が捨てられ（discard）、その結果性能の低下を生じ、無駄に電力を消費する。
【０００７】
幾つかの存在するアプローチが命令フェッチ再指向ペナルティを減じもしくは除去するために使用される。一つの共通に使用される方法は、分岐命令タグと協働して取られる分岐の分岐先アドレスを各エントリにおいてキャッシュするＢＴＡＣの実施(implementation)である。動作時に、ＢＴＡＣは命令キャッシュと並列に評価され、エントリをその命令タグがその命令キャッシュに送信されるフェッチ・アドレスと一致するものが検索される。もしそのようなＢＴＡＣエントリが存在するなら、命令フェッチはその一致するＢＴＡＣエントリに提供される分岐先アドレスに再指向される。ＢＴＡＣ評価（アセス）は典型的には命令フェッチ、分岐走査および取られた分岐再指向シーケンスよりも少ないサイクルを取るので、正しいＢＴＡＣ予測は命令フェッチを、ＢＴＡＣがもし存在しないとした場合よりも早くに新しいアドレスのところで開始させることによって性能を改良することができる。
【０００８】
しかし、従来のデザインでは、そのＢＴＡＣ評価がなおも複数のサイクルを一般的には必要とする。このことはＢＴＡＣの場合に、そこで採用された分岐再指向の前に少なくとも１サイクルの経過をヒットすることを意味する。ＢＴＡＣ評価と命令フェッチ再指向との間のインターバル（間隔）は「バブル」を表し、その間命令フェッチ・パイプラインにより有用な作業は行われない。プロセッサがより高い動作周波数を達成するにつれ、そしてまた新しいソフトウエア・アプリケーションの命令の、一層大きくなった総数（すなわち「命令のフットプリント（足跡）」）に応じＢＴＡＣサイズが増加するにつれ、残念ながらこのインターバルは長くなりがちである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、改良された分岐先アドレス・キャッシュを採用する、改良されたデータ・プロセシング・システム、プロセッサおよびデータ処理方法を提供する。
【課題を解決するための手段】
【００１０】
本発明のプロセッサは、実行ユニットと、実行するための命令をメモリ・システムからフェッチする命令順序付け論理とを含む。前記命令順序付け論理は命令フェッチ・アドレスとして使用するための、予測済みの分岐先アドレスを出力する分岐論理を含む。前記分岐論理はレベル１の分岐先アドレス・キャッシュ（ＢＴＡＣ）とレベル２のＢＴＡＣとを含み、各ＢＴＡＣは夫々に複数のエントリを有し、各エントリは少なくともタグを、予測済みの分岐先アドレスに関連付ける。前記分岐論理は、前記レベル１および前記レベル２のＢＴＡＣを第１の命令フェッチ・アドレスの少なくともタグ部分と並列に評価して、第１のプロセッサ・クロック・サイクルにおいて第２の命令フェッチ・アドレスとして使用されるような、前記レベル１のＢＴＡＣからの第１の予測済み分岐先アドレス、および前記第１のプロセッサ・クロック・サイクルの後の第２のプロセッサ・クロック・サイクルにおいて第３の命令フェッチ・アドレスとして使用されるような、前記レベル２のＢＴＡＣからの第２の予測済み分岐先アドレスを得る。
【００１１】
本発明の全ての目的、特徴および効果が以下の詳細な記述から明らかになろう。
【発明を実施するための最良の形態】
【００１２】
ここで図１に言及すると、本発明による例示のデータ処理システム８の高レベルのブロック図が示される。図示のとおり、データ処理システム８は単一の集積回路スーパー・スカラー・プロセッサよりなるプロセッサ１０を含む。この単一の集積回路スーパー・スカラー・プロセッサは以下で詳述するように、全て集積回路で構成される種々の実行ユニット、レジスタ、バッファ、メモリおよび他の機能ユニットを含む。プロセッサ１０はまたワークステーションもしくはサーバー・コンピュータ・システムなどのデータ処理システム８を構成するために、例えばシステム・メモリ１２および他のプロセッサ１１などの他の装置に相互接続ファブリック１４によって結合されてもよい。プロセッサ１０はまた、統合されたレベル２（Ｌ２）キャッシュ１６と二又のレベル１（Ｌ１）命令（Ｉ）キャッシュ１８およびＬ１データ（Ｄ）キャッシュ２０とを含むオンチップ・マルチレベル・キャッシュ階層を含む。当業者によく知られるように、これらのキャッシュ１６、１８および２０はシステム・メモリ１２中のメモリ位置に対応するキャッシュ・ラインへの短い評価待ち時間（low latency access）を提供する。
【００１３】
プロセッサ１０内の命令順序付け論理１３によって処理するために命令がフェッチされ、オーダーされる。図示の例では、処理のためにＬ１命令キャッシュ１８からフェッチされる一群の命令（例えば３２ビット・キャッシュ・ライン）を示す実効アドレス（ＥＡ）を含む命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）３０を命令順序付け論理１３が含む。各サイクル中、新しい命令フェッチ・アドレス（ＩＦＡ）が少なくとも３つのソースのうちの一つからＩＦＡＲ３０中にロードされてもよい。この３つのソースとは、条件付き分岐命令の予測から生じる投機的分岐先アドレスを提供する分岐論理３６、逐次パス・アドレスを提供するグローバル完了（completion）テーブル（ＧＣＴ）３８、および予測された条件付き分岐命令の解決から生じる非投機的アドレスを提供する分岐実行ユニット（ＢＥＵ）９２である。ＩＦＡＲ３０にロードされる実効アドレス（ＥＡ）が複数のソースにより提供される複数のアドレスの中から、或る優先順位付けスキームに従って選択される。この優先順位付けスキームは、例えば所与のサイクルにおいて選択するためのアドレスを表すソースの相対的な優先順位、および何らかのはっきりした未解決な条件付き分岐命令の年齢(age)を考慮したものであってもよい。
【００１４】
もし実効実アドレス翻訳（ＥＲＡＴ）３２によりＩＦＡＲ３０中に含まれるＥＡを翻訳し、そして命令キャッシュ・ディレクトリ（ＩＤＩＲ）３４中の実アドレス（ＲＡ）をルックアップした後に、ヒット／ミス論理２２が、ＩＦＡＲ３０中のＥＡに対応する命令のブロックがＬ１命令キャッシュ１８には存在しないことを決定するなら、ヒット／ミス論理２２が命令キャッシュ・リクエスト・バス２４を経由するリクエスト・アドレスとしてそのＲＡをＬ２キャッシュ１６に提供する。このようなリクエスト・アドレスは、最近のアクセス・パターンに基づきＬ２キャッシュ１６中のプリフェッチ論理あるいはプロセッサ１０中のどこかほかの場所によって発生されてもよい。或るリクエスト・アドレスに応答してＬ２キャッシュ１６は命令のキャッシュ・ラインを出力する。その命令のキャッシュ・ラインは、恐らくはプリデコード論理（図示せず）を通過した後、命令キャッシュ再ロード・バス２６を経由してプリフェッチ・バッファ（ＰＢ）２８およびＬ１命令キャッシュ１８中にロードされる。
【００１５】
ＩＦＡＲ３０中のＥＡにより特定される命令のブロックが一旦Ｌ１命令キャッシュ１８に置かれると、Ｌ１命令キャッシュ１８は分岐論理３６および命令フェッチ・バッファ（ＩＦＢ）４０の両方に命令のブロックを出力する。図２に関して以下で詳述するように、分岐論理３６が分岐命令のために命令のブロックを走査し、あればその命令ブロック中の条件付き分岐命令の出力を予測する。分岐予測に続き、前述のとおり分岐論理３６はＩＦＡＲ３０に投機的命令フェッチ・アドレスを与え、分岐命令キュー６４にその予測を通す。その結果その予測の正確さは、条件付き分岐命令が分岐実行ユニット９２によりその後解決されるときに決定され得る。
【００１６】
ＩＦＢ４０はＬ１命令キャッシュ１８から受取った命令のブロックをその命令ブロックが、命令翻訳ユニット（ＩＴＵ）４２により必要なら翻訳されることができるまで一時的にバッファする。プロセッサ１０の実施例では、ＩＴＵ４２がユーザー命令セット・アーキテクチャ（ＵＩＳＡ）命令（例えば、ＰｏｗｅｒＰＣ（商標）命令）からの命令を、恐らくは異なる数の内部ＩＳＡ（ＩＩＳＡ）命令に翻訳する。このＩＩＳＡ命令はプロセッサ１０の実行ユニットにより直接実行可能である。このような翻訳は、読み取り専用メモリ（ＲＯＭ）テンプレートにストアされたマイクロコードを例えば参照することによって実行され得る。少なくとも幾つかの実施例ではＵＩＳＡ−ＩＩＳＡ翻訳がＵＩＳＡ命令とは異なる数のＩＩＳＡ命令となるか、もしくは対応するＵＳＩＡ命令とは異なる長さのＩＩＳＡ命令となるか、またはその両方となる。その結果生じるＩＩＳＡ命令はグローバル完了テーブル３８によりある命令グループに割当てられ、そのグループのメンバーは互いに順序外れで実行されることができる。グローバル完了テーブル３８は、少なくとも一つの関係するＥＡ、好ましくはその命令グループ中の最も古い命令のＥＡによりこれから完了される予定の各命令グループを追跡する。
【００１７】
ＵＳＩＡ−ＩＩＳＡ命令翻訳に続き、命令は命令のタイプに従ってラッチ４４、４６、４８、５０のうちの一つに順序だててディスパッチされる。即ち、分岐命令および他の状態レジスタ（ＣＲ）修正命令はラッチ４４に、固定小数点命令およびロード・ストア命令はラッチ４６および４８のいずれかに、そして浮動小数点命令はラッチ５０にディスパッチされる。そして実行結果を一時的にストアするためのリネーム・レジスタを必要とする各命令は、ＣＲマッパー５２，リンク兼カウント（ＬＣ）レジスタ・マッパー５４，実行レジスタ（ＸＥＲ）マッパー５６，汎用レジスタ（ＧＰＲ）マッパー５８および浮動小数点レジスタ（ＦＰＲ）マッパー６０のうちの適宜の一つによってレジスタ・ファイル中で１個もしくはそれ以上のレジスタに割当てられる。
【００１８】
そのディスパッチされた命令は、ＣＲ発行キュー（ＣＲＩＱ）６２、分岐発行キュー（ＢＩＱ）６４、固定小数点発行キュー（ＦＸＩＱ）６６および６８、ならびに浮動小数点発行キュー（ＦＰＩＱ）７０および７２のうちの適宜の一つの中に一時的に置かれる。発行キュー６２、６４、６６、６８および７０からは命令がプロセッサ１０の実行ユニットに日和見主義的に（即ち順序外れで）実行目的で発行される。幾つかの実施例では、それらの命令はまた発行キュー論理バス６２、６４、６６ないし７２中にそれらの命令の実行が完了されるまで、そしてその結果生じるデータが、もしあるとすればそれらの命令のうちのどれかが再発行される必要のある場合に書き戻されるまで維持される。
【００１９】
図示のとおり、プロセッサ１０の実行ユニットはＣＲ修正命令を実行するためのＣＲユニット（ＣＲＵ）９０、分岐命令を実行するための分岐実行ユニット９２、分岐命令を実行するための分岐実行ユニット（ＢＥＵ）９２、固定小数点命令を実行するための２つの固定小数点ユニット（ＦＸＵ）９４および１００、ロード兼ストア命令を実行するための２つのロード・ストア・ユニット（ＬＳＵ）９６および９８、ならびに浮動小数点命令を実行するための２つの浮動小数点ユニット（ＦＰＵ）１０２および１０４を含む。実行ユニット９０ないし１０４の各々は多数のパイプライン・ステージを有する実行パイプラインとして好適には実施される。
【００２０】
実行ユニット９０ないし１０４のうちの一つの中での実行中、命令はその実行ユニットに結合されたレジスタ・ファイル中の１個もしくはそれ以上のアーキテクト（architected）レジスタもしくはリネーム・レジスタまたはその両方から、もしあればオペランドを受取る。ＣＲ修正命令もしくはＣＲ依存命令を実行するとき、ＣＲＵ９０およびＢＥＵ９２はＣＲレジスタ・ファイル８０を評価する。そのＣＲレジスタ・ファイル８０は好適な実施例ではＣＲおよび多数のＣＲリネーム・レジスタを含み、各々が多数の個別のフィールドであって、１個もしくはそれ以上のビットを含むフィールドを含む。これらのフィールドの中には、ＬＴ、ＧＴ、ＥＱフィールドがあり、夫々は値（典型的には命令の結果もしくはオペランド）がゼロよりも小さい、ゼロよりも大きい、ゼロと等しい、のいずれであるかを示す。リンク兼カウント・レジスタ（ＬＣＲ）のレジスタ・ファイル８２はカウント・レジスタ（ＣＴＲ）、リンク・レジスタ（ＬＲ）および夫々のリネーム・レジスタを含む。これによってＢＥＵ９２はパス・アドレスを得るために条件付き分岐をも解決してもよい。同期された汎用目的レジスタ・ファイル（ＧＰＲ）８４および８６はレジスタ・ファイルを複製し、そしてＦＸＵ９４および１００ならびにＬＳＵ９６および９８により評価され、作られる固定小数点および整数の値をストアする。浮動小数点・レジスタ・ファイル（ＦＰＲ）８８は、同期されたレジスタの複製セットとして実施されても良いＧＰＲ８４および８６と同様に、ＦＰＵ１０２および１０４による浮動小数点命令ならびにＬＳＵ９６および９８による浮動小数点ロード命令の実行から生じる浮動小数点値を含む。
【００２１】
実行ユニットが命令の実行を終えた後、その実行はプログラムの順序で命令の完了をスケジュールするＧＣＴ３８に知らせる。ＣＲＵ９０，ＦＸＵ９４および１００もしくはＦＰＵ１０２ならびに１０４のうちの一つによって実行される命令を完了させるためには、ＧＣＴ３８が適当なマッパーに知らせる。その命令に割当てられたレジスタ・ファイル・レジスタがいまやそのレジスタのアーキテクト状態を含むことを示す印をそのマッパーがセットする。そこでその命令は、発行キューから除去され、そしてその命令グループ中の全ての命令が一旦完了してしまうとＧＣＴ３８から除去される。他のタイプの命令はしかし異なって完了される。
【００２２】
ＢＥＵ９２が条件付き分岐命令を解決し、取るべき実行パスおパス・アドレスを決定するとき、そのパス・アドレスは分岐論理３６により予測される投機的パス・アドレスに対して比較される。もしそのパス・アドレスが一致すれば、分岐論理３６はその予測機能を必要であれば更新する。しかしもしその計算されたパス・アドレスがその予測されたパス・アドレスと一致しないなら、ＢＥＵ９２はＩＦＡＲ３０に正しいパス・アドレスを与え、そして分岐論理３６がその予測機能を、以下で更に説明するように更新する。いずれの場合でも、その分岐命令はそこでＢＩＱ６４から除去されることができ、そして同じ命令グループ中の全ての他の命令が完了してしまうときＧＣＴ３８からも除去されることができる。
【００２３】
（ロード予約命令を含む）ロード命令の実行に続き、ロード命令を実行することにより計算される実効アドレスはデータＥＲＡＴ（図示せず）により実アドレスに翻訳され、それからＬ１データ・キャッシュ２０にリクエスト・アドレスとして与えられる。この時点で、ロード・オペレーションがＦＸＩＯ６６もしくは６８から除去され、ロード・データ・キュー（ＬＤＱ）１１４にその指示されたロードが行われるまで置かれる。もしそのリクエスト・アドレスがＬ１データ・キャッシュ２０中でミスしたら、そのリクエスト・アドレスはロード・ミス・キュー（ＬＭＱ）１１６中に置かれる。ＬＭＱ１１６からはそのリクエストされたデータがＬ２キャッシュ１６から取り出され、他のプロセッサ１０からもしくはシステム・メモリ１２からはそれを取り損なう。
【００２４】
（ストア条件付き命令を含む）ストア命令は、ストアのための実効アドレスがストア命令の実行に続きロードされるストア・キュー（ＳＴＱ）１１０を用いて同様に完了される。ＳＴＱ１１０からはデータがＬ１データ・キャッシュ２０およびＬ２キャッシュ１６のいずれかもしくは両方の中にストアされることができ、実効から実への分岐先アドレスの翻訳が続く。
【００２５】
ここで図２に言及すると、これは命令順序付け論理１３の他のコンポーネントに関連して図１の分岐論理３６の実施例のもっと詳細なブロック図を示す。図示の例では、分岐論理３６が、ＩＦＡＲ３０のうちの１個もしくはそれ以上の以前の値をバッファする履歴命令フェッチ・アドレス（ＩＦＡ）バッファ１６０、命令デコーダ１２８、分岐履歴テーブル（ＢＨＴ）１３０などの分岐方向予測回路、および分岐先アドレス・キャッシュ（ＢＴＡＣ）１３２などの分岐先アドレス予測回路を含む。本発明の代替実施例においては、分岐方向予測回路が、以下に制限されるものではないが静的分岐方向予測回路もしくは２レベルの動的分岐予測回路を含む任意の他のタイプの分岐方向予測回路を用いて実施されることもできる。更に、分岐アドレス先予測回路は分岐先バッファ（ＢＴＢ）のような他の既知のもしくは将来開発される分岐先アドレス予測回路を用いて実施されることもできる。更に、幾つかの実施例では、分岐方向予測および分岐先アドレス予測のために使用される物理的な構造が組み合わされてもよい。本発明はそのような全ての実施例に等しく適用可能である。
【００２６】
命令デコーダ１２８は各キャッシュ・ラインの命令がＬ１命令キャッシュ１８からフェッチされ命令フェッチ・バッファ４０に置かれる際、それを受取るように結合される命令デコーダ１２８は分岐命令のための各キャッシュ・ラインの命令を走査し、分岐命令を検知するのに応答してその分岐命令を分岐方向予測回路（例えばＢＨＴ１３０）に方向予測のために進める。ＢＨＴ１３０と命令フェッチ・バッファ４０との間の結合によって更に示されるように、ＢＴＡＣ１３２がＢＨＴ１３０が採用されないと予測するパスに沿ってフェッチすることを惹起する場合には、ＢＨＴ１３０は命令フェッチ・バッファ４０からの不正なパス中の命令をキャンセルし、その逐次のパスに沿ってのフェッチを再指向する。
【００２７】
ここまでに示したとおり、分岐先アドレス予測回路（以下ではＢＴＡＣ１３２と称する）がＮレベル、但しＮは複数レベルの階層における最も遅いレベルのストレージのプロセッサ・クロック・サイクルにおいて評価待ち時間を表す整数、を含む複数レベルの組織で以って実施される。２レベルのＢＴＡＣを含む図示の例では、小さい方のレベル１（Ｌ１）ＢＴＡＣ１４０が１サイクル評価待ち時間を有し、分岐命令の検知の直ぐ後にフェッチされる次のブロックの命令の分岐先アドレスをストアし、大きい方のレベル２（Ｌ２）ＢＴＡＣ１５０が２サイクル評価待ち時間を有し、次の命令ブロックのフェッチの後のプロセッサ・クロック・サイクルにおいてフェッチされる命令ブロックのアドレスをストアする。１個もしくはそれ以上追加されるもっと大きなレベルのＢＴＡＣを含む実施例では、レベル３（Ｌ３）ＢＴＡＣが３サイクルの評価待ち時間を有し、分岐命令が検知されるなどした後の３サイクルをフェッチすることになるであろう命令ブロックの分岐先アドレスをストアするであろう。
【００２８】
Ｌ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０は夫々複数のエントリ１４２を含み、その各エントリが、命令フェッチ・アドレス（ＩＦＡ）のタグ部分をストアするためのタグ（Ｔ）フィールド１４４と、分岐先アドレス（ＢＴＡ）をストアするためのＢＴＡフィールドと、エントリ１４２のための状態情報を表す状態（Ｓ）フィールド１４８とを含む。いろいろな実施例において、状態フィールド１４８はそのエントリ１４２の有効性を単に表すかもしれないが、代わりにあるいは追加的にそのＢＴＡの正しさの信頼度合いを表すスコアを提供してもよい。
【００２９】
動作の際、全てのレベルのＢＴＡＣ（例えば、Ｌ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０）が、Ｌ１命令キャッシュ１８への評価と並行してＩＦＡＲ３０中のＩＦＡのタグ１６２によって評価される。前述のとおり、Ｌ１ＢＴＡＣ１４０への評価の結果はその評価の直ぐ後に続くプロセッサ・クロック・サイクルにおいて出力され、Ｌ２ＢＴＡＣ１５０への評価の結果はその評価の後の２サイクルにおいて出力される。もしＩＦＡＲ３０中のＩＦＡのタグ１６２がＬ１ＢＴＡＣ１４０もしくはＬ２ＢＴＡＣ１５０中の任意のエントリ１４２の任意のタグ・フィールド１４４の中味と一致しないなら、Ｌ１ＢＴＡＣ１４０ およびＬ２ＢＴＡＣ１５０はそれらの夫々のヒット信号１５２ａおよび１５２ｂを評価しない。他方で、もしタグ１６２がＬ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０の一方もしくは両方のエントリ１４２のタグ・フィールド１４４の中味と一致するなら、ヒットが生じる各ＢＴＡＣレベルはそのヒット信号１５２ａおよび１５２ｂを評価し、その一致するタグ・フィールド１４４と関連付けられたＢＴＡを出力する。もしＬ１ＢＴＡＣ１４０においてヒットが生じれば、そのＢＴＡはその一致するエントリ１４２の状態フィールド１４８中の状態情報により第１のバッファ１５４ａのところで適格となり、そしてもし成功裡に適格となれば、選択のためにＩＦＡＲ３０に提供される。もし代わりにあるいは追加的にＬ２ＢＴＡＣ１５０においてヒットが生じれば、そのＢＴＡはその一致するエントリ１４２の状態フィールド１４８中の状態情報および追加的に（インバータ１５８およびＡＮＤゲート１５６によって表されるように）ヒット信号１５２ａのアサート停止により第２のバッファ１５４ｂのところで適格となる。もしＬ２ＢＴＡＣ１５０によるＢＴＡ出力が成功裡に適格となれば、第２のバッファがＩＦＡＲ３０にＬ２ＢＴＡＣ１５０によるＢＴＡ出力を与える。このように、もしＢＴＡＣ１３２の一つよりも多くのレベルが分岐先アドレス予測を所与のプロセッサ・クロック・サイクルにおいて出力するなら、ＢＴＡＣ１３２の最高のレベル（即ち最小の待ち時間）による結果出力が使用される。
【００３０】
ＢＴＡＣ１３２は、分岐予測が行われるとき、必要に応じ更新される。図示のとおり、Ｌ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０からのヒット信号１５２ａおよび１５２ｂは分岐方向予測回路（例えばＢＨＴ１３０）にパスされる。もし分岐方向予測の結果が命令フェッチ再指向であり、Ｌ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０の両方においてミスされた分岐命令タグ１６２がＢＴＡＣ１３２の選択されたレベルに挿入リクエストを送るなら、ＢＨＴ１３０はＢＴＡＣ１３２の選択されたレベルに挿入リクエストを送り、これによってフェッチが再指向された分岐先アドレスにそのＩＦＡを関連付けられる新しいエントリ１４２の挿入をリクエストする。代わりに、もし分岐方向予測の結果が命令フェッチ再指向でなく（即ち分岐が不採用と予測されるなら）、かつＬ１ＢＴＡＣ１４０ およびＬ２ＢＴＡＣ１５０の一方もしくは両方における分岐命令タグ１６２がヒットするなら、ＢＨＴ１３０はＢＴＡＣ１３２から不正確な分岐先アドレス予測を除去するように無効化リクエストを送る。好適な実施例では、ＢＴＡＣ挿入もしくは無効化のリクエストが生じるとき、そのリクエストは、対応するＩＦＡが履歴ＩＦＡバッファ１６０に存在するようなＢＴＡＣ１３２の最低のレベルに送られる。こうして、２レベルのＢＴＡＣ１３２の場合には、もしその予測された分岐のＩＦＡの直前のＩＦＡが、挿入もしくは無効化のリクエストが生じるときの履歴ＩＦＡバッファ１６０になおもバッファされているなら、ＢＨＴ１３０は無効化リクエストもしくは挿入リクエストをＬ２ＢＴＡＣ１５０に送信する。もしその予測された分岐に関連するＩＦＡの直前のＩＦＡが履歴ＩＦＡバッファ１６０になおもバッファされているというのでなければ、ＢＨＴ１３０はＬ１ＢＴＡＣ１４０に挿入もしくは無効化のリクエストを指向する。ＢＴＡＣ１３２の動作に関する詳細は図３ないし図６に関連して以下で説明する。
【００３１】
ここで図３に言及すると、ＢＴＡＣ１３２が本発明による投機的分岐先アドレスを発生し出力する実施例の方法を示す高レベルの論理フローチャートが示されている。図示のプロセスはブロック３００で開始し、ブロック３０２に進む。そこには命令ブロックのフェッチを初期化するためにＬ１命令キャッシュ１８へのＩＦＡの送信と同時にＩＦＡＲ３０中の命令フェッチ・アドレス（ＩＦＡ）のタグ１６２をＢＴＡＣ１３２が受け取ることが示されている。ＢＴＡＣ１３２によるタグ１６２の受け取りに応答してＬ１ＢＴＡＣ１４０およびＬ２ＢＴＡＣ１５０はタグ１６２がエントリ１４２をヒットするか、即ちタグ１６２がエントリ１４２のタグ・フィールド１４４のいずれかの中味と一致するか調べるために同時に評価される。ＢＴＡＣ１３２のいろいろなレベルが前述のとおり異なる評価待ち時間を有するので、ＢＴＡＣ１３２の異なるレベルでのルックアップの結果は異なる時間に得られる。特に、図２に示す２レベルＢＴＡＣの場合、Ｌ１ＢＴＡＣ１４０はＬ２ＢＴＡＣ１５０がタグ１６２の直前のルックアップの結果を出力するのと同じプロセッサ・クロック中に「現在の」タグ１６２のルックアップの結果を出力する。
【００３２】
もし「現在の」タグ１６２がＬ１ＢＴＡＣ１４０中でヒットするなら（そしてその結果ヒット信号１５２ａがその一致するエントリ１４２の状態フィールド１４８の中味により成功裡に適格であるとされるなら）、そのプロセスはブロック３１２に進む。ブロック３１２は、Ｌ１ＢＴＡＣ１４０によるその予測された分岐先アドレス出力を、現在のタグ１６２のＢＴＡＣ１３２による受け取りの直後のプロセッサ・クロック・サイクルにおいてＩＦＡＲ３０にＢＴＡＣ１３２が提供することを示す。しかし、もしＬ１ＢＴＡＣ１４０中で現在のタグ１６２がミスし、かつ直前のタグ１６２がブロック３０８に示すようにＬ２ＢＴＡＣ１５０中でヒットする（その結果ヒット信号１５２ｂがその一致するエントリ１４２の状態フィールド１４８の中味によって成功裡に適格とされる）なら、そのプロセスはブロック３１０に進む。ブロック３１０は、その前のタグ１６２のＢＴＡＣ１３２による受け取りに続くＬ２ＢＴＡＣ１５０の２つのプロセッサ・クロック・サイクルによるその予測された分岐先アドレス出力をＢＴＡＣ１３２がＩＦＡＲ３０に与えることを示す。ブロック３１０もしくは３１２のいずれかの後に、あるいはブロック３０６および３０８の両方でのノーの決定に続き、図３に示すプロセスは次のタグ１６２がＢＴＡＣ１３２により受け取られるまでブロック３１４で終了する。
【００３３】
ここで図４に言及すると、ＢＴＡＣ１３２中の分岐先アドレス予測が本発明に従って更新される様子を示す高レベルの論理フローチャートが示される。このプロセスは図４のブロック４００で開始し、ブロック４０２に進む。そこでは分岐論理３６がＬ１命令キャッシュ１８からフェッチされた命令のブロック（例えば３２バイトのキャッシュ・ライン）が分岐命令（ＢＲ）を有するか否かを決定することを示す。もしノーであれば、分岐論理３６への更新は行われない。そこで図４に示すプロセスがブロック４０２からブロック４４０にパスすると、ブロック４４０では履歴ＩＦＡバッファ１６０中に命令フェッチ・ブロックのＩＦＡをその前のＩＦＡとして保存する様子を示す。その後、このプロセスは、後の命令ブロックがフェッチされるまで、ブロック４４１で終了する。
【００３４】
ブロック４０２に戻って、もし分岐論理３６がブロック４０２でそのフェッチされた命令ブロックが分岐命令（ＢＲ）を含むと決定されるなら、そのプロセスはブロックＲＦＩＤタグ４１０に進む。ブロック４１０ではフェッチ済み命令ブロックが無条件で取る分岐を含むかもしくはＢＨＴ１３０により採用されると予測されるような条件付き分岐を含むかであるかどうかを決定する分岐論理３６が示される。換言すると、命令フェッチが再指向されるかどうかを示す。もしそうなら、このプロセスはブロック４１０から、以下で説明するブロック４２０に進む。もしノーであれば、プロセスはブロック４１２に進み、分岐論理３６がＢＴＡＣ１３２の１もしくはそれ以上のレベルでＩＦＡのタグがヒットするか、ヒット信号１５２ａおよび１５２ｂから決定する。もしノーであれば、ＢＴＡＣ１３２への更新は行われず、プロセスはブロック４１２から、既に説明したブロック４４０ないし４４１に進む。しかし、もしタグ１６２がＢＴＡＣ１３２の１もしくはそれ以上のレベルでヒットすると決定されるなら、即ちこのことからＢＴＡＣ１３２がフェッチ済みでフェッチ再指向を生じさせるような分岐を含まないであろう命令ブロックのための再指向先のアドレスを予測する少なくとも一つのエントリを有することを意味するなら、分岐論理３６はタグ１６２に一致するＢＴＡＣ１３２（即ち、Ｌ１ＢＴＡＣ１４０もしくはＬ２ＢＴＡＣ１５０またはその両方）中の各エントリを無効にする（ブロック４１４）。このような無効化は、例えばその関係する１もしくはそれ以上のエントリ１４２の状態フィールドを更新することによって行われる。 従って、プロセスは既に説明したブロック４４０ないし４４１にパスする。
【００３５】
ここでブロック４２０に言及すると、もしブロック４２０で、そのフェッチ済みの命令ブロック中の分岐命令が無条件に「採用された」かもしくは「採用された」と予測され、かつＢＴＡＣ１３２においてタグ１６２がヒットするという決定を分岐論理３６がするなら、そのプロセスは以下で説明するブロック４３０に進む。しかし、もし分岐論理３６がブロック４２０で決定するなら、フェッチ済みの命令ブロック中の分岐命令が「採用され」かつＢＴＡＣ１３２中でタグ１６２がミスしたなら、そのプロセスはブロック４２２に進む。ブロック４２２は、分岐論理３６が件のその採用された分岐命令を含む命令ブロックのフェッチを生じたＩＦＡの直前にある前のＩＦＡを履歴ＩＦＡバッファ１６０がバッファするか決定することを示す。履歴ＩＦＡバッファ１６０は、マシーンのリブート、コンテキスト切り替え、もしくはパイプライン・フラッシュを生じることを含めいろいろな理由からＩＦＡをバッファしなくてもよい。
【００３６】
もし分岐論理３６がブロック４２２で、前のＩＦＡが利用可能でないと決定するなら、分岐論理３６はＬ１ＢＴＡＣ１４０中に、タグ・フィールド１４４中の現在のＩＦＡのタグ部分およびＢＴＡフィールド１４６中のＢＨＴ１３０により予測される分岐先アドレスを含む新しいエントリ１４２を挿入する。他方、もし分岐論理３６がブロック４２２で、件の条件付き分岐命令を含む命令ブロックのフェッチを発生した現在のＩＦＡの直前に前のＩＦＡを履歴ＩＦＡバッファ１６０がなおも保持していると決定するなら、分岐論理３６は、タグ・フィールド１４４中の前のＩＦＡのタグ部分およびＢＴＡフィールド１４６中のＢＨＴ１３０により予測される分岐先アドレスを含む新しいエントリ１４２をＬ２ＢＴＡＣ１５０中に挿入する。ブロック４２４および４２６のいずれかに続いて、プロセスは既に説明したブロック４４０ないし４４１にパスする。
【００３７】
ここでブロック４３０に言及すると、もし分岐論理３６が、そのフェッチ済みの命令ブロックが採用された分岐を含み、かつＢＴＡＣ１３２中でタグ１６２がヒットすると決定するなら、分岐論理３６は更にＢＴＡ予測がＢＨＴ１３０によって正しいものと確認されるか決定する。もしイエスであれば、ＢＴＡＣ１３２への更新が不必要とされ、そのプロセスは既に説明したブロック４４０ないし４４１に進む。しかし、もしＢＨＴ１３０がブロック４３０で、ＢＴＡＣ１３２により予測されたＢＴＡが不正確であったことを示すなら、分岐論理３６はその不正確なＢＴＡ予測を与えたエントリ１４２のＢＴＡフィールド１４６を正しいＢＴＡで以って更新する。その後、そのプロセスは既に説明したブロック４４０ないし４４１に進む。
【００３８】
ここで図５に言及すると、必要であれば、予測された分岐の解決に応答して分岐論理３６における分岐先アドレス予測を分岐実行ユニット（ＢＥＵ）９２が更新する例示のプロセスの高レベルの論理フローチャートが示されている。このプロセスはブロック４５０で開始し、ブロック４５２および４５４に進む。この両ブロックでもってＢＥＵ９２がどのように決定するかを示す。すなわち「採用」として解決された分岐（ＢＲ）が、ＢＨＴ１３０により「採用」と正しく予測されたかを決定するＢＥＵ９２を示す。もしＢＥＵ９２により「採用」として解決された分岐がＢＨＴ１３０によって正しく予測されたことをブロック４５２および４５４で決定されたなら、ＢＥＵ９２は分岐論理３６において分岐先アドレス予測を更新せず、このプロセスはブロック４６０で終了する。しかし、もしＢＥＵ９２がＢＥＵ９２により「採用」として解決された分岐がＢＨＴ１３０によって予測ミスとされ「不採用」とブロック４５２および４５４で決定されたなら、このプロセスはブロック４５６に進む。ブロック４５６は、タグ・フィールド１４４中に解決済みの分岐を含む命令フェッチ・ブロックのＩＦＡのタグ部分を含むとともに、ＢＴＡフィールド１４６中にＢＥＵ９２により計算された正しい分岐先アドレスを含む新しいエントリ１４２をＢＥＵ９２がＬ１ＢＴＡＣ１４０中に挿入することを示す。その後、図５に示されるプロセスはブロック４６０で終了する。ブロック４５２ないし４５６に示す動作と同時に、ＢＥＵ９２はまた解決済みの分岐を含む命令フェッチ・ブロックのＩＦＡを履歴ＩＦＡバッファ１６０に置機、必要なら前のＩＦＡを移す。
【００３９】
ここで図６に言及すると、これはＬ１命令キャッシュ１８から連続するプロセッサ・クロック・サイクルでフェッチされた命令のブロックの命令フェッチ・アドレス（ＩＦＡ）によって表された例示の命令フェッチ・ストリームを示す。この例では、各命令フェッチ・ブロックが３２バイトの長さであり、ＩＦＡが１６進法で表されていると仮定する。
【００４０】
初期条件として、Ｌ１ＢＴＡＣ１４０がＩＦＡ  ０ｘ１００というタグを０ｘ２００という分岐先アドレスに関連付けたエントリ１４２を含むと仮定する。従って、このＢＴＡ予測を含むＬ１ＢＴＡＣ１４０中のこのエントリ１４２は、０ｘ１００＝＞０ｘ２００と表すことができる。更に、Ｌ２ＢＴＡＣ１５０がＩＦＡ  ０ｘ１００というタグを０ｘ３００という分岐先アドレスに関連付けたエントリ１４２を含むと仮定する。これは０ｘ１００＝＞０ｘ３００と表すことができる。
【００４１】
もしＩＦＡ  ０ｘ３２０により識別される命令フェッチ・ブロックに常駐する条件付き分岐命令がＢＨＴ１３０によって「採用されない」ものとして予測され、かつＢＥＵ９２によって後に「採用される」ものとして解決されると予測されるなら、分岐論理１３２がこの予測違いの検出に応答してパイプラインのフラッシュを実行する。こうして、ＩＦＡ  ０ｘ３４０によって識別される命令フェッチ・ブロックおよび恐らくは１個もしくはそれ以上の追加の逐次命令フェッチ・ブロックが分岐論理３６によって命令フェッチ・バッファ４０から除去される。そのパイプライン・フラッシュの後、その正しい分岐先アドレス  ０ｘ５００から命令フェッチが開始し、分岐論理１３２がＢＴＡ予測  ０ｘ３２０＝＞０ｘ５００をＬ１ＢＴＡＣ１４０に挿入する。これは図４のブロック４２４で前述したとおりである。ＩＦＡ  ０ｘ５００に対応する命令フェッチ・ブロックが、ＢＨＴ１３０が採用されるものと予測する条件付き分岐命令を含むと仮定すると、ＩＦＡ  ０ｘ５２０および０ｘ５４０に対応する逐次フェッチ命令ブロック（これらは分岐操作および指向予測中Ｌ１命令キャッシュ１８からフェッチされる）が分岐論理１３６により命令フェッチ・バッファ１４０から除去される。更に、履歴ＩＦＡバッファ１６０中で以前のＩＦＡ  ０ｘ３２０が利用可能なので、分岐論理３６がＢＴＡ予測０ｘ３２０＝＞０ｘ６００をＬ２ＢＴＡＣ１５０中の新しいエントリ１４２中に挿入する。これは図４のブロック４２６に関して前述したとおりである。
【００４２】
これまで説明してきたとおり、本発明は改良された分岐先アドレス・キャッシュ（ＢＴＡＣ）が分岐先アドレス予測を生じるように使用されるデータ処理システム、プロセッサ、およびデータ処理方法を提供する。本発明によれば、ＢＴＡＣが、種々の評価複数の階層レベルの、評価待ち時間の短くて済むストレージを含む。好適な実施例では、ＢＴＡＣの最高のレベルは単一のプロセッサ・クロック・サイクルにおける評価を許容するようなサイズに制限される。
【００４３】
本発明を好適な実施例に従って説明してきたが、本発明の趣旨および範囲から逸れずに種々の形態の変更や詳細を加えることは当業者には理解できよう。
【００４４】
本発明の新規と考えられる特徴を特許請求の範囲に記すが、本発明は好適な使用態様ともども、実施例の前述の詳細な説明の記述を添付図面とともに参照することによってもっともよく理解されよう。
【図面の簡単な説明】
【００４５】
【図１】本発明によるデータ処理システムの実施例である。
【図２】図１のデータ処理システム中の分岐先アドレス・キャッシュ（ＢＴＡＣ）の詳細なブロック図である。
【図３】実施例の方法の高レベルの論理フローチャートであり、この方法によりＢＴＡＣが本発明に従って命令フェッチ・アドレスを発生することを示すチャートである。
【図４】実施例の方法の高レベルの論理フローチャートであり、この方法によりそのＢＴＡＣ中の分岐先アドレス予測が本発明に従う分岐論理によって更新されることを示すチャートである。
【図５】実施例の方法の高レベルの論理フローチャートであり、この方法によりそのＢＴＡＣ中の分岐先アドレス予測が本発明に従う分岐実行ユニットのオペレーションに応答して更新されることを示すチャートである。
【図６】本発明による連続するプロセッサ・クロック・サイクルで命令キャッシュからフェッチされる命令のブロックの命令フェッチ・アドレスによって表される例示の命令フェッチ・ストリームを示す図である。
【符号の説明】
【００４６】
８  データ処理システム
１０  プロセッサ
１２  システム・メモリ
１３  命令順序付け論理
１４  相互接続ファブリック
１６  Ｌ２キャッシュ
１８  Ｌ１命令キャッシュ
２０  Ｌ１データ・キャッシュ
２２  ヒット／ミス論理
２４  命令キャッシュ・リクエスト・バス
２８  プリフェッチ・バッファ（ＰＢ）
３０  命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）
３２  実効実アドレス翻訳（ＥＲＡＴ）
３４  命令キャッシュ・ディレクトリ（ＩＤＩＲ）
３６  分岐論理
３８  グローバル完了テーブル（ＧＣＴ）
４０  命令フェッチ・バッファ（ＩＦＢ）
４２  命令翻訳ユニット（ＩＴＵ）
４４、４６、４８、５０  ラッチ
５２  ＣＲマッパー
５４  リンク兼カウント（ＬＣ）レジスタ・マッパー
５６  実行レジスタ・マッパー（ＸＥＲ）
５８  汎用レジスタ・マッパー（ＧＰＲ）
６０  浮動小数点レジスタ（ＦＰＲ）マッパー
６２  ＣＲ発行キュー（ＣＲＩＱ）
６４  分岐発行キュー（ＢＩＱ）
６６、６８  固定小数点発行キュー（ＦＸＩＱ）
７０、７２  浮動小数点発行キュー（ＦＰＩＱ）
９０  ＣＲユニット（ＣＲＵ）
９２  分岐実行ユニット（ＢＥＵ）
９４、１００  固定小数点ユニット（ＦＸＵ）
９６、９８  ロード・ストア・ユニット（ＬＳＵ）
１０２、１０４  浮動小数点ユニット（ＦＰＵ）
１１０  ストア・キュー（ＳＴＱ）
１１４  ロード・データ・キュー（ＬＤＱ）
１１６  ロード・ミス・キュー（ＬＭＱ）
１２８  命令デコーダ
１３０  分岐履歴テーブル（ＢＨＴ）
１３２  分岐先アドレス・キャッシュ（ＢＴＡＣ）
１４０  レベル１分岐先アドレス・キャッシュ（Ｌ１ＢＴＡＣ）
１４２  エントリ
１４４  タグ・フィールド（Ｔ）
１４６  分岐先アドレス（ＢＴＡ）
１４８  状態フィールド（Ｓ）
１５０  レベル２分岐先アドレス・キャッシュ（Ｌ２ＢＴＡＣ）
１５２a、１５２ｂ  ヒット信号
１６０  履歴命令フェッチ・アドレス（ＩＦＡ）バッファ
１６２  タグ
【図１】
0005255367.tif 000002
【図２】
0005255367.tif 000003
【図３】
0005255367.tif 000004
【図４】
0005255367.tif 000005
【図５】
0005255367.tif 000006
【図６】
0005255367.tif 000007