(57)【要約】スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）は、各エントリが、評価され選択されブロック内の第１の命令のアドレスに関連するタグを有する少なくとも１つの分岐命令を含む命令ブロックに関連する、複数のエントリを備える。ブロックは各々が、例えばＩキャッシュのようなメモリからフェッチされた命令グループに対応する。分岐命令は、２つ又はそれより多くのフェッチグループに含まれ、また、ＢＴＡＣエントリに関連する２つ又はそれより多くの命令ブロックにも含まれる。スライドウィンドウブロックベースのＢＴＡＣは、各々が少なくとも１つの選択された分岐命令を含む、異なる命令ブロックに関連するＢＴＡＣエントリを格納することによって、各ＢＴＡＣエントリ内に複数のＢＴＡの格納スペースを提供することなく、同じ命令ブロック内に属する２つ又はそれ以上の選択された分岐命令の分岐ターゲットアドレス（ＢＴＡ）を格納することを可能とする。
2009540439.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ内で分岐命令を予測する方法であって、
分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）内にエントリを格納することであって、前記ＢＴＡＣのエントリは、評価され選択された少なくとも１つの分岐命令を含む２つ又はそれ以上の命令のブロックに関連し、前記ＢＴＡＣのエントリは、前記ブロック内の第１の命令のアドレスに関連するタグを有することと、
命令のグループをフェッチすると、対応するブロック内の命令が選択された分岐命令であるかを判定するために前記ＢＴＡＣにアクセスすることと
を備える方法。
【請求項２】
請求項１に記載の方法において、
ＢＴＡＣの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含む方法。
【請求項３】
請求項１に記載の方法において、
前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス（ＢＴＡ）をＢＴＡＣの各エントリ内に格納することを更に備える方法。
【請求項４】
請求項３に記載の方法において、
前記ＢＴＡＣへのアクセス後、前記ＢＴＡから命令をフェッチすることを更に備える方法。
【請求項５】
請求項１に記載の方法において、
ＢＴＡＣの少なくとも１つのエントリに関して、前記ブロック内の第１の命令は、命令キャッシュライン内の第１の命令である方法。
【請求項６】
請求項１に記載の方法において、
ＢＴＡＣの少なくとも１つのエントリに関して、前記ブロック内の第１の命令のアドレスは、分岐命令の前記分岐ターゲットアドレスである方法。
【請求項７】
請求項３に記載の方法において、ＢＴＡＣの第１のエントリは、選択された第１及び第２の分岐命令を含む第１の命令ブロックに関連し、前記第１の分岐命令のＢＴＡを格納する方法。
【請求項８】
請求項７に記載の方法において、
前記選択された第２の分岐命令を含む第２の命令ブロックに関連するＢＴＡＣの第２のエントリは、前記第２の分岐命令のＢＴＡを格納する方法。
【請求項９】
複数のエントリを格納する分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）であって、各エントリは、評価され選択された少なくとも１つの分岐命令を含む２つ又はそれ以上の命令のブロックに関連し、前記ＢＴＡＣのエントリは、前記ブロック内の第１の命令のアドレスに関連するタグを有するＢＴＡＣと、
命令のグループをフェッチすると、命令アドレスを用いて前記ＢＴＡＣをインデックスするように動作可能な命令実行パイプラインと
を備えるプロセッサ。
【請求項１０】
請求項９に記載のプロセッサにおいて、
ＢＴＡＣの各エントリは、前記関連するブロック内の何れの命令が選択された分岐命令かを示すインディケータを含むプロセッサ。
【請求項１１】
請求項９に記載のプロセッサにおいて、
ＢＴＡＣの各エントリは、前記関連するブロック内の選択された分岐命令の分岐ターゲットアドレス（ＢＴＡ）を含むプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサ分野に関し、特に、スライドウィンドウ構成を有するブロックベースの分岐ターゲットアドレスキャッシュに関する。
【背景技術】
【０００２】
マイクロプロセッサは、幅広い様々なアプリケーションにおいて計算タスクを実行する。プロセッサ性能の向上は、高度なソフトウェアによるより高速な動作及び／又は増加した機能を実現することによって製品改良を進めるための永遠の設計目標である。例えばポータブル電子デバイスのような多くの埋込み型アプリケーションにおいて、電力を節約すること及びチップサイズを低減することも、プロセッサの設計及び実装における重要な目標である。
【０００３】
近年のプロセッサは、各々が複数の実行ステップを有する連続した命令群が実行においてオーバーラップしている、パイプラインされたアーキテクチャを用いる。連続する命令ストリームにおいて命令群の並行処理を用いる能力は、プロセッサ性能を向上するために著しく貢献する。理想的な状態の下、かつ、パイプラインを満たす最初の簡潔な処理に従って１つのサイクル内で各パイプステージを完了するプロセッサ内で、命令はサイクル毎に実行を完了することができる。
【０００４】
このような理想的な状態は、命令間のデータ依存性（データハザード）、例えば分岐のような制御依存性（制御ハザード）、プロセッサリソース割当競合（構成ハザード）、中断、キャッシュミス等を含む様々な要因によって実際には実現しえない。プロセッサ設計の主要目標は、これらのハザードを回避し、パイプラインを「フル」に保つことである。
【０００５】
実世界の全てのプログラムは、条件付きでない分岐命令又は条件付き分岐命令を備えることのできる分岐命令を含む。分岐命令の実際の分岐挙動は、命令がパイプライン内の深くで評価されるまでしばしば知られない。これは、プロセッサが、分岐命令の後に何れの命令をフェッチするかを知らず、分岐命令が評価するまで知らないであろうために、パイプラインの機能を停止する制御ハザードを生成する。近年のプロセッサは、条件付き分岐命令の分岐挙動及び分岐ターゲットアドレスが、パイプライン内の早期において予測され、プロセッサが、分岐予測に基づいて、命令を推測的にフェッチし実行することによってパイプラインをフルに保つ、様々な形式の分岐予測を用いる。もし予測が正しければ、性能は最大化され、電力消費は最小化される。分岐命令が実際に評価される場合、もし分岐が誤予測されれば、推測的にフェッチされた命令はパイプラインからフラッシュされなくてはならず、新たな命令が正しい分岐ターゲットアドレスからフェッチされなくてはならない。誤予測された分岐は、プロセッサ性能及び電力消費に不利な影響を及ぼす。
【０００６】
分岐予測には、条件評価と分岐ターゲットアドレスとの２つの構成要素がある。（条件付き分岐命令のみに関係する）条件評価は二者択一である。すなわち、分岐が選択され、異なるコードシーケンスへ実行をジャンプさせるか、あるいは、選択されず、プロセッサが、条件付き分岐命令に後続する次の連続する命令を実行するかの何れかである。分岐ターゲットアドレス（ＢＴＡ）は、制御が、選択されたものとして評価された条件付き分岐命令又は条件付きでない分岐命令の何れかに分岐するアドレスである。いくつかの一般的な分岐命令は、命令ｏｐコード内にＢＴＡを含むか、あるいはＢＴＡが容易に計算されるオフセットを含む。他の分岐命令の場合、ＢＴＡはパイプラインの深くまで計算されないので、予測しなければならない。
【０００７】
ＢＴＡ予測の１つの周知技術は、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）を用いる。従来技術で知られるようなＢＴＡＣは、分岐命令アドレス（ＢＩＡ）によってインデックスされる完全な連想型キャッシュであり、各データ場所（又はキャッシュ「ライン」）が単一のＢＴＡを含む。分岐命令がパイプライン内で選択されたものとして評価し、自身の実際のＢＴＡが計算されると、ＢＩＡ及びＢＴＡは（例えばパイプラインステージへの書き戻し中に）ＢＴＡＣへ書き込まれる。新たな命令をフェッチすると、ＢＴＡＣは命令キャッシュ（又はＩキャッシュ）と同時にアクセスされる。もし命令アドレスがＢＴＡＣ内でヒットすれば、プロセッサは、（Ｉキャッシュからフェッチされた命令の復号前に）命令が分岐命令であることを知り、分岐命令の前の実行の実際のＢＴＡである予測されたＢＴＡが提供される。もし分岐予測回路が、分岐が選択されると予測すれば、予測されたＢＴＡにおいて命令のフェッチが開始する。もし分岐が選択されていないと予測されれば、命令フェッチは連続して継続する。
【０００８】
ＢＴＡＣという用語は、当該技術において、飽和カウンタをＢＩＡに関連付け、条件付き評価予測（すなわち選択されるか選択されないか）のみを提供するキャッシュを示すためにも用いられることを留意されたい。
【０００９】
高性能プロセッサは、１つより多くの命令を同時にＩキャッシュからフェッチすることができる。例えば、４つの命令を備えることができるキャッシュライン全体が、それらを連続してパイプラインへ送る命令フェッチバッファへフェッチされうる。本願の譲受人に譲渡され、参照によって本願に組み込まれた特許出願１１／０８９，０７２号は、各キャッシュライン内に２つ又はそれ以上のＢＴＡを格納し、ＢＴＡのうちの何れがＢＴＡＣヒットにおいて予測されたＢＴＡとして選択されるかを決定するために分岐予測オフセットテーブル（ＢＰＯＴ）をインデックスするＢＴＡＣを開示する。ＢＰＯＴは、多くのＢＴＡに同時にアクセスする必要があるであろう、多くの読取ポートを備えたＢＴＡＣの高価なハードウェア構成を回避する。
【００１０】
本願の譲受人に譲渡され、参照によって本願に組み込まれた特許出願“Block-Based Branch Target Address Cache”は、複数のエントリを格納するＢＴＡＣであって、各エントリが、ブロック内の１つ又は複数の命令が評価され選択された分岐命令である場合、命令ブロックに関連するブロックベースのＢＴＡＣを開示する。ＢＴＡＣエントリは、関連するブロック内の何れの命令が選択された分岐命令であるかを示すインディケータと、選択された分岐のＢＴＡとを含む。ＢＴＡＣエントリは、ブロック内の全ての命令に共通のアドレスビットによって（すなわち、ブロック内で命令を選択する下位のアドレスビットを切り捨てることによって）インデックスされる。従って、ブロックサイズ及び相対的なブロック境界線が固定される。
【００１１】
ブロックベースのＢＴＡＣエントリは、各ブロックがただ１つの選択された分岐命令を含む場合に良好に機能する。ブロック評価で決定として選択された２つ又はそれ以上の分岐命令が、１つの分岐命令のＢＴＡに格納されなければならず、別の分岐命令のＢＴＡに格納されてはならない場合、他の分岐評価が選択されると、性能及び電力の効率低下をもたらす。各ＢＴＡＣエントリに多くのＢＴＡを格納することができる。しかしこれは、命令ブロックがＢＴＡＣエントリ内のＢＴＡ格納場所と同じ数の選択された分岐命令を含まない通常の場合、貴重なシリコンエリアを無駄にする。
【発明の開示】
【発明の概要】
【００１２】
本明細書に開示された１つ又は複数の実施形態によると、スライドウィンドウブロックベースのＢＴＡＣは、各エントリが、評価され選択された少なくとも１つの分岐命令を含む命令のブロックに関連する複数のエントリを備え、ブロック内の第１の命令のアドレスによってインデックスされる。ブロックサイズは固定され（かつ命令フェッチグループのサイズに対応し）ているが、ブロック境界は固定されておらず、命令ブロックはオーバーラップすることができる。従って分岐命令は、ＢＴＡＣエントリによって表示される２つ又はそれ以上の命令ブロックに含まれることができる。いくつかの場合において、これは、スライドウィンドウブロックベースのＢＴＡＣが、新たなブロックを定め、関連するＢＴＡＣエントリを生成することによって、全てのＢＴＡＣエントリのＢＴＡ格納容量を増加することによってメモリを浪費することなく、単一の命令ブロック内に属する２つ又はそれ以上の選択された分岐命令のＢＴＡを格納することを可能とする。
【００１３】
１つの実施形態は、プロセッサにおいて分岐命令を予測する方法に関する。評価され選択された少なくとも１つの分岐命令を含む２つ又はそれ以上の命令のブロックに関連するエントリが、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）内に格納され、ＢＴＡＣエントリは、ブロック内の第１の命令のアドレスに関連するタグを有する。命令をフェッチすると、１つ又は複数のブロック内の命令が条件付き分岐命令であるかを判定するために、ＢＴＡＣがアクセスされる。
【００１４】
別の実施形態はプロセッサに関する。プロセッサは、各エントリが、評価され選択された少なくとも１つの分岐命令を含む２つ又はそれ以上の命令のブロックに関連する複数のエントリを格納する分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）と、ブロック内の第１の命令のアドレスに関連するタグを有するＢＴＡＣエントリとを含む。プロセッサはまた、命令のグループをフェッチすると、命令アドレスを用いてＢＴＡＣをインデックスするように動作可能な命令実行パイプラインも含む。
【詳細な説明】
【００１５】
図１は、プロセッサ１０の機能ブロック図を示す。プロセッサ１０は、制御論理１１に従って、命令実行パイプライン１２内で命令を実行する。いくつかの実施形態において、パイプライン１２は、複数の並行するパイプラインを備えるスーパースカラ設計であることができる。パイプライン１２は、パイプステージ内に構成された様々なレジスタ又はラッチ１６と、１つ又は複数の算術論理演算ユニット（ＡＬＵ）１８とを含む。汎用レジスタ（ＧＰＲ）ファイル２０は、メモリ階層の最上層を備えるレジスタを提供する。
【００１６】
パイプライン１２は、命令側変換索引バッファ（ＩＴＬＢ）２４によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ（Ｉキャッシュ）２２から命令をフェッチする。同時に、パイプライン１２は、スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）２５へ命令アドレスを提供する。もし命令アドレスがＢＴＡＣ２５内でヒットすれば、スライドウィンドウブロックベースのＢＴＡＣ２５は、Ｉキャッシュ２２へ分岐ターゲットアドレス（ＢＴＡ）を提供し、予測されたＢＴＡからの命令のフェッチを瞬時に開始する。スライドウィンドウブロックベースのＢＴＡＣ２５の構成及び動作は、以下でより完全に説明される。
【００１７】
主要変換索引バッファ（ＴＬＢ）２８によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ（Ｄキャッシュ）２６からデータがアクセスされる。様々な実施形態において、ＩＴＬＢはＴＬＢの一部のコピーを備えることができる。あるいは、ＩＴＬＢとＴＬＢとは統合することができる。同様に、プロセッサ１０の様々な実施形態において、Ｉキャッシュ２２とＤキャッシュ２６とは統合又は統一することができる。メモリインタフェース３０の制御下で、Ｉキャッシュ２２及び／又はＤキャッシュ２６におけるミスは、主要（オフチップ）メモリ３２へのアクセスをもたらす。
【００１８】
プロセッサ１０は、様々な周辺デバイス３６、３８へのアクセスを制御する入力／出力（Ｉ／Ｏ）インタフェース３４を含むことができる。当業者は、プロセッサ１０の多くの変形例が可能であることを理解するであろう。例えばプロセッサ１０は、Ｉキャッシュ２２及びＤキャッシュ２６の何れか又は両方の第２レベル（Ｌ２）キャッシュを含むことができる。加えて、プロセッサ１０内に示す機能ブロックのうちの１つ又は複数を、特定の実施形態から除外することができる。
【００１９】
分岐命令はほとんどのコードにおいて共通である。いくつかの推定によれば、５つの命令のうちの１つほどが分岐でありうる。従って、早期の分岐検索、（条件付き分岐命令の）分岐評価予測、及び予測されたＢＴＡからのフェッチ命令が、プロセッサ性能に決定的となりうる。近年のプロセッサは、各キャッシュライン内に複数の命令を格納するＩキャッシュ２２を含む。命令は、「フェッチグループ」でＩキャッシュからフェッチされる。フェッチグループは、キャッシュラインの一部、キャッシュライン全体、又はキャッシュラインより多くを備えることができる。
【００２０】
一例として、この例は単に例示的であり限定はしないが、プロセッサのフェッチグループが、４つの命令のＩキャッシュ２２ラインサイズと一致すると仮定する。一般に周知のＢＴＡＣにアクセスし、４つ全ての命令アドレスに対して同時に探索すると、もし１つより多くの命令アドレスがＢＴＡＣ内でヒットすれば、ＢＴＡを選択するために、４つのアドレス比較入力ポートと、４つのＢＴＡ出力ポートと、マルチプレクサ及び制御論理とが必要となるであろう。
【００２１】
１つ又は複数の実施形態によると、スライドウィンドウブロックベースのＢＴＡＣ２５は複数のエントリを備える。各エントリは、命令ブロック内で選択された分岐命令に関連する分岐情報を格納する。命令ブロックはフェッチグループに対応し、ＢＴＡＣエントリは、ブロック内の第１の命令のアドレスに関連するタグを含む。タグは、Ｉキャッシュからフェッチグループをフェッチするためにも用いられる。ある実施形態において、タグは、フェッチグループ内の第１の命令であることができる。本明細書で用いられるように、「命令ブロック」及び「フェッチグループ」という用語は同義である。各ＢＴＡＣエントリは、ブロック内の少なくとも１つの命令が（ＢＴＡＣ２５内でのヒットによって示される）評価され選択された分岐命令であることを示し、ブロック内の何れの命令が選択された分岐であるかを示すインディケータと自身のＢＴＡとを含む。
【００２２】
図２は、スライドウィンドウブロックベースのＢＴＡＣ２５、Ｉキャッシュ２２、パイプライン１２、及び（例えば制御論理１１の一部を備えることができる）分岐予測論理回路１５の機能ブロック図を示す。この例において、命令Ａ乃至ＬはＩキャッシュ２２内の３つのラインに存在する。説明の明確化のために、この例におけるプロセッサフェッチグループはキャッシュラインであるが、これは本発明の限定ではない。命令及び対応するコードセグメントのブロック２００Ａ乃至２００Ｃが、回路図の左側に列挙される。ブロックは順番に符号が付けられているが、ブロックが符号の順番どおりにフェッチされると解釈されるべきではないことが留意される。おそらく、例示的なコードセグメントの分岐性質によって、ブロックがフェッチされる順番は、ブロック２００Ａ、ブロック２００Ｃ、そしてブロック２００Ｂとなるであろう。
【００２３】
図２のスライドウィンドウブロックベースのＢＴＡＣ２５内の各エントリは、３つの要素を備える。すなわち、（Ｉキャッシュにアクセスするために用いられる命令でもある）関連する命令ブロック内の第１の命令のアドレスを備えるタグフィールドと、ブロック内の何れの命令が選択された分岐であるかを示す分岐インディケータと、最後に評価され選択された時の分岐命令の実際のＢＴＡとである。
【００２４】
図２の例において、命令Ａ、Ｂ、Ｃ、及びＤを備えるＩキャッシュ２２の第１のライン（又はフェッチグループ）がフェッチされ実行される。これらのうち、命令Ｂ及びＣは両方とも分岐命令である。命令Ｂが実行され、評価され選択され、分岐ターゲットアドレスＢＴＡＢが計算される。ＢＴＡＣエントリは、命令ブロックＡＢＣＤのために生成される。ＢＴＡＣエントリ（図２に示す第１のエントリ）は、命令Ａのアドレスに関連するタグ、ブロック内の第２の命令が選択された分岐（アドレス０１）であることを示すインディケータ、及びＢＴＡＢを有する。別の実施形態において、分岐インディケータは、何れの命令が選択された分岐であるかを示す、例えば０１００のような復号されたインディケーションを備えることができる。
【００２５】
この例において、命令Ｂは、別のセクションのコード（本開示に関係のない詳細）における手順への分岐をもたらす。実行を完了すると、実行されるとターゲットＢＴＡＣを用いて選択されたものを評価する他のコードが命令Ｃへ再び分岐する。固定された命令ブロック境界を有する一般に周知のブロックベースのＢＴＡＣにおいて、命令Ｃがブロック２００Ａに固定して関連するであろうために、何れのＢＴＡＣもＢＴＡＣエントリ内のＢＴＡＢと置換するか、あるいは、ＢＴＡＢが保存され、ＢＴＡＣが破棄されなければならない。
【００２６】
しかし、スライドウィンドウブロックベースのＢＴＡＣ２５の流動的な命令ブロック境界を用いると、新たな命令ブロックは、手順から命令Ｃへ戻るとＩキャッシュからフェッチされるフェッチグループに対応して定められる。新たなブロックは、命令Ｃ、Ｄ、Ｅ、及びＦを備え、ゆえに命令ブロックＡＢＣＤと部分的にオーバーラップする。対応するＢＴＡＣエントリが、スライドウィンドウブロックベースのＢＴＡＣ２５内で生成される。新たなＢＴＡＣエントリ（図２に示す第２のエントリ）のタグは、（Ｉキャッシュにアクセスするために用いられる命令でもある）ブロック内の第１の命令、つまり命令Ｃのアドレスに関連する。分岐インディケータは、ブロック内の第１の命令のアドレスである値００を有し、命令ＣがブロックＣＤＥＦ内の選択された分岐命令であることを示す。最終的に、ブロックＣＤＥＦに関連するＢＴＡＣエントリは、分岐命令ＣのターゲットアドレスであるＢＴＡＣを含む。このようにして、スライドウィンドウブロックベースのＢＴＡＣ２５は、全てのＢＴＡＣエントリが２つ又はそれより多くのＢＴＡのための格納スペースを含むことを必要とせず、ブロックＡＢＣＤ内の選択された分岐命令の両方のＢＴＡを格納することができる。
【００２７】
更に、スライドウィンドウブロックベースのＢＴＡＣ２５内の第２のエントリは、分岐命令Ｃの挙動を、Ｉキャッシュからのフェッチ前に選択されたコード経路に結合する。つまり、手順から戻る間、コードが命令Ｃに分岐した場合、分岐命令Ｃが選択されたものとして評価されたために、その手順から命令Ｃへの次の戻りは、ほとんど選択したものとして同様に評価するであろう。逆に、命令Ｃが連続して実行された場合（すなわち、選択されないと評価された分岐命令と介入手順とが実行されなかった場合）、選択されないと評価しうる。
【００２８】
第３のＢＴＡＣエントリは、命令Ｉで始まるフェッチグループに対応するＩ、Ｊ、Ｋ、及びＬを備える命令ブロックに対応する。第３のＢＴＡＣエントリのタグは、ブロック内の第１の命令のアドレスに関連する。このアドレスは、フェッチグループＩＪＫＬのフェッチにおいてＩキャッシュがアクセスされるのに用いられるアドレスである。このグループにおいて、命令Ｊ及びＬが分岐命令である。この例において、命令Ｊが評価され選択され、分岐インディケータはブロック内の第２の命令をアドレス指定し、命令ＪのＢＴＡＪがＢＴＡＣエントリ内に格納される。
【００２９】
もちろん、図２に示すブロック構成及びＢＴＡＣエントリは単なる例であり、本発明はこの実施形態に限定されない。特に、フェッチグループはＩキャッシュラインの大きさに調整される必要はない。一般に、例えば分岐情報がターゲットへ分岐し、Ｉキャッシュライン内の何処にでもあることができる場合のように、フェッチグループはＩキャッシュライン内の何処からでも始まることができる。対応するスライドウィンドウブロックベースのＢＴＡＣ２５エントリのタグは、フェッチグループ内の第１の命令のアドレスに関連するであろう。従って、同じフェッチグループが再びＩキャッシュからフェッチされると、スライドウィンドウブロックベースのＢＴＡＣ２５の同時アクセスは、命令ブロック内の以前評価され選択された分岐命令を示すエントリを取得するであろう。
【００３０】
パイプライン１２の復号／フェッチ論理１３は、Ｉキャッシュ２２から次の命令フェッチグループをフェッチする命令アドレスを生成するように構成される。動作中、命令アドレスは、スライドウィンドウブロックベースのＢＴＡＣ２５のタグフィールドと同時に比較する。もし命令アドレスがＢＴＡＣ２５内のタグと一致すれば、ブロック内の何れの命令が選択された分岐命令であるかを示すためにヒットインディケーション及び対応する分岐インディケータが復号／フェッチ論理１３へ提供される。インディケータは、分岐予測論理１５へも提供される。同時に、対応するエントリのＢＴＡがＩキャッシュ２２へ提供され、ＢＴＡからの命令の瞬時の推測的なフェッチを可能とし、分岐が予測され選択される事象においてパイプラインをフルに保つ。
【００３１】
命令は復号論理１３において復号される。分岐命令が検出されると（フェッチグループアドレスがスライドウィンドウブロックベースのＢＴＡＣ２５内でヒットするか否かに関わらず）、フェッチグループ情報がパイプライン１２内に保存される。この情報は例えば、分岐情報アドレス（ＢＩＡ）からフェッチグループ内の第１の命令のアドレスへのネガティブオフセットを備えることができる。この情報は、分岐情報が評価され選択される可能性に備えて保存され、自身のＢＴＡが、フェッチグループ内の第１の命令のアドレス、つまりＩキャッシュがアクセスされるのに用いられるアドレスをタグとして有する新たなＢＴＡＣエントリ内に格納されることを可能とする。
【００３２】
パイプライン１２の実行ステージの論理１４において、条件付き分岐命令が評価される。ＥＸＥ論理１４は更に、選択されるものとして評価される条件付き分岐命令及び条件付きでない分岐命令の両方のＢＴＡを計算し提供する。もし予測された分岐評価が間違っていたり、キャッシュされたＢＴＡが計算されたＢＴＡと一致していなければ、パイプライン１２は、推測的命令のパイプラインからのフラッシュ、格納リソース及び計算リソースの再割当等を含みうる、誤予測された分岐の回復を実行しなければならない。
【００３３】
現在の分岐挙動に従って予測論理を更新するために、ＥＸＥ論理１４によって現在の分岐評価が分岐予測論理１５へ提供される。分岐予測論理１５は、（例えば分岐履歴レジスタ、分岐予測テーブル、飽和カウンタ等のような）自身の予測テーブルを更新し、更にスライドウィンドウブロックベースのＢＴＡＣ２５を更新する。存在するＢＴＡＣエントリに関して、これは、もし異なる現在のＢＴＡが計算されればキャッシュされたＢＴＡを更新することを備えることができる。あるいは、もし対応するブロック内の異なる分岐命令が選択されたものを評価し、存在するキャッシュされたＢＴＡを更新する決定がなされれば、分岐インディケータとＢＴＡとの両方を更新することを備えることができる。
【００３４】
もし分岐命令が選択されたものを評価し、フェッチグループ情報がスライドウィンドウブロックベースのＢＴＡＣ２５内の何れのタグからもユニークなグループフェッチアドレスを示せば、分岐予測論理１５は新たなＢＴＡＣエントリを生成する。新たなＢＴＡＣエントリは、分岐命令がフェッチされるフェッチグループの第１の命令から始まる命令ブロックに対応し、従って新たなＢＴＡＣエントリのタグは第１の命令のアドレスに関連する。このようにして、分岐命令はスライドウィンドウブロックベースのＢＴＡＣ２５内の対応するエントリを有する２つ又はそれより多くの命令ブロックに含まれることができる。この特徴の１つの重要な利点は、第１のブロック内の第１の分岐命令のＢＴＡが第１のＢＴＡＣエントリ内に格納され、第１のブロック内であるがＩキャッシュへの別のアクセスによる第２のフェッチグループの一部でもある第２の分岐命令のＢＴＡが（第２の命令ブロックを定める）第２のＢＴＡＣエントリ内に格納されることができる点である。従って、スライドウィンドウブロックベースのＢＴＡＣ２５は、全てのＢＴＡＣエントリ内の多くのＢＴＡにメモリを提供することによって貴重なシリコン領域を浪費することなく、両方のＢＴＡを格納することができる。
【００３５】
本明細書で用いられるように、一般に分岐情報は、条件付き又は条件付きでない分岐命令の何れを称することもできる。本明細書で用いられるように、「選択された分岐」、「選択された分岐命令」、又は「評価され選択された分岐命令」は、連続する命令実行フローを連続しないアドレスに転ずることとして評価された条件付でない分岐命令、又は条件付き分岐命令の何れかを称する（つまり、選択されないものと反対に選択される）。
【００３６】
本発明は、本明細書で特定の機能、局面、及びそれらの実施形態に関して説明されたが、多くの変形例、改良例、及びその他の実施形態が本発明の範囲内で可能であり、従って、全ての変形例、改良例、及び実施形態は本発明の範囲内であると見なされることが明らかになるであろう。従って本実施形態は、全ての局面において例示的であって限定的でないと解釈され、特許請求の範囲の意味及び同等の範囲内でもたらされる全ての変更は、本明細書に包括されることが意図されている。
【図面の簡単な説明】
【００３７】
【図１】図１は、プロセッサの１つの実施形態の機能ブロック図である。
【図２】図２は、分岐ターゲットアドレスキャッシュ及び付随する回路の１つの実施形態の機能ブロック図である。
【図１】
2009540439.tif 000003
【図２】
2009540439.tif 000004
【国際調査報告】
2009540439.tif 000005
2009540439.tif 000006