【文献】
Jan Hoogerbrugge,Cost-Efficient Branch Target Buffers,Proceedings of 6th International Euro-Par Conference (Euro-Par 2000 Parallel Processing),ドイツ,Springer,2000年 8月,Pages:950-959
【文献】
Byung-Soo Choi, Dong-IK Lee,Cost Effective Value Prediction Microarchitecture using Partial-Tag and Narrow-Width Operands,Proceedings of 2001 IEEE Pacific Rim Conference on Communications, Computers and signal Processing (PACRIM 2001),IEEE,2001年 8月26日,vol:1,Pages:319-322
(58)【調査した分野】(Int.Cl.,DB名)
ウェイにグループ化された複数の分岐先バッファ(BTB)エントリを含むBTBであり、前記ウェイの1つのBTBエントリは短タグアドレスを含み、前記ウェイの別のもののBTBエントリは完全タグアドレスを含むBTBと、
前記短タグアドレスに関して複数の以前に受信した分岐命令のページアドレス部分のエントリを含むページアドレスバッファと
を含み、
前記短タグアドレスを含む前記BTBのエントリは、ページアドレスバッファのエントリの1つを選択するために使用される選択フィールドをさらに含むデータプロセッサ。
前記ウェイの1つのBTBエントリは短ターゲットアドレスを含み、前記ウェイの別のもののBTBエントリは完全ターゲットアドレスを含む、請求項1に記載のプロセッサ。
ウェイにグループ化された分岐先バッファ(BTB)エントリのセットを含むセットアソシアティブ方式BTBアレイであり、前記ウェイの第1ウェイのセットのBTBエントリは、短タグアドレスフィールドを含み、前記ウェイの第2ウェイのセットのBTBエントリは、完全タグアドレスフィールドを含むセットアソシアティブ方式BTBアレイと、
入来する命令アドレスからの短タグアドレスおよび前記短タグアドレスフィールドを含む前記ウェイの選択されたセットからの短タグアドレスを受信するように構成された第1比較器であり、前記比較器は、前記入来する命令アドレスからの前記短タグアドレスが前記短タグアドレスフィールドを含む前記ウェイの前記選択されたセットからの短タグアドレスの1つと等しいかを示す短ウェイタグ一致信号を出力するようにさらに構成される第1比較器と、
以前に受信した命令アドレスからのページアドレスを含むエントリを格納するように構成されたページアドレスバッファと、
前記短タグアドレスフィールドを含む前記ウェイの前記選択されたセットからの選択フィールド、および、前記ページアドレスバッファの各エントリに対応付けられるページアドレス一致インジケータを受信するように構成された一致インジケータ選択ユニットと
を含み、
前記ページアドレスバッファは、入来する命令アドレスのページアドレス部分と、前記ページアドレスバッファの各エントリに保持されたページアドレスとが一致するか否かを示すページアドレス一致インジケータを、前記ページアドレスバッファの各エントリに対応して与えるものであり、
前記ウェイの前記第1ウェイのセットのBTBエントリは、前記選択されたセットのBTBエントリが対応付けられるページアドレスバッファのエントリを示す選択フィールドを含むデータプロセッサ。
【発明を実施するための形態】
【0008】
本発明は例示により説明されており、添付の図面により限定されるものではない。図面において、同様の参照符号は類似の要素を示す。図中の要素は簡潔かつ明確にするために説明されており、必ずしも寸法通りに描かれているとは限らない。
【0009】
上述のように、BTBのサイズが増加するほど、面積要件が増加し、電力需要が増加し、アクセス時間が増加する。よって、1つの実施形態において、BTBのサイズが減少し、同時に、性能を維持する。1つの実施形態において、セットアソシアティブ方式(set associative)マルチウェイ(multi-way)BTBが実装される。ここで、BTBの異なるウェイ(way)は、異なる組み合わせのタグサイズおよびターゲットアドレスサイズを格納できる。1つの実施形態において、ページバウンダリ(ページ境界)を超える分岐命令について完全タグがBTBに格納され、同一ページ内の分岐命令について短タグ(完全タグより少ないビットを要する)がBTBに格納されるように、タグサイズはメモリのページバウンダリに基づく。1つの実施形態において、短タグを格納するBTBエントリについて、これらのより短いタグで用いるページアドレスを格納するために、追加のページアドレスバッファ(例えば、ページアドレス内容アドレス指定可能メモリ(CAM:page address content addressable memory))が使用される。短タグを格納する各エントリについて、対応する選択値もページアドレスCAMの適切なエントリを選択するために格納および使用される。さらに、分岐先がページバウンダリを超えるかに基づいて完全ターゲットアドレスまたは短ターゲットアドレスがBTB内の各エントリのターゲットアドレス部分に格納されてもよい。
【0010】
ここで使用される用語「バス」は、1以上の各種の情報、例えばデータ、アドレス、制御又は状態を送信するために使用され得る複数の信号又は導体を参照するものとして使用される。ここで説明される導体は、単一の導体、複数の導体、単方向の導体、又は双方句の導体として参照して図示又は説明されることがある。しかしながら、異なる実施形態は導体の実装を変更してもよい。例えば、別々の単方向の導体が、双方向の導体に代えて使用されてもよく、逆もまた同様である。また、複数の導体が、複数の信号を直列に又は時間多重で送信する単一の導体で置き換えられてもよい。同様に、複数の信号を伝達する単一の導体が、これらの信号の部分集合を伝達する各種の異なる導体に分離されてもよい。従って、信号を送信するための多数の選択肢が存在する。
【0011】
「アサートする」又は「設定する」及び「ネゲートする」(あるいは「ディアサートする」 又は「クリアする」)という用語は、本明細書において、それぞれ、信号、状態ビット、または同様の装置を論理的に真の状態または論理的に偽の状態にすることを言及する場合に用いられている。論理的に真の状態が論理レベル1の場合、論理的に偽の状態は論理レベルゼロである。また、論理的に真の状態が論理レベルゼロの場合、論理的に偽の状態は論理レベル1である。本明細書に記載される各信号は、正の論理又は負の論理として指定されてもよい。負の論理信号の場合、論理的に真の状態が論理レベルゼロに対応する場合に、信号はアクティブローである。正の論理信号である場合、論理的に真の状態が論理レベル1に対応する場合に、信号はアクティブハイである。なお、本明細書に記載される如何なる信号も、負の論理信号又は正の論理信号のいずれかとして指定されてもよい。
【0012】
図1は、本発明の1つの実施形態にしたがったデータ処理システム10のブロック図を示す。データ処理システム10は、プロセッサ12、システムバス14、メモリ16、周辺装置18、周辺装置20およびいくつかの実施形態における周辺装置18を周辺装置20から分離する
図1の点によって示される追加の周辺装置のような複数の周辺装置を備える。メモリ16は、双方向導体によってシステムバス14に結合されるシステムメモリであり、1つの態様において、該双方向導体が複数の導体を有する。図示される実施形態において、周辺装置18および20の各々は、プロセッサ12と同様に複数の双方向導体によってシステムバス14に結合される。プロセッサ12は、バスインタフェースユニット(BIU:bus interface unit)22を備える。BIU22は、複数の導体を有する双方向バスを介してシステムバス14に結合される。BIU22は、双方向導体を介して内部バス24に結合される。内部バス24は、複数の導体の通信バスである。それぞれの双方向導体を介して内部バス24に結合されるのは、命令キャッシュ26、分岐先バッファ(BTB)28、中央処理ユニット(CPU:central processing unit)30およびメモリ管理ユニット(MMU:memory management unit)32である。CPU30は、データ処理動作を実装するプロセッサである。CPU30内には、カウント値を保持するレジスタのような記憶デバイスであるプログラムカウンタ31がある。命令キャッシュ26、BTB28、CPU30およびMMU32の各々はそれぞれの入力/出力(I/O)ポートまたは端子を介して内部バス24に結合される。代替実施形態において、システムバス14は、クロースバースイッチまたは相互接続構造として実装されてもよい。
【0013】
動作中に、プロセッサ12は、複数のデータ処理命令を実行することによって様々なデータ処理機能を実装するように機能する。命令キャッシュ26は、CPU30によって必要とされる可能性がある頻繁に使用される情報の一時的なデータストアである。キャッシュ26内に存在しないCPU30によって必要とされる情報はメモリ16に格納される。MMU32は、CPU30と命令キャッシュ26とメモリ16との間の情報の相互作用を制御する。例えば、MMU32は、仮想アドレス(例えば、CPU30内で使用されるもの)と物理アドレス(例えば、命令キャッシュ26およびメモリ16によって使用されるもの)との間を変換する。BIU22は、プロセッサ12とシステムバス14との間の複数のインタフェースユニットの1つであってもよい。BIU22は、CPU30による分岐命令実行を含む命令実行に関する情報の流れを調整するように機能する。分岐命令の実行によって得られる制御情報およびデータは、BIU22を介してCPU30とシステムバス14との間で交換される。BTB28は、複数のエントリを格納するバッファである。エントリの各々は、分岐命令に対応する命令アドレス、分岐命令の対応する分岐先アドレス、対応する状態情報および対応する分岐予測情報を格納する。より少ない情報または多くの情報が各エントリに格納されてもよい。CPU30は、CPU30内の命令パイプラインに与えられ、内部バス24を介してBTB28に送信される命令アドレスを生成する。BTB28は、CPU30によって生成され得る命令アドレスのサブセットを含む。BTB28でヒットする命令アドレスをCPU30から受信することに応答して、BTB28は分岐先アドレスおよび関連する状態情報をCPU30に与える。なお、以下にさらに説明するように、BTB28によって与えられる分岐先アドレスは推論的であり、よって、予測ミスを生じる可能性がある。
【0014】
図2は、命令の実行およびBTB28の使用に関する
図1のCPU30のより詳細な部分を示す。CPU30は、制御およびインタフェースユニット52、命令フェッチユユニット40、命令デコードユニット46、実行ユニット48およびレジスタファイル50を備える。制御およびインタフェースユニット52は、アドレス生成回路54、同一ページ状態カウンタ55および同一ページ閾値57を備え、命令フェッチユニット42、命令デコードユニット46、実行ユニット48およびレジスタファイル50の各々に双方的に結合される。アドレス生成回路54は、命令アドレス100をバス24に与え、バス24からBTBターゲットアドレス、同一ページインジケータおよびBTB予測情報を受信する。アドレス生成回路54はまた、バス24と他のデータ/制御情報を通信してもよい。命令フェッチユニット40は、命令バッファ44および命令レジスタ42を含む。命令バッファ44は、命令レジスタ42の入力に接続される出力を有する。命令バッファは、命令デコードユニット46に双方的に結合される。実行ユニットは、分岐実行ユニット49を含み、CPU30内での必要に応じて1つまたは複数の追加の実行ユニットを含んでもよい。
【0015】
このCPU30の部分の図示される実施形態において、制御およびインタフェースユニット52は、命令キャッシュ26またはメモリ16からの命令のフェッチ(取得)を実行するために、命令フェッチユニット40を制御する。命令デコードユニット46は、1つまたは複数の実行ユニット48の命令のデコードを実行する。レジスタファイル50は、実行ユニット48を支持するために使用される。制御およびインタフェースユニット52内には、アドレス生成回路54がある。アドレス生成回路54は、命令アドレスをBTB28に送信し、それに応答して、BTBターゲットアドレス、同一ページインジケータおよびBTB予測情報を受信してもよい。ターゲットアドレスが命令キャッシュ26内に存在せずに有効でない場合、命令キャッシュ26またはメモリ16のいずれかからターゲットアドレスの命令を取得するために、BTBターゲットアドレスがCPU30によって使用される。
【0016】
図3は、1つの実施形態にしたがったより詳細なBTB28を示す。BTB28は、CPU30から命令アドレス100を受信し、ここで、命令アドレス100は、ページアドレス部分、タグ部分およびインデックス部分を含む。図示される実施形態において、ページアドレス部分は命令アドレス100の20ビットの最上位ビットを含み、タグ部分は次の4ビットの最上位ビットを含み、インデックス部分は次の6ビットの最上位ビットを含む。1つの実施形態において、命令アドレス100は合計32ビットを含み、ここで、2ビットの最下位ビットはBTB28によって使用されない。BTB28は、BTBアレイ106、BTB制御回路102、ウェイ0〜5の比較器108、ウェイ6および7の比較器116、ページアドレス内容アドレス指定可能メモリ(CAM:content addressable memory)104、一致インジケータセレクト110、ANDゲート112および114、分岐先生成器119および分岐先アドレスセレクタ124を含む。図示される実施形態において、BTB28はマルチウェイ・セットアソシエティブ方式BTBであり、ここで、BTBアレイ106は8ウェイ(ウェイ0〜7)および64セット(セット0〜セット63)を含む。よって、BTB28のエントリはセットとウェイの交点を示し、例えば、BTB28の各ウェイが64エントリを含む。なお、BTB28は、如何なる数のウェイおよび如何なる数のセットを含んでもよく、または、直接マッピングされたBTBでもよい。また、ウェイ0〜ウェイ7は、それぞれw0〜w7と呼ばれてもよい。BTBアレイ106は、命令アドレス100を受信し、BTB制御回路102に双方向に結合される。BTB制御回路102はまた、CPU30の分岐実行ユニット49から情報(例えば、分岐命令アドレス、分岐先アドレスおよび分岐状態)を受信し、また、ページアドレスCAM104に双方向に結合される。BTBアレイ106は、w0タグ〜w5タグを比較器108に与え、w0sel〜w5selを一致インジケータセレクト110に与え、w6タグおよびw7タグを比較器116に与える。比較器108はまた、命令アドレス100のタグ部分(短タグアドレスと呼ばれる)を受信し、w0タグ一致をANDゲート112の第1入力に与え、w5タグ一致をANDゲート114の第1入力に与える。一致インジケータセレクト110は、ページアドレスCAM104からページアドレス一致インジケータを受信し、w0ページ一致をANDゲート112の第2入力に与え、w5ページ一致をANDゲート114の第2入力に与える。ANDゲート112はANDゲート112の出力でヒットウェイ0信号を与え、ANDゲート114はANDゲート114の出力でヒットウェイ5信号を与える。BTB28はまた、ANDゲート112と114との間の3つの点によって示される追加のANDゲートを含む。ここで、各ANDゲートは、第1入力で比較器108からウェイタグ一致信号を受信し、第2入力で一致インジケータセレクト110からウェイページ一致信号を受信し、出力で対応するウェイヒット信号を与える。よって、図示される実施形態において、ヒットウェイ1信号〜ヒットウェイ4信号を与えるために、4つの追加のANDゲートが存在してもよい。比較器116は、命令アドレス100の完全タグアドレス(ページアドレス部分および命令アドレス100のタグ部分と対応する)を受信し、ヒットウェイ6信号およびヒットウェイ7信号を与える。なお、比較器108および116の各々は、BTBアレイ106から状態ビットを受信してもよい。例えば、比較器108および116の各々は、一致を認めるために有効ビットを使用してもよい。
【0017】
連結ターゲットアドレス(TA:target address)118は、BTBからのw0TAおよび命令アドレス100のページアドレス部分を受信し、w0TAと連結されるページアドレスを格納する格納回路である。連結ターゲットアドレス(TA)120は、BTB106からのw3TAおよび命令アドレス100のページアドレス部分を受信し、w3TAと連結されるページアドレスを格納する格納回路である。命令アドレス100の命令のページアドレス部分がw1TAおよびw2TAの各々と連結され得るように、w1TAおよびw2TAの各々も、連結ターゲットアドレス格納回路に与えられる。w0TA〜w3TAおよびw6TAの各々の連結アドレスは分岐先アドレスセレクタ124に与えられる。w4TA、w5TAおよびw7TAの各々は分岐先アドレスセレクタ124に与えられる。分岐先アドレスセレクタ124はまた、ヒットウェイ信号(ヒットウェイ0〜ヒットウェイ7)の各々を受信し、分岐先アドレスを出力する。BTBアレイ106はまた、同一ページインジケータおよび予測インジケータを与える。分岐先アドレスセレクタ124からの分岐先アドレスならびにBTBアレイ106からの同一ページインジケータおよび予測インジケータの各々は、すべてバス24を介して制御およびインタフェースユニット52(例えば、アドレス生成回路54)に与えられてもよい。分岐先生成器119は、w0TA〜w7TAの各々を受信し、ターゲットアドレスを分岐先アドレスセレクタ124に与え、連結TA118、連結TA120および連結TA122を含む。
【0018】
図2および3を参照すると、BTB28は、CPU30から命令アドレス100を受信し、命令アドレス100がBTB28内でヒットするかを決定する。CPU30に戻される命令アドレス100のBTB予測情報は、ヒット表示(ヒットウェイ信号(ヒットウェイ0〜ヒットウェイ7)に基づく)および予測情報を含んでもよい。また、分岐先アドレスセレクタ124からの分岐先アドレスは、BTBターゲットアドレスとしてCPU30に与えられる。1つの実施形態において、命令アドレスは、命令キャッシュ26またはメモリ16から命令フェッチユニット40によって(個別に又は2つ以上のグループで同時に)フェッチされる。命令フェッチユニット40によってフェッチされる各命令は、命令バッファ44に配置され、命令アドレスが分岐命令に対応することをBTB28が示すかを決定するために、命令アドレス100としてBTB28に与えられる。例えば、命令アドレス100がBTB28でミスを生じる場合、命令アドレス100は分岐命令ではないと仮定され、命令アドレス100の処理はCPU30の命令パイプラインを通して続く(ミスの指示はBTB予測情報を介してCPUに与えられてもよい。)。しかしながら、命令アドレス100がBTB28でヒットする場合、命令アドレス100は分岐命令であると仮定され、分岐命令が成立すべきか成立しないべきかを決定するために、BTB予測情報が使用されてもよい。例えば、命令アドレス100がBTB28でヒットし、BTB28から受信されるBTB予測情報が成立する分岐を示す場合、制御およびインタフェース52は、フェッチングが分岐先アドレスで推論的に開始できるように、BTBターゲットアドレス(BTB28によって受信されたもの)を命令フェッチユニット40に与えてもよい。最終的には、命令アドレス100は命令レジスタ42に到達し、CPU30の命令パイプラインを通して進む。すなわち、命令アドレス100は命令レジスタ42からデコードのために命令デコードユニット46に与えられ、次に、実行のために、実行ユニット48に与えられる(必要に応じてレジスタファイル50にアクセスしてもよい)。命令アドレス100が分岐命令としてデコードされる場合、分岐実行ユニット49により解決される。命令アドレス100が解決された場合、BTB28が命令アドレス100の分岐命令を成立したものとして正しく予測したかどうかが分かる。分岐が正しく予測された場合、実行は現在の位置から続く。分岐が予測ミスの場合、CPU30は、予測ミスに対処し、必要に応じてパイプラインをフラッシュ(flush)し、予測ミスが起こった時点まで実行を戻してもよい(例えば、命令アドレス100に戻って次の順序の命令をフェッチする)。よって、BTB28でヒットが起こるが、分岐が成立するもの又は成立しないものとして正しく予測されない場合、予測ミスが起こる可能性がある。または、BTB28が分岐を成立するものとしてしく予測するが、ターゲットアドレスを正しく予測しない場合、予測ミスが起こる可能性がある。命令アドレス100がBTB28でヒットするが、分岐命令ではないことが分かった場合にも、予測ミスが起こる可能性がある。例えば、命令アドレス100が実際には分岐命令ではなかったことを命令デコードユニット46によって決定される可能性があり、これも、CPU30によって対処される必要がある予測ミスを生じる。
【0019】
さらに、各命令アドレス100について、BTB28は、必要に応じて割り当てられてもよく、更新されてもよい。例えば、命令がBTB28で予測ミスを生じ、命令デコードユニット46によって成立する分岐命令としてデコードされる場合、新たなエントリがBTB28への分岐命令のために割り当てられてもよい。また、BTB28でヒットした分岐が予測ミスを生じる場合、BTB28内の対応するエントリが適切に更新されてもよい。BTB28の動作は、以下に
図4〜12を参照してより詳細に記載される。
【0020】
図3を参照すると、BTBアレイ106のウェイ0〜7の各々は、複数のエントリを含む。図示される実施形態において、エントリの各々は、タグアドレスを格納するタグフィールド、状態情報を格納する状態フィールド、ターゲットアドレスを格納するTAフィールドおよび予測情報を格納する予測フィールドを含む。しかしながら、
図4〜8および13を参照して記載されるように、各ウェイのエントリはウェイに依存して異なってもよい。
【0021】
例えば、
図4を参照すると、各ウェイは、異なる長さのタグおよびターゲットアドレス(TA)を格納するように構成されてもよい。例えば、ウェイ0〜ウェイ3の各々のエントリは短タグアドレスおよび短TAを格納する。ウェイ4およびウェイ5の各々のエントリは短タグアドレスおよび完全TAを格納する。ウェイ6のエントリは完全タグアドレスおよび短TAを格納し、ウェイ7のエントリは完全タグアドレスおよび完全TAを格納する。4Kのページサイズを仮定する1つの例において、完全タグアドレスは24ビット値であってもよいが、短タグアドレスは4ビット値のみであってもよい。この4ビット値が、特定ページにインデックス付けすることを可能にする。よって、1つの実施形態において、完全タグアドレスは、アドレスを完成するために更なるビットを要しないアドレスであり、短タグアドレスは、完全タグアドレスを完成するために追加のビットを要する。さらに、短タグアドレスを格納する各エントリはまた、選択フィールドを含む。この選択フィールドは、タグアドレスの残りの上位ビットを与えるために使用される。例えば、この例において、選択フィールドは、ページアドレスと対応するタグアドレスの残りの20ビットの上位ビットを与えるために使用される。1つの実施形態において、ウェイ0〜5内に格納された短タグのページアドレスは、ページアドレスCAM104に格納される。ページアドレスCAM104は、如何なる数のエントリを有してもよく、1つの実施形態において、8つのエントリを含む。4Kのページサイズを仮定するこの例において、CAM104の各エントリは、20ビットのページアドレスを格納する。1つの実施形態において、CAM104は、命令アドレス100のページアドレス部分の間の一致を実行し、
図3に示すように、そのエントリの各々に1つのページアドレス一致インジケータを与える。よって、選択フィールドは、8つのページアドレス一致インジケータから適切なページアドレス一致インジケータを選択するために使用される3ビットの値でもよい。よって、選択フィールドのサイズは、ページアドレスCAM104内のエントリ数に依存してもよい。完全タグアドレスを格納するエントリについては、タグアドレスを完成するために追加のアドレスビットが必要ないため、選択フィールドは必要ない。
【0022】
更に
図4を参照すると、ウェイ0〜ウェイ3およびウェイ6のエントリの各々は短TAを格納し、ウェイ4、ウェイ5およびウェイ7のエントリの各々は完全ターゲットアドレスを格納する。1つの実施形態において、各短TAは10ビットのみでもよく、完全TAは30ビットでもよい。よって、1つの実施形態において、完全TAは、所望のデータのアドレス指定を完成するために更なるビットを要しないアドレスであり、短TAは、完全TAを完成するために追加のビットを要する。1つの実施形態において、ウェイ0〜ウェイ3またはウェイ6からのTAが与えられた場合、完全TAを与えるために、TAはまず命令アドレス100のページアドレス部分と連結される。すなわち、
図3に示すように、w0TA〜w3TAおよびw6TAの各々は、分岐先アドレスセレクタに与えられる前に、ページアドレス部分と連結される。しかしながら、w4TA、w5TAおよびw7TAは完全TAであるため、w4TA、w5TAおよびw7TAは分岐先アドレスセレクタ124に直接的に与えられる。以下により詳細に説明するように、分岐先アドレスセレクタ124は、分岐先アドレスとして与えるために、ヒットウェイ0〜ヒットウェイ7のインジケータに基づいて、受信した完全TAの1つを選択する。
【0023】
図5は、短タグおよび短TAを格納するエントリのウェイの例示的なエントリ150のより詳細な概略図を示す。例えば、エントリ150は、ウェイ0〜3のエントリのフォーマットであってもよい。エントリ150は、4ビットのタグアドレス、3ビットの選択フィールド、状態フィールド、10ビットのTAフィールドおよび予測フィールドを含む。1つの例において、状態フィールドは様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびLRU(least recently used)フィールド(これは、例えば、BTB28への割り当て中に使用されてもよい)を含む。なお、LRUフィールドはBTBアレイ106とは別に格納されてもよく、各LRUフィールドがセットの全体に対応してもよい。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【0024】
図6は、短タグおよび完全TAを格納するエントリのウェイの例示的なエントリ152のより詳細な概略図を示す。例えば、エントリ152は、ウェイ4および5のエントリのフォーマットであってもよい。エントリ152は、4ビットのタグアドレス、3ビットの選択フィールド、状態フィールド、30ビットのTAフィールドおよび予測フィールドを含む。1つの例において、状態フィールドは、命令タイプフィールド、有効フィールド、LRUフィールド(これは、例えば、BTB28への割り当て中に使用されてもよい)および同一ページインジケータフィールドのような様々なフィールドを含む。1つの実施形態において、同一ページインジケータは、完全TAが分岐アドレスと同一ページに配置されるかを示す単一ビットのフィールドである。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【0025】
図7は、完全タグおよび短TAを格納するエントリのウェイの例示的なエントリ154のより詳細な概略図を示す。例えば、エントリ154は、ウェイ6のエントリのフォーマットであってもよい。エントリ154は、24ビットのタグアドレス、状態フィールド、10ビットのTAフィールドおよび予測フィールドを含む。1つの例において、状態フィールドが様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびLRUフィールド(これは、例えば、BTB28への割り当て中に使用されてもよい)を含む。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【0026】
図8は、完全タグおよび完全TAを格納するエントリのウェイの例示的なエントリ156のより詳細な概略図を示す。例えば、エントリ156は、ウェイ7のエントリのフォーマットであってもよい。エントリ156は、24ビットのタグアドレス、状態フィールド、30ビットのTAフィールドおよび予測フィールドを含む。1つの例において、状態フィールドは、様々なフィールドを含み、例えば、命令タイプフィールド、有効フィールドおよびLRUフィールド(これは、例えば、BTB28への割り当て中に使用されてもよい)および同一ページインジケータフィールドを含む。1つの実施形態において、同一ページインジケータは、完全TAが分岐アドレスと同一ページに配置されるかを示す単一ビットのフィールドである。予測フィールドは、タグアドレスに対応する分岐が成立すると予測されるかまたは成立しないと予測されるかのような予測情報を含んでもよい。
【0027】
なお、
図5〜8の例示的なエントリの各々について、各フィールドのビット数はアプリケーションに依存して変化してもよく、図示するものより少ないフィールドまたは多くのフィールドが存在してもよい。さらに、各エントリのフォーマットは、図示されるフォーマットと異なってもよい。
【0028】
なお、代替実施形態において、短タグはアドレスの如何なる部分であってもよく、ここで、CAMのような別の格納ユニットが、完全タグアドレスの残りの最上位部分を格納するために使用されてもよい。すなわち、ページまたはページサイズに依存する必要はない。この場合において、必要に応じて如何なるサイズのCAMが使用されてもよく、必要に応じて如何なるサイズの選択フィールドが使用されてもよい。また、代替実施形態において、如何なるタイプのページアドレスバッファが、ページバッファCAM104の代わりに使用されてもよい。また、
図4に示されるウェイ0〜7の構成は単なる一例である。すなわち、代替実施形態において、短タグ/完全タグおよび短TA/完全TAの如何なる組み合わせが各ウェイに使用されてもよく、
図4の特定の例に制限されない。例えば、1つの代替実施形態において、各ウェイはすべてのエントリについて完全TAを格納してもよい。またさらなる例において、1つのウェイのみが完全タグアドレスを格納し、残りのウェイが選択ビットとともに短タグを格納してもよい。例えば、代替実施形態は
図13を参照して以下に説明される。よって、
図5〜8および13に示すエントリの各々は、
図4の例に従ってセットアップされるBTBに基づく単なる例である。
【0029】
図9は、例えば、同一ページインジケータを生成するためにBTB28内で使用され得る同一ページインジケータ生成器158を示す。同一ページインジケータ生成器158は、ウェイ4、5および7の各々の状態フィールドから同一ページインジケータ(例えば、w4同一ページインジケータ、w5同一ページインジケータおよびw7同一ページインジケータ)を受信し、また、ウェイ0〜3および6の各々からヒットインジケータ(例えば、ヒットウェイ0〜ヒットウェイ3およびヒットウェイ6)を受信する。ヒットウェイ0〜ヒットウェイ7(これは、存在する場合には、どのウェイが命令アドレス100のヒットを生じるかを示す)に基づいて、同一ページインジケータ生成器158は、分岐先アドレスセレクタ124によって与えられる分岐先アドレスが命令アドレス100と同一ページにあるかを示す同一ページインジケータを生成する。なお、ウェイ0〜3および6の各々は短TAを格納するため、これらのウェイのいずれかにおいてヒットが命令アドレス100と同一ページで起こることを仮定する。しかし、ウェイ4、5および7は完全TAを格納するため、TAが同一ページにあるかは分からない。よって、ウェイ4、5および7のエントリの各々も、この情報を与えるために同一ページインジケータを格納する。同一ページインジケータ生成器158によって与えられる同一ページインジケータは、MMU32によるアドレス変換が分岐TAに必要であるかを決定することを可能にする。すなわち、同一ページインジケータに示すように、同一ページにある場合、MMU32をバイパスしてもよい。しかしながら、同一ページにない場合、MMU32はアドレス変換を与える必要がある。
【0030】
図10は、本発明の1つの実施形態にしたがって、BTB28によって分岐先アドレスを生成する方法200のフロー図を示す。方法200はブロック202で開始し、ここで、命令アドレスが受信される(
図3の命令アドレス100に対応してもよい)。フローは次にブロック204に進み、ここで、命令アドレスのインデックス部分はセット0〜63から1つのセットを選択するために使用される。例えば、
図3を参照すると、BTBアレイ106は、セット0〜63の1つのセットを選択する命令アドレス100のインデックス部分を受信する。よって、ウェイタグ(w0タグ〜w7タグ)および選択フィールド(w0sel−w6sel)は、選択されたセットに格納されるウェイタグおよび選択フィールドに対応する。同様に、ウェイTA(w0TA〜w7TA)は、選択されたセットに格納されるウェイTAに対応する。
【0031】
ウェイ0〜5について、方法200はブロック206に続いて、ここで、命令アドレス100のタグ部分は、選択されたセット内でウェイタグ一致(例えば、w0タグ一致〜w5タグ一致)を決定するために使用される。
図3を参照すると、ウェイ0〜5の比較器108は、BTBアレイ106から選択されたセットのw0タグ〜w5タグの各々を受信し、命令アドレス100のタグ部分と各々比較する。よって、比較器108は、ウェイ0〜5の各々について、命令アドレス100のタグ部分との一致が生じたかを示すw0タグ一致〜w5タグ一致を出力する(なお、w0タグ一致〜w5タグ一致はまた、ウェイタグ一致信号または短ウェイタグ一致信号と呼ばれてもよい)。なお、比較器108は、一致を認めるために選択されたセットの有効ビットを使用することにより、一致した選択されたセットからの対応するタグが有効エントリ(エントリの状態ビットによって示される)からのものである場合に一致が起こることを示すためにのみ、w0タグ一致〜w5タグ一致信号の各々がアサートされる。方法200は次にブロック208に続いて、ここで、ページアドレス一致インジケータを生成するために、命令アドレス100のページアドレス部分は、ページアドレスCAM104のエントリと比較される。
図3を参照すると、ページアドレスCAM104は、命令アドレス100のページアドレス部分を受信し、エントリが命令アドレス100のページアドレス部分と一致するかを示すために、CAM104の各エントリの1つのページアドレス一致インジケータを出力する。方法200はブロック210に進み、ここで、ウェイページ一致(例えば、w0ページ一致〜w5ページ一致)は、選択されたセットの選択フィールド(例えば、w0sel〜w5sel)に基づいてページアドレス一致インジケータから生成される。
図3を参照すると、ウェイ0〜5の各々について、対応する選択フィールドは、ページアドレスCAM104によって与えられるページアドレス一致インジケータを選択するために使用され、一致インジケータセレクト110は、ウェイページ一致として、選択されたページアドレス一致インジケータを与える。例えば、ウェイ0について、一致インジケータセレクト110は、ページアドレス一致インジケータから8つのページアドレス一致インジケータの1つのインジケータを選択するために、w0selの3ビットの値を使用し、w0ページ一致としてこの選択されたページアドレス一致インジケータを与える。よって、1つの実施形態において、ページアドレスCAM104も、一致インジケータセレクト110によって使用されるページアドレス一致インジケータを生成する比較器を含んでもよい。あるいは、一致インジケータセレクト110は、ページアドレスCAM104がページアドレスを一致インジケータセレクト110に与え、一致インジケータセレクト110が命令アドレス100のページアドレス部分を受信し、ページアドレス一致インジケータを生成するために比較を実行するように、比較器を含んでもよい。よって、この実施形態において、選択フィールドは、対応するウェイページ一致を生成するためのページアドレスの比較を実行するページアドレスCAM104から適切なページアドレスを選択するために使用されてもよい。
【0032】
ブロック210の後に、方法200はブロック212に続いて、ここで、ヒットウェイ信号(ヒットウェイ0〜ヒットウェイ5)を生成するために、ウェイタグ一致およびウェイページ一致が使用される(なお、ヒットウェイ0〜ヒットウェイ5はまた、短ヒットウェイ信号と呼ばれてもよい)。
図3を参照すると、ANDゲート112および114のようなANDゲートは、ウェイタグ一致信号および対応するウェイヒット信号を生成するための対応するウェイタグ一致信号の各々を受信する。例えば、ウェイ0について、ANDゲート112は、w0タグ一致およびw0ページ一致を受信し、ANDゲート112の出力でヒットウェイ0を与える。よって、w0タグ一致がアサートされ(選択されたセットのw0タグが有効であり、アクセスアドレス100のタグ部分を一致したことを示す)、w0ページ一致がアサートされる(w0selによって選択されるページアドレスCAM14での選択されたページアドレスが命令アドレス100のページアドレス部分と一致したことを示す)場合にのみ、ウェイ0のヒットを示すために、ヒットウェイ0がアサートされる。このように、ウェイ0〜5の各々について、短タグの比較が実行され、ヒットウェイ信号を生成するために、適切に選択されたページアドレス(選択されたセットの選択フィールドによって選択される)との比較が実行される。よって、方法200は、短タグアドレスを格納するウェイについて、ブロック206、208、210および212の方法を実行してもよい。なお、短ヒットウェイ信号を生成するために使用されるANDゲートは、論理回路と呼ばれてもよく、代替実施形態では、短ヒットウェイ信号を生成するために異なる論理回路が使用されてもよい。
【0033】
ブロック204に戻り、ウェイ6および7について、フローはブロック214に進み、ここで、選択されたセット内でウェイヒットを決定するために、命令アドレス100のページアドレスおよびタグ部分が命令アドレス100の完全タグアドレスとして使用される。
図3を参照すると、ウェイ6および7の比較器116は、選択されたセット(w6タグおよびw7タグ)のウェイ6および7の完全アドレスタグを受信し、命令アドレス100のページアドレスおよびタグ部分を命令アドレス100の完全タグアドレスとして受信する。方法200はブロック216に進み、ここで、ヒットウェイ信号、ヒットウェイ6およびヒットウェイ7がウェイヒット信号に基づいて生成される。例えば、比較器116は、w6タグおよびw7タグの各々を命令アドレス100の完全タグアドレス部分と比較し、それぞれヒットウェイ6およびヒットウェイ7を生成する。例えば、1つの実施形態において、w6タグが命令アドレス100の完全タグアドレス部分と一致する場合、ヒットウェイ6がアサートされる。なお、比較器116もまた、一致を認めるために選択されたセットの有効ビットを使用することにより、一致した選択されたセットからの対応するタグが有効エントリ(エントリの状態ビットによって指示される)からのものである場合に一致が起こることを示すためにのみ、ヒットウェイ6およびヒットウェイ7の各々がアサートされる。よって、方法200は、完全タグアドレスを格納するウェイについて、ブロック214および216の方法を実行してもよい。なお、ヒットウェイ6およびヒットウェイ7はまた、完全ヒットウェイ信号と呼ばれてもよい。
【0034】
ブロック212またはブロック216の後に、方法200はブロック218に進み、ここで、ウェイ0〜3および6(短TAを格納する)について、ウェイ分岐先を生成するために、命令アドレス10のページアドレス部分は、選択されたセットの対応するターゲットアドレス(例えば、w0TA〜w3TAおよびw6TA)と連結される。例えば、ウェイ分岐先は、対応するウェイTAと命令アドレス100のページアドレス部分を連結する連結格納回路(例えば、連結格納回路118、120および122)の出力に対応してもよい。連結格納回路の出力は次に、分岐先アドレスセレクタ124に与えられる。更にブロック218を参照すると、ウェイ4、5および7(完全TAを格納する)について、選択されたセットからのTAがウェイ分岐先として与えられる。よって、これらのウェイからのTAは完全TAであるため、これらは分岐先アドレスセレクタ124に直接的に与えられてもよい。方法200は次にブロック220に進み、ここで、ウェイヒット信号(ヒットウェイ0〜ヒットウェイ7)は、分岐先アドレスとしてウェイ分岐先を選択するために使用される。例えば、分岐先アドレスセレクタ124は、どちらのヒットウェイ信号がアサートされるかに基づいて、対応するウェイの分岐先アドレスを選択する。よって、分岐先アドレスセレクタ124によって選択された分岐先アドレスは、CPU30の制御およびインタフェース52にBTBターゲットアドレスとして与えられてもよい。方法200はブロック222に続いて、ここで、同一ページインジケータおよび予測情報(ヒットを生じる選択されたセットのウェイに対応する)は、予測情報および同一ページインジケータとしてCPU30の制御およびインタフェース52に与えられてもよい。なお、1つの実施形態において、選択されたセットのウェイの全てがヒットを生じない場合、このミス情報は別のヒット/ミスインジケータまたは予測情報によってCPU30に与えられてもよい。
【0035】
図11および12は、本発明の1つの態様にしたがったBTB28での割り当て方法250のフロー図を示す。方法250はブロック252で開始し、ここで、有効な命令がデコードで受信される。例えば、
図2を参照すると、命令レジスタ42の有効な命令は、命令フェッチユニット40によって命令デコードユニット46に与えられる。方法250はブロック254に続いて、ここで、シーケンシャル命令アドレス(sequential instruction address)が命令について計算される。方法は決定の菱形ブロック256に進み、ここで、シーケンシャル命令アドレスにより命令フローがページバウンダリを超えることになるかが決定される(これは、例えば、制御およびインタフェース52または命令デコードユニット56内で実行されてもよい)。そうであれば、フローはブロック258に進み、ここで、同一ページカウンタがリセットされる。例えば、
図2を参照すると、同一ページカウンタは、同一ページ状態カウンタ55を示してもよく、ブロック258において、カウンタ55は、例えばゼロのような第1所定値にリセットされてもよい。ブロック258の後に、または決定の菱形ブロック256でページバウンダリが超えられない場合、方法250は決定の菱形ブロック260に進み、ここで、有効な命令が分岐命令であるかが決定される。例えば、命令をデコードした結果、命令デコードユニット46は、命令が実際に分岐命令であるかを決定してもよい。そうでなければ、方法250はブロック252に進み、ここで、次の有効な命令が命令デコードユニット46によって受信されてもよい。分岐命令と決定された場合、方法250はブロック262に進み、ここで、分岐命令の分岐先アドレスが計算またはフェッチされる。例えば、これは、分岐実行ユニット49によって実行された分岐の解決(branch resolution)の一部として行われてもよい。方法250は次に決定の菱形ブロック264に進み、ここで、分岐が予測ミスであったかが決定される。例えば、分岐は、実際に成立しなかった場合に(BTB28からの予測情報等によって)成立したものとして予測ミスされる可能性があり、その逆も同様である。分岐が予測ミスではなかった場合、分岐命令の処理はパイプラインを通して続いて、方法250はブロック252に戻り、ここで、次の有効な命令が命令デコードユニット46によって受信される。
【0036】
決定の菱形ブロック264で、分岐が予測ミスされたことが決定された場合、方法250は決定の菱形ブロック266に進み、ここで、分岐命令がBTB28によって分岐命令として予測されたかが決定される。そうであれば、方法250はブロック268に進み、ここで、BTB28は必要に応じて更新される。例えば、命令がBTB28でヒットを生じた場合、命令は分岐命令として予測される。しかしながら、分岐命令がヒットを生じたが、BTB28からのヒットとともに与えられる予測情報が分岐予測ミスを生じている。よって、予測ミスした分岐命令に対応するBTB28のエントリは、更新される必要があってもよい。決定の菱形ブロック266で、分岐命令は分岐命令として予測されなかった場合(例えば、BTB28でミスしたため)、方法250は決定の菱形ブロック270に進む。この時点において、現在の有効な命令は実際には分岐命令であるが、BTB28でミスしたため、BTB28の新たなエントリは、方法250の残りの部分を参照して以下に説明するように分岐命令に割り当てられてもよい。
【0037】
決定の菱形ブロック270を参照して、同一ページカウンタがゼロより大きくない場合、方法250はブロック272に進み、ここで、同一ページカウンタは1に設定される。なお、現在のアドレスに対する次のシーケンシャル命令アドレスがページバウンダリを超えることを生じる場合、同一ページカウンタ(例えば、
図2のカウンタ55)はブロック258でゼロにリセットされている。よって、ページバウンダリを超えるため、完全タグアドレスがBTB28に割り当てられるべきである。ブロック272から、方法250はブロック278に進み、ここで、図示される実施形態のウェイ6および7のみが完全タグアドレスを格納するように構成されるため、ウェイ6またはウェイ7は現在の分岐アドレスの割り当てについて選択される。エントリがウェイ6または7の選択されたウェイに割り当てられた場合、完全タグアドレスはエントリに格納される。ウェイ6または7のどちらを選択するかの決定は、
図12の方法250の部分を参照して説明するように分岐先アドレスに基づいて実行されてもよい。
【0038】
決定の菱形ブロック270に戻り、同一ページカウンタがゼロより大きい場合、方法250は決定の菱形ブロック290に進み、ここで、現在のページアドレス(例えば、現在の分岐命令のページアドレス)がすでにページアドレスCAM104にあるかが決定される。例えば、制御およびインタフェース52は、現在のページアドレスがページアドレスCAM104にあるかを決定するために、BTB28のBTB制御回路102と通信してもよい。現在のページアドレスがページアドレスCAM104にある場合、方法250はブロック296に進み、ここで、ウェイ0〜5の1つのウェイが割り当てについて選択され、ページアドレスCAM104の既存のエントリが割り当てのために使用されてもよい。すなわち、エントリがウェイ0〜5の選択されたウェイに割り当てられた場合、現在の分岐命令アドレスのタグ部分はエントリに格納されてもよく、エントリの選択値は、ページアドレスCAM104の既存のエントリを選択するために設定されてもよい。ウェイ0〜5のどれを選択するかの決定は、
図12の方法250の部分を参照して以下に記載されるように分岐先アドレスに基づいてさらに実行されてもよい。
【0039】
決定の菱形ブロック290に戻り、現在のページアドレスがページアドレスCAM104にまだ存在しない場合、方法250は決定の菱形ブロック292に進み、ここで、同一ページの閾値が満たされるかが決定される。例えば、1つの実施形態において、ページアドレスCAM104の新たなエントリを割り当てるかを決定するために、CPU30の制御およびインタフェース52に配置され得る同一ページ閾値57が使用されてもよい。1つの実施形態において、特定の数の分岐命令がメモリの同一ページで生じるまで、ページアドレスCAM104の新たなエントリは割り当てられない。例えば、1つの実施形態において、メモリの特定のページ(このページアドレスはページアドレスCAM104にまだ存在しない)で分岐命令の第3回のみの発生により、新たなエントリが割り当てられる。よって、決定の菱形ブロック292を参照すると、現在のページアドレスについて同一ページ閾値を満たさない場合、方法250はブロック298に進み、ここで、同一ページカウンタ55がインクリメントされる。よって、同一ページに起こる後の分岐命令(よって、ブロック254から、決定の菱形ブロック256、決定の菱形ブロック260、ブロック262、再び決定の菱形ブロック292に進む)のときに、同一ページ閾値が分岐命令によって満たされるまで、同一ページカウンタ55が再びインクリメントされてもよい。なお、分岐命令がページバウンダリを超えると、同一ページカウンタ55はゼロにリセットされる(ブロック258で)。ブロック298の後に、方法250はブロック278に進み、ここで、ウェイ6または7が現在の分岐命令の割り当てについて選択されてもよい。すなわち、同一ページの閾値が満たされなかったため、ページアドレスCAM104の新たなエントリが割り当てられておらず、よって、完全タグアドレスが割り当ての際に、BTB28に格納される必要がある。この例において、ウェイ6および7のみが完全ターゲットアドレスの格納を可能する。
図12の方法250の部分を参照して以下に説明されるように、どちらのウェイ6および7を選択するかの決定は、分岐先アドレスに基づいてさらに実行されてもよい。
【0040】
決定の菱形ブロック292に戻り、同一ページの閾値が満たされた場合(すなわち、メモリの同一ページ内で生じる十分な分岐命令が存在する場合)、方法250はブロック294に進み、ここで、現在の分岐命令のページアドレスを格納するために、ページアドレスCAMのエントリが割り当てられてもよい。ページアドレスCAM104のどのエントリを割り当てるかを決定するために、如何なるプロトコルが使用されてもよく、例えば、LRU(least recently used)、疑似LRU(PLRU:pseudo LRU)、ラウンドロビン、などが使用されてもよい。方法250はブロック295に進み、ここで、ウェイ0〜5の1つのウェイが割り当てについて選択されてもよく、ページアドレスCAM104の既存のエントリが割り当てのために使用されてもよい。すなわち、エントリがBTBアレイ106のウェイ0〜5の選択されたウェイに割り当てられた場合、現在の分岐命令アドレスのタグ部分はエントリに格納されてもよく、エントリの選択値は、ページアドレスCAM104の新たに割り当てられたエントリを選択するために設定されてもよい。
図12の方法250の部分を参照して以下に説明するように、どのウェイ0〜5を選択するかの決定は、分岐先アドレスに基づいてさらに実行されてもよい。
【0041】
方法250は点Aで
図12に続く。ブロック278、295および296の各々の後に、方法250は、点Aを介して
図12に存在するブロック280に続く。ブロック280において、現在の分岐命令(例えば、ブロック262で決定される)の分岐先アドレスのページアドレスは、現在の分岐命令アドレスのページアドレスと比較される。方法250は決定の菱形ブロック282に続いて、ここで、分岐先アドレスのページアドレスおよび分岐命令アドレスが一致するかが決定される。そうであれば、方法250はブロック288に続いて、ここで、ウェイ6または7が割り当てについて選択された場合(例えば、方法250がブロック278から点Aに入った場合)、ウェイ6が割り当てについて選択され、ウェイ0〜5が割り当てについて選択された場合(例えば、方法250がブロック295または296から点Aに入った場合)、ウェイ0〜3の1つのウェイが割り当てについて選択される。すなわち、ページアドレスが決定の菱形ブロック282で一致した場合、分岐先は分岐命令と同一メモリページに配置される。その場合において、短TAを格納することを可能するBTB28のウェイが割り当てについて選択されてもよく、、この例において、ウェイ0〜3およびウェイ6のエントリは、上述のように短TAを格納する。なお、BTB制御回路102は、割り当てについてウェイ0〜3の1つのウェイを選択するために如何なる方法を使用してもよく、例えば、LRU、PLRU、ラウンドロビン、などを使用してもよい。ウェイ6のエントリまたはウェイ0〜3の1つのウェイを割り当てるときに、BTB制御回路102は、選択されたウェイのエントリに必要な情報を格納するために、CPU30の分岐実行ユニット49から受信した情報(例えば、分岐アドレス、分岐TA、分岐状態)を使用してもよい。さらに、BTB制御回路102は、新たなBTBエントリを格納する選択されたウェイのセットを選択するために、分岐先アドレスのインデックス部分を使用してもよい。
【0042】
決定の菱形ブロック282に戻り、分岐先アドレスのページアドレスおよび分岐命令が一致しない場合、方法250はブロック284に進み、ここで、同一ページカウンタ55が再びリセットされる。方法250はブロック286に進み、ここで、ウェイ6または7が割り当てについて選択された場合(例えば、方法250がブロック278から点Aに入った場合)、ウェイ7が割り当てについて選択され、ウェイ0〜5が割り当てについて選択された場合(例えば、方法250がブロック295または296から点Aに入った場合)、ウェイ4または5の1つのウェイが割り当てについて選択される。すなわち、ページアドレスが決定の菱形ブロック282で一致しない場合、分岐先は分岐命令と同一メモリページに配置されない。この場合において、完全TAを格納することを可能にするBTB28のウェイが割り当てについて選択され、この例において、ウェイ4、5および6のエントリが上述のように完全TAを格納する。なお、BTB制御回路102は、割り当てについてウェイ4または5の1つのウェイを選択するために如何なる方法を使用してもよく、例えば、LRU、PLRU、ラウンドロビン、などを使用してもよい。ウェイ7のエントリまたはウェイ4または5の1つのウェイを割り当てるときに、BTB制御隘路102は、必要な情報を選択されたウェイのエントリに格納するために、CPU30の分岐実行ユニット49から受信した情報(例えば、分岐アドレス、分岐TA、分岐状態)を使用してもよい。さらに、BTB制御回路102は、新たなBTBエントリを格納する選択されたウェイのセットを選択するために、分岐先アドレスのインデックス部分を使用してもよい。ブロック288および286の後に、方法250は終了する。
【0043】
図13は、BTB28のウェイ0〜7がどのように構成され得るかの別の例を示す。例えば、
図13を参照すると、各ウェイのタグエントリは
図4と同一でもよく、ここで、
図4に関する上述の記載が適用される。すなわち、ウェイ0〜ウェイ5の各々のエントリは、短タグアドレスおよび短タグアドレスの対応する選択ビットを格納し、ウェイ6および7の各々のエントリは完全タグアドレスを格納する。よって、上述のように、例えば、ページアドレスCAM104によって与えられる適切なページアドレス一致インジケータを選択することによって、タグアドレスの残りの上位ビットを与えるために、選択フィールドが使用される。しかしながら、
図4の実施形態とは異なり、
図13の実施形態は、各ウェイの各エントリが短TAおよび短TAの対応する選択フィールドを格納することを示す。この例において、TAの上位ビットを格納するために、TAページアドレスバッファ(
図14示す)が使用されてもよく、TAの残りの上位ビットを選択するために、各エントリの選択フィールドが使用されてもよい。4Kバイトのページサイズを仮定する上述の例において、短TAは10ビットであり、生成される完全TAは30ビットである。選択フィールドは、完全TAを完成するためにTAページアドレスバッファから適切なエントリを選択するのに十分なビットを含む。例えば、以下に記載されるように、短TAの選択フィールドは3ビットであってもよい。
【0044】
図14は、
図13の例にしたがった分岐先生成器401を示す。
図14の分岐先生成器401は、
図1の分岐先生成器119の代わりに使用されてもよい。分岐先生成器401は、BTBアレイ106の選択されたセットからw0TA〜w7TAの各々を受信する。しかし、この例において、w4TA、w5TAおよびw7TAの各々も、w0TA〜w3TAおよびw6TAのような短ターゲットアドレスである。分岐先生成器401はまた、選択されたセットからw0TAsel〜w7TAselの各々を受信する。分岐先生成器401は、各ウェイについてTAページアドレスバッファ410およびマルチプレクサを含み、w0のマルチプレクサ(MUX)400およびw7のマルチプレクサ(MUX)402を含む。TAページアドレスバッファ410は7つのエントリを含み、各エントリは20ビットのTAページアドレス(完全TAの残りの上位の20ビットに対応する)を格納する。MUX400および402のような各MUXは、現在のページアドレス(命令アドレス100のページアドレス部分)およびTAページアドレスバッファ410の7つのエントリの各々を受信し、対応する選択信号(w0TAsel〜W7TAselの1つ)に基づいて、各MUXは選択されたTAページアドレスを出力する。よって、TAページアドレスバッファ410が7エントリを含む図示される実施形態において、各TA選択フィールドは、3ビットを含み、ここで、「000」の値が
図2の命令アドレス100の現在のページアドレス部分を選択してもよく、「001〜111」の値がバッファ410の7つエントリの1つのエントリを選択する。例えば、w0に対応するMUX400を参照すると、w0TAselの「000」の値は、現在のページアドレスがMUX400によって出力されることを生じ、「001」の値は、バッファ410の第1エントリがMUX400によって出力されることを生じ、「010」の値は、バッファ410の第2エントリがMUX400によって出力されることを生じ、以下同様である。上述のように、連結回路404および406のような連結回路は、分岐先アドレスセレクタ124に与えられる完全TAを生成するために、各MUXの出力に与えられる。例えば、連結回路404は、w0TA(短TAである)とMUX400によって与えられるTAページアドレスを連結する。同様に、MUX402は、w7TAと連結されるために連結回路406に与えられる適切なTAページアドレスを選択するために、w7TAselを使用する。
【0045】
図15は、同一ページインジケータ生成器408を示す。同一ページインジケータ生成器408は、同一ページインジケータを生成するために、
図9の同一ページインジケータ生成器158の代わりに
図13および14の例で使用されてもよい。同一ページインジケータ生成器408は、ターゲットアドレスが現在のページアドレスと同一ページにあるかを示す各ウェイのインジケータ(インジケータ411および412を含む)を受信する。すなわち、対応する選択信号が「000」と等しい場合(これは、現在のページアドレスが分岐先生成器401によって短TAと連結されるために選択されたことを示す)、インジケータ411および412のようなインジケータの各々はアサートされる。同一ページインジケータとして与えられる同一ページインジケータ生成器408によって受信された適切なインジケータを選択するために、ヒット信号(ヒットウェイ0〜ヒットウェイ7)が使用される。なお、対応するTAsel信号が「000」以外である場合、ページアドレス(TAページアドレスバッファ410から選択されたもの)は現在のページアドレス(現在の分岐命令)と同一ページにないことが仮定される。
【0046】
よって、上述の方法10〜12は、分岐先アドレスの生成のためおよび
図13〜15を参照して記載される短TAおよび対応する選択フィールドに適応するための割り当てのために変更されてもよい。また、代替実施形態において、ウェイのサブセットのみが短TAおよび対応する選択フィールドの両方を格納してもよく、残りのウェイが完全TAを格納してもよい。
【0047】
ここで、改善した格納効率を有するBTBが提供されることが分かる。1つの実施形態において、BTBの異なるウェイは、異なるサイズのタグアドレスおよび異なるサイズのTAを格納するために使用されてもよい。例えば、BTBのいくつかのウェイのエントリは、短タグアドレスを格納するために使用されてもよく、BTBの他のウェイのエントリは、完全タグアドレスを格納するために使用されてもよい。同様に、BTBのいくつかのウェイのエントリは、短TAを格納するために使用されてもよく、BTBの他のウェイのエントリは、完全TAを格納するために使用されてもよい。いずれかの特定のウェイについて、エントリは、短/完全タグアドレスおよび短/完全TAの如何なる組み合わせを格納するように構成されてもよい。さらに、短タグアドレスの残りアドレスビットを示すために、短タグアドレスおよび追加の選択フィールドを格納するために使用されるエントリが格納されてもよい。例えば、短タグアドレスの残りのアドレスビットは、短タグアドレスのページアドレスに対応してもよく、ページアドレスバッファに格納されてもよい。ここで、ページアドレスバッファから適切なページアドレスを選択するために、選択フィールドが使用される。このように、BTBの格納スペースが減少され得る。同様に、短TAを格納するために使用されるエントリは、TAページアドレスバッファから短TAの残りのアドレスビットを与えるために使用される対応する選択フィールドを含んでもよい。
【0048】
本発明を実現する装置は、ほとんどの部分において当業者に周知の電子部品及び回路で構成されるため、回路の詳細については、上記のように必要と考えられる程度以上には説明されていない。これは、本発明の基本的な概念の理解と認識のためであり、また、本発明の教示を不明瞭にしたり、注意をそらしたりしないようにするためである。
【0049】
上記実施形態のいくつかは、必要に応じて、種々の異なる情報処理システムを用いて実装されてもよい。例えば、
図1及びそれについての説明は、例示的な情報処理アーキテクチャを記載するが、この例示的なアーキテクチャは、本発明の種々の態様を説明する上での有用な参照を提供するために示されているに過ぎない。もちろん、アーキテクチャの説明は説明のために単純化されており、これは、本発明に従って用いられ得る適切なアーキテクチャの多くの異なる種類のうちの一つに過ぎない。当業者であれば、論理回路ブロック間の境界は、単に例示のためのものであり、代替実施形態は、論理ブロックまたは回路要素を結合してもよく、種々の論理ブロック又は回路要素による機能を分解してもよいことが分かる。
【0050】
本明細書に記載されたアーキテクチャは単に例示のためのものであり、実際に、同一の機能を実現できる他の多くのアーキテクチャが実装され得ることが分かる。抽象的であるが、しかし明確な意味において、同一の機能を実現するための構成要素のいずれかの構成は、所望の機能を実現するように、有効に「関連付けられ」る。従って、アーキテクチャ及び介在する構成要素に拘らず、特定の機能を実現するために組み合わせられたいずれかの2つの構成要素は、所望の機能を実現するために互いに「関連付けられた」とみなされてもよい。同様に、そのように「関連付けられた」いずれかの2つの構成要素は、所望の機能を実現するために互いに「動作可能に接続された」又は「動作可能に結合された」とみなされてもよい。
【0051】
例えば、1つの実施形態において、データ処理システム10の図示される要素は単一の集積回路または同一デバイス内に配置される回路である。あるいは、データ処理システム10は、互いに接続された如何なる数の別個の集積回路または別個のデバイスを含んでもよい。例えば、メモリ16はプロセッサ12と同一の集積回路に配置されてもよく、別個の集積回路に配置されてもよく、データ処理システム10の他の要素から分離した別の周辺装置またはスレーブに配置されてもよい。周辺装置18および20もまた、別個の集積回路またはデバイスに配置されてもよい。
【0052】
さらに、当業者は、上述した動作の機能の間の境界は、単なる例示であることを認識するであろう。複数の動作の機能は、単一の動作に結合されてもよく、及び/又は、単一の動作の機能は、追加の動作に分配されてもよい。更に、別の実施形態は、特定の動作の複数のインスタンスを含んでもよく、動作の順序は種々の他の実施形態において変更されてもよい。
【0053】
記載されるソフトウェアのすべてまたはある部分は、例えば、メモリ16または他のコンピュータシステムの他のメディアのようなコンピュータ読取可能媒体からのデータ処理システム10の受信した要素であってもよい。このようなコンピュータ読取可能媒体は、データ処理システム10のような情報処理システムに永久的に、取り外し可能にまたは遠隔に結合されてもよい。コンピュータ読取可能媒体は、例として限定されることなく、ディスクおよびテープ記憶媒体を含む磁気記憶媒体、コンパクトディスクメディア(例えば、CD−ROM、CD−R、等)およびデジタルビデオディスク記憶媒体のような光学記憶媒体、フラッシュメモリ、EEPROM、EPROM、ROMのような半導体に基づくメモリユニットを含む不揮発性メモリ記憶媒体、強磁性デジタルメモリ、MRAM、例えば、レジスタ、バッファまたはキャッシュ、メインメモリ、RAM、などを含む揮発性記憶媒体、および例えば、コンピュータネットワーク、ポイント・ツー・ポイント通信装置および搬送波伝送媒体を含むデータ伝送媒体を含んでもよい。
【0054】
1つの実施形態において、データ処理システム10はパーソナルコンピュータのようなコンピュータシステムである。他の実施形態は、異なる種類のコンピュータシステムを含んでもよい。コンピュータシステムは、一人のユーザまたは複数のユーザに独立した計算能力を提供するように設計され得る情報処理システムである。コンピュータシステムは、これらのものに制限されることなく、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、携帯情報端末、電子ゲーム、自動車および他の埋め込みシステム、携帯電話および様々な無線デバイスを含む多くの形態になってもよい。典型的なコンピュータシステムは、少なくとも1つの処理ユニット、関連するメモリおよび複数の入力/出力(I/O)デバイスを含む。
【0055】
コンピュータシステムは、プログラムにしたがって情報を処理し、I/Oデバイスを介して結果の出力情報を生成する。プログラムは、特定のアプリケーションプログラムおよび/または動作システムのような命令のリストである。コンピュータプログラムは、典型的にはコンピュータ読取可能記憶媒体の内部に格納される、あるいはコンピュータ読取可能伝送媒体を介してコンピュータシステムに送信される。コンピュータのプロセスは、典型的には、実行プログラムまたはプログラムの一部、現在のプログラム値および状態情報、ならびにプロセスの実行を管理するためにオペレーティングシステムによって使用されるリソースを含む。親プロセスは、親プロセスの全体の機能を実行するのを助けるために、他の子プロセスを生成してもよい。親プロセスは親プロセスの全体の機能の一部を実行するために特に子プロセスを生成するため、子プロセス(孫プロセス、など)によって実行される機能は、場合によっては親プロセスによって実行されるものとして記載されてもよい。
【0056】
本発明について特定の実施の形態を参照しながら説明したが、特許請求の範囲に定義される本発明の範囲から逸脱することなく様々な修正及び変更が加えられてもよい。例えば、アドレスフィールドで使用されるビット数は、システム要件に基づいて変更されてもよい。したがって、明細書及び図面は限定するものではなく、単に例示と見なされるべきであり、全てのそのような変更は、本発明の範囲内に入るものとする。特定の実施形態に関して記載したいずれかの利益、利点又は問題の解決方法は、いずれかの請求項又は全ての請求項の重要な機能、必要な特徴又は必須の特徴として解釈されるべきではない。
【0057】
本明細書で用いられる「結合された」という用語は直接的な結合または機械的な結合に限定されるべきではない。
【0058】
更に、本明細書で用いられる単数は、1つまたは複数として定義される。また、請求項における「少なくとも1つ」および「1つまたは複数」という導入部の用語の使用は、同じ請求項が「1つまたは複数」または「少なくとも1つ」という導入部の用語及び不定冠詞を含んでいたとしても、不定冠詞による他の請求項の要素の導入部が、このような導入された請求項の要素を含むいずれかの特定の請求項を、唯一のこのような要素を含む発明に限定することを意味するものとして解釈されるべきではない。同じことが定冠詞の使用にも当てはまる。
【0059】
特に明記しない限り、「第1」及び「第2」等の用語は、そのような用語が記述する要素間を任意に区別するために用いられる。したがって、これらの用語は、必ずしもそのような要素の時間的な又は他の優先順位付けを示すものではない。
【0060】
以下の項目が本発明の種々の実施形態に含まれる。
【0061】
項目1は、ウェイにグループ化された複数の分岐先バッファ(BTB)エントリを含む分岐先バッファを含むデータプロセッサを含み、ウェイの1つのBTBエントリは短タグアドレスを含み、ウェイの別のもののBTBエントリは完全タグアドレスを含む。項目2は、項目1のプロセッサを含み、ウェイの1つのBTBエントリは短ターゲットアドレスを含み、ウェイの別のもののBTBエントリは完全ターゲットアドレスを含むことをさらに含む。項目3は、項目1のプロセッサを含み、同一ページにあるBTBで割り当てられた分岐先エントリの数を追跡し、同一ページにあった以前に受信した分岐命令の数を示す同一ページ状態カウンタを維持管理するように構成された制御およびインタフェースユニットをさらに含み、分岐先エントリの数が閾値に到達したときにエントリがまだページアドレスバッファにない場合、BTBは、ページアドレスバッファのエントリを割り当てる。項目4は、項目1のプロセッサを含み、短タグアドレスに関して複数の以前に受信した分岐命令のページアドレス部分のエントリを含むページアドレスバッファをさらに含み、短タグアドレスを含むBTBのエントリは、ページアドレスバッファのエントリの1つを選択するために使用される選択フィールドをさらに含む。項目5は、項目1のプロセッサを含み、BTBエントリは短ターゲットアドレスを含み、分岐命令の複数の以前に受信したターゲットアドレスのページアドレス部分のエントリを含むページターゲットアドレスバッファをさらに含み、BTBエントリは、ページターゲットアドレスバッファのエントリの一つを選択するために使用されるターゲット選択フィールドを含む。項目6は、項目2のプロセッサを含み、BTBは、短ターゲットアドレスについて、命令の分岐先アドレスを決定するために、選択された短ターゲットアドレスと同一ページアドレスを有する現在の分岐命令のページアドレス部分を連結するように構成される。項目7は、項目5のプロセッサを含み、BTBは、現在の分岐命令の分岐先アドレスを決定するために、選択された短ターゲットアドレスと同一ページアドレスを有するページターゲットアドレスバッファからの以前に受信したページアドレス部分または現在の分岐命令のページアドレス部分を連結するように構成される。
【0062】
項目8は、ウェイにグループ化された分岐先バッファ(BTB)エントリのセットを含むセットアソシアティブ方式BTBアレイを含むデータプロセッサを含み、ウェイの第1ウェイのセットのBTBエントリは、短タグアドレスフィールドを含み、ウェイの第2ウェイのセットのBTBエントリは、完全タグアドレスフィールドを含む。項目9は、項目8のプロセッサを含み、同一ページにある分岐命令の数を示すために、同一ページ状態カウンタを維持管理するように構成された制御およびインタフェースユニットと、同一ページにある分岐命令のページアドレスエントリを含むページアドレスバッファとをさらに含む。項目10は、項目8のプロセッサを含み、短タグアドレスフィールドに割り当てられたビットの数は、完全タグアドレスフィールドに割り当てられたビットの数より少ない数およびメモリ管理ユニット(MMU)のページアドレスに基づく数を含むグループのうち1つである。項目11は、項目8のプロセッサを含み、入来する命令からの短タグアドレスおよび短タグアドレスフィールドを含むウェイの選択されたセットからの短タグアドレスを受信するように構成された第1比較器をさらに含み、比較器は、入来する命令からの短タグアドレスが短タグアドレスフィールドを含むウェイの選択されたセットからの短タグの1つと等しいかを示す短ウェイタグ一致信号を出力するようにさらに構成される。項目12は、項目11のプロセッサを含み、以前に受信した命令アドレスからのページアドレスを含むエントリを格納するように構成されたページアドレスバッファと、短タグアドレスフィールドを含むウェイの選択されたセットからの選択フィールドおよびページアドレスバッファからのエントリを受信するように構成された一致インジケータ選択ユニットとをさらに含み、ウェイの第1ウェイのセットのBTBエントリは、選択されたセットのページアドレスバッファのエントリを示す選択フィールドを含む。項目13は、項目12のプロセッサを含み、完全タグアドレスフィールドを含むウェイの選択されたセットからの完全タグアドレスおよび入来する命令からの完全タグアドレスを受信するように構成された第2比較器をさらに含み、第2比較器は、入来する命令からの完全タグアドレスが完全タグアドレスフィールドを含むウェイの選択されたセットからの完全タグアドレスの1つと等しいかを示す長ヒットウェイ信号を出力するようにさらに構成される。項目14は、項目12のプロセッサを含み、一致インジケータ選択ユニットからのウェイページ一致信号および第1比較器からの短ウェイタグ一致信号を受信するように構成された論理回路をさらに含み、論理回路は、入来する命令アドレスのページアドレスがページアドレスバッファに既に存在するかを示す短ヒットウェイ信号を出力するようにさらに構成される。
【0063】
項目15は、ウェイにグループ化された分岐先バッファ(BTB)エントリのセットを含む分岐先バッファ(BTB)を有するプロセッサにおける方法を含み、方法は、分岐命令アドレスを受信するステップと、セットの1つのセットを選択するために命令アドレスのインデックス部分を使用するステップとを含み、ウェイの第1グループのセットのBTBエントリは、短タグアドレス部分を含み、ウェイの第2グループのセットのBTBエントリは、完全タグアドレス部分を含む。項目16は、項目15の方法を含み、ウェイの第1グループについて、選択されたセットの短タグアドレス部分が分岐命令アドレスのタグ部分と一致するかを決定するステップと、命令アドレスのページアドレス部分とページアドレスバッファのエントリとを比較することによってページアドレス一致インジケータを生成するステップであり、ページアドレスバッファのエントリが以前に受信した命令アドレスからのページアドレスを含むステップと、選択されたセットの選択フィールドに基づいてページアドレス一致インジケータからウェイページ一致を生成するステップとをさらに含む。項目17は、項目16の方法を含み、ウェイの第1グループについて、ウェイタグ一致およびウェイページ一致に基づいてヒットウェイ信号を生成するステップと、選択されたセットのターゲットアドレスと命令アドレスのページアドレス部分とを連結することによってウェイ分岐先アドレスを生成するステップとをさらに含む。項目18は、項目16の方法を含み、同一ページにあるBTBで割り当てられた分岐命令エントリの数を追跡するステップと、分岐命令エントリの数が閾値に到達したときにエントリがまだページアドレスバッファにない場合、ページアドレスバッファのエントリを割り当てるステップとをさらに含む。項目19は、項目18の方法を含み、ウェイの第2グループについて、命令アドレスのページアドレス部分およびタグ部分が選択されたセットの完全タグアドレス部分と等しいかを決定することによって選択されたセットのヒットウェイ信号を生成するステップと、ウェイ分岐先アドレスとして選択されたセットのターゲットアドレスを与えるステップとをさらに含む。項目20は、項目19の方法を含み、プロセッサにウェイ分岐先アドレスとともに同一ページインジケータおよび予測情報を与えるステップをさらに含む。