(57)【特許請求の範囲】
【請求項１】
ウェイにグループ化された複数の分岐先バッファ（ＢＴＢ）エントリを含むＢＴＢであり、前記ウェイの１つのＢＴＢエントリは短タグアドレスを含み、前記ウェイの別のもののＢＴＢエントリは完全タグアドレスを含むＢＴＢと、
前記短タグアドレスに関して複数の以前に受信した分岐命令のページアドレス部分のエントリを含むページアドレスバッファと
を含み、
前記短タグアドレスを含む前記ＢＴＢのエントリは、ページアドレスバッファのエントリの１つを選択するために使用される選択フィールドをさらに含むデータプロセッサ。
【請求項２】
前記ウェイの１つのＢＴＢエントリは短ターゲットアドレスを含み、前記ウェイの別のもののＢＴＢエントリは完全ターゲットアドレスを含む、請求項１に記載のプロセッサ。
【請求項３】
同一ページにある分岐命令に対して割り当てられた前記ＢＴＢエントリの数である、分岐命令エントリの数を追跡し、同一ページにあった以前に受信した分岐命令の数を示す同一ページ状態カウンタを維持管理するように構成された制御およびインタフェースユニットをさらに含み、
分岐命令エントリの数が閾値に到達したときにエントリがまだページアドレスバッファにない場合、前記ＢＴＢは、ページアドレスバッファのエントリを割り当てる、請求項１に記載のプロセッサ。
【請求項４】
ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含むセットアソシアティブ方式ＢＴＢアレイであり、前記ウェイの第１ウェイのセットのＢＴＢエントリは、短タグアドレスフィールドを含み、前記ウェイの第２ウェイのセットのＢＴＢエントリは、完全タグアドレスフィールドを含むセットアソシアティブ方式ＢＴＢアレイと、
入来する命令アドレスからの短タグアドレスおよび前記短タグアドレスフィールドを含む前記ウェイの選択されたセットからの短タグアドレスを受信するように構成された第１比較器であり、前記比較器は、前記入来する命令アドレスからの前記短タグアドレスが前記短タグアドレスフィールドを含む前記ウェイの前記選択されたセットからの短タグアドレスの１つと等しいかを示す短ウェイタグ一致信号を出力するようにさらに構成される第１比較器と、
以前に受信した命令アドレスからのページアドレスを含むエントリを格納するように構成されたページアドレスバッファと、
前記短タグアドレスフィールドを含む前記ウェイの前記選択されたセットからの選択フィールド、および、前記ページアドレスバッファの各エントリに対応付けられるページアドレス一致インジケータを受信するように構成された一致インジケータ選択ユニットと
を含み、
前記ページアドレスバッファは、入来する命令アドレスのページアドレス部分と、前記ページアドレスバッファの各エントリに保持されたページアドレスとが一致するか否かを示すページアドレス一致インジケータを、前記ページアドレスバッファの各エントリに対応して与えるものであり、
前記ウェイの前記第１ウェイのセットのＢＴＢエントリは、前記選択されたセットのＢＴＢエントリが対応付けられるページアドレスバッファのエントリを示す選択フィールドを含むデータプロセッサ。
【請求項５】
ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含むＢＴＢを有するプロセッサにおける方法であって、
命令アドレスを受信するステップと、
前記セットの１つのセットを選択するために前記命令アドレスのインデックス部分を使用するステップであり、前記ウェイの第１グループのセットのＢＴＢエントリは、短タグアドレス部分を含み、前記ウェイの第２グループのセットのＢＴＢエントリは、完全タグアドレス部分を含むステップと、
前記ウェイの前記第１グループについて、
選択されたセットの前記短タグアドレス部分が前記命令アドレスのタグ部分と一致するかを決定するステップと、
前記命令アドレスのページアドレス部分とページアドレスバッファのエントリとを比較することによってページアドレス一致インジケータを生成するステップであり、前記ページアドレスバッファのエントリが以前に受信した命令アドレスからのページアドレスを含むステップと、
前記選択されたセットの選択フィールドに基づいて前記ページアドレス一致インジケータからウェイページ一致を生成するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータプロセッサに関するものであり、さらに詳しくはデータプロセッサによる分岐命令の実行に関するものである。
【背景技術】
【０００２】
データ処理システム内で、性能を改良するために、分岐の結果および分岐の成立したターゲット（先）アドレスを予測するために、分岐先バッファ（ＢＴＢ：branch  target  buffer）が一般的に使用されている。データ処理システム内でパイプライン段階の数が増加するほど、ヒットレートを増加させ、分岐予測ミスの性能の損失を減少させるために、典型的には分岐先バッファ（ＢＴＢ）のサイズが増加する。しかしながら、ＢＴＢのサイズを増加することは、ダイ面積、アクセス時間、ＢＴＢ及びその動作に要する電力の増加を生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
よって、上述の問題を解決する分岐先バッファ必要がある。
【課題を解決するための手段】
【０００４】
本発明のデータプロセッサは、
ウェイにグループ化された複数の分岐先バッファ（ＢＴＢ）エントリを含む分岐先バッファを含み、
前記ウェイの１つのＢＴＢエントリは短タグアドレスを含み、前記ウェイの別のもののＢＴＢエントリは完全タグアドレスを含む。
【０００５】
また、本発明のデータプロセッサは、
ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含むセットアソシアティブ方式ＢＴＢアレイを含み、
前記ウェイの第１ウェイのセットのＢＴＢエントリは、短タグアドレスフィールドを含み、前記ウェイの第２ウェイのセットのＢＴＢエントリは、完全タグアドレスフィールドを含む。
【０００６】
また、本発明の方法は、
ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含む分岐先バッファを有するプロセッサにおける方法であって、
分岐命令アドレスを受信するステップと、
前記セットの１つのセットを選択するために前記命令アドレスのインデックス部分を使用するステップと
を含み、
前記ウェイの第１グループのセットのＢＴＢエントリは、短タグアドレス部分を含み、前記ウェイの第２グループのセットのＢＴＢエントリは、完全タグアドレス部分を含む。
【図面の簡単な説明】
【０００７】
【図１】本発明の１つの態様にしたがった分岐先バッファ（ＢＴＢ）を有するデータ処理システムのブロック図である。
【図２】本発明の１つの態様にしたがった図１のデータ処理システムの中央処理ユニット（ＣＰＵ）の部分のブロック図である。
【図３】本発明の１つの態様にしたがった図１のＢＴＢの部分のブロック図である。
【図４】本発明の１つの態様にしたがった図３のＢＴＢのタグおよびターゲットの実施形態の概略図である。
【図５】本発明の１つの態様にしたがった図３のＢＴＢのエントリの概略図である。
【図６】本発明の１つの態様にしたがった図３のＢＴＢのエントリの概略図である。
【図７】本発明の１つの態様にしたがった図３のＢＴＢのエントリの概略図である。
【図８】本発明の１つの態様にしたがった図３のＢＴＢのエントリの概略図である。
【図９】本発明の１つの態様にしたがった図３のＢＴＢの同一ページインジケータ生成器の実施形態のブロック図である。
【図１０】本発明の１つの態様にしたがって分岐先アドレスを生成する方法のフロー図である。
【図１１】本発明の１つの態様にしたがったＢＴＢでの割り当て方法のフロー図である。
【図１２】本発明の１つの態様にしたがったＢＴＢでの割り当て方法のフロー図である。
【図１３】本発明の１つの態様にしたがった図３のＢＴＢのタグおよびターゲットの実施形態の概略図である。
【図１４】本発明の１つの態様にしたがった図３の分岐先生成器の実施形態のブロック図である。
【図１５】本発明の１つの態様にしたがった図３のＢＴＢの同一ページインジケータ生成器の実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
本発明は例示により説明されており、添付の図面により限定されるものではない。図面において、同様の参照符号は類似の要素を示す。図中の要素は簡潔かつ明確にするために説明されており、必ずしも寸法通りに描かれているとは限らない。
【０００９】
上述のように、ＢＴＢのサイズが増加するほど、面積要件が増加し、電力需要が増加し、アクセス時間が増加する。よって、１つの実施形態において、ＢＴＢのサイズが減少し、同時に、性能を維持する。１つの実施形態において、セットアソシアティブ方式（set  associative）マルチウェイ（multi-way）ＢＴＢが実装される。ここで、ＢＴＢの異なるウェイ（way）は、異なる組み合わせのタグサイズおよびターゲットアドレスサイズを格納できる。１つの実施形態において、ページバウンダリ（ページ境界）を超える分岐命令について完全タグがＢＴＢに格納され、同一ページ内の分岐命令について短タグ（完全タグより少ないビットを要する）がＢＴＢに格納されるように、タグサイズはメモリのページバウンダリに基づく。１つの実施形態において、短タグを格納するＢＴＢエントリについて、これらのより短いタグで用いるページアドレスを格納するために、追加のページアドレスバッファ（例えば、ページアドレス内容アドレス指定可能メモリ（ＣＡＭ：page  address  content  addressable  memory））が使用される。短タグを格納する各エントリについて、対応する選択値もページアドレスＣＡＭの適切なエントリを選択するために格納および使用される。さらに、分岐先がページバウンダリを超えるかに基づいて完全ターゲットアドレスまたは短ターゲットアドレスがＢＴＢ内の各エントリのターゲットアドレス部分に格納されてもよい。
【００１０】
ここで使用される用語「バス」は、１以上の各種の情報、例えばデータ、アドレス、制御又は状態を送信するために使用され得る複数の信号又は導体を参照するものとして使用される。ここで説明される導体は、単一の導体、複数の導体、単方向の導体、又は双方句の導体として参照して図示又は説明されることがある。しかしながら、異なる実施形態は導体の実装を変更してもよい。例えば、別々の単方向の導体が、双方向の導体に代えて使用されてもよく、逆もまた同様である。また、複数の導体が、複数の信号を直列に又は時間多重で送信する単一の導体で置き換えられてもよい。同様に、複数の信号を伝達する単一の導体が、これらの信号の部分集合を伝達する各種の異なる導体に分離されてもよい。従って、信号を送信するための多数の選択肢が存在する。
【００１１】
「アサートする」又は「設定する」及び「ネゲートする」（あるいは「ディアサートする」  又は「クリアする」）という用語は、本明細書において、それぞれ、信号、状態ビット、または同様の装置を論理的に真の状態または論理的に偽の状態にすることを言及する場合に用いられている。論理的に真の状態が論理レベル１の場合、論理的に偽の状態は論理レベルゼロである。また、論理的に真の状態が論理レベルゼロの場合、論理的に偽の状態は論理レベル１である。本明細書に記載される各信号は、正の論理又は負の論理として指定されてもよい。負の論理信号の場合、論理的に真の状態が論理レベルゼロに対応する場合に、信号はアクティブローである。正の論理信号である場合、論理的に真の状態が論理レベル１に対応する場合に、信号はアクティブハイである。なお、本明細書に記載される如何なる信号も、負の論理信号又は正の論理信号のいずれかとして指定されてもよい。
【００１２】
図１は、本発明の１つの実施形態にしたがったデータ処理システム１０のブロック図を示す。データ処理システム１０は、プロセッサ１２、システムバス１４、メモリ１６、周辺装置１８、周辺装置２０およびいくつかの実施形態における周辺装置１８を周辺装置２０から分離する図１の点によって示される追加の周辺装置のような複数の周辺装置を備える。メモリ１６は、双方向導体によってシステムバス１４に結合されるシステムメモリであり、１つの態様において、該双方向導体が複数の導体を有する。図示される実施形態において、周辺装置１８および２０の各々は、プロセッサ１２と同様に複数の双方向導体によってシステムバス１４に結合される。プロセッサ１２は、バスインタフェースユニット（ＢＩＵ：bus  interface  unit）２２を備える。ＢＩＵ２２は、複数の導体を有する双方向バスを介してシステムバス１４に結合される。ＢＩＵ２２は、双方向導体を介して内部バス２４に結合される。内部バス２４は、複数の導体の通信バスである。それぞれの双方向導体を介して内部バス２４に結合されるのは、命令キャッシュ２６、分岐先バッファ（ＢＴＢ）２８、中央処理ユニット（ＣＰＵ：central  processing  unit）３０およびメモリ管理ユニット（ＭＭＵ：memory  management  unit）３２である。ＣＰＵ３０は、データ処理動作を実装するプロセッサである。ＣＰＵ３０内には、カウント値を保持するレジスタのような記憶デバイスであるプログラムカウンタ３１がある。命令キャッシュ２６、ＢＴＢ２８、ＣＰＵ３０およびＭＭＵ３２の各々はそれぞれの入力／出力（Ｉ／Ｏ）ポートまたは端子を介して内部バス２４に結合される。代替実施形態において、システムバス１４は、クロースバースイッチまたは相互接続構造として実装されてもよい。
【００１３】
動作中に、プロセッサ１２は、複数のデータ処理命令を実行することによって様々なデータ処理機能を実装するように機能する。命令キャッシュ２６は、ＣＰＵ３０によって必要とされる可能性がある頻繁に使用される情報の一時的なデータストアである。キャッシュ２６内に存在しないＣＰＵ３０によって必要とされる情報はメモリ１６に格納される。ＭＭＵ３２は、ＣＰＵ３０と命令キャッシュ２６とメモリ１６との間の情報の相互作用を制御する。例えば、ＭＭＵ３２は、仮想アドレス（例えば、ＣＰＵ３０内で使用されるもの）と物理アドレス（例えば、命令キャッシュ２６およびメモリ１６によって使用されるもの）との間を変換する。ＢＩＵ２２は、プロセッサ１２とシステムバス１４との間の複数のインタフェースユニットの１つであってもよい。ＢＩＵ２２は、ＣＰＵ３０による分岐命令実行を含む命令実行に関する情報の流れを調整するように機能する。分岐命令の実行によって得られる制御情報およびデータは、ＢＩＵ２２を介してＣＰＵ３０とシステムバス１４との間で交換される。ＢＴＢ２８は、複数のエントリを格納するバッファである。エントリの各々は、分岐命令に対応する命令アドレス、分岐命令の対応する分岐先アドレス、対応する状態情報および対応する分岐予測情報を格納する。より少ない情報または多くの情報が各エントリに格納されてもよい。ＣＰＵ３０は、ＣＰＵ３０内の命令パイプラインに与えられ、内部バス２４を介してＢＴＢ２８に送信される命令アドレスを生成する。ＢＴＢ２８は、ＣＰＵ３０によって生成され得る命令アドレスのサブセットを含む。ＢＴＢ２８でヒットする命令アドレスをＣＰＵ３０から受信することに応答して、ＢＴＢ２８は分岐先アドレスおよび関連する状態情報をＣＰＵ３０に与える。なお、以下にさらに説明するように、ＢＴＢ２８によって与えられる分岐先アドレスは推論的であり、よって、予測ミスを生じる可能性がある。
【００１４】
図２は、命令の実行およびＢＴＢ２８の使用に関する図１のＣＰＵ３０のより詳細な部分を示す。ＣＰＵ３０は、制御およびインタフェースユニット５２、命令フェッチユユニット４０、命令デコードユニット４６、実行ユニット４８およびレジスタファイル５０を備える。制御およびインタフェースユニット５２は、アドレス生成回路５４、同一ページ状態カウンタ５５および同一ページ閾値５７を備え、命令フェッチユニット４２、命令デコードユニット４６、実行ユニット４８およびレジスタファイル５０の各々に双方的に結合される。アドレス生成回路５４は、命令アドレス１００をバス２４に与え、バス２４からＢＴＢターゲットアドレス、同一ページインジケータおよびＢＴＢ予測情報を受信する。アドレス生成回路５４はまた、バス２４と他のデータ／制御情報を通信してもよい。命令フェッチユニット４０は、命令バッファ４４および命令レジスタ４２を含む。命令バッファ４４は、命令レジスタ４２の入力に接続される出力を有する。命令バッファは、命令デコードユニット４６に双方的に結合される。実行ユニットは、分岐実行ユニット４９を含み、ＣＰＵ３０内での必要に応じて１つまたは複数の追加の実行ユニットを含んでもよい。
【００１５】
このＣＰＵ３０の部分の図示される実施形態において、制御およびインタフェースユニット５２は、命令キャッシュ２６またはメモリ１６からの命令のフェッチ（取得）を実行するために、命令フェッチユニット４０を制御する。命令デコードユニット４６は、１つまたは複数の実行ユニット４８の命令のデコードを実行する。レジスタファイル５０は、実行ユニット４８を支持するために使用される。制御およびインタフェースユニット５２内には、アドレス生成回路５４がある。アドレス生成回路５４は、命令アドレスをＢＴＢ２８に送信し、それに応答して、ＢＴＢターゲットアドレス、同一ページインジケータおよびＢＴＢ予測情報を受信してもよい。ターゲットアドレスが命令キャッシュ２６内に存在せずに有効でない場合、命令キャッシュ２６またはメモリ１６のいずれかからターゲットアドレスの命令を取得するために、ＢＴＢターゲットアドレスがＣＰＵ３０によって使用される。
【００１６】
図３は、１つの実施形態にしたがったより詳細なＢＴＢ２８を示す。ＢＴＢ２８は、ＣＰＵ３０から命令アドレス１００を受信し、ここで、命令アドレス１００は、ページアドレス部分、タグ部分およびインデックス部分を含む。図示される実施形態において、ページアドレス部分は命令アドレス１００の２０ビットの最上位ビットを含み、タグ部分は次の４ビットの最上位ビットを含み、インデックス部分は次の６ビットの最上位ビットを含む。１つの実施形態において、命令アドレス１００は合計３２ビットを含み、ここで、２ビットの最下位ビットはＢＴＢ２８によって使用されない。ＢＴＢ２８は、ＢＴＢアレイ１０６、ＢＴＢ制御回路１０２、ウェイ０〜５の比較器１０８、ウェイ６および７の比較器１１６、ページアドレス内容アドレス指定可能メモリ（ＣＡＭ：content  addressable  memory）１０４、一致インジケータセレクト１１０、ＡＮＤゲート１１２および１１４、分岐先生成器１１９および分岐先アドレスセレクタ１２４を含む。図示される実施形態において、ＢＴＢ２８はマルチウェイ・セットアソシエティブ方式ＢＴＢであり、ここで、ＢＴＢアレイ１０６は８ウェイ（ウェイ０〜７）および６４セット（セット０〜セット６３）を含む。よって、ＢＴＢ２８のエントリはセットとウェイの交点を示し、例えば、ＢＴＢ２８の各ウェイが６４エントリを含む。なお、ＢＴＢ２８は、如何なる数のウェイおよび如何なる数のセットを含んでもよく、または、直接マッピングされたＢＴＢでもよい。また、ウェイ０〜ウェイ７は、それぞれｗ０〜ｗ７と呼ばれてもよい。ＢＴＢアレイ１０６は、命令アドレス１００を受信し、ＢＴＢ制御回路１０２に双方向に結合される。ＢＴＢ制御回路１０２はまた、ＣＰＵ３０の分岐実行ユニット４９から情報（例えば、分岐命令アドレス、分岐先アドレスおよび分岐状態）を受信し、また、ページアドレスＣＡＭ１０４に双方向に結合される。ＢＴＢアレイ１０６は、ｗ０タグ〜ｗ５タグを比較器１０８に与え、ｗ０ｓｅｌ〜ｗ５ｓｅｌを一致インジケータセレクト１１０に与え、ｗ６タグおよびｗ７タグを比較器１１６に与える。比較器１０８はまた、命令アドレス１００のタグ部分（短タグアドレスと呼ばれる）を受信し、ｗ０タグ一致をＡＮＤゲート１１２の第１入力に与え、ｗ５タグ一致をＡＮＤゲート１１４の第１入力に与える。一致インジケータセレクト１１０は、ページアドレスＣＡＭ１０４からページアドレス一致インジケータを受信し、ｗ０ページ一致をＡＮＤゲート１１２の第２入力に与え、ｗ５ページ一致をＡＮＤゲート１１４の第２入力に与える。ＡＮＤゲート１１２はＡＮＤゲート１１２の出力でヒットウェイ０信号を与え、ＡＮＤゲート１１４はＡＮＤゲート１１４の出力でヒットウェイ５信号を与える。ＢＴＢ２８はまた、ＡＮＤゲート１１２と１１４との間の３つの点によって示される追加のＡＮＤゲートを含む。ここで、各ＡＮＤゲートは、第１入力で比較器１０８からウェイタグ一致信号を受信し、第２入力で一致インジケータセレクト１１０からウェイページ一致信号を受信し、出力で対応するウェイヒット信号を与える。よって、図示される実施形態において、ヒットウェイ１信号〜ヒットウェイ４信号を与えるために、４つの追加��ＡＮＤゲートが存在してもよい。比較器１１６は、命令アドレス１００の完全タグアドレス（ページアドレス部分および命令アドレス１００のタグ部分と対応する）を受信し、ヒットウェイ６信号およびヒットウェイ７信号を与える。なお、比較器１０８および１１６の各々は、ＢＴＢアレイ１０６から状態ビットを受信してもよい。例えば、比較器１０８および１１６の各々は、一致を認めるために有効ビットを使用してもよい。
【００１７】
連結ターゲットアドレス（ＴＡ：target  address）１１８は、ＢＴＢからのｗ０ＴＡおよび命令アドレス１００のページアドレス部分を受信し、ｗ０ＴＡと連結されるページアドレスを格納する格納回路である。連結ターゲットアドレス（ＴＡ）１２０は、ＢＴＢ１０６からのｗ３ＴＡおよび命令アドレス１００のページアドレス部分を受信し、ｗ３ＴＡと連結されるページアドレスを格納する格納回路である。命令アドレス１００の命令のページアドレス部分がｗ１ＴＡおよびｗ２ＴＡの各々と連結され得るように、ｗ１ＴＡおよびｗ２ＴＡの各々も、連結ターゲットアドレス格納回路に与えられる。ｗ０ＴＡ〜ｗ３ＴＡおよびｗ６ＴＡの各々の連結アドレスは分岐先アドレスセレクタ１２４に与えられる。ｗ４ＴＡ、ｗ５ＴＡおよびｗ７ＴＡの各々は分岐先アドレスセレクタ１２４に与えられる。分岐先アドレスセレクタ１２４はまた、ヒットウェイ信号（ヒットウェイ０〜ヒットウェイ７）の各々を受信し、分岐先アドレスを出力する。ＢＴＢアレイ１０６はまた、同一ページインジケータおよび予測インジケータを与える。分岐先アドレスセレクタ１２４からの分岐先アドレスならびにＢＴＢアレイ１０６からの同一ページインジケータおよび予測インジケータの各々は、すべてバス２４を介して制御およびインタフェースユニット５２（例えば、アドレス生成回路５４）に与えられてもよい。分岐先生成器１１９は、ｗ０ＴＡ〜ｗ７ＴＡの各々を受信し、ターゲットアドレスを分岐先アドレスセレクタ１２４に与え、連結ＴＡ１１８、連結ＴＡ１２０および連結ＴＡ１２２を含む。
【００１８】
図２および３を参照すると、ＢＴＢ２８は、ＣＰＵ３０から命令アドレス１００を受信し、命令アドレス１００がＢＴＢ２８内でヒットするかを決定する。ＣＰＵ３０に戻される命令アドレス１００のＢＴＢ予測情報は、ヒット表示（ヒットウェイ信号（ヒットウェイ０〜ヒットウェイ７）に基づく）および予測情報を含んでもよい。また、分岐先アドレスセレクタ１２４からの分岐先アドレスは、ＢＴＢターゲットアドレスとしてＣＰＵ３０に与えられる。１つの実施形態において、命令アドレスは、命令キャッシュ２６またはメモリ１６から命令フェッチユニット４０によって（個別に又は２つ以上のグループで同時に）フェッチされる。命令フェッチユニット４０によってフェッチされる各命令は、命令バッファ４４に配置され、命令アドレスが分岐命令に対応することをＢＴＢ２８が示すかを決定するために、命令アドレス１００としてＢＴＢ２８に与えられる。例えば、命令アドレス１００がＢＴＢ２８でミスを生じる場合、命令アドレス１００は分岐命令ではないと仮定され、命令アドレス１００の処理はＣＰＵ３０の命令パイプラインを通して続く（ミスの指示はＢＴＢ予測情報を介してＣＰＵに与えられてもよい。）。しかしながら、命令アドレス１００がＢＴＢ２８でヒットする場合、命令アドレス１００は分岐命令であると仮定され、分岐命令が成立すべきか成立しないべきかを決定するために、ＢＴＢ予測情報が使用されてもよい。例えば、命令アドレス１００がＢＴＢ２８でヒットし、ＢＴＢ２８から受信されるＢＴＢ予測情報が成立する分岐を示す場合、制御およびインタフェース５２は、フェッチングが分岐先アドレスで推論的に開始できるように、ＢＴＢターゲットアドレス（ＢＴＢ２８によって受信されたもの）を命令フェッチユニット４０に与えてもよい。最終的には、命令アドレス１００は命令レジスタ４２に到達し、ＣＰＵ３０の命令パイプラインを通して進む。すなわち、命令アドレス１００は命令レジスタ４２からデコードのために命令デコードユニット４６に与えられ、次に、実行のために、実行ユニット４８に与えられる（必要に応じてレジスタファイル５０にアクセスしてもよい）。命令アドレス１００が分岐命令としてデコードされる場合、分岐実行ユニット４９により解決される。命令アドレス１００が解決された場合、ＢＴＢ２８が命令アドレス１００の分岐命令を成立したものとして正しく予測したかどうかが分かる。分岐が正しく予測された場合、実行は現在の位置から続く。分岐が予測ミスの場合、ＣＰＵ３０は、予測ミスに対処し、必要に応じてパイプラインをフラッシュ（flush）し、予測ミスが起こった時点まで実行を戻してもよい（例えば、命令アドレス１００に戻って次の順序の命令をフェッチする）。よって、ＢＴＢ２８でヒットが起こるが、分岐が成立するもの又は成立しないものとして正しく予測されない場合、予測ミスが起こる可能性がある。または、ＢＴＢ２８が分岐を成立するものとしてしく予測するが、ターゲットアドレスを正しく予測しない場合、予測ミスが起こる可能性がある。命令アドレス１００がＢＴＢ２８でヒットするが、分岐命令ではないことが分かった場合にも、予測ミスが起こる可能性がある。例えば、命令アドレス１００が���際には分岐命令ではなかったことを命令デコードユニット４６によって決定される可能性があり、これも、ＣＰＵ３０によって対処される必要がある予測ミスを生じる。
【００１９】
さらに、各命令アドレス１００について、ＢＴＢ２８は、必要に応じて割り当てられてもよく、更新されてもよい。例えば、命令がＢＴＢ２８で予測ミスを生じ、命令デコードユニット４６によって成立する分岐命令としてデコードされる場合、新たなエントリがＢＴＢ２８への分岐命令のために割り当てられてもよい。また、ＢＴＢ２８でヒットした分岐が予測ミスを生じる場合、ＢＴＢ２８内の対応するエントリが適切に更新されてもよい。ＢＴＢ２８の動作は、以下に図４〜１２を参照してより詳細に記載される。
【００２０】
図３を参照すると、ＢＴＢアレイ１０６のウェイ０〜７の各々は、複数のエントリを含む。図示される実施形態において、エントリの各々は、タグアドレスを格納するタグフィールド、状態情報を格納する状態フィールド、ターゲットアドレスを格納するＴＡフィールドおよび予測情報を格納する予測フィールドを含む。しかしながら、図４〜８および１３を参照して記載されるように、各ウェイのエントリはウェイに依存して異なってもよい。
【００２１】
例えば、図４を参照すると、各ウェイは、異なる長さのタグおよびターゲットアドレス（ＴＡ）を格納するように構成されてもよい。例えば、ウェイ０〜ウェイ３の各々のエントリは短タグアドレスおよび短ＴＡを格納する。ウェイ４およびウェイ５の各々のエントリは短タグアドレスおよび完全ＴＡを格納する。ウェイ６のエントリは完全タグアドレスおよび短ＴＡを格納し、ウェイ７のエントリは完全タグアドレスおよび完全ＴＡを格納する。４Ｋのページサイズを仮定する１つの例において、完全タグアドレスは２４ビット値であってもよいが、短タグアドレスは４ビット値のみであってもよい。この４ビット値が、特定ページにインデックス付けすることを可能にする。よって、１つの実施形態において、完全タグアドレスは、アドレスを完成するために更なるビットを要しないアドレスであり、短タグアドレスは、完全タグアドレスを完成するために追加のビットを要する。さらに、短タグアドレスを格納する各エントリはまた、選択フィールドを含む。この選択フィールドは、タグアドレスの残りの上位ビットを与えるために使用される。例えば、この例において、選択フィールドは、ページアドレスと対応するタグアドレスの残りの２０ビットの上位ビットを与えるために使用される。１つの実施形態において、ウェイ０〜５内に格納された短タグのページアドレスは、ページアドレスＣＡＭ１０４に格納される。ページアドレスＣＡＭ１０４は、如何なる数のエントリを有してもよく、１つの実施形態において、８つのエントリを含む。４Ｋのページサイズを仮定するこの例において、ＣＡＭ１０４の各エントリは、２０ビットのページアドレスを格納する。１つの実施形態において、ＣＡＭ１０４は、命令アドレス１００のページアドレス部分の間の一致を実行し、図３に示すように、そのエントリの各々に１つのページアドレス一致インジケータを与える。よって、選択フィールドは、８つのページアドレス一致インジケータから適切なページアドレス一致インジケータを選択するために使用される３ビットの値でもよい。よって、選択フィールドのサイズは、ページアドレスＣＡＭ１０４内のエントリ数に依存してもよい。完全タグアドレスを格納するエントリについては、タグアドレスを完成するために追加のアドレスビットが必要ないため、選択フィールドは必要ない。
【００２２】
更に図４を参照すると、ウェイ０〜ウェイ３およびウェイ６のエントリの各々は短ＴＡを格納し、ウェイ４、ウェイ５およびウェイ７のエントリの各々は完全ターゲットアドレスを格納する。１つの実施形態において、各短ＴＡは１０ビットのみでもよく、完全ＴＡは３０ビットでもよい。よって、１つの実施形態において、完全ＴＡは、所望のデータのアドレス指定を完成するために更なるビットを要しないアドレスであり、短ＴＡは、完全ＴＡを完成するために追加のビットを要する。１つの実施形態において、ウェイ０〜ウェイ３またはウェイ６からのＴＡが与えられた場合、完全ＴＡを与えるために、ＴＡはまず命令アドレス１００のページアドレス部分と連結される。すなわち、図３に示すように、ｗ０ＴＡ〜ｗ３ＴＡおよびｗ６ＴＡの各々は、分岐先アドレスセレクタに与えられる前に、ページアドレス部分と連結される。しかしながら、ｗ４ＴＡ、ｗ５ＴＡおよびｗ７ＴＡは完全ＴＡであるため、ｗ４ＴＡ、ｗ５ＴＡおよびｗ７ＴＡは分岐先アドレスセレクタ１２４に直接的に与えられる。以下により詳細に説明するように、分岐先アドレスセレクタ１２４は、分岐先アドレスとして与えるために、ヒットウェイ０〜ヒットウェイ７のインジケータに基づいて、受信した完全ＴＡの１つを選択する。
【００２３】
図５は、短タグおよび短ＴＡを格納するエントリのウェイの例示的なエントリ１５０のより詳細な概略図を示す。例えば、エントリ１５０は、ウェイ０〜３のエントリのフォーマットであってもよい。エントリ１５０は、４ビットのタグアドレス、３ビットの選択フィールド、状態フィールド、１０ビットのＴＡフィールドおよび予測フィールドを含む。１つの例において、状態フィールドは様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびＬＲＵ（least  recently  used）フィールド（これは、例えば、ＢＴＢ２８への割り当て中に使用されてもよい）を含む。なお、ＬＲＵフィールドはＢＴＢアレイ１０６とは別に格納されてもよく、各ＬＲＵフィールドがセットの全体に対応してもよい。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【００２４】
図６は、短タグおよび完全ＴＡを格納するエントリのウェイの例示的なエントリ１５２のより詳細な概略図を示す。例えば、エントリ１５２は、ウェイ４および５のエントリのフォーマットであってもよい。エントリ１５２は、４ビットのタグアドレス、３ビットの選択フィールド、状態フィールド、３０ビットのＴＡフィールドおよび予測フィールドを含む。１つの例において、状態フィールドは、命令タイプフィールド、有効フィールド、ＬＲＵフィールド（これは、例えば、ＢＴＢ２８への割り当て中に使用されてもよい）および同一ページインジケータフィールドのような様々なフィールドを含む。１つの実施形態において、同一ページインジケータは、完全ＴＡが分岐アドレスと同一ページに配置されるかを示す単一ビットのフィールドである。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【００２５】
図７は、完全タグおよび短ＴＡを格納するエントリのウェイの例示的なエントリ１５４のより詳細な概略図を示す。例えば、エントリ１５４は、ウェイ６のエントリのフォーマットであってもよい。エントリ１５４は、２４ビットのタグアドレス、状態フィールド、１０ビットのＴＡフィールドおよび予測フィールドを含む。１つの例において、状態フィールドが様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびＬＲＵフィールド（これは、例えば、ＢＴＢ２８への割り当て中に使用されてもよい）を含む。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【００２６】
図８は、完全タグおよび完全ＴＡを格納するエントリのウェイの例示的なエントリ１５６のより詳細な概略図を示す。例えば、エントリ１５６は、ウェイ７のエントリのフォーマットであってもよい。エントリ１５６は、２４ビットのタグアドレス、状態フィールド、３０ビットのＴＡフィールドおよび予測フィールドを含む。１つの例において、状態フィールドは、様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびＬＲＵフィールド（これは、例えば、ＢＴＢ２８への割り当て中に使用されてもよい）および同一ページインジケータフィールドを含む。１つの実施形態において、同一ページインジケータは、完全ＴＡが分岐アドレスと同一ページに配置されるかを示す単一ビットのフィールドである。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【００２７】
なお、図５〜８の例示的なエントリの各々について、各フィールドのビット数はアプリケーションに依存して変化してもよく、図示するものより少ないフィールドまたは多くのフィールドが存在してもよい。さらに、各エントリのフォーマットは、図示されるフォーマットと異なってもよい。
【００２８】
なお、代替実施形態において、短タグはアドレスの如何なる部分であってもよく、ここで、ＣＡＭのような別の格納ユニットが、完全タグアドレスの残りの最上位部分を格納するために使用されてもよい。すなわち、ページまたはページサイズに依存する必要はない。この場合において、必要に応じて如何なるサイズのＣＡＭが使用されてもよく、必要に応じて如何なるサイズの選択フィールドが使用されてもよい。また、代替実施形態において、如何なるタイプのページアドレスバッファが、ページバッファＣＡＭ１０４の代わりに使用されてもよい。また、図４に示されるウェイ０〜７の構成は単なる一例である。すなわち、代替実施形態において、短タグ／完全タグおよび短ＴＡ／完全ＴＡの如何なる組み合わせが各ウェイに使用されてもよく、図４の特定の例に制限されない。例えば、１つの代替実施形態において、各ウェイはすべてのエントリについて完全ＴＡを格納してもよい。またさらなる例において、１つのウェイのみが完全タグアドレスを格納し、残りのウェイが選択ビットとともに短タグを格納してもよい。例えば、代替実施形態は図１３を参照して以下に説明される。よって、図５〜８および１３に示すエントリの各々は、図４の例に従ってセットアップされるＢＴＢに基づく単なる例である。
【００２９】
図９は、例えば、同一ページインジケータを生成するためにＢＴＢ２８内で使用され得る同一ページインジケータ生成器１５８を示す。同一ページインジケータ生成器１５８は、ウェイ４、５および７の各々の状態フィールドから同一ページインジケータ（例えば、ｗ４同一ページインジケータ、ｗ５同一ページインジケータおよびｗ７同一ページインジケータ）を受信し、また、ウェイ０〜３および６の各々からヒットインジケータ（例えば、ヒットウェイ０〜ヒットウェイ３およびヒットウェイ６）を受信する。ヒットウェイ０〜ヒットウェイ７（これは、存在する場合には、どのウェイが命令アドレス１００のヒットを生じるかを示す）に基づいて、同一ページインジケータ生成器１５８は、分岐先アドレスセレクタ１２４によって与えられる分岐先アドレスが命令アドレス１００と同一ページにあるかを示す同一ページインジケータを生成する。なお、ウェイ０〜３および６の各々は短ＴＡを格納するため、これらのウェイのいずれかにおいてヒットが命令アドレス１００と同一ページで起こることを仮定する。しかし、ウェイ４、５および７は完全ＴＡを格納するため、ＴＡが同一ページにあるかは分からない。よって、ウェイ４、５および７のエントリの各々も、この情報を与えるために同一ページインジケータを格納する。同一ページインジケータ生成器１５８によって与えられる同一ページインジケータは、ＭＭＵ３２によるアドレス変換が分岐ＴＡに必要であるかを決定することを可能にする。すなわち、同一ページインジケータに示すように、同一ページにある場合、ＭＭＵ３２をバイパスしてもよい。しかしながら、同一ページにない場合、ＭＭＵ３２はアドレス変換を与える必要がある。
【００３０】
図１０は、本発明の１つの実施形態にしたがって、ＢＴＢ２８によって分岐先アドレスを生成する方法２００のフロー図を示す。方法２００はブロック２０２で開始し、ここで、命令アドレスが受信される（図３の命令アドレス１００に対応してもよい）。フローは次にブロック２０４に進み、ここで、命令アドレスのインデックス部分はセット０〜６３から１つのセットを選択するために使用される。例えば、図３を参照すると、ＢＴＢアレイ１０６は、セット０〜６３の１つのセットを選択する命令アドレス１００のインデックス部分を受信する。よって、ウェイタグ（ｗ０タグ〜ｗ７タグ）および選択フィールド（ｗ０ｓｅｌ−ｗ６ｓｅｌ）は、選択されたセットに格納されるウェイタグおよび選択フィールドに対応する。同様に、ウェイＴＡ（ｗ０ＴＡ〜ｗ７ＴＡ）は、選択されたセットに格納されるウェイＴＡに対応する。
【００３１】
ウェイ０〜５について、方法２００はブロック２０６に続いて、ここで、命令アドレス１００のタグ部分は、選択されたセット内でウェイタグ一致（例えば、ｗ０タグ一致〜ｗ５タグ一致）を決定するために使用される。図３を参照すると、ウェイ０〜５の比較器１０８は、ＢＴＢアレイ１０６から選択されたセットのｗ０タグ〜ｗ５タグの各々を受信し、命令アドレス１００のタグ部分と各々比較する。よって、比較器１０８は、ウェイ０〜５の各々について、命令アドレス１００のタグ部分との一致が生じたかを示すｗ０タグ一致〜ｗ５タグ一致を出力する（なお、ｗ０タグ一致〜ｗ５タグ一致はまた、ウェイタグ一致信号または短ウェイタグ一致信号と呼ばれてもよい）。なお、比較器１０８は、一致を認めるために選択されたセットの有効ビットを使用することにより、一致した選択されたセットからの対応するタグが有効エントリ（エントリの状態ビットによって示される）からのものである場合に一致が起こることを示すためにのみ、ｗ０タグ一致〜ｗ５タグ一致信号の各々がアサートされる。方法２００は次にブロック２０８に続いて、ここで、ページアドレス一致インジケータを生成するために、命令アドレス１００のページアドレス部分は、ページアドレスＣＡＭ１０４のエントリと比較される。図３を参照すると、ページアドレスＣＡＭ１０４は、命令アドレス１００のページアドレス部分を受信し、エントリが命令アドレス１００のページアドレス部分と一致するかを示すために、ＣＡＭ１０４の各エントリの１つのページアドレス一致インジケータを出力する。方法２００はブロック２１０に進み、ここで、ウェイページ一致（例えば、ｗ０ページ一致〜ｗ５ページ一致）は、選択されたセットの選択フィールド（例えば、ｗ０ｓｅｌ〜ｗ５ｓｅｌ）に基づいてページアドレス一致インジケータから生成される。図３を参照すると、ウェイ０〜５の各々について、対応する選択フィールドは、ページアドレスＣＡＭ１０４によって与えられるページアドレス一致インジケータを選択するために使用され、一致インジケータセレクト１１０は、ウェイページ一致として、選択されたページアドレス一致インジケータを与える。例えば、ウェイ０について、一致インジケータセレクト１１０は、ページアドレス一致インジケータから８つのページアドレス一致インジケータの１つのインジケータを選択するために、ｗ０ｓｅｌの３ビットの値を使用し、ｗ０ページ一致としてこの選択されたページアドレス一致インジケータを与える。よって、１つの実施形態において、ページアドレスＣＡＭ１０４も、一致インジケータセレクト１１０によって使用されるページアドレス一致インジケータを生成する比較器を含んでもよい。あるいは、一致インジケータセレクト１１０は、ページアドレスＣＡＭ１０４がページアドレスを一致インジケータセレクト１１０に与え、一致インジケータセレクト１１０が命令アドレス１００のページアドレス部分を受信し、ページアドレス一致インジケータを生成するために比較を実行するように、比較器を含んでもよい。よって、この実施形態において、選択フィールドは、対応するウェイページ一致を生成するためのページアドレスの比較を実行するページアドレスＣＡＭ１０４から適切なページアドレスを選択するために使用されてもよい。
【００３２】
ブロック２１０の後に、方法２００はブロック２１２に続いて、ここで、ヒットウェイ信号（ヒットウェイ０〜ヒットウェイ５）を生成するために、ウェイタグ一致およびウェイページ一致が使用される（なお、ヒットウェイ０〜ヒットウェイ５はまた、短ヒットウェイ信号と呼ばれてもよい）。図３を参照すると、ＡＮＤゲート１１２および１１４のようなＡＮＤゲートは、ウェイタグ一致信号および対応するウェイヒット信号を生成するための対応するウェイタグ一致信号の各々を受信する。例えば、ウェイ０について、ＡＮＤゲート１１２は、ｗ０タグ一致およびｗ０ページ一致を受信し、ＡＮＤゲート１１２の出力でヒットウェイ０を与える。よって、ｗ０タグ一致がアサートされ（選択されたセットのｗ０タグが有効であり、アクセスアドレス１００のタグ部分を一致したことを示す）、ｗ０ページ一致がアサートされる（ｗ０ｓｅｌによって選択されるページアドレスＣＡＭ１４での選択されたページアドレスが命令アドレス１００のページアドレス部分と一致したことを示す）場合にのみ、ウェイ０のヒットを示すために、ヒットウェイ０がアサートされる。このように、ウェイ０〜５の各々について、短タグの比較が実行され、ヒットウェイ信号を生成するために、適切に選択されたページアドレス（選択されたセットの選択フィールドによって選択される）との比較が実行される。よって、方法２００は、短タグアドレスを格納するウェイについて、ブロック２０６、２０８、２１０および２１２の方法を実行してもよい。なお、短ヒットウェイ信号を生成するために使用されるＡＮＤゲートは、論理回路と呼ばれてもよく、代替実施形態では、短ヒットウェイ信号を生成するために異なる論理回路が使用されてもよい。
【００３３】
ブロック２０４に戻り、ウェイ６および７について、フローはブロック２１４に進み、ここで、選択されたセット内でウェイヒットを決定するために、命令アドレス１００のページアドレスおよびタグ部分が命令アドレス１００の完全タグアドレスとして使用される。図３を参照すると、ウェイ６および７の比較器１１６は、選択されたセット（ｗ６タグおよびｗ７タグ）のウェイ６および７の完全アドレスタグを受信し、命令アドレス１００のページアドレスおよびタグ部分を命令アドレス１００の完全タグアドレスとして受信する。方法２００はブロック２１６に進み、ここで、ヒットウェイ信号、ヒットウェイ６およびヒットウェイ７がウェイヒット信号に基づいて生成される。例えば、比較器１１６は、ｗ６タグおよびｗ７タグの各々を命令アドレス１００の完全タグアドレス部分と比較し、それぞれヒットウェイ６およびヒットウェイ７を生成する。例えば、１つの実施形態において、ｗ６タグが命令アドレス１００の完全タグアドレス部分と一致する場合、ヒットウェイ６がアサートされる。なお、比較器１１６もまた、一致を認めるために選択されたセットの有効ビットを使用することにより、一致した選択されたセットからの対応するタグが有効エントリ（エントリの状態ビットによって指示される）からのものである場合に一致が起こることを示すためにのみ、ヒットウェイ６およびヒットウェイ７の各々がアサートされる。よって、方法２００は、完全タグアドレスを格納するウェイについて、ブロック２１４および２１６の方法を実行してもよい。なお、ヒットウェイ６およびヒットウェイ７はまた、完全ヒットウェイ信号と呼ばれてもよい。
【００３４】
ブロック２１２またはブロック２１６の後に、方法２００はブロック２１８に進み、ここで、ウェイ０〜３および６（短ＴＡを格納する）について、ウェイ分岐先を生成するために、命令アドレス１０のページアドレス部分は、選択されたセットの対応するターゲットアドレス（例えば、ｗ０ＴＡ〜ｗ３ＴＡおよびｗ６ＴＡ）と連結される。例えば、ウェイ分岐先は、対応するウェイＴＡと命令アドレス１００のページアドレス部分を連結する連結格納回路（例えば、連結格納回路１１８、１２０および１２２）の出力に対応してもよい。連結格納回路の出力は次に、分岐先アドレスセレクタ１２４に与えられる。更にブロック２１８を参照すると、ウェイ４、５および７（完全ＴＡを格納する）について、選択されたセットからのＴＡがウェイ分岐先として与えられる。よって、これらのウェイからのＴＡは完全ＴＡであるため、これらは分岐先アドレスセレクタ１２４に直接的に与えられてもよい。方法２００は次にブロック２２０に進み、ここで、ウェイヒット信号（ヒットウェイ０〜ヒットウェイ７）は、分岐先アドレスとしてウェイ分岐先を選択するために使用される。例えば、分岐先アドレスセレクタ１２４は、どちらのヒットウェイ信号がアサートされるかに基づいて、対応するウェイの分岐先アドレスを選択する。よって、分岐先アドレスセレクタ１２４によって選択された分岐先アドレスは、ＣＰＵ３０の制御およびインタフェース５２にＢＴＢターゲットアドレスとして与えられてもよい。方法２００はブロック２２２に続いて、ここで、同一ページインジケータおよび予測情報（ヒットを生じる選択されたセットのウェイに対応する）は、予測情報および同一ページインジケータとしてＣＰＵ３０の制御およびインタフェース５２に与えられてもよい。なお、１つの実施形態において、選択されたセットのウェイの全てがヒットを生じない場合、このミス情報は別のヒット／ミスインジケータまたは予測情報によってＣＰＵ３０に与えられてもよい。
【００３５】
図１１および１２は、本発明の１つの態様にしたがったＢＴＢ２８での割り当て方法２５０のフロー図を示す。方法２５０はブロック２５２で開始し、ここで、有効な命令がデコードで受信される。例えば、図２を参照すると、命令レジスタ４２の有効な命令は、命令フェッチユニット４０によって命令デコードユニット４６に与えられる。方法２５０はブロック２５４に続いて、ここで、シーケンシャル命令アドレス（sequential  instruction  address）が命令について計算される。方法は決定の菱形ブロック２５６に進み、ここで、シーケンシャル命令アドレスにより命令フローがページバウンダリを超えることになるかが決定される（これは、例えば、制御およびインタフェース５２または命令デコードユニット５６内で実行されてもよい）。そうであれば、フローはブロック２５８に進み、ここで、同一ページカウンタがリセットされる。例えば、図２を参照すると、同一ページカウンタは、同一ページ状態カウンタ５５を示してもよく、ブロック２５８において、カウンタ５５は、例えばゼロのような第１所定値にリセットされてもよい。ブロック２５８の後に、または決定の菱形ブロック２５６でページバウンダリが超えられない場合、方法２５０は決定の菱形ブロック２６０に進み、ここで、有効な命令が分岐命令であるかが決定される。例えば、命令をデコードした結果、命令デコードユニット４６は、命令が実際に分岐命令であるかを決定してもよい。そうでなければ、方法２５０はブロック２５２に進み、ここで、次の有効な命令が命令デコードユニット４６によって受信されてもよい。分岐命令と決定された場合、方法２５０はブロック２６２に進み、ここで、分岐命令の分岐先アドレスが計算またはフェッチされる。例えば、これは、分岐実行ユニット４９によって実行された分岐の解決（branch  resolution）の一部として行われてもよい。方法２５０は次に決定の菱形ブロック２６４に進み、ここで、分岐が予測ミスであったかが決定される。例えば、分岐は、実際に成立しなかった場合に（ＢＴＢ２８からの予測情報等によって）成立したものとして予測ミスされる可能性があり、その逆も同様である。分岐が予測ミスではなかった場合、分岐命令の処理はパイプラインを通して続いて、方法２５０はブロック２５２に戻り、ここで、次の有効な命令が命令デコードユニット４６によって受信される。
【００３６】
決定の菱形ブロック２６４で、分岐が予測ミスされたことが決定された場合、方法２５０は決定の菱形ブロック２６６に進み、ここで、分岐命令がＢＴＢ２８によって分岐命令として予測されたかが決定される。そうであれば、方法２５０はブロック２６８に進み、ここで、ＢＴＢ２８は必要に応じて更新される。例えば、命令がＢＴＢ２８でヒットを生じた場合、命令は分岐命令として予測される。しかしながら、分岐命令がヒットを生じたが、ＢＴＢ２８からのヒットとともに与えられる予測情報が分岐予測ミスを生じている。よって、予測ミスした分岐命令に対応するＢＴＢ２８のエントリは、更新される必要があってもよい。決定の菱形ブロック２６６で、分岐命令は分岐命令として予測されなかった場合（例えば、ＢＴＢ２８でミスしたため）、方法２５０は決定の菱形ブロック２７０に進む。この時点において、現在の有効な命令は実際には分岐命令であるが、ＢＴＢ２８でミスしたため、ＢＴＢ２８の新たなエントリは、方法２５０の残りの部分を参照して以下に説明するように分岐命令に割り当てられてもよい。
【００３７】
決定の菱形ブロック２７０を参照して、同一ページカウンタがゼロより大きくない場合、方法２５０はブロック２７２に進み、ここで、同一ページカウンタは１に設定される。なお、現在のアドレスに対する次のシーケンシャル命令アドレスがページバウンダリを超えることを生じる場合、同一ページカウンタ（例えば、図２のカウンタ５５）はブロック２５８でゼロにリセットされている。よって、ページバウンダリを超えるため、完全タグアドレスがＢＴＢ２８に割り当てられるべきである。ブロック２７２から、方法２５０はブロック２７８に進み、ここで、図示される実施形態のウェイ６および７のみが完全タグアドレスを格納するように構成されるため、ウェイ６またはウェイ７は現在の分岐アドレスの割り当てについて選択される。エントリがウェイ６または７の選択されたウェイに割り当てられた場合、完全タグアドレスはエントリに格納される。ウェイ６または７のどちらを選択するかの決定は、図１２の方法２５０の部分を参照して説明するように分岐先アドレスに基づいて実行されてもよい。
【００３８】
決定の菱形ブロック２７０に戻り、同一ページカウンタがゼロより大きい場合、方法２５０は決定の菱形ブロック２９０に進み、ここで、現在のページアドレス（例えば、現在の分岐命令のページアドレス）がすでにページアドレスＣＡＭ１０４にあるかが決定される。例えば、制御およびインタフェース５２は、現在のページアドレスがページアドレスＣＡＭ１０４にあるかを決定するために、ＢＴＢ２８のＢＴＢ制御回路１０２と通信してもよい。現在のページアドレスがページアドレスＣＡＭ１０４にある場合、方法２５０はブロック２９６に進み、ここで、ウェイ０〜５の１つのウェイが割り当てについて選択され、ページアドレスＣＡＭ１０４の既存のエントリが割り当てのために使用されてもよい。すなわち、エントリがウェイ０〜５の選択されたウェイに割り当てられた場合、現在の分岐命令アドレスのタグ部分はエントリに格納されてもよく、エントリの選択値は、ページアドレスＣＡＭ１０４の既存のエントリを選択するために設定されてもよい。ウェイ０〜５のどれを選択するかの決定は、図１２の方法２５０の部分を参照して以下に記載されるように分岐先アドレスに基づいてさらに実行されてもよい。
【００３９】
決定の菱形ブロック２９０に戻り、現在のページアドレスがページアドレスＣＡＭ１０４にまだ存在しない場合、方法２５０は決定の菱形ブロック２９２に進み、ここで、同一ページの閾値が満たされるかが決定される。例えば、１つの実施形態において、ページアドレスＣＡＭ１０４の新たなエントリを割り当てるかを決定するために、ＣＰＵ３０の制御およびインタフェース５２に配置され得る同一ページ閾値５７が使用されてもよい。１つの実施形態において、特定の数の分岐命令がメモリの同一ページで生じるまで、ページアドレスＣＡＭ１０４の新たなエントリは割り当てられない。例えば、１つの実施形態において、メモリの特定のページ（このページアドレスはページアドレスＣＡＭ１０４にまだ存在しない）で分岐命令の第３回のみの発生により、新たなエントリが割り当てられる。よって、決定の菱形ブロック２９２を参照すると、現在のページアドレスについて同一ページ閾値を満たさない場合、方法２５０はブロック２９８に進み、ここで、同一ページカウンタ５５がインクリメントされる。よって、同一ページに起こる後の分岐命令（よって、ブロック２５４から、決定の菱形ブロック２５６、決定の菱形ブロック２６０、ブロック２６２、再び決定の菱形ブロック２９２に進む）のときに、同一ページ閾値が分岐命令によって満たされるまで、同一ページカウンタ５５が再びインクリメントされてもよい。なお、分岐命令がページバウンダリを超えると、同一ページカウンタ５５はゼロにリセットされる（ブロック２５８で）。ブロック２９８の後に、方法２５０はブロック２７８に進み、ここで、ウェイ６または７が現在の分岐命令の割り当てについて選択されてもよい。すなわち、同一ページの閾値が満たされなかったため、ページアドレスＣＡＭ１０４の新たなエントリが割り当てられておらず、よって、完全タグアドレスが割り当ての際に、ＢＴＢ２８に格納される必要がある。この例において、ウェイ６および７のみが完全ターゲットアドレスの格納を可能する。図１２の方法２５０の部分を参照して以下に説明されるように、どちらのウェイ６および７を選択するかの決定は、分岐先アドレスに基づいてさらに実行されてもよい。
【００４０】
決定の菱形ブロック２９２に戻り、同一ページの閾値が満たされた場合（すなわち、メモリの同一ページ内で生じる十分な分岐命令が存在する場合）、方法２５０はブロック２９４に進み、ここで、現在の分岐命令のページアドレスを格納するために、ページアドレスＣＡＭのエントリが割り当てられてもよい。ページアドレスＣＡＭ１０４のどのエントリを割り当てるかを決定するために、如何なるプロトコルが使用されてもよく、例えば、ＬＲＵ（least  recently  used）、疑似ＬＲＵ（ＰＬＲＵ：pseudo  LRU）、ラウンドロビン、などが使用されてもよい。方法２５０はブロック２９５に進み、ここで、ウェイ０〜５の１つのウェイが割り当てについて選択されてもよく、ページアドレスＣＡＭ１０４の既存のエントリが割り当てのために使用されてもよい。すなわち、エントリがＢＴＢアレイ１０６のウェイ０〜５の選択されたウェイに割り当てられた場合、現在の分岐命令アドレスのタグ部分はエントリに格納されてもよく、エントリの選択値は、ページアドレスＣＡＭ１０４の新たに割り当てられたエントリを選択するために設定されてもよい。図１２の方法２５０の部分を参照して以下に説明するように、どのウェイ０〜５を選択するかの決定は、分岐先アドレスに基づいてさらに実行されてもよい。
【００４１】
方法２５０は点Ａで図１２に続く。ブロック２７８、２９５および２９６の各々の後に、方法２５０は、点Ａを介して図１２に存在するブロック２８０に続く。ブロック２８０において、現在の分岐命令（例えば、ブロック２６２で決定される）の分岐先アドレスのページアドレスは、現在の分岐命令アドレスのページアドレスと比較される。方法２５０は決定の菱形ブロック２８２に続いて、ここで、分岐先アドレスのページアドレスおよび分岐命令アドレスが一致するかが決定される。そうであれば、方法２５０はブロック２８８に続いて、ここで、ウェイ６または７が割り当てについて選択された場合（例えば、方法２５０がブロック２７８から点Ａに入った場合）、ウェイ６が割り当てについて選択され、ウェイ０〜５が割り当てについて選択された場合（例えば、方法２５０がブロック２９５または２９６から点Ａに入った場合）、ウェイ０〜３の１つのウェイが割り当てについて選択される。すなわち、ページアドレスが決定の菱形ブロック２８２で一致した場合、分岐先は分岐命令と同一メモリページに配置される。その場合において、短ＴＡを格納することを可能するＢＴＢ２８のウェイが割り当てについて選択されてもよく、、この例において、ウェイ０〜３およびウェイ６のエントリは、上述のように短ＴＡを格納する。なお、ＢＴＢ制御回路１０２は、割り当てについてウェイ０〜３の１つのウェイを選択するために如何なる方法を使用してもよく、例えば、ＬＲＵ、ＰＬＲＵ、ラウンドロビン、などを使用してもよい。ウェイ６のエントリまたはウェイ０〜３の１つのウェイを割り当てるときに、ＢＴＢ制御回路１０２は、選択されたウェイのエントリに必要な情報を格納するために、ＣＰＵ３０の分岐実行ユニット４９から受信した情報（例えば、分岐アドレス、分岐ＴＡ、分岐状態）を使用してもよい。さらに、ＢＴＢ制御回路１０２は、新たなＢＴＢエントリを格納する選択されたウェイのセットを選択するために、分岐先アドレスのインデックス部分を使用してもよい。
【００４２】
決定の菱形ブロック２８２に戻り、分岐先アドレスのページアドレスおよび分岐命令が一致しない場合、方法２５０はブロック２８４に進み、ここで、同一ページカウンタ５５が再びリセットされる。方法２５０はブロック２８６に進み、ここで、ウェイ６または７が割り当てについて選択された場合（例えば、方法２５０がブロック２７８から点Ａに入った場合）、ウェイ７が割り当てについて選択され、ウェイ０〜５が割り当てについて選択された場合（例えば、方法２５０がブロック２９５または２９６から点Ａに入った場合）、ウェイ４または５の１つのウェイが割り当てについて選択される。すなわち、ページアドレスが決定の菱形ブロック２８２で一致しない場合、分岐先は分岐命令と同一メモリページに配置されない。この場合において、完全ＴＡを格納することを可能にするＢＴＢ２８のウェイが割り当てについて選択され、この例において、ウェイ４、５および６のエントリが上述のように完全ＴＡを格納する。なお、ＢＴＢ制御回路１０２は、割り当てについてウェイ４または５の１つのウェイを選択するために如何なる方法を使用してもよく、例えば、ＬＲＵ、ＰＬＲＵ、ラウンドロビン、などを使用してもよい。ウェイ７のエントリまたはウェイ４または５の１つのウェイを割り当てるときに、ＢＴＢ制御隘路１０２は、必要な情報を選択されたウェイのエントリに格納するために、ＣＰＵ３０の分岐実行ユニット４９から受信した情報（例えば、分岐アドレス、分岐ＴＡ、分岐状態）を使用してもよい。さらに、ＢＴＢ制御回路１０２は、新たなＢＴＢエントリを格納する選択されたウェイのセットを選択するために、分岐先アドレスのインデックス部分を使用してもよい。ブロック２８８および２８６の後に、方法２５０は終了する。
【００４３】
図１３は、ＢＴＢ２８のウェイ０〜７がどのように構成され得るかの別の例を示す。例えば、図１３を参照すると、各ウェイのタグエントリは図４と同一でもよく、ここで、図４に関する上述の記載が適用される。すなわち、ウェイ０〜ウェイ５の各々のエントリは、短タグアドレスおよび短タグアドレスの対応する選択ビットを格納し、ウェイ６および７の各々のエントリは完全タグアドレスを格納する。よって、上述のように、例えば、ページアドレスＣＡＭ１０４によって与えられる適切なページアドレス一致インジケータを選択することによって、タグアドレスの残りの上位ビットを与えるために、選択フィールドが使用される。しかしながら、図４の実施形態とは異なり、図１３の実施形態は、各ウェイの各エントリが短ＴＡおよび短ＴＡの対応する選択フィールドを格納することを示す。この例において、ＴＡの上位ビットを格納するために、ＴＡページアドレスバッファ（図１４示す）が使用されてもよく、ＴＡの残りの上位ビットを選択するために、各エントリの選択フィールドが使用されてもよい。４Ｋバイトのページサイズを仮定する上述の例において、短ＴＡは１０ビットであり、生成される完全ＴＡは３０ビットである。選択フィールドは、完全ＴＡを完成するためにＴＡページアドレスバッファから適切なエントリを選択するのに十分なビットを含む。例えば、以下に記載されるように、短ＴＡの選択フィールドは３ビットであってもよい。
【００４４】
図１４は、図１３の例にしたがった分岐先生成器４０１を示す。図１４の分岐先生成器４０１は、図１の分岐先生成器１１９の代わりに使用されてもよい。分岐先生成器４０１は、ＢＴＢアレイ１０６の選択されたセットからｗ０ＴＡ〜ｗ７ＴＡの各々を受信する。しかし、この例において、ｗ４ＴＡ、ｗ５ＴＡおよびｗ７ＴＡの各々も、ｗ０ＴＡ〜ｗ３ＴＡおよびｗ６ＴＡのような短ターゲットアドレスである。分岐先生成器４０１はまた、選択されたセットからｗ０ＴＡｓｅｌ〜ｗ７ＴＡｓｅｌの各々を受信する。分岐先生成器４０１は、各ウェイについてＴＡページアドレスバッファ４１０およびマルチプレクサを含み、ｗ０のマルチプレクサ（ＭＵＸ）４００およびｗ７のマルチプレクサ（ＭＵＸ）４０２を含む。ＴＡページアドレスバッファ４１０は７つのエントリを含み、各エントリは２０ビットのＴＡページアドレス（完全ＴＡの残りの上位の２０ビットに対応する）を格納する。ＭＵＸ４００および４０２のような各ＭＵＸは、現在のページアドレス（命令アドレス１００のページアドレス部分）およびＴＡページアドレスバッファ４１０の７つのエントリの各々を受信し、対応する選択信号（ｗ０ＴＡｓｅｌ〜Ｗ７ＴＡｓｅｌの１つ）に基づいて、各ＭＵＸは選択されたＴＡページアドレスを出力する。よって、ＴＡページアドレスバッファ４１０が７エントリを含む図示される実施形態において、各ＴＡ選択フィールドは、３ビットを含み、ここで、「０００」の値が図２の命令アドレス１００の現在のページアドレス部分を選択してもよく、「００１〜１１１」の値がバッファ４１０の７つエントリの１つのエントリを選択する。例えば、ｗ０に対応するＭＵＸ４００を参照すると、ｗ０ＴＡｓｅｌの「０００」の値は、現在のページアドレスがＭＵＸ４００によって出力されることを生じ、「００１」の値は、バッファ４１０の第１エントリがＭＵＸ４００によって出力されることを生じ、「０１０」の値は、バッファ４１０の第２エントリがＭＵＸ４００によって出力されることを生じ、以下同様である。上述のように、連結回路４０４および４０６のような連結回路は、分岐先アドレスセレクタ１２４に与えられる完全ＴＡを生成するために、各ＭＵＸの出力に与えられる。例えば、連結回路４０４は、ｗ０ＴＡ（短ＴＡである）とＭＵＸ４００によって与えられるＴＡページアドレスを連結する。同様に、ＭＵＸ４０２は、ｗ７ＴＡと連結されるために連結回路４０６に与えられる適切なＴＡページアドレスを選択するために、ｗ７ＴＡｓｅｌを使用する。
【００４５】
図１５は、同一ページインジケータ生成器４０８を示す。同一ページインジケータ生成器４０８は、同一ページインジケータを生成するために、図９の同一ページインジケータ生成器１５８の代わりに図１３および１４の例で使用されてもよい。同一ページインジケータ生成器４０８は、ターゲットアドレスが現在のページアドレスと同一ページにあるかを示す各ウェイのインジケータ（インジケータ４１１および４１２を含む）を受信する。すなわち、対応する選択信号が「０００」と等しい場合（これは、現在のページアドレスが分岐先生成器４０１によって短ＴＡと連結されるために選択されたことを示す）、インジケータ４１１および４１２のようなインジケータの各々はアサートされる。同一ページインジケータとして与えられる同一ページインジケータ生成器４０８によって受信された適切なインジケータを選択するために、ヒット信号（ヒットウェイ０〜ヒットウェイ７）が使用される。なお、対応するＴＡｓｅｌ信号が「０００」以外である場合、ページアドレス（ＴＡページアドレスバッファ４１０から選択されたもの）は現在のページアドレス（現在の分岐命令）と同一ページにないことが仮定される。
【００４６】
よって、上述の方法１０〜１２は、分岐先アドレスの生成のためおよび図１３〜１５を参照して記載される短ＴＡおよび対応する選択フィールドに適応するための割り当てのために変更されてもよい。また、代替実施形態において、ウェイのサブセットのみが短ＴＡおよび対応する選択フィールドの両方を格納してもよく、残りのウェイが完全ＴＡを格納してもよい。
【００４７】
ここで、改善した格納効率を有するＢＴＢが提供されることが分かる。１つの実施形態において、ＢＴＢの異なるウェイは、異なるサイズのタグアドレスおよび異なるサイズのＴＡを格納するために使用されてもよい。例えば、ＢＴＢのいくつかのウェイのエントリは、短タグアドレスを格納するために使用されてもよく、ＢＴＢの他のウェイのエントリは、完全タグアドレスを格納するために使用されてもよい。同様に、ＢＴＢのいくつかのウェイのエントリは、短ＴＡを格納するために使用されてもよく、ＢＴＢの他のウェイのエントリは、完全ＴＡを格納するために使用されてもよい。いずれかの特定のウェイについて、エントリは、短／完全タグアドレスおよび短／完全ＴＡの如何なる組み合わせを格納するように構成されてもよい。さらに、短タグアドレスの残りアドレスビットを示すために、短タグアドレスおよび追加の選択フィールドを格納するために使用されるエントリが格納されてもよい。例えば、短タグアドレスの残りのアドレスビットは、短タグアドレスのページアドレスに対応してもよく、ページアドレスバッファに格納されてもよい。ここで、ページアドレスバッファから適切なページアドレスを選択するために、選択フィールドが使用される。このように、ＢＴＢの格納スペースが減少され得る。同様に、短ＴＡを格納するために使用されるエントリは、ＴＡページアドレスバッファから短ＴＡの残りのアドレスビットを与えるために使用される対応する選択フィールドを含んでもよい。
【００４８】
本発明を実現する装置は、ほとんどの部分において当業者に周知の電子部品及び回路で構成されるため、回路の詳細については、上記のように必要と考えられる程度以上には説明されていない。これは、本発明の基本的な概念の理解と認識のためであり、また、本発明の教示を不明瞭にしたり、注意をそらしたりしないようにするためである。
【００４９】
上記実施形態のいくつかは、必要に応じて、種々の異なる情報処理システムを用いて実装されてもよい。例えば、図１及びそれについての説明は、例示的な情報処理アーキテクチャを記載するが、この例示的なアーキテクチャは、本発明の種々の態様を説明する上での有用な参照を提供するために示されているに過ぎない。もちろん、アーキテクチャの説明は説明のために単純化されており、これは、本発明に従って用いられ得る適切なアーキテクチャの多くの異なる種類のうちの一つに過ぎない。当業者であれば、論理回路ブロック間の境界は、単に例示のためのものであり、代替実施形態は、論理ブロックまたは回路要素を結合してもよく、種々の論理ブロック又は回路要素による機能を分解してもよいことが分かる。
【００５０】
本明細書に記載されたアーキテクチャは単に例示のためのものであり、実際に、同一の機能を実現できる他の多くのアーキテクチャが実装され得ることが分かる。抽象的であるが、しかし明確な意味において、同一の機能を実現するための構成要素のいずれかの構成は、所望の機能を実現するように、有効に「関連付けられ」る。従って、アーキテクチャ及び介在する構成要素に拘らず、特定の機能を実現するために組み合わせられたいずれかの２つの構成要素は、所望の機能を実現するために互いに「関連付けられた」とみなされてもよい。同様に、そのように「関連付けられた」いずれかの２つの構成要素は、所望の機能を実現するために互いに「動作可能に接続された」又は「動作可能に結合された」とみなされてもよい。
【００５１】
例えば、１つの実施形態において、データ処理システム１０の図示される要素は単一の集積回路または同一デバイス内に配置される回路である。あるいは、データ処理システム１０は、互いに接続された如何なる数の別個の集積回路または別個のデバイスを含んでもよい。例えば、メモリ１６はプロセッサ１２と同一の集積回路に配置されてもよく、別個の集積回路に配置されてもよく、データ処理システム１０の他の要素から分離した別の周辺装置またはスレーブに配置されてもよい。周辺装置１８および２０もまた、別個の集積回路またはデバイスに配置されてもよい。
【００５２】
さらに、当業者は、上述した動作の機能の間の境界は、単なる例示であることを認識するであろう。複数の動作の機能は、単一の動作に結合されてもよく、及び／又は、単一の動作の機能は、追加の動作に分配されてもよい。更に、別の実施形態は、特定の動作の複数のインスタンスを含んでもよく、動作の順序は種々の他の実施形態において変更されてもよい。
【００５３】
記載されるソフトウェアのすべてまたはある部分は、例えば、メモリ１６または他のコンピュータシステムの他のメディアのようなコンピュータ読取可能媒体からのデータ処理システム１０の受信した要素であってもよい。このようなコンピュータ読取可能媒体は、データ処理システム１０のような情報処理システムに永久的に、取り外し可能にまたは遠隔に結合されてもよい。コンピュータ読取可能媒体は、例として限定されることなく、ディスクおよびテープ記憶媒体を含む磁気記憶媒体、コンパクトディスクメディア（例えば、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、等）およびデジタルビデオディスク記憶媒体のような光学記憶媒体、フラッシュメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭのような半導体に基づくメモリユニットを含む不揮発性メモリ記憶媒体、強磁性デジタルメモリ、ＭＲＡＭ、例えば、レジスタ、バッファまたはキャッシュ、メインメモリ、ＲＡＭ、などを含む揮発性記憶媒体、および例えば、コンピュータネットワーク、ポイント・ツー・ポイント通信装置および搬送波伝送媒体を含むデータ伝送媒体を含んでもよい。
【００５４】
１つの実施形態において、データ処理システム１０はパーソナルコンピュータのようなコンピュータシステムである。他の実施形態は、異なる種類のコンピュータシステムを含んでもよい。コンピュータシステムは、一人のユーザまたは複数のユーザに独立した計算能力を提供するように設計され得る情報処理システムである。コンピュータシステムは、これらのものに制限されることなく、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、携帯情報端末、電子ゲーム、自動車および他の埋め込みシステム、携帯電話および様々な無線デバイスを含む多くの形態になってもよい。典型的なコンピュータシステムは、少なくとも１つの処理ユニット、関連するメモリおよび複数の入力／出力（Ｉ／Ｏ）デバイスを含む。
【００５５】
コンピュータシステムは、プログラムにしたがって情報を処理し、Ｉ／Ｏデバイスを介して結果の出力情報を生成する。プログラムは、特定のアプリケーションプログラムおよび／または動作システムのような命令のリストである。コンピュータプログラムは、典型的にはコンピュータ読取可能記憶媒体の内部に格納される、あるいはコンピュータ読取可能伝送媒体を介してコンピュータシステムに送信される。コンピュータのプロセスは、典型的には、実行プログラムまたはプログラムの一部、現在のプログラム値および状態情報、ならびにプロセスの実行を管理するためにオペレーティングシステムによって使用されるリソースを含む。親プロセスは、親プロセスの全体の機能を実行するのを助けるために、他の子プロセスを生成してもよい。親プロセスは親プロセスの全体の機能の一部を実行するために特に子プロセスを生成するため、子プロセス（孫プロセス、など）によって実行される機能は、場合によっては親プロセスによって実行されるものとして記載されてもよい。
【００５６】
本発明について特定の実施の形態を参照しながら説明したが、特許請求の範囲に定義される本発明の範囲から逸脱することなく様々な修正及び変更が加えられてもよい。例えば、アドレスフィールドで使用されるビット数は、システム要件に基づいて変更されてもよい。したがって、明細書及び図面は限定するものではなく、単に例示と見なされるべきであり、全てのそのような変更は、本発明の範囲内に入るものとする。特定の実施形態に関して記載したいずれかの利益、利点又は問題の解決方法は、いずれかの請求項又は全ての請求項の重要な機能、必要な特徴又は必須の特徴として解釈されるべきではない。
【００５７】
本明細書で用いられる「結合された」という用語は直接的な結合または機械的な結合に限定されるべきではない。
【００５８】
更に、本明細書で用いられる単数は、１つまたは複数として定義される。また、請求項における「少なくとも１つ」および「１つまたは複数」という導入部の用語の使用は、同じ請求項が「１つまたは複数」または「少なくとも１つ」という導入部の用語及び不定冠詞を含んでいたとしても、不定冠詞による他の請求項の要素の導入部が、このような導入された請求項の要素を含むいずれかの特定の請求項を、唯一のこのような要素を含む発明に限定することを意味するものとして解釈されるべきではない。同じことが定冠詞の使用にも当てはまる。
【００５９】
特に明記しない限り、「第１」及び「第２」等の用語は、そのような用語が記述する要素間を任意に区別するために用いられる。したがって、これらの用語は、必ずしもそのような要素の時間的な又は他の優先順位付けを示すものではない。
【００６０】
以下の項目が本発明の種々の実施形態に含まれる。
【００６１】
項目１は、ウェイにグループ化された複数の分岐先バッファ（ＢＴＢ）エントリを含む分岐先バッファを含むデータプロセッサを含み、ウェイの１つのＢＴＢエントリは短タグアドレスを含み、ウェイの別のもののＢＴＢエントリは完全タグアドレスを含む。項目２は、項目１のプロセッサを含み、ウェイの１つのＢＴＢエントリは短ターゲットアドレスを含み、ウェイの別のもののＢＴＢエントリは完全ターゲットアドレスを含むことをさらに含む。項目３は、項目１のプロセッサを含み、同一ページにあるＢＴＢで割り当てられた分岐先エントリの数を追跡し、同一ページにあった以前に受信した分岐命令の数を示す同一ページ状態カウンタを維持管理するように構成された制御およびインタフェースユニットをさらに含み、分岐先エントリの数が閾値に到達したときにエントリがまだページアドレスバッファにない場合、ＢＴＢは、ページアドレスバッファのエントリを割り当てる。項目４は、項目１のプロセッサを含み、短タグアドレスに関して複数の以前に受信した分岐命令のページアドレス部分のエントリを含むページアドレスバッファをさらに含み、短タグアドレスを含むＢＴＢのエントリは、ページアドレスバッファのエントリの１つを選択するために使用される選択フィールドをさらに含む。項目５は、項目１のプロセッサを含み、ＢＴＢエントリは短ターゲットアドレスを含み、分岐命令の複数の以前に受信したターゲットアドレスのページアドレス部分のエントリを含むページターゲットアドレスバッファをさらに含み、ＢＴＢエントリは、ページターゲットアドレスバッファのエントリの一つを選択するために使用されるターゲット選択フィールドを含む。項目６は、項目２のプロセッサを含み、ＢＴＢは、短ターゲットアドレスについて、命令の分岐先アドレスを決定するために、選択された短ターゲットアドレスと同一ページアドレスを有する現在の分岐命令のページアドレス部分を連結するように構成される。項目７は、項目５のプロセッサを含み、ＢＴＢは、現在の分岐命令の分岐先アドレスを決定するために、選択された短ターゲットアドレスと同一ページアドレスを有するページターゲットアドレスバッファからの以前に受信したページアドレス部分または現在の分岐命令のページアドレス部分を連結するように構成される。
【００６２】
項目８は、ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含むセットアソシアティブ方式ＢＴＢアレイを含むデータプロセッサを含み、ウェイの第１ウェイのセットのＢＴＢエントリは、短タグアドレスフィールドを含み、ウェイの第２ウェイのセットのＢＴＢエントリは、完全タグアドレスフィールドを含む。項目９は、項目８のプロセッサを含み、同一ページにある分岐命令の数を示すために、同一ページ状態カウンタを維持管理するように構成された制御およびインタフェースユニットと、同一ページにある分岐命令のページアドレスエントリを含むページアドレスバッファとをさらに含む。項目１０は、項目８のプロセッサを含み、短タグアドレスフィールドに割り当てられたビットの数は、完全タグアドレスフィールドに割り当てられたビットの数より少ない数およびメモリ管理ユニット（ＭＭＵ）のページアドレスに基づく数を含むグループのうち１つである。項目１１は、項目８のプロセッサを含み、入来する命令からの短タグアドレスおよび短タグアドレスフィールドを含むウェイの選択されたセットからの短タグアドレスを受信するように構成された第１比較器をさらに含み、比較器は、入来する命令からの短タグアドレスが短タグアドレスフィールドを含むウェイの選択されたセットからの短タグの１つと等しいかを示す短ウェイタグ一致信号を出力するようにさらに構成される。項目１２は、項目１１のプロセッサを含み、以前に受信した命令アドレスからのページアドレスを含むエントリを格納するように構成されたページアドレスバッファと、短タグアドレスフィールドを含むウェイの選択されたセットからの選択フィールドおよびページアドレスバッファからのエントリを受信するように構成された一致インジケータ選択ユニットとをさらに含み、ウェイの第１ウェイのセットのＢＴＢエントリは、選択されたセットのページアドレスバッファのエントリを示す選択フィールドを含む。項目１３は、項目１２のプロセッサを含み、完全タグアドレスフィールドを含むウェイの選択されたセットからの完全タグアドレスおよび入来する命令からの完全タグアドレスを受信するように構成された第２比較器をさらに含み、第２比較器は、入来する命令からの完全タグアドレスが完全タグアドレスフィールドを含むウェイの選択されたセットからの完全タグアドレスの１つと等しいかを示す長ヒットウェイ信号を出力するようにさらに構成される。項目１４は、項目１２のプロセッサを含み、一致インジケータ選択ユニットからのウェイページ一致信号および第１比較器からの短ウェイタグ一致信号を受信するように構成された論理回路をさらに含み、論理回路は、入来する命令アドレスのページアドレスがページアドレスバッファに既に存在するかを示す短ヒットウェイ信号を出力するようにさらに構成される。
【００６３】
項目１５は、ウェイにグループ化された分岐先バッファ（ＢＴＢ）エントリのセットを含む分岐先バッファ（ＢＴＢ）を有するプロセッサにおける方法を含み、方法は、分岐命令アドレスを受信するステップと、セットの１つのセットを選択するために命令アドレスのインデックス部分を使用するステップとを含み、ウェイの第１グループのセットのＢＴＢエントリは、短タグアドレス部分を含み、ウェイの第２グループのセットのＢＴＢエントリは、完全タグアドレス部分を含む。項目１６は、項目１５の方法を含み、ウェイの第１グループについて、選択されたセットの短タグアドレス部分が分岐命令アドレスのタグ部分と一致するかを決定するステップと、命令アドレスのページアドレス部分とページアドレスバッファのエントリとを比較することによってページアドレス一致インジケータを生成するステップであり、ページアドレスバッファのエントリが以前に受信した命令アドレスからのページアドレスを含むステップと、選択されたセットの選択フィールドに基づいてページアドレス一致インジケータからウェイページ一致を生成するステップとをさらに含む。項目１７は、項目１６の方法を含み、ウェイの第１グループについて、ウェイタグ一致およびウェイページ一致に基づいてヒットウェイ信号を生成するステップと、選択されたセットのターゲットアドレスと命令アドレスのページアドレス部分とを連結することによってウェイ分岐先アドレスを生成するステップとをさらに含む。項目１８は、項目１６の方法を含み、同一ページにあるＢＴＢで割り当てられた分岐命令エントリの数を追跡するステップと、分岐命令エントリの数が閾値に到達したときにエントリがまだページアドレスバッファにない場合、ページアドレスバッファのエントリを割り当てるステップとをさらに含む。項目１９は、項目１８の方法を含み、ウェイの第２グループについて、命令アドレスのページアドレス部分およびタグ部分が選択されたセットの完全タグアドレス部分と等しいかを決定することによって選択されたセットのヒットウェイ信号を生成するステップと、ウェイ分岐先アドレスとして選択されたセットのターゲットアドレスを与えるステップとをさらに含む。項目２０は、項目１９の方法を含み、プロセッサにウェイ分岐先アドレスとともに同一ページインジケータおよび予測情報を与えるステップをさらに含む。
【図１】
0005933360.tif 000002
【図２】
0005933360.tif 000003
【図３】
0005933360.tif 000004
【図４】
0005933360.tif 000005
【図５】
0005933360.tif 000006
【図６】
0005933360.tif 000007
【図７】
0005933360.tif 000008
【図８】
0005933360.tif 000009
【図９】
0005933360.tif 000010
【図１０】
0005933360.tif 000011
【図１１】
0005933360.tif 000012
【図１２】
0005933360.tif 000013
【図１３】
0005933360.tif 000014
【図１４】
0005933360.tif 000015
【図１５】
0005933360.tif 000016