(57)【要約】  分岐履歴情報を処理する方法が開示される。方法は、命令キャッシュから分岐命令を読み出し、複数のパイプラインステージにおいて分岐命令を実行する。方法は、分岐命令が特定されたことを確認する。方法は、さらに、第１のパイプラインステージ中において、分岐履歴情報を受信して第１のレジスタに分岐履歴情報をロードする。方法は、第２のパイプラインステージ中において、第２のレジスタに分岐履歴情報をさらにロードする。
2010509680.tif 000002
【特許請求の範囲】
【請求項１】
第１のパイプラインステージ中に分岐命令を特定することと、
前記第１のパイプラインステージ中に第１のレジスタへ分岐命令情報をロードすることと、
第２のパイプラインステージ中で前記分岐命令を確認することと、を具備し、
前記分岐命令情報は、前記第２のパイプラインステージ中に第２のレジスタへロードされる、分岐履歴情報を処理する方法。
【請求項２】
前記分岐命令を特定する前記ステップは、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）ヒットが受信される場合に起こる、請求項１の方法。
【請求項３】
前記分岐命令を特定する前記ステップは、分岐ターゲット命令キャッシュ（ＢＴＩＣ）ヒットが受信される場合に起こる、請求項１の方法。
【請求項４】
前記第１のパイプラインステージは、命令キャッシュステージである、請求項１の方法。
【請求項５】
前記第１のレジスタ及び前記第２のレジスタは、シフトレジスタである、請求項１の方法。
【請求項６】
前記第１のレジスタ及び前記第２のレジスタは、９ビットシフトレジスタである、請求項５の方法。
【請求項７】
前記第１のレジスタ及び前記第２のレジスタは、条件付き分岐命令に関する分岐履歴情報を格納する、請求項１の方法。
【請求項８】
前記第１のレジスタ及び前記第２のレジスタは、条件付き分岐命令及び無条件分岐命令に関する分岐履歴情報を格納する、請求項１の方法。
【請求項９】
前記第２のパイプラインステージは、デコードステージである、請求項１の方法。
【請求項１０】
分岐履歴情報を有する第１のレジスタと、
分岐履歴情報を有する第２のレジスタと、
分岐命令が特定される第１のパイプラインステージ中に、前記第１のレジスタが前記分岐履歴情報をロードされ、第２のパイプラインステージ中に、前記第２のレジスタが前記分岐履歴情報をロードされる複数のパイプラインステージと、を具備するパイプラインプロセッサ。
【請求項１１】
前記分岐命令は、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）ヒットが発生する場合に特定される、請求項１０のパイプラインプロセッサ。
【請求項１２】
前記分岐命令は、分岐ターゲット命令キャッシュ（ＢＴＩＣ）ヒットが発生する場合に特定される、請求項１０のパイプラインプロセッサ。
【請求項１３】
前記第１のパイプラインステージは、命令キャッシュステージである、請求項１０のパイプラインプロセッサ。
【請求項１４】
前記第２のパイプラインステージは、命令デコードステージである、請求項１０のパイプラインプロセッサ。
【請求項１５】
前記分岐履歴情報は、条件付き分岐命令に関する分岐履歴情報をさらに有する、請求項１０のパイプラインプロセッサ。
【請求項１６】
前記分岐履歴情報は、条件付き分岐命令及び無条件分岐命令に関する分岐履歴情報をさらに有する、請求項１０のパイプラインプロセッサ。
【請求項１７】
前記第１のレジスタ及び前記第２のレジスタは、シフトレジスタである、請求項１０のパイプラインプロセッサ。
【請求項１８】
前記第２のレジスタは、分岐訂正論理回路に入力を与えるために使用される、請求項１０のパイプラインプロセッサ。
【請求項１９】
分岐命令をフェッチすることと、
第１のパイプラインステージ中に前記分岐命令を特定することと、
前記第１のパイプラインステージ中に第１のレジスタに分岐履歴情報をロードすることと、
第２のパイプラインステージ中に前記分岐命令を確認することと、を具備し、
前記分岐履歴情報は、前記第２のパイプラインステージ中に第２のレジスタへロードされる、分岐履歴情報を処理する方法。
【請求項２０】
前記分岐命令を特定する前記ステップは、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）ヒットが受信される場合に起こる、請求項１９の方法。
【請求項２１】
前記第１のパイプラインステージは、命令キャッシュステージである、請求項１９の方法。
【請求項２２】
前記第２のパイプラインステージは、デコードステージである、請求項１９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムに係り、特に、ワーキング・グローバル・ヒストリ・レジスタを使用する方法及びシステムに関する。
【背景技術】
【０００２】
コンピュータプラットフォーム発展の中心には、プロセッサがある。初期のプロセッサは、当時の利用可能な技術によって制限された。製造技術における最近の進歩により、トランジスタ設計が縮小され、初期のプロセッサのサイズの１／１０００を下回ることが可能となっている。これらのより小さなプロセッサ設計は、より速く、より効率的であり、本質的により少ない電力を使用する一方で、事前の予想を超える処理能力を実現する。
【０００３】
プロセッサの物理設計が発展されるにつれて、情報処理及び機能実行の革新的な方法は、同様に変化してきた。例えば、命令の「パイプライン化」は、１９６０年代前半からプロセッサ設計において実施されている。パイプライン化の一例は、ユニット又はステージへ実行パイプラインを分けるという概念であり、命令は、パイプライン中を続々と順次流れる。複数のステージが複数の命令の適切な部分を同時に処理することができるように、ステージが用意される。パイプライン化の１つの利点は、命令が並列に評価されることから命令の実行がオーバーラップされることである。
【０００４】
プロセッサパイプラインは、各ステージが命令の実行に関連する機能を果たす複数のステージから構成される。各ステージは、パイプステージ又はパイプセグメントと称される。ステージは、パイプラインを形成するように連携して結合される。命令は、パイプラインの一方の端から入り、他方の端から出る。
【０００５】
プロセッサによって実行されるほとんどのプログラムは、条件付き分岐命令を含むが、命令がパイプライン中の深くにおいて評価されるまで、命令の実際の分岐動作は、特定されない。分岐命令の実際の評価を待つことに起因するストールを回避するために、近代のプロセッサは、ある分岐予測手法を使用することができ、それによって条件付き分岐命令の分岐動作は、パイプラインの早期に予測される。予測された分岐評価に基づいて、プロセッサは、予測されたアドレス、即ち、分岐ターゲットアドレス（分岐すると予測される場合）又は分岐命令の後続のシーケンシャルアドレス（分岐しないと予測される場合）のいずれかから命令を投機的にフェッチして実行する。条件付き分岐命令がテイクン（taken）か、ノットテイクン（not taken）かは、分岐方向の決定と称される。分岐方向の決定は、予測時及び実際の分岐決定時に行われることができる。実際の分岐動作が決定された時に、分岐が誤予測だった場合には、投機的にフェッチされた命令は、パイプラインからフラッシュされなければならず、新たな命令が正確なアドレスからフェッチされる。誤った分岐予測に応じて投機的に命令をフェッチすることは、プロセッサのパフォーマンス及び電力消費に悪影響を与える可能性がある。従って、分岐予測の精度を向上させることは、重要なプロセッサ設計目標である。
【０００６】
分岐予測の公知の手法は、２つの予測器へ分岐予測を分割することを含み、この２つの予測器は、初期分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）及び分岐履歴テーブル（ＢＨＴ）である。ＢＴＡＣは、命令フェッチグループアドレスによってインデックスを付けられ、また、分岐ターゲットとも称され、命令フェッチグループアドレスに対応する次にフェッチされるアドレスを含む。分岐命令がプロセッサパイプラインを通過して、その分岐が分岐成立であった後に、エントリは、ＢＴＡＣに追加される。ＢＴＡＣがいっぱいになると、次のエントリが追加される際に、エントリは、標準キャッシュリプレースメントアルゴリズム（例えば、ラウンドロビン又はリースト・リーセントリ・ユーズド（least-recently used））を使用して、ＢＴＡＣから取り除かれる。
【０００７】
ＢＴＡＣは、高連想(highly-associative)キャッシュ設計であることができ、命令実行パイプラインの早期にアクセスされることができる。フェッチグループアドレスがＢＴＡＣエントリに一致する（ＢＴＡＣヒット）場合、対応する次のフェッチアドレス又はターゲットアドレスは、次のサイクルにおいてフェッチされる。ターゲットアドレスのこの一致及び連続フェッチングは、暗黙的なテイクン分岐予測（implicit taken branch prediction）と称される。不一致（ＢＴＡＣミス）である場合、次の順次インクリメントされたアドレスが次のサイクルにおいてフェッチされる。この不一致状況は、暗黙的なノットテイクン予測（implicit not-taken prediction）とも称される。
【０００８】
ＢＴＡＣは、パターン履歴テーブル（ＰＨＴ）としても知られる分岐履歴テーブル（ＢＨＴ）のようなより正確な個別の分岐方向予測器とともに利用されてもよい。従来のＢＨＴは、個々の分岐命令に対してより正確なテイクン又は正確なノットテイクン判定を実現するために、一連の飽和予測方向カウンタを含むことができる。例えば、各飽和予測方向カウンタは、４つの状態のうちの１つの状態をとる２ビットカウンタを有してもよく、これらの４つの状態は、夫々以下のように重みが加えられた予測値を割り当てられる。
【０００９】
１１  −  分岐する可能性大（Strongly predicted taken）
１０  −  分岐する可能性小（Weakly predicted taken）
０１  −  分岐しない可能性小（Weakly predicted not taken）
００  −  分岐しない可能性大（Strongly predicted not taken）
予測値とも称されるＢＨＴの出力は、次のサイクルにおいて分岐命令のターゲットアドレス又は次のシーケンシャルアドレスのいずれかをフェッチすることに帰着するテイクン又はノットテイクン判定である。ＢＨＴは、それが既知となるように分岐結果情報で一般に更新される。
【００１０】
分岐予測の精度を高めるために、種々の他の予測技術は、フィードバックとして他の分岐から最近の分岐履歴情報を使用して実施されることができる。当業者が認識するように、最新の分岐動作は、以前に実行された分岐命令の履歴に関連づけられることができる。例えば、以前に実行された分岐命令の履歴は、条件付き分岐命令の予測方法に影響を与えてもよい。
【００１１】
グローバル・ブランチ・ヒストリ・レジスタ又はグローバル・ヒストリ・シフト・レジスタとも称されるグローバル・ヒストリ・レジスタ（ＧＨＲ：Global History Register）は、以前に実行された分岐命令における過去の履歴の経過を追うために使用されることができる。ＧＨＲに格納されるように、分岐履歴は、予測結果の向上を達成するために、現在の実行済み分岐命令までのコードパス中に遭遇した分岐命令のシーケンスの一覧（view）を提供する。
【００１２】
いくつかのプロセッサでは、分岐命令及びその関連予測情報の特定は、命令デコードステージの後になって起こることができる。一般に、命令デコードステージは、命令実行シーケンスの後のステージでありうる。命令が分岐命令としてデコードされて確認された後、ＧＨＲは、適切な分岐履歴情報をロードされる。分岐履歴情報が特定されると、この分岐履歴情報は、ＧＨＲへシフトされる。ＧＨＲの出力は、次の条件付き分岐命令の予測に使用されるＢＨＴ内に格納された予測値を特定するのに使用される。
【００１３】
ＧＨＲを使用する従来のプロセッサでは、複数の分岐命令が比較的短期間の間に並列に実行される場合、ＧＨＲは、遭遇した実際の分岐履歴情報を反映していないかもしれない。この例では、ＧＨＲが第１の分岐命令からの分岐履歴情報で更新される前に、第２の分岐命令が予測されるだろう。結果として、第２の条件付き分岐命令に関してＢＨＴ内のエントリを特定するのにＧＨＲの不正確な値が使用されることとなる。ＢＨＴ内のエントリにインデックスを付けるために不正確な値を使用することは、分岐予測の精度に影響するだろう。プロセッサが第１の条件付き分岐命令からの分岐履歴情報に対応することができる場合、異なる値がＧＨＲに格納され、ＢＨＴ内の異なるエントリは、第２の条件付き分岐命令に関して特定されるだろう。
【発明の概要】
【００１４】
従って、より正確な分岐予測を達成するために、ＧＨＲより早く分岐履歴情報を格納して使用することができるプロセッサを有することがこの業界において要請されている。本発明の開示は、この要請を認識し、プロセッサの実行ステージの早期に分岐命令を特定するプロセッサを開示する。入力として分岐命令情報を使用することで、プロセッサは、後続の条件付き分岐命令に対して予測値の選定を導くことができる。
【００１５】
分岐履歴情報を処理する方法が開示される。この方法は、第１のパイプラインステージ中に分岐命令を特定し、前記第１のパイプラインステージ中に第１のレジスタへ前記分岐履歴情報をロードする。この方法は、第２のパイプラインステージ中に前記分岐命令を確認し、前記分岐履歴情報は、前記第２のパイプラインステージ中に第２のレジスタへロードされる。
【００１６】
分岐履歴情報を有する第１のレジスタ、及び分岐履歴情報を有する第２のレジスタを具備するパイプラインプロセッサが開示される。このパイプラインプロセッサは、分岐命令が特定される第１のパイプラインステージ中に第１のレジスタが前記分岐履歴情報をロードされ、第２のパイプラインステージ中に第２のレジスタが前記分岐履歴情報をロードされる複数のパイプラインステージを有する。
【００１７】
分岐履歴情報を処理する方法が開示される。この方法は、分岐命令をフェッチし、第１のパイプラインステージ中に前記分岐命令を特定し、前記第１のパイプラインステージ中に第１のレジスタに分岐履歴情報をロードする。この方法は、第２のパイプラインステージ中に前記分岐命令を確認し、前記分岐履歴情報は、第２のパイプラインステージ中に第２のレジスタへロードされる。
【００１８】
本発明についてのより完全な理解、並びに本発明のさらなる特徴及び利点は、以下の詳細な説明及び添付の図面から明らかになるだろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の実施形態を使用するプロセッサのハイレベルのロジック・ハードウェア・ブロック図を示す。
【図２】図２は、図１のプロセッサによって使用される典型的な分岐履歴テーブルを示す。
【図３】図３は、ワーキング・グローバル・ヒストリ・レジスタを使用する図１のプロセッサの下位レベル論理回路図を示す。
【図４】図４は、ワーキング・グローバル・ヒストリ・レジスタ及びグローバル・ヒストリ・レジスタの詳細図を示す。
【図５】図５は、図１のプロセッサによって実行される命令の典型的なグループを示す。
【図６】図６は、図１のプロセッサの種々のステージを経由して命令が実行される図５の命令の典型的なグループのタイミング図を示す。
【図７】図７は、ワーキング・グローバル・ヒストリ・レジスタを使用する図１のプロセッサによって実行される命令プロセスフローを例証するフローチャートを示す。
【詳細な説明】
【００２０】
添付の図面に関連して以下に示される詳細な説明は、本発明の種々の実施形態の説明として意図され、本発明が実行されることができる実施形態だけを提示するように意図するものではない。詳細な説明は、本発明の充分な理解を提供する目的で、具体的な詳細を含む。しかしながら、本発明がこれらの具体的な詳細なしに実行されてもよいことは、当業者には明らかだろう。いくつかの例では、公知の構造及び構成要素は、本発明の概念を不明瞭にすることがないようにブロック図の形態で示されている。頭字語及び他の記述的な用語は、便宜上及び明確にするために単に使用されているが、本発明の範囲を制限するように意図されるものではない。
【００２１】
図１は、以下に記述されるような一実施形態を利用するスーパースカラープロセッサ１００のハイレベル図を示している。プロセッサ１００は、命令キャッシュ１０６に専用の高速バス１０４を介して結合される中央演算処理装置（ＣＰＵ）１０２を有している。命令キャッシュは、メモリ１１４に汎用バス１１６を介して同様に結合される。
【００２２】
プロセッサ１００内では、命令フェッチユニット（ＩＦＵ）１２２は、メモリ１１４から命令キャッシュ１０６への命令のローディングを制御する。命令キャッシュ１０６が命令をロードされると、ＣＰＵ１０２は、高速バス１０４を介してそれらにアクセスすることができる。命令キャッシュ１０６は、図１に示されるような個別のメモリ構造であってもよく、或いは、命令キャッシュ１０６は、ＣＰＵ１０２の内部構成要素として統合されていてもよい。統合は、ＣＰＵ１０２の複雑さ及び電力損失と同様に命令キャッシュ１０６のサイズにも依存するだろう。さらに、ＩＦＵ１２２は、分岐ターゲットアドレスキャッシュ１３０（ＢＴＡＣ）、分岐履歴テーブル１４０（ＢＨＴ）及び２つの下流パイプライン１６０及び１７０に結合されている。
【００２３】
命令は、いくつかの命令を同時に命令キャッシュ１０６からフェッチされてデコードされることができる。命令キャッシュ１０６内では、命令は、キャッシュラインとして知られているセクションにグループ化される。各キャッシュラインは、複数の命令及び関連データを含むことができる。フェッチされる命令の数は、必要とされるフェッチ帯域幅及び各キャッシュライン中の命令の数に依存してもよい。ＩＦＵ１２２内では、フェッチされた命令は、オペレーションタイプ及びデータ依存性に関して分析される。命令を分析した後に、プロセッサ１００は、さらなる実行のために、ＩＦＵ１２２から下流機能ユニット、即ち、下流パイプライン１６０又は１７０へ命令を分配することができる。
【００２４】
下流パイプライン１６０及び１７０は、算術論理演算ユニット、浮動小数点演算ユニット、ストアユニット及びロードユニット等を含む種々の演算実行ユニット（ＥＵ）１１８を含むことができる。例えば、算術論理演算ユニットのようなＥＵ１１８は、広範囲の演算機能、例えば、整数の加算、減算、簡単な乗算、ビット単位の論理演算（例えば、ＡＮＤ、ＮＯＴ、ＯＲ、ＸＯＲ）及びビットシフト等を実行することができる。さらに、下流パイプライン１６０及び１７０は、レゾリューションステージ（図示せず）を有することができ、レゾリューションステージ中に条件付き分岐命令の実際の結果が特定される。分岐命令の実際の結果が特定されると、プロセッサ１００は、実際の結果を予測結果と比較することができ、そして、それらが一致しない場合、誤予測が生じたこととなる。
【００２５】
当業者は、ＢＴＡＣ１３０が分岐ターゲットバッファ（ＢＴＢ）又は分岐ターゲット命令キャッシュ（ＢＴＩＣ）と同類でありうることを認識する。ＢＴＢ又はＢＴＩＣは、分岐アドレス及び分岐ターゲットの命令データ（即ち、オペコード）の両方を格納する。説明を簡単にするために、ＢＴＡＣ１３０は、本発明の種々の実施形態に関連して使用される。本発明の他の実施形態は、ＢＴＡＣ１３０の代わりにＢＴＢ又はＢＴＩＣを選定的に含んでもよい。
【００２６】
最初に分岐命令が実行される時には、ＢＴＡＣ１３０にエントリがなく、ＢＴＡＣミスが生じる。分岐命令がその実行を終了した後、ＢＴＡＣ１３０は、特定の条件付き分岐命令についてのターゲットアドレス及びプロセッサモード（例えば、アドバンストＲＩＳＣプロセッサアーキテクチャにおけるＡｒｍ対Ｔｈｕｍｂ動作）を反映するために、続いて更新されることができる。分岐命令が再度フェッチされた後は常に、ＢＴＡＣ１３０に格納された情報は、フェッチされた分岐命令をたとえ完全にはデコードしていなくても、次のプロセッササイクルでフェッチされることができる。
【００２７】
ＢＴＡＣヒット（例えば、フェッチグループアドレスがＢＴＡＣ１３０内のアドレスと一致する場合）は、条件付き又は無条件分岐命令のいずれかに対して生じることができる。これは、ＢＴＡＣ１３０が条件付き分岐命令及び無条件分岐命令の両方に関連する情報を格納することができる事実によるものである。無条件分岐命令のＢＴＡＣヒットの場合には、分岐命令が無条件であるという事実とともに予測されたターゲットアドレス及び予測されたプロセッサモードが格納されることができる。無条件分岐命令アドレスがＢＴＡＣ１３０中のエントリに格納される状況では、エントリは、テイクン（分岐）（taken）の分岐方向を示す。
【００２８】
図２は、プロセッサ１００によって使用される典型的な分岐履歴テーブル（ＢＨＴ）１４０のより詳細な説明図を示している。ＢＨＴ１４０は、ｍアドレスビットを有するアドレスを使用してインデックスを付けられる２ｍのラインに組織化されてもよい。一実施形態では、９ビットのアドレスは、５１２のラインを有するＢＨＴ１４０に帰着して使用される。各ライン２０２中には、２ｎのカウンタ２０４があり、ここで、ｎは、適切なカウンタを選定するために使用されるビット数である。さらに、３ビットのアドレスは、ライン２０２毎に８つのカウンタ２０４を有するＢＨＴ１４０に帰着して、カウンタ２０４を選定するために使用さることができる。ある典型的な実施形態では、フェッチグループアドレスの１２桁目から４桁目のビット（９ビット）は、ＢＨＴ１４０内のライン２０２を選定するために使用されることができる。フェッチグループアドレスの３桁目から１桁目までのビット（３ビット）は、特定のカウンタ２０４を選定するために使用されることができる。
【００２９】
プロセッサ１００は、命令デコードステージより前の命令実行プロセスのより早期に分岐命令を特定することができる。分岐命令がより早期に特定される場合、予測値（条件付き分岐命令）又はテイクン分岐方向（無条件分岐命令）等のような分岐履歴情報は、同時に特定されてもよい。図３の議論に記述されることになるワーキング・グローバル・ヒストリ・レジスタ（ＷＧＨＲ）は、命令実行プロセスのより早期に分岐履歴情報を受信して処理するためにプロセッサ１００によって使用されることができる。例えば、ＷＧＨＲは、条件付き分岐命令の予測値及び無条件分岐命令の分岐方向を格納することができる。この代わりに、ＷＧＨＲは、条件付き分岐命令の予測値だけを格納してもよい。ＷＧＨＲの出力は、次の条件付き分岐命令のためにＢＨＴ１４０内の対応するエントリにインデックスを付けるために使用されてもよい。
【００３０】
図３は、ワーキング・グローバル・ヒストリ・レジスタ（ＷＧＨＲ）３１６を含むプロセッサ１００の下位レベル論理ブロック図３００を示している。上流パイプ３５０が下位レベルブロック図３００内にある。フェッチ論理回路３０２は、上流パイプのトップに結合されている。上流パイプ３５０は、４つの命令実行ステージ、例えば、命令キャッシュ第１ステージ（ＩＣ１）３０４、命令キャッシュ第２ステージ（ＩＣ２）３０６、命令データアラインメントステージ（ＩＤＡ）３０８及びデコードステージ（ＤＣＤ）３１０を含む。本発明の範囲を限定することなしに、パイプステージが上流パイプ３５０に追加されてもよく、或いは上流パイプ３５０から削除されてもよいことに留意されたい。フェッチ論理回路３０２、上流パイプ３５０、ワーキング・グローバル・ヒストリ・レジスタ（ＷＧＨＲ）３１６、グローバル・ヒストリ・レジスタ（ＧＨＲ）３１４、分岐訂正ロジック回路（ＢＣＬ）３３０、選定マルチプレクサ（mux）３２２及びアドレスハッシング論理回路３２０は、ＩＦＵ１２２内に同様に設けられることができる。
【００３１】
プロセッサ１００が命令の実行を開始すると、フェッチ論理回路３０２は、ＩＣ１ステージ３０４中にどの命令がフェッチされるかを決定する。命令を読み出すために、フェッチ論理回路３０２は、命令キャッシュ１０６にフェッチグループアドレスを送信する。フェッチグループアドレスが命令キャッシュ１０６内に検出される（例えば、命令キャッシュヒット）と、命令は、ＩＣ２ステージ３０４中に命令キャッシュ１０６内のヒットキャッシュラインから読み出される。
【００３２】
並行して、ＩＣ１ステージ３０４中において、プロセッサ１００は、ＢＴＡＣ１３０にフェッチグループアドレスを送信する。プロセッサ１００がＢＴＡＣヒットに遭遇する場合、このフェッチグループアドレスに関してＢＴＡＣ内に格納されている情報は、ＩＣ２ステージ３０６中に受信される。前述されたように、ＢＴＡＣ１３０内に格納された情報は、分岐情報、例えば、分岐ターゲット、プロセッサモード及びテイクン分岐方向（無条件分岐命令の場合）等を含むことができる。
【００３３】
同様にＩＣ１ステージ３０４中において、フェッチ論理回路は、アドレスハッシング論理回路３２０にフェッチグループアドレスを送信する。アドレシングハッシング論理回路３２０内では、フェッチグループアドレスの１２桁目から４桁目までのビットは、選定マルチプレクサ３２２の出力と排他的論理和を計算される（ＸＯＲ’ｄ）。アドレスハッシング論理回路３２０（例えば、ＸＯＲ関数）の出力は、ＢＨＴ１４０へアドレスインデックスを提供する。前述したように、フェッチグループアドレスの３桁目から１桁目までのビットは、適切なカウンタ２０４を選定するための選定ビットを提供することができる。
【００３４】
ＩＣ２ステージ３０６中において、プロセッサ１００は、命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０に命令フェッチグループアドレスを送信した結果を読み出す。ＩＣ２ステージ３０６では、プロセッサ１００は、ＢＴＡＣヒットが生じたか否かを判断する。ＢＴＡＣヒットがＩＣ２ステージ３０６中に確認される場合、プロセッサ１００は、分岐が条件付き分岐命令又は無条件分岐命令のいずれであるかをさらに判断する。ＩＣ２ステージ３０６では、ＢＨＴ１４０からの予測値が同様に受信されて格納される。
【００３５】
命令キャッシュ１０６内の各キャッシュラインが複数の命令を含むことができるので、夫々の命令は、キャッシュラインから分離される必要がありうる。同様に、データは、キャッシュライン中の命令と密接に結びついていることができる。キャッシュラインからの情報は、命令を適切に分析して実行するために、フォーマットされてアラインされる必要がありうる。個々の実行可能命令への命令のアラインメント及びフォーマットは、ＩＤＡステージ３０８中に生じる。
【００３６】
命令がＩＤＡステージ３０８中に処理された後、命令は、デコード（ＤＣＤ）ステージ３１０を通過する。ＤＣＤステージ３１０中に、命令は、命令のタイプ、及びどのような追加情報又はリソースがさらなる処理に必要となるかを判断するために分析される。命令のタイプ又は現在の命令ロードに応じて、プロセッサ１００は、ＤＣＤステージ３１０内に命令を保持してもよく、或いは、プロセッサ１００は、さらなる実行のために下流パイプライン１６０又は１７０のいずれかに命令を渡してもよい。ＤＣＤステージ３１０では、プロセッサ１００は、条件付き分岐命令として命令を確認し、ＢＨＴ１４０から命令の予測値（ＩＣ２ステージ３０６中に読み出されている）を確認する。予測値の精度は、下流パイプライン１６０又は１７０のいずれかにおいて命令実行の後のステージ中に検証されるだろう。分岐予測が不正確（例えば、誤予測）であると決定されるまで、プロセッサ１００は、予測値が真の値であると仮定し、この予測に基づいて命令をフェッチして処理する。
【００３７】
ワーキング・グローバル・ヒストリ・レジスタ３１６（ＷＧＨＲ）は、上流パイプ３５０に結合されている。ＷＧＨＲ３１６によって、ＤＣＤステージ３１０より前に特定されている分岐命令に関連する分岐履歴情報をプロセッサ１００が格納及び処理することが可能となる。一実施形態では、ＢＴＡＣヒットが生じる場合、ＷＧＨＲ３１６は、条件付き分岐命令に対してＢＨＴ１４０から予測値をロードされることができる。前述されたように、ＢＴＡＣヒットは、フェッチされている命令が分岐命令であって、関連した分岐履歴情報（例えば、条件付き分岐命令に関する予測値又は無条件分岐命令に関するテイクン方向）を有することを示す。この条件に基づいて、プロセッサ１００は、分岐命令がＤＣＤステージ３１０中で確認されるまで待つこととは対照的に、連続分岐予測のために早期に分岐履歴情報（即ち、分岐履歴情報がより最新のものである）を利用することができる。ＷＧＨＲ３１４の出力は、ＢＨＴ１４０内の次のエントリに関してアドレスインデックスを決定するためにアドレスハッシング論理回路３２０に送信される。
【００３８】
分岐履歴情報がいつ利用可能になるかは、分岐履歴情報がＢＨＴ１４０からどれくらい速く取り出されることができるか、並びに、ＢＴＡＣヒットがどれくらい速く応答されることができるかに依存している。いくつかのプロセッサ設計では、分岐履歴情報及びＢＴＡＣヒットは、ＩＣ２ステージ３０６中に受信されることができる。他のプロセッサ設計では、分岐履歴情報及びＢＴＡＣヒットは、ＩＤＡステージ３０８中に受信されてもよい。前述されたステージ以外のステージを組み込んでいるさらに他のプロセッサ設計では、分岐履歴情報及びＢＴＡＣヒットは、デコードステージより前のこれらのステージ中に利用可能であろう。
【００３９】
一実施形態では、条件付き分岐命令に関する分岐履歴情報は、ＩＣ２ステージ３０６中にＷＧＨＲ３１６へシフトされる（ＢＴＡＣヒットが生じる場合）。さらに他の実施形態では、条件付き分岐命令及び無条件分岐命令の両方に関する分岐履歴情報は、ＷＧＨＲ３１６へシフトされる。さらなる実施形態では、ＷＧＨＲ３１６は、分岐履歴情報でＩＤＡステージ３０８中に更新されてもよい。この状況は、ＩＤＡステージ３０８までにＢＨＴ１４０に格納された予測値又はＢＴＡＣヒット情報が利用可能でない場合に、生じるだろう。
【００４０】
選定マルチプレクサ３２２は、ＷＧＨＲ３１６の出力を受信するように構成される。一実施形態では、ＷＧＨＲ３１６の出力は、プロセッサ１００によって処理された最近の９つの分岐命令の分岐履歴を含む９ビット値である。選定マルチプレクサ３２２の出力は、次の条件付き分岐命令に対してＢＨＴ１４０へインデックスを付けるアドレスハッシング論理回路３２０へのインプットとして使用される。
【００４１】
ＧＨＲ３１４がＤＣＤステージ３１０中に分岐履歴情報をロードされることを除いて、ＧＨＲ３１４は、ＷＧＨＲ３１６と同様に動作する。分岐命令がＤＣＤステージ３１０を通過すると、ＧＨＲ３１４のコンテンツは、ＷＧＨＲ３１６のコンテンツをミラーすることとなる。状況に応じて、ＧＨＲの出力は、予測値にインデックスを付けるために使用されてもよい。
【００４２】
ＧＨＲ３１４の出力は、選定マルチプレクサ３２２に結合される。ＢＴＡＣミスが生じ、命令がテイクン分岐命令として確認されるＤＣＤステージ３１０中にＢＴＡＣミスが決定される場合、選定マルチプレクサ３２２は、インデックスを付けるためのアドレスハッシング論理回路３２０によって使用されるべきＧＨＲ３１４の出力を選定するように指示される。この場合、ＷＧＨＲ３１６がテイクン分岐（ＢＴＡＣミスによる）に関する分岐履歴情報をまだ有していないので、ＧＨＲ３１４が使用される。この代わりに、現在の分岐命令に対してＢＨＴ１４０にインデックスを付けるより前に順次フェッチされた分岐命令によって、ＷＧＨＲ３１６が更新されることができるので、ＢＴＡＣミスが生じる場合、ＧＨＲ３１４の出力は、アドレスハッシング論理回路３２０によって同様に使用されることができる。この場合、ＷＧＨＲ３１４は、現在の分岐命令に関する適切な値を反映してなく、アドレスハッシング論理回路３２０によって使用される場合には、ＢＨＴ１４０内の誤ったエントリがインデックスを付けられるだろう。
【００４３】
ＧＨＲ３１４の出力は、分岐訂正ロジック回路（ＢＣＬ）３３０に同様に結合されている。ＢＣＬ３４０は、ＧＨＲ３１４を使用して、誤予測が生じた場合の回復目的に使用される分岐履歴情報の「正確な」コピーを提供する。誤予測が生じる場合、ＢＣＬ３４０は、ＧＨＲ３１４及びＷＧＨＲ３１６の両方の分岐履歴情報を復元する。前述のように、分岐命令がリゾリューションステージに達して、実際の結果が予測結果と一致しない場合、誤予測が生じる。
【００４４】
誤予測が生じる場合、ＢＣＬ３４０は、誤予測された条件付き分岐命令に基づいてフェッチされた命令をフラッシュするようにフェッチ論理回路３０２に指示するフェッチ論理回路３０２に情報を送信する。より効率的にするために、ＢＣＬ３４０は、選定マルチプレクサ３２２に正確な分岐履歴情報を提供するのと同時に、正確な分岐履歴情報にＧＨＲ３１４及びＷＧＨＲ３１６を復元する。誤予測が生じる場合、プロセッサ１００は、適切なカウンタ２０４にインデックスを付ける際に使用されるアドレスハッシング論理回路３２０へ導かれるべきＢＣＬ３４０の出力（選定マルチプレクサ３２０を経由する）を選定することができる。
【００４５】
プロセッサ１００が誤予測に遭遇する場合、ＢＣＬ３４０は、それらの正確な値にＧＨＲ及びＷＧＨＲを復元する。一実施形態では、ＧＨＲ３１４が条件付き分岐命令に関する予測値をロードされた後、ＢＣＬ３４０は、ＧＨＲ３１４のスナップショットを得ることができる。ＢＣＬ３４０は、続いて、ＧＨＲ３１４の最近の予測値（例えば、ＭＳＢ）を反転させることができる。予測値を反転することによって、誤予測が生じる場合、ＢＣＬ３４０は、ＧＨＲ３１４及びＷＧＨＲ３１６に反映されるべき訂正された値を準備する。例えば、ＤＣＤステージ３１０中で条件付き分岐命令及びその予測値を特定した後に、ＧＨＲ３１４及びＢＣＬ３４０は、値「１０１０１１１１１」（ＭＳＢ＝＞ＬＳＢ）をロードされる。ＢＣＬ３４０は、条件付き分岐命令に対応するＭＳＢを入れ替えて、条件付き分岐命令にリンクされた訂正された値「００１０１１１１１」を格納することができる。従って、条件付き分岐命令が不正確に予測される場合、訂正値は、ＧＨＲ３１４、ＷＧＨＲ３１６及び選定マルチプレクサ３２２に送信される用意ができている。
【００４６】
図４は、ＷＧＨＲ３１６、ＧＨＲ３１４及びＢＣＬ３４０の詳細図４００を示している。詳細図４００において、ＷＧＨＲ選定マルチプレクサ４０２は、ＩＣ２ステージ３０６及びＤＣＤステージ３１０から分岐履歴情報を受信し、さらに、ＢＣＬ３４０から訂正分岐履歴情報を受信する。ＧＨＲ選定マルチプレクサ４０４は、ＤＣＤステージ３１０から分岐履歴情報を受信し、ＢＣＬ３４０から訂正分岐履歴情報を受信する。
【００４７】
ＷＧＨＲ選定マルチプレクサ４０２は、どのインプットがＷＧＨＲ３１６に分岐履歴情報をロードするのに使用されるかを選定する。誤予測が生じる場合、ＢＣＬ３４０からのインプットは、ＩＣ２ステージ３０６又はＤＣＤステージ３１０から送信される情報よりも優先権を有する。誤予測の後続の連続分岐履歴情報は、不正確に予測された分岐経路をフェッチダウンされた条件付き分岐命令に関連している可能性があるので、ＢＣＬ３４０が優先される。従って、ＩＣ２ステージ又はＤＣＤステージ３１０によって渡された分岐履歴情報は、同様に不正確かもしれない。
【００４８】
誤予測が生じない場合、ＷＧＨＲ選定マルチプレクサ４０２のインプット選定は、最高の優先度から最低の優先度にリストされた以下の例に従って、決定されることができる。
【００４９】
ａ）ＩＣ２ステージ３０６中に分岐命令がＢＴＡＣミスを返すが、ＤＣＤステージ３１０中でデコードされた後に予測されたテイクンとなる場合、ＤＣＤステージ３１０中に確認された分岐履歴値は、ＷＧＨＲ３１６へシフトされる。予測されたテイクン分岐命令の後にフェッチされた命令がフラッシュされる必要があるので、ＤＣＤステージ３１０は、この場合に優先権を有する。従って、同じプロセッササイクル中にＷＧＨＲ３１６に書き込む準備ができている連続分岐命令に関してＩＣ２ステージ３０６中に特定された全ての分岐履歴情報が破棄される。
【００５０】
ｂ）ＤＣＤステージ３１０がＢＴＡＣミスに関連する分岐命令をまだ実行していない場合、ＩＣ２ステージ３０６は、次に最優先権を有するだろう。ＢＴＡＣヒットが分岐命令に対して生じる限りは、ＩＣ２ステージ３０６中に特定された分岐履歴情報は、ＷＧＨＲ３１６にシフトされる。
【００５１】
ｃ）分岐命令がＢＴＡＣヒット、及び前述された例（ｂ）に従ってロードされた関連する分岐履歴情報として以前に特定されている場合、ＷＧＨＲ３１６は、ＤＣＤステージ３１０から再度書き換えられるだろう。同様に、条件付き分岐命令がＢＴＡＣミスであり、分岐命令がノットテイクン（非分岐）（not taken）と予測される場合、ＷＧＨＲ３１６は、この分岐履歴情報を書き込まれる。このＷＧＨＲ３１６への書き込みは、命令がデコードステージ３１０を通過した後にＧＨＲ３１４及びＷＧＨＲ３１６が同期されることを保証する。
【００５２】
ＧＨＲ選定マルチプレクサ４０４は、ＧＨＲ３１４を更新するために使用される適切な入力を選定する。ＷＧＨＲ選定ロジック４０２と同様に、ＧＨＲ選定マルチプレクサ４０４は、上に説明されたのと同じ根拠で、ＢＣＬ３４０からの入力に最優先権を与える。従って、誤予測が生じない場合、ＧＨＲ３１４は、特定の分岐命令に関してＤＣＤステージ３１０中に特定された分岐履歴情報で更新される。
【００５３】
図６は、命令が上流パイプ３５０中を移動するように、命令５００の典型的なグループのタイミング図６００を示している。命令５００の典型的なグループには、複数の分岐命令がある。図６のＸ軸６０２は、プロセッササイクルを示し、Ｙ軸６０４は、命令が通過する上流パイプ３５０内の実行ステージ、並びにＧＨＲ３１４及びＷＧＨＲ３１６のコンテンツを示す。ＧＨＲ３１４及びＷＧＨＲ３１６のコンテンツは、あるプロセッササイクル中に書き込まれ、次のプロセッササイクルの初めにラッチされる。タイミング図６００に示されるように、ＧＨＲ３１４及びＷＧＨＲ３１６のラッチされたコンテンツが示されている。説明を容易にするために、ＧＨＲ３１４及びＷＧＨＲ３１６の３つの最上位ビットだけが示されている。命令が実行されるにつれて、命令は、Ｙ軸６０４を下に移動する。
【００５４】
プロセッササイクル１では、フェッチ論理回路３０２は、命令Ａに関して命令キャッシュ１０６、ＢＴＡＣ１３０及びアドレスハッシング論理回路３２０へフェッチグループアドレスを送信する。これは、命令ＡがＩＣ１ステージ３０４に入るように、タイミング図６００に示されている。さらに、プロセッササイクル１では、ＧＨＲ３１４及びＷＧＨＲ３１６の３つの最上位ビットは、全てゼロであり、これは、実行された最近の３つの分岐命令が全てノットテイクンであることを示す。
【００５５】
プロセッササイクル２では、命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０へフェッチグループアドレスを送信した結果が受信される。これは、命令ＡがＩＣ２ステージ３０６に入っているように、タイミング図に表示されている。命令キャッシュ１０６が複数の命令を格納しているので、命令Ａ＋４がＩＣ２ステージ３０６において命令Ａとともに読み出されて示されている。ＩＣ２ステージ３０６内の論理回路は、ＢＴＡＣ１３０及びＢＨＴ１４０から受信された情報を分析する。ＩＣ２ステージ３０６中において、プロセッサ１００は、命令Ａが条件付き分岐命令（ＢＴＡＣヒットからの情報に基づいている）であること、及びＢＨＴ１４０から返された予測値を判断する。この例では、命令Ａは、テイクンと予測される。命令Ａに関するＢＨＴ１４０内の実際のエントリは、強いテイクン（strongly taken）（１１）又は弱いテイクン（weak taken）（１０）のいずれであってもよい。プロセッササイクル２の終わりに、プロセッサ１００は、条件付き分岐命令Ａに関連した予測値を反映するために、ＷＧＨＲ３１６のＭＳＢに「１」をロードする。命令Ａがテイクンと予測されていることから、次連続命令Ａ＋４は、実行されるべき次の命令ではないので、命令ＡがＩＣ２ステージ３０６を通過する後に次連続命令Ａ＋４は、フラッシュされる。タイミング図６００に示されるように、値「１００」は、プロセッササイクル３の初めにＷＧＨＲ３１６へラッチされる。
【００５６】
プロセッササイクル３では、命令Ａは、ＩＤＡのステージ３０８に入る。ＩＤＡステージ３０８にある間に、命令Ａは、フォーマット及びアラインされ、従って、ＤＣＤステージ３１０に入るための命令を用意している。命令ＡがＩＤＡステージ３０８を進む間に、命令Ｂに関するフェッチグループアドレスは、ＩＣ１ステージ３０４中に命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０に送信される。
【００５７】
プロセッササイクル４では、命令ＡがＤＣＤステージ３１０に入り、命令Ｂ及びＢ＋４に対するフェッチ要求からの結果が受信され（ＩＣ２ステージ３０６）、命令Ｂ＋８のフェッチグループアドレスが命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０に送信される（ＩＣ１ステージ３０４）。ＷＧＨＲ３１６のコンテンツ（「１００」）は、選定マルチプレクサ３２２によって選定され、命令Ｂ＋８に関してＢＨＴ１４０のエントリにインデックスを付けるために、アドレスハッシング論理回路３２０によって使用される。命令ＡがＤＣＤステージ３１０にある時に、プロセッサ１００は、命令Ａが条件付き分岐命令であることを確認し、その結果として、予測値（「１」）がＧＨＲ３１４へシフトされる。プロセッサ１００がＧＨＲ３１４をラッチするプロセッササイクル５の初めまで、プロセッサ１００は、命令ＡによるＧＨＲ３１４の更新された値を参照しないだろう。プロセッササイクル４の終わりに、命令Ａは、上流パイプ３５０から離れ、さらなる実行のために下流パイプライン１６０又は１７０に導かれる。
【００５８】
ＷＧＨＲ３１６を利用せず、分岐履歴情報、及び命令５００の実行される典型的なグループを格納するＧＨＲだけを使用する従来のプロセッサ内では、命令Ｂ＋８に関してＢＨＴから返された予想値は、正確でない可能性がある。これは、命令Ｂ＋８に関してＢＨＴ内のエントリを決定するのに、プロセッササイクル４においてアドレスハッシング論理回路がＧＨＲの値を使用する（例えば、値「０００」が使用される）からである。命令Ａに関する分岐履歴情報が正確に反映されているというわけではないので、ＧＨＲのこの値は、プロセッサが遭遇した実際の分岐履歴を正確に反映しているわけではない。同じ命令シーケンスがその後に実行される場合、この場合には、命令Ｂ＋８をフェッチする際にプロセッサが遅れを経験することとなる（即ち、アドレスハッシング論理回路がＢＨＴエントリにアクセスするためにＧＨＲの値を使用する時までにＧＨＲのコンテンツが更新される）が、ＢＴＨへの異なるエントリがアクセスされてもよい。この場合、分岐履歴情報を格納するＧＨＲだけを使用するプロセッサは、同じ命令実行シーケンスを有する同じ条件付き分岐命令に関する２つの異なるＢＨＴエントリにアクセスすることもありうる。
【００５９】
一実施形態では、命令ＡがＤＣＤステージ３１０中にある場合、ＷＧＨＲ３１６は、ＧＨＲ３１４がロードされるのと同時に予測値で書き換えられる。同じ予測値で両方のレジスタを同時に書き込むことによって、２つのレジスタは、命令Ａに関して同期される。２つの条件付き分岐命令が互いに直後にテイクンを予測されるのは、めったにないので、２つのレジスタを同期させることがあらゆる分岐履歴情報を失う可能性はほとんどない。
【００６０】
プロセッササイクル５では、命令Ｂ及びＢ＋４は、ＩＤＡステージ３０８に入り、一方、命令Ｂ＋８及びＢ＋１２は、ＩＣ２ステージ３０６に入る。さらに、プロセッササイクル５では、命令Ｂ＋１６及びＢ＋２０に関するフェッチグループアドレスは、命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０に送信される。ＩＣ２ステージ３０６では、命令Ｂ＋８は、ＢＴＡＣヒットを返す。命令Ｂ＋８がＢＴＡＣヒットであるので、プロセッサ１００は、命令Ｂ＋８が条件付き分岐命令であり、ＩＣ２ステージ３０６中にＢＨＴ１４０から返されたその予測値がＷＧＨＲ３１６へシフトされることを同様に決定する。この例では、命令Ｂ＋８は、同様にテイクンと予測される。ＢＨＴ１４０内の実際のエントリは、強いテイクン（１１）又は弱いテイクン（１０）のいずれかであってもよい。命令Ｂ＋８がテイクン分岐命令と予測されたので、命令Ｂ＋８がＩＣ２ステージ３０６から離れ、命令Ｃ（ＢＴＡＣヒットから受信される）を反映するターゲットアドレスがフェッチ論理回路３０２に導かれた後、命令Ｂ＋１２、Ｂ＋１６及びＢ＋２０は、フェッチ論理回路３０２によってフラッシュされることができる。ＷＧＨＲ３１６のコンテンツは、テイクンの予測値（「１」）で更新され、この値は、タイミング図６００に反映されるように、プロセッササイクル６の初めにラッチされる。
【００６１】
プロセッササイクル６では、命令Ｂ及びＢ＋４がＤＣＤステージ３１０に入り、一方、命令Ｂ＋８がＩＤＡステージ３０８に入る。さらにプロセッササイクル６中において、命令Ｃに関するフェッチグループアドレスは、命令キャッシュ１０６、ＢＴＡＣ１３０及びＢＨＴ１４０に送信される（ＩＣ１ステージ３０４）。プロセッササイクル６の終わりに、命令Ｂ及びＢ＋４は、上流パイプ３５０から離れ、さらなる実行のために下流パイプライン１６０又は１７０に導かれる。
【００６２】
プロセッササイクル７では、命令Ｂ＋８は、ＤＣＤステージ３１０中に処理される。ＤＣＤステージ３１０中に、命令Ｂ＋８は、条件付き分岐命令として確認され、その予測値が同様に確認される。命令Ｂ＋８に関して特定された予測値は、ＧＨＲ３１４へシフトされ、プロセッササイクル７中にＷＧＨＲ３１６へリロードされる。命令Ｃ及びＣ＋４は、ＩＣ２ステージ３０６中に命令キャッシュ１０６から返される。プロセッササイクル７の終わりに、命令Ｂ＋８は、上流パイプ３５０から離れ、さらなる実行のために下流パイプライン１６０又は１７０に導かれる。
【００６３】
分岐命令が互いに極めて近接して（パイプラインの深さに基づいて）実行されるかもしれないコードセグメントでは、最新の分岐履歴情報は、分岐予測を処理するために使用される。
【００６４】
プロセッササイクル８中において、ＧＨＲ３１４の値は、ＷＧＨＲ３１６とともにラッチされる。命令Ｃ及びＣ＋４は、ＩＤＡステージ３１０中に処理され、命令Ｃ及びＣ＋４に後続するあらゆるシーケンシャル命令は、フェッチされて実行されることができる。
【００６５】
図７は、ワーキング・グローバル・ヒストリ・レジスタ（ＷＧＨＲ）３１６を使用して命令を実行するプロセッサ１００によって用いられる命令プロセスフロー７００を示すフローチャートである。命令プロセスフロー７００は、ブロック７０２において開始する。命令プロセスフローは、フェッチ論理回路３０２が（ＢＨＴ１４０へインデックスを付けるために）ＢＴＡＣ１３０及びアドレスハッシング論理回路３２０にフェッチグループアドレスを送信するブロック７０４に進む。前述されたように、フェッチグループアドレスの送信は、プロセッサ１００のＩＣ１ステージ３０４中に生じることができる。ブロック７０４において、ＢＴＡＣ１３０の探索（フェッチされている命令が分岐命令かどうかを判断する）の結果が返される。この結果は、ＩＣ２ステージ３０６中に返される。命令プロセスフロー７００は、ブロック７０４から決定ブロック７０６へ進む。プロセッサ１００は、決定ブロック７０６でＢＴＡＣヒットが生じたか否かを判断する。この判断は、ＩＣ２ステージ３０６中に同様に生じることができる。前述されたように、ＢＴＡＣヒットは、条件付き分岐命令又はテイクン無条件分岐命令に対して生じることができる。ＢＴＡＣヒットでない（例えば、ＢＴＡＣミス）場合、命令プロセスフロー７００は、ブロック７１２に直接進む。
【００６６】
ＢＴＡＣヒットの場合、命令プロセスフロー７００は、ブロック７１０に進む。ブロック７１０において、ＷＧＨＲ３１６は、ＢＨＴ１４０からＷＧＨＲ３１６に読み出された予測値をシフトすることにより更新される。例えば、分岐命令がテイクンと予測された場合、「１」がＷＧＨＲ３１６にシフトされ、予測がノットテイクンである場合、「０」がＷＧＨＲ３１６にシフトされる。実施に応じて、予測値は、デコードステージより前の任意のプロセッサ実行ステージ中に返されてもよい。前述されたような実施形態では、ＷＧＨＲ３１６は、ＩＣ２ステージ３０６中に更新される。
【００６７】
命令プロセスフロー７００は、命令がデコードステージ（例えば、ＤＣＤステージ３１０）を通過するブロック７１２に進む。デコードステージ中に、ブロック７１２において、命令は、分岐命令として確認されることができる。命令がデコードステージ中で実行された後、命令プロセスフロー７００は、決定ブロック７１４に進む。決定ブロック７１４において、命令が分岐命令でない場合、命令プロセスフロー７００は、ブロック７２０で終了する。
【００６８】
ブロック７１４において、命令が分岐命令であることをプロセッサ１００が確認する場合、命令プロセスフロー７００は、ブロック７１６に進む。ブロック７１６において、ＷＧＨＲ３１６及びＧＨＲ３１４は、適切な分岐履歴情報で更新され、命令プロセスフローが終了する。
【００６９】
ここに開示された実施形態に関連して記述された種々の実例となる論理ブロック、モジュール、回路、エレメント及び／又はコンポーネントは、汎用プロセッサ、デジタル・シグナル・プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は他のプログラム可能論理構成要素、ディスクリートゲート又はトランジスタロジック、個別のハードウェア構成要素、或いはここに記述された機能を実行するように設計されたこれらの任意の組み合わせで実施又は実行されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、選択的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ又は状態機械であってもよい。プロセッサは、コンピュータ構成要素の組み合せ、例えば、ＤＳＰ及びマイクロプロセッサの組み合せ、複数のマイクロプロセッサ、ＤＳＰコアと連動する１以上のマイクロプロセッサ、又はいかなる他のこのような機器構成として実施されてもよい。
【００７０】
特定の実施形態がここに例証されて記述されたが、当業者は、同じ目的を達成するように適合されるいかなる配置が示された特定の実施形態に代用されてもよいこと、及び、本発明が他の環境において他の用途を有することを認識する。本出願は、本発明のいかなる適応又は変形をカバーするように意図される。添付の特許請求の範囲は、本発明の範囲を本明細書に記述された特定の実施形態に制限するように意図するものではない。
【図１】
2010509680.tif 000003
【図２】
2010509680.tif 000004
【図３】
2010509680.tif 000005
【図４】
2010509680.tif 000006
【図５】
2010509680.tif 000007
【図６】
2010509680.tif 000008
【図７】
2010509680.tif 000009
【国際調査報告】
2010509680.tif 000010
2010509680.tif 000011
2010509680.tif 000012