(57)【要約】分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）と分岐予測子回路とを含むマルチプルステージ分岐予測システムが開示される。ＢＴＡＣは、ＢＴＡＣエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して、格納された状態情報に基づいてＢＴＡＣエントリを管理する。
2009543223.tif 000002
【特許請求の範囲】
【請求項１】
マルチプルステージ分岐予測システムであって、
分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）エントリを格納するように構成されたＢＴＡＣと、
状態情報を格納し、前記状態情報を用いて分岐命令の方向を予測し、前記分岐命令の実際の分岐結果に応答して前記状態情報に基づいて前記ＢＴＡＣエントリを管理するように構成された分岐予測子回路と
を備えるシステム。
【請求項２】
請求項１に記載のシステムにおいて、
前記分岐予測子回路は、前記ＢＴＡＣから前記ＢＴＡＣエントリを除去するように構成されたシステム。
【請求項３】
請求項１に記載のシステムにおいて、
前記分岐予測子回路は、延長された期間、前記ＢＴＡＣ内に前記ＢＴＡＣエントリを保持するように構成されたシステム。
【請求項４】
請求項１に記載のシステムにおいて、
前記ＢＴＡＣは、格納された１つ又は複数のエントリを置換え順序で保持するように構成され、前記分岐予測子回路は、前記置換え順序にある前記ＢＴＡＣエントリの位置を修正するように構成されたシステム。
【請求項５】
請求項４に記載のシステムにおいて、
前記分岐予測子回路は、前記ＢＴＡＣエントリの置換えの可能性を高めるために、前記置換え順序において、前記ＢＴＡＣエントリの位置を現在の位置より高く修正するように構成されたシステム。
【請求項６】
請求項１に記載のシステムにおいて、
置換えポインタを更に備え、前記ＢＴＡＣエントリは、修正されたラウンドロビン置換えポリシーを用い、前記分岐予測子回路は、前記ＢＴＡＣエントリを示すように前記置換えポインタを修正するように構成されたシステム。
【請求項７】
プロセッサ内に配置された請求項１に記載のシステム。
【請求項８】
分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）を管理する方法であって、
条件付分岐命令の実際に決定された分岐方向を受け取ることと、
受け取った前記分岐方向に応答して分岐予測子回路の状態情報を評価することと、
前記分岐予測子回路の状態情報に従って前記条件付分岐命令に関連する前記ＢＴＡＣ内のエントリを管理することと
を備える方法。
【請求項９】
請求項８に記載の方法において、
前記ＢＴＡＣ内のエントリを管理することは、前記ＢＴＡＣから前記エントリを除去することを備える方法。
【請求項１０】
請求項８に記載の方法において、
前記ＢＴＡＣ内のエントリを管理することは、延長された期間、前記ＢＴＡＣ内で前記エントリを保持することを備える方法。
【請求項１１】
請求項８に記載の方法において、
前記ＢＴＡＣ内に格納されたエントリを置換え順序で保持することを更に備え、前記ＢＴＡＣ内で前記エントリを保持することは更に、前記置換え順序における前記エントリの位置を修正することを備える方法。
【請求項１２】
請求項１１に記載の方法において、
前記エントリの位置を修正することは、前記エントリを示すように置換えポインタを修正することを備える方法。
【請求項１３】
パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法であって、
条件付分岐命令の第１の方向を暗黙に予測することと、
前記条件付分岐命令の第２の方向を状態情報に基づいて予測することと、
前記第１の方向と前記第２の方向との間の矛盾に応答して、前記条件付分岐命令に関連する分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）エントリを管理することと
を備える方法。
【請求項１４】
請求項１３に記載の方法において、
状態情報を用いて前記ＢＴＡＣを管理することは、前記ＢＴＡＣから前記ＢＴＡＣエントリを除去することを備える方法。
【請求項１５】
請求項１３に記載の方法において、
状態情報を用いて前記ＢＴＡＣを管理することは、延長された期間、前記ＢＴＡＣ内で前記ＢＴＡＣエントリを保持することを備える方法。
【請求項１６】
請求項１３に記載の方法において、
前記ＢＴＡＣ内に格納された１つ又は複数のエントリを置換え順序で保持することを更に備え、状態情報を用いて前記ＢＴＡＣを管理することは、前記置換え順序において前記ＢＴＡＣエントリの位置を修正することを備える方法。
【請求項１７】
請求項１６に記載の方法において、
前記ＢＴＡＣエントリの位置を修正することは、前記ＢＴＡＣエントリを示すように置換えポインタを修正することを備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサの分野に関し、特に、分岐ターゲットアドレスキャッシュのコンテンツをプロアクティブに管理することによって分岐予測を向上させる方法に関する。
【背景技術】
【０００２】
マイクロプロセッサは、広く様々なアプリケーションにおいて計算タスクを実行する。より高速な動作及び／又は増加した機能を可能とするようにソフトウェア変更によって改善されたプロセッサが常に望まれる。例えばポータブル電子デバイスのような多くの組込型アプリケーションにおいて、電力の節約もまた、プロセッサ設計及び実現における目標である。
【０００３】
近年の多くのプロセッサは、各々が複数の実行ステップを備えた連続する命令が、実行中にオーバラップされるパイプラインされたアーキテクチャを用いる。改善された性能のために、命令は連続してパイプラインを流れるべきである。命令がパイプライン内でストールする原因となる任意の状況は、性能に有害な影響を及ぼしうる。もし命令がパイプラインからフラッシュされ、その後再フェッチされれば、性能及び電力消費の両方が悪影響を受ける。
【０００４】
ほとんどの命令は条件付分岐命令、つまり、命令がパイプラインの深くで評価されるまで知られない実際の分岐挙動を含む。分岐命令の実際の評価を待つことに起因するストールを回避するために、近年のプロセッサは、条件付分岐命令の分岐挙動がパイプラインの早期に予測されるいくつかの形式の分岐予測を用いる。予測された分岐評価に基づいて、プロセッサは、予測されたアドレス、つまり（もし分岐が選択されると予測されれば）分岐ターゲットアドレス又は（もし分岐が選択されないと予測されれば）分岐命令後の次の連続するアドレスの何れかから命令を推測的にフェッチ（プリフェッチ）し、実行する。条件付分岐命令が選択されるかされないかは、分岐方向の決定と称される。分岐方向の決定は、予測された時間及び実際の分岐決定時間になされる。実際の分岐挙動が決定されると、もし分岐が誤予測されていれば、推測的にフェッチされた命令はパイプラインからフラッシュされなければならず、新たな命令が次の正確なアドレスからフェッチされなければならない。誤った分岐予測に応答する命令のプリフェッチは、プロセッサ性能及び電力消費に不利な影響を及ぼしうる。従って、分岐予測の正確性を向上させることは重要なプロセッサ設計目標である。
【０００５】
分岐予測の１つの周知の形式は、分岐予測を２つの予測子、すなわち初期分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）と分岐履歴テーブル（ＢＨＴ）とに分割することを含む。分岐ターゲットバッファ（ＢＴＢ）としても知られるＢＴＡＣは、命令フェッチアドレスによってインデックスされ、命令フェッチアドレスに対応し次にフェッチされる、分岐ターゲットとも称されるアドレスを含む。分岐命令がプロセッサパイプラインを通過し、その分岐が選択された後、エントリが従来のＢＴＡＣに追加される。もし従来のＢＴＡＣがフルであれば、エントリは従来、次のエントリが追加されると（例えばラウンドロビンの、又は最後に用いられた）標準キャッシュ置換アルゴリズムを用いてＢＴＡＣから除去される。
【０００６】
一般にＢＴＡＣはしばしば、高連想型キャッシュ設計として実現され、フェッチパイプラインの早期にアクセスされる。もしフェッチアドレスがＢＴＡＣエントリ（ＢＴＡＣヒット）と一致すれば、対応する次のフェッチアドレス又はターゲットアドレスが次のサイクル内でフェッチされる。この一致及びその結果のターゲットアドレスのフェッチは、暗黙の選択された分岐予測と称される。もし一致しなければ（ＢＴＡＣミス）、次の連続してインクリメントされるアドレスは次のサイクル内でフェッチされる。この一致しない状況は、暗黙の選択されない予測とも称される。
【０００７】
一般にＢＴＡＣは、例えばパターン履歴テーブル（ＰＨＴ）としても知られる分岐履歴テーブル（ＢＨＴ）のような、より正確な個別の分岐方向予測子と関連して用いられる。従来のＢＨＴは、パイプライン内で従来のＢＴＡＣより後にアクセスされる。このように、より良い予測をするために追加の情報が潜在的に存在しうる。従来のＢＨＴは、個々の分岐命令に関してより正確な選択された／されない判定を生成するために、飽和予測方向カウンタのセットを含むことができる。例えば、各飽和予測方向カウンタは、各々が以下のような重み付け予測値を割り当てられた４つの状態のうちの１つを仮定する２ビットのカウンタを備えることができる。  
１１−選択されると強く予測された  
１０−選択されると弱く予測された  
０１−選択されないと弱く予測された  
００−選択されないと強く予測された
一般にＢＨＴは、従来、分岐履歴レジスタ（ＢＨＲ）内に格納されたビットによってインデックスされる。従来のＢＨＴの出力は、選択されたか選択されないかの判定であり、その結果、分岐命令のターゲットアドレスか次のサイクル内の次の連続アドレスかの何れかをフェッチする。ＢＨＴは一般に、自身が知られるようになると、分岐出力情報とともに更新される。
【０００８】
従来のＢＨＴを用いると、プロセッサは、ＢＴＡＣによってなされた早期暗黙予測をオーバライドすることができる。例えば、ＢＴＡＣはヒットしうるが、ＢＨＴは、選択されない予測とともにＢＴＡＣ暗黙予測をオーバライドすることができる。逆に、ＢＴＡＣミスの後、ＢＨＴは、ターゲットアドレスが現在プロセッサパイプラインのこの時点で知られている場合、選択される予測を用いてＢＴＡＣをオーバライドすることができる。
【０００９】
ＢＨＴによるＢＴＡＣ予測のオーバライドは、プロセッサパイプラインをフラッシュした結果浪費されるサイクルをもたらす。ＢＨＴによるＢＴＡＣ予測のオーバライドは、同様の分岐命令が後にパイプラインによって処理された場合に反復して起こりうる。例えば、もしＢＴＡＣが、ＢＴＡＣ内で見つかった一致によって、選択されると暗黙に予測すれば、ターゲットアドレス（選択された分岐）からの命令はプロセッサパイプライン内へフェッチされる。もしその後ＢＨＴが、その分岐が選択されないべきだと決定することによってＢＴＡＣ予測をオーバライドすれば、ターゲットアドレスをフェッチした後の全ての命令はパイプラインからフラッシュされる。この従来の分岐予測技術では、このサイクルが、連続してフェッチされた同じ分岐命令について潜在的に反復する。同じ条件付分岐命令の連続したフェッチにおいて分岐予測矛盾を反復するこの問題は、本明細書ではマルチプルフラッシュサイクル問題と称される。従来のアプローチにおいて、マルチプルフラッシュサイクル問題は、ＢＴＡＣが更新されるまで条件付分岐命令について存在し続けうる。従って、ＢＴＡＣをプロアクティブに管理し、マルチプルフラッシュサイクル問題が起こる可能性を低減する装置及び方法が必要であることが理解される。
【発明の概要】
【００１０】
１つ又は複数の実施形態に従って、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）及び分岐予測子回路が開示される。ＢＴＡＣは、ＢＴＡＣエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して格納された状態情報に基づいてＢＴＡＣエントリを管理する。分岐命令の方向を予測するために用いられた状態情報に基づいてＢＴＡＣエントリを管理することによって、誤予測の可能性、及びＢＴＡＣルックアップと分岐予測子回路との間の矛盾の可能性は低減される。
【００１１】
１つの実施形態は、マルチプルステージ分岐予測システムに関する。マルチプルステージ分岐予測システムは、ＢＴＡＣと分岐予測子回路とを含む。ＢＴＡＣは、ＢＴＡＣエントリを格納するように構成される。分岐予測子回路は、状態情報を格納するように構成される。分岐予測子回路は、状態情報を用いて分岐命令の方向を予測し、分岐命令の実際の分岐結果に応答して格納された状態情報に基づいてＢＴＡＣエントリを管理する。
【００１２】
別の実施形態は、分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）を管理する方法に関する。実際に決定された条件付分岐命令の分岐方向が受け取られる。分岐予測子回路の状態情報が、受信した分岐方向に応答して評価される。条件付分岐命令に関連するＢＴＡＣ内のエントリは、分岐予測子回路の状態情報に従って管理される。
【００１３】
別の実施形態は、パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法に関する。この方法において、条件付分岐命令の第１の方向が暗黙に予測される。また、条件付分岐命令の第２の方向が状態情報に基づいて予測される。条件付分岐命令に関連するＢＴＡＣエントリは、状態情報を用いて管理される。
【００１４】
本発明の他の実施形態は、本発明の様々な実施形態が例示によって示され説明される以下の詳細な説明から、当業者には容易に明らかになるであろうことが理解される。理解されるように、本発明は、本発明の範囲を逸脱することなく、他の異なる実施形態も可能であり、いくつかの詳細は他の様々な実施形態において変更可能である。従って、図面及び詳細な説明は、その本質として例示的であり限定的ではないと見なされる。
【図面の簡単な説明】
【００１５】
【図１】図１は、プロセッサの機能ブロック図である。
【図２】図２は、図１の分岐予測システムの機能ブロック図である。
【図３】図３は、ＢＴＡＣ管理信号回路の第１の典型的な実施形態の機能ブロック図である。
【図４】図４は、ＢＴＡＣ管理信号回路の第２の典型的な実施形態の機能ブロック図である。
【図５】図５は、ＢＴＡＣを管理する方法を示すフローチャートである。
【図６】図６は、パイプラインのマルチプルフラッシュサイクルの確率を低減する方法を示すフローチャートである。
【詳細な説明】
【００１６】
図１は、プロセッサ１００の機能ブロック図を示す。プロセッサ１００は、制御論理１１４に従って、命令実行パイプライン内で命令を実行する。いくつかの実施形態において、パイプライン１１２は、複数の並行するパイプラインを備えるスーパースカラ設計であることができる。パイプライン１１２は、パイプステージ内に構成された様々なレジスタ又はラッチ１１６Ａ乃至Ｄ、及び例えば算術論理演算装置（ＡＬＵ）１１８のような１つ又は複数の実行ユニットを含む。汎用レジスタ（ＧＰＲ）ファイル１２０は、メモリ階層の最上層を備えるレジスタを提供する。
【００１７】
主要変換索引バッファ（ＴＬＢ）１４２によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ（Ｄ−キャッシュ）１４０からデータがアクセスされる。様々な実施形態において、ＩＴＬＢ１２４はＴＬＢ１４２の一部のコピーを備えることができる。あるいはＩＴＬＢ１２４とＴＬＢ４２とは統合することができる。同様に、プロセッサ１００の様々な実施形態において、Ｉキャッシュ１２２とＤキャッシュ１４０とは統合するか一体化することができる。Ｉキャッシュ１２２及び又はＤキャッシュ１４０におけるミスは、メモリインタフェース１４６の制御下で主要（オフチップ）メモリ１４４へのアクセスを招く。
【００１８】
プロセッサ１００は、様々な周辺デバイス１５０へのアクセスを制御する入力／出力（Ｉ／Ｏ）インタフェース１４８を含むことができる。当業者は、プロセッサ１００の多くの変形例が可能であることを理解するであろう。例えばプロセッサ１００は、Ｉキャッシュ１２２及びＤキャッシュ１４０の両方又は何れかに第２レベル（Ｌ２）キャッシュを含むことができる。更に、プロセッサ１００内に示される機能ブロックのうちの1つ又は複数を特定の実施形態から省略することができる。
【００１９】
プロセッサ１００は、マルチプルステージ分岐予測システム１４３を含む。マルチプルステージ分岐予測システム１４３は、ＢＴＡＣ１４１（第１ステージ）と、分岐予測子回路１２６（第２ステージ）とを含む。ＢＴＡＣ１４１は、各エントリがフェッチアドレスに対応する分岐ターゲットアドレスを含む１つ又は複数のエントリを格納するように構成される。命令プリフェッチユニット１２８は、命令側変換索引バッファ（ＩＴＬＢ）１２４によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ（Ｉキャッシュ又はＩ＄）１２２から命令をフェッチする。マルチプルステージ分岐予測システム１４３は、フェッチアドレスがＢＴＡＣ１４１内でヒットするかを判定し、分岐予測子回路１２６内に格納された予測パターンを用いることによって分岐命令の方向を予測し、分岐予測子回路１２６内に格納された予測パターンの状態に基づいてＢＴＡＣ１４１を更新する。マルチプルステージ分岐予測システム１４３と、命令プリフェッチユニット１２８及びパイプライン１１２の動作とは、図２の説明に関連してより詳しく説明される。
【００２０】
図２は、図１の分岐予測子システム１４３の機能ブロック図である。パイプライン１１２及び命令プリフェッチユニット１２８の各々は、１つ又は複数の処理ステージを含む。分岐予測子回路１２６は、分岐履歴レジスタ２０３と、分岐履歴テーブル（ＢＨＴ）２０７と、分岐テーブル更新及び予測論理回路２０５とを含むことができる。分岐テーブル更新及び予測論理回路２０５のＢＴＡＣ管理部分の典型的な実施形態は、図３及び図４に関連して説明される。
【００２１】
動作中、フェッチアドレスは、パイプライン１１２によって以前処理された選択された分岐命令に対応するかを判定するために経路２１９を介してＢＴＡＣ１４１内でルックアップされる。命令プリフェッチユニット１２８は経路２２１を介して命令キャッシュ１２２から推測的に命令をプリフェッチし、「選択される」と暗黙に予測された分岐のＢＴＡＣ１４１から戻った分岐ターゲットアドレスで開始するか、又は「選択されない」と暗黙に予測された分岐の次の連続アドレスで開始する。何れの場合も、プリフェッチされた命令は、経路２２３に沿って命令プリフェッチユニット１２８へロードされる。
【００２２】
条件付分岐命令は、命令プリフェッチユニット１２８又はパイプライン１１２のステージによって処理されるので、例えば経路２２３を介してＩキャッシュ１２２から取り出されたプレ復号ビット内で搬送される情報のような、条件付分岐命令に関する追加情報が決定される。ＢＴＡＣが条件付分岐命令の方向をルックアップするより高いレベルの信頼性を持って予測するために、格納された予測パターンとこの追加情報とを用いる分岐予測子回路１２６が経路１２１を介して呼び出される。
【００２３】
分岐テーブル更新及び予測論理回路２０５は、条件付分岐命令の方向を予測するために、分岐命令アドレス、分岐履歴レジスタ（ＢＨＲ）２０３、及び分岐履歴テーブル（ＢＨＴ）２０７を用いる。ＢＨＲ２０３は、条件付分岐命令のシフトレジスタとして動作する。例えば、もし条件付分岐命令が実際に選択されれば、「１」がＢＨＲ２０３内へシフトされる。もし条件付分岐命令が実際に選択されなければ、「０」がＢＨＲ２０３内にシフトされ、結果として特定の分岐命令の分岐方向履歴をＢＨＲ２０３に格納させる。１つの実施形態において、ＢＨＲ２０３は、期間にわたってパイプライン１１２により処理された各分岐命令のための特定のレジスタを含む。別の実施形態において、ＢＨＲ２０３は、最近処理された条件付分岐命令の分岐方向履歴を含むグローバルスコープを有することができる。ＢＨＴ２０７は、上記の背景技術で説明したように特定の分岐命令に関する２ビットカウンタを含むことができる。分岐方向を予測する様々な周知技術がＢＨＲ２０３及びＢＨＴ２０７を用いることが理解される。また、これら周知の予測技術がＢＨＲ２０３及びＢＨＴ２０７の様々な実施形態を用いることも理解される。また、本開示がＢＨＲやＢＨＴの代替例を実現する他の予測技術の利用を意図することも理解される。
【００２４】
ＢＨＲ２０３及びＢＨＴ２０７に基づいて、図２に示す例の分岐方向予測回路１２６は、ＢＴＡＣ１４１暗黙予測と矛盾する分岐方向を予測する。結果として、条件付分岐命令の格納場所である「選択された経路１」より上の全ての命令が命令プリフェッチユニット１２８からフラッシュされるであろう。命令プリフェッチユニット１２８は、分岐ターゲットアドレスから始まる命令を矛盾なく継続してプリフェッチするであろう。
【００２５】
条件付分岐命令がパイプライン１１２のステージを進むと、条件付分岐命令は条件が実際に決定されるステージへ到着する。もし分岐の実際の分岐結果が分岐予測子回路１２６と異なれば、条件付分岐命令より上の全ての命令は、パイプライン１１２と命令プリフェッチユニット１２８との両方からフラッシュされる。パイプラインの実際の分岐決定ステージにおいて、条件付分岐の実際の方向が、経路２１３を介して分岐予測子回路１２６へ送られる。
【００２６】
分岐テーブル更新及び予測論理回路２０５は、分岐命令アドレス、ＢＨＴ２０７内のエントリの状態、及びオプションとしてＢＨＲ２０３のコンテンツに加えて、ＢＨＴ２０７のコンテンツを更新するために実際の分岐方向を用いるように構成される。更に、分岐テーブル更新及び予測論理回路２０５は、実際の分岐方向及びＢＨＴ２０７の状態、又は分岐方向予測子内のその他任意の状態に依存して、ＢＴＡＣ１４１内のエントリを管理し、もって、有利なことに、ＢＴＡＣ１４１内のエントリが、分岐予測子回路１２６、及び分岐予測のために用いられる状態情報を格納する他の分岐予測子回路によって実現される任意の分岐予測技術に応答することを可能とする。
【００２７】
図３は、ＢＴＡＣ管理回路３００の第１の典型的な実施形態の機能ブロック図である。ＢＴＡＣ管理回路３００は、ＢＨＴ２０７の更新後、ＢＴＡＣ１４１を管理するための、分岐テーブル更新及び予測論理回路２０５内に含まれる適切な回路であることができる。ＢＴＡＣ管理回路３００への入力は、実際の分岐結果の結果として更新された後、条件付分岐命令に対応する２つのビットカウンタ値のうちの最上位ビットである。ＢＴＡＣ管理回路３００の出力信号３０５は、入力の反転信号である。ＢＴＡＣ１４１は以下のように、条件付分岐命令に対応するエントリを管理するかを判定するために出力信号３０５を解釈する。
【００２８】
例えば、もし条件付分岐命令に対応する更新された２つのビットカウンタが００値（選択されないと強く予測された）を有すれば、ＢＴＡＣ１４１内のこの条件付分岐命令のエントリは、以下で説明する様々な代替例に従って管理されるであろう。同様に、もし更新された２つのビットカウンタが０１値（選択されないと弱く予測された）を有すれば、ＢＴＡＣ１４１内のこの条件付分岐命令のエントリが管理されるであろう。もし更新された２つのビットカウンタが１０値（選択されると弱く予測された）又は１１値（選択されると強く予測された）の何れかを有すれば、ＢＴＡＣ１４１内のエントリは修正されないであろう。
【００２９】
図４は、ＢＴＡＣ管理信号回路４００の第２の典型的な実施形態の機能ブロック図である。ＢＴＡＣ管理回路４００は、ＢＨＴ２０７の更新前、ＢＴＡＣ１４１を管理するための、分岐テーブル更新及び予測論理回路２０５のＢＴＡＣ管理部分の一部の適切な回路であることができる。ＢＴＡＣ管理回路４００は、ＡＮＤゲート４０５Ａ乃至４０５Ｂ及びＯＲゲート４１５を含む論理回路であり、実際に決定された条件付分岐命令に対応するエントリを管理するための管理信号４２５を生成するために用いられる。ＢＴＡＣ管理回路４００は、実際の方向の結果である更新の前に、実際の分岐方向及びＢＨＴ２０７のカレント状態に応答して動作する。ＢＴＡＣ管理回路４００は、入力Ａ’（反転された実際の分岐方向）、入力Ｂ’（反転された２ビットカウンタのうちの最上位ビット）、及び入力Ｃ’（反転された２ビットカウンタのうちの最下位ビット）を有する。この実施形態において、ＢＴＡＣ１４１は、以下で説明するように条件付分岐命令に対応するエントリを管理するために、出力信号４２５を解釈するであろう。ＢＴＡＣ管理回路３００及び４００がＢＨＴ２０７の実施形態に基づいて説明されたが、これらはＢＨＲの選択された実施形態に基づくこともできる。更に、本開示は、ＢＨＴの様々な実施形態によって実現される、又は様々な分岐予測実施形態を用いて実現されるその他のＢＴＡＣ管理回路を意図していることが理解される。更に、図３及び図４に示すＢＴＡＣ管理回路は、分岐テーブル更新及び予測論理回路２０５と統合されるか、あるいは別々であることができる。
【００３０】
エントリ管理のタイプは、様々な代替例を含むことができる。管理のタイプは、ＢＴＡＣを即座に除去すること、次に付加される分岐命令において除去するためにＢＴＡＣをマークすること、延長した期間、ＢＴＡＣエントリを固定又は保持すること、等を含む。条件付分岐命令に関連するＢＴＡＣエントリの管理の代わりに、条件付分岐命令に関連しないＢＴＡＣエントリの管理も本開示によって意図されていることが理解される。
【００３１】
ＢＴＡＣ１４１は、ＢＴＡＣ１４１内のエントリの置換え順序を示す順序でエントリが構成される、最後に用いられた置換えポリシーを用いる。最後に用いられた周知の疑似回路が、エントリの置換え順序を維持するために適切でありうる。このように、ＢＴＡＣ管理回路３００の出力信号は結局、ＢＴＡＣ１４１内の条件付分岐命令に対応するエントリの位置を修正することができる。例えば、エントリはこの置換え順序内で上がったり下がったりすることができる。あるいはエントリは、ＢＴＡＣ１４１内での自身の寿命を長くするために、最後に用いられたことを示すようにＢＴＡＣ１４１内での位置を調節することによって保持されることができる。
【００３２】
あるいは別の実施形態において、ＢＴＡＣ１４１は、修正されたラウンドロビンポリシーを用いることができる。従来のラウンドロビンポリシーでは、レジスタは、条件付分岐が付加された後置き換えられるエントリを示し、続いてエントリの置換え後、連続する次のエントリへ進み、適切な方式でエントリを通してサイクルする。しかし、修正されたラウンドロビンポリシーでは、ポインタは、実際に決定されている条件付分岐命令に対応しているエントリを示すために用いられる。例えば、条件付分岐命令に対応しているエントリは、ポインタがこのエントリを示すように調節することによって、除去するためにマークされることができる。それによってエントリは、条件付分岐命令及び対応するターゲットアドレスがＢＴＡＣ１４１に付加された後置き換えられる。従って、次に除去されるエントリは、除去されることが最後に決定されたエントリとなるであろう。本明細書で提供されるＢＴＡＣ１４１によって用いられる置換えポリシーは典型的であるが、この発明技術は、ＢＴＡＣにおいて一般に用いられる他の置換えポリシーにも適用可能である。
【００３３】
図５は、ＢＴＡＣを管理する方法を示すフローチャート５００である。ブロック５１０で、実際に決定された条件付分岐命令の分岐方向が受け取られる。例えば、図２の経路２１３は、パイプライン１１２からの分岐方向を受け取ると分岐予測子回路１２６を示す。ブロック５２０で、分岐予測子回路の状態は、実際の分岐方向を受け取ったことに応答して評価される。ブロック５３０で、ＢＴＡＣ内の条件付分岐命令に関連するエントリは、分岐予測子回路の状態に従って管理される。
【００３４】
ブロック５３０Ａ乃至５３０Ｄは、ブロック５３０に示す様々なタイプのＢＴＡＣ内のエントリ制御の典型的な代替実施形態である。これらの典型的な実施形態は、単一で、あるいは組み合わせて用いられうる。ブロック５３０Ａでは、管理されるＢＴＡＣ内エントリは除去され、「選択されない」と予測される最後の条件付分岐命令がＢＴＡＣから都合よく除去される。ブロック５３０Ｂでは、管理されるＢＴＡＣ内エントリは、延長された期間ＢＴＡＣ内で保持され、ＢＴＡＣ内で「選択される」と予測される最後の条件付分岐命令の寿命を都合よく延長する。
【００３５】
ブロック５３０Ｃは、最後に用いられた置換えポリシーを用いるＢＴＡＣのために調整された置換え順序内の自身の位置を有する、管理されるＢＴＡＣエントリを示す。１つの実施形態において、ＢＴＡＣ内のエントリは、エントリが、付加される次のＢＴＡＣエントリと置き換えられる可能性を低くし、「選択される」と予測される最後の条件付分岐命令のＢＴＡＣ内での寿命を都合よく延長する方式で修正された置換え順序で自身の位置を有する。別の実施形態において、ＢＴＡＣ内のエントリは、エントリが、付加される次のＢＴＡＣエントリと置き換えられる可能性を高くする方式で修正された置換え順序で自身の位置を有する。
【００３６】
ブロック５３０Ｄは、修正されたラウンドロビン置換えポリシーを用いるＢＴＡＣのために調整された次の置換えレジスタを示す。１つの実施形態において、次の置換えレジスタのコンテンツが、ＢＴＡＣ内で管理されるエントリを示すように修正される。従って、次の条件付分岐命令がＢＴＡＣに付加され、ポイントされるエントリが付加されたエントリと置き換わり、「選択されない」と予測される最後の条件付分岐命令がＢＴＡＣから都合よく除去される。別の実施形態において、次の置換えレジスタのコンテンツは、管理されるエントリの後の、ＢＴＡＣ内の次のエントリを示すように修正される。この方法では、次の条件付分岐命令がＢＴＡＣに付加される場合、管理されるエントリの後のＢＴＡＣ内の次のエントリが付加されたエントリと置き換わり、ＢＴＡＣ内で管理されるエントリの寿命を都合よく延長する。ＢＴＡＣを管理する他の管理技術も本開示によって利用可能であることが認識される。
【００３７】
図６は、パイプラインのマルチプルフラッシュサイクルの可能性を低減する方法６００を示す。ブロック６１０で、条件付分岐命令の第１の方向が暗黙に予測される。例えば、もしＢＴＡＣ内での条件付分岐命令へのヒットがあれば、ＢＴＡＣ内の対応する分岐ターゲットアドレスがプリフェッチされる。従って、分岐方向は暗黙に「選択される」と予測される。ブロック６２０で、条件付分岐命令の第２の方向が、例えば分岐予測子回路１２６内に格納された状態情報のような状態情報に基づいて連続して予測される。上記の例に続いて、分岐予測子回路は、条件付分岐命令が「選択されない」であろうと予測するので、ＢＴＡＣの暗黙の予測と整合が取れない。ブロック６３０で、条件付分岐命令に関連するＢＴＡＣエントリは、例えば分岐予測子回路１２６に格納された状態情報を用いて管理される。異なるタイプのＢＴＡＣ管理が図５の説明に関連して上述された。あるいはブロック６３０で、条件付分岐命令に関連するＢＴＡＣエントリは、分岐予測子回路と、分岐予測子回路に格納された任意の状態から独立したＢＴＡＣルックアップとの間が矛盾すると管理される。
【００３８】
本明細書に開示された実施形態に関連して説明された様々な例示的論理ブロック、モジュール、回路、要素、及び／又は構成要素は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又はその他のプログラマブル・ロジック・コンポーネント、ディスクリートハードウェア部品、又は本明細書で説明される機能を実行するように設計されたこれらの任意の組み合わせを用いて実現又は実行することができる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、又は状態機器を用いることも可能である。プロセッサは、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【００３９】
本明細書に開示された実施形態に関連して説明された方法又はアルゴリズムは、ハードウェアで直接、あるいはプロセッサによって実行されるソフトウェアモジュールで、又はその２つの組み合わせで実現することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、又は当該技術において周知であるその他任意の形式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合されうる。あるいは記憶媒体は、プロセッサに統合されることができる。
【００４０】
本発明は実施形態に関連して開示されたが、当業者には、実施形態の広範囲な変形例が、上記説明及び特許請求の範囲と整合が取れるように利用することができることがよく理解されるであろう。
【図１】
2009543223.tif 000003
【図２】
2009543223.tif 000004
【図３】
2009543223.tif 000005
【図４】
2009543223.tif 000006
【図５】
2009543223.tif 000007
【図６】
2009543223.tif 000008
【国際調査報告】
2009543223.tif 000009
2009543223.tif 000010
2009543223.tif 000011