(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-12
(45)【発行日】2023-10-20
(54)【発明の名称】プロセッサのフィルタリングされた分岐予測構造
(51)【国際特許分類】
G06F 9/38 20180101AFI20231013BHJP
【FI】
G06F9/38 330B
(21)【出願番号】P 2021509763
(86)(22)【出願日】2019-06-20
(86)【国際出願番号】 US2019038179
(87)【国際公開番号】W WO2020040857
(87)【国際公開日】2020-02-27
【審査請求日】2022-05-24
(32)【優先日】2018-08-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョン カラマティアノス
(72)【発明者】
【氏名】アディシャ ヤラバルティ
(72)【発明者】
【氏名】ヴァルン アグラワール
(72)【発明者】
【氏名】サブハンカー パル
(72)【発明者】
【氏名】ビネシュ スリニヴァサン
【審査官】三坂 敏夫
(56)【参考文献】
【文献】米国特許出願公開第2018/0165094(US,A1)
【文献】MUSOLL,Enric,Predicting the usefulness of a block result: a micro-architectural technique for high-performance low-power processors,MICRO-32. Proceedings of the 32nd Annual ACM/IEEE International Symposium on Microarchitecture,米国,IEEE,1999年11月18日,pages:1-10
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30-9/38
(57)【特許請求の範囲】
【請求項1】
プロセッサ[100]の命令パイプラインのフェッチステージ[102]での実行のために第1の命令アドレス[211]をフェッチしたことに応じて、
前記第1の命令アドレスを含む第1のメモリ領域[231]を識別することと、
前記第1のメモリ領域について、第1の分岐ターゲットバッファ(BTB)[114]への第1のアクセスミス数[228]を識別することと、
前記第1のアクセスミス数が閾値を超えたことに応じて、前記第1の命令アドレスに対する前記第1のBTBへのアクセスを抑制することと、を含む、
方法。
【請求項2】
前記第1の命令アドレスをフェッチしたことに応じて、第2のBTB[112]にアクセスすることを更に含む、
請求項1の方法。
【請求項3】
前記第1のBTBは、前記第2のBTBのビクティムバッファである、
請求項2の方法。
【請求項4】
前記第1のメモリ領域について前記第1のアクセスミス数を識別することは、複数のアクセスミスカウントを記憶するテーブル[225]に基づいて前記第1のアクセスミス数を識別することを含み、前記複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている、
請求項2の方法。
【請求項5】
前記第1のBTBにおける第1のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントすることを更に含む、
請求項4の方法。
【請求項6】
前記複数のアクセスミスカウントのうち何れかをインクリメントすることは、前記第1のBTBにおける前記第1のアクセスミス及び前記第2のBTBにおける第2のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントすることを含む、
請求項5の方法。
【請求項7】
前記第1のBTBにおけるアクセスヒットに応じて、前記複数のアクセスミスカウントのうち何れかをリセットすることを更に含む、
請求項6の方法。
【請求項8】
前記第2のBTBから前記第1のBTBに分岐ターゲットアドレスを転送したことに応じて、前記複数のアクセスミスカウントのうち何れかをリセットすることを更に含む、
請求項6の方法。
【請求項9】
第1の命令アドレス[211]をフェッチする[102]ように構成されたフェッチステージを含む命令パイプラインと、
分岐予測器[110]と、を備えるプロセッサ[100]であって、
前記分岐予測器は、
分岐ターゲットアドレスを前記命令パイプラインに提供するように構成された第1の分岐ターゲットバッファ(BTB)[114]と、
分岐予測制御モジュール[120]と、を備え、
前記分岐予測制御モジュールは、
前記第1の命令アドレスを含む第1のメモリ領域[231]を識別することと、
前記第1のメモリ領域について、前記第1のBTBへの第1のアクセスミス数[228]を識別することと、
前記第1のアクセスミス数が閾値を超えたことに応じて、前記第1の命令アドレスに対する前記第1のBTBへのアクセスを抑制することと、
を行うように構成されている、
プロセッサ[100]。
【請求項10】
第2のBTB[112]を更に備え、
前記分岐予測制御モジュールは、前記第1の命令アドレスをフェッチしたことに応じて、前記第2のBTBにアクセスするように構成されている、
請求項
9のプロセッサ。
【請求項11】
前記第1のBTBは、前記第2のBTBのビクティムバッファである、
請求項
10のプロセッサ。
【請求項12】
前記分岐予測制御モジュールは、
複数のアクセスミスカウントを記憶するテーブル[225]に基づいて前記第1のアクセスミス数を識別するように構成されており、前記複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている、
請求項
10のプロセッサ。
【請求項13】
前記分岐予測制御モジュールは、
前記第1のBTBにおける第1のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている、
請求項
12のプロセッサ。
【請求項14】
前記分岐予測制御モジュールは、
前記第1のBTBにおける前記第1のアクセスミス及び前記第2のBTBにおける第2のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている、
請求項
13のプロセッサ。
【請求項15】
前記分岐予測制御モジュールは、
前記第1のBTBにおけるアクセスヒットに応じて、前記複数のアクセスミスカウントのうち何れかをリセットするように構成されている、
請求項
13のプロセッサ。
【請求項16】
前記分岐予測制御モジュールは、
前記第2のBTBから前記第1のBTBに分岐ターゲットアドレスを転送したことに応じて、前記複数のアクセスミスカウントのうち何れかをリセットするように構成されている、
請求項
13のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
処理効率を高めるために、プロセッサは、1つ以上の予測処理技術を使用することができる。予測処理技術の1つのタイプは、分岐予測と呼ばれ、プロセッサは、分岐命令の結果を予測することによって、プロセッシングユニットが分岐命令を評価する前に、予測された分岐に従って後続の命令を投機的に実行し始めることができる。分岐予測をサポートするために、プロセッサは、分岐ターゲットバッファ(BTB)と呼ばれる分岐ターゲット構造及び分岐方向予測器を採用する。BTBは、予測された分岐のアドレス情報を記憶し、分岐方向予測器は、所定の分岐が取られると予期されるかどうかを予測する。しかしながら、従来の分岐予測構造は、望ましくない量の電力を消費することがある。
【0002】
添付図面を参照することによって本開示をより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用することは、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、フィルタリングされた分岐予測構造を有する分岐予測器を含むプロセッサのブロック図である。
【
図2】いくつかの実施形態による、分岐ターゲットバッファへのフィルタリングされたアクセスを示す、
図1の分岐予測モジュールの一部のブロック図である。
【
図3】いくつかの実施形態による、プロセッサにおいて分岐ターゲットバッファへのアクセスをフィルタリングする方法のフローチャートである。
【
図4】いくつかの実施形態による、1つ以上の分岐方向テーブルへのフィルタリングされたアクセスを示す、
図1の分岐予測モジュールの一部のブロック図である。
【
図5】いくつかの実施形態による、指定された予測期間に亘るテーブル使用に基づいて、1つ以上の分岐方向テーブルへのアクセスをフィルタリングする方法のフローチャートである。
【
図6】いくつかの実施形態による、テーブルユーティリティの予測に基づくテーブル使用に基づいて、1つ以上の分岐方向テーブルへのアクセスをフィルタリングする方法のフローチャートである。
【発明を実施するための形態】
【0004】
図1~
図6は、プロセッサの分岐予測器における電力消費を低減させる技術を示す。分岐予測器は、予測された分岐アドレス及び予測された分岐方向を含む、予測された分岐を識別するための1つ以上の予測構造を含む。電力消費を低減させるために、分岐予測器は、有用な分岐予測情報を提供することが予期されない1つ以上の予測構造を選択し、選択された構造をフィルタリングして、フィルタリングされた構造が分岐予測に使用されないようにする。これにより、分岐予測器は、予測された分岐の精度を実質的に低下させることなく、分岐予測に使用される電力量を低減させる。
【0005】
説明するために、いくつかの実施形態では、分岐予測器は、一方の分岐ターゲットバッファ(BTB)がレベル1(L1)BTBであり、他方がレベル2(L2)BTBであるレベルに編成された、2つのBTBを含む。L2 BTBは、L1 BTBよりも大きいが、L1 BTBよりもアクセスが低速である。従来、分岐予測器は、予測された分岐アドレスを識別するために、プロセッサでフェッチされた命令アドレス毎にL1 BTB及びL2 BTBの両方にアクセスする。しかしながら、L1 BTBにおいてヒットする可能性が高い(すなわち、記憶されているとして識別される)フェッチされた命令アドレスに対し、L2 BTBへの同時アクセスは、電力を不必要に消費する。更に、多くのケースでは、フェッチされた命令アドレスは、仮想アドレス空間において空間的に近接する、以前にフェッチされた命令アドレスもL1 BTB内でヒットする場合に、L1 BTB内でヒットする可能性がより高い。言い換えると、フェッチされた命令アドレスが比較的高い空間コードの局地性を有する場合、L1 BTBのヒットが増加する可能性が高い。したがって、本明細書で説明する技術を使用して、分岐予測器は、同じメモリ空間領域(本明細書では、ページと呼ばれる)へのアクセスのカウントを維持し、カウントが閾値を超えると、対応するメモリページ内のフェッチされたアドレスについてL2 BTBへのアクセスを抑制する。これにより、分岐予測器は、L2 BTBへの不必要なアクセスを低減させ、プロセッサにおける動的な電力消費を低減させる。
【0006】
別の例として、いくつかの実施形態では、分岐予測器は、ベース予測器と、分岐方向を予測するための複数の方向テーブルと、を使用し、各方向テーブルは、方向テーブルに記憶されているフェッチされた命令アドレスの履歴に基づいて、予測分岐の方向を独立して予測する、タグ付けされたテーブルである。フェッチされた命令アドレスについて、分岐予測器は、フェッチされた命令アドレスに関連するタグに対してヒットするテーブルのセットを識別する。分岐予測器は、ベース予測器によって生成された予測を、識別されたテーブルの各セットからの予測と組み合わせて、組み合わされた予測を生成する。しかしながら、いくつかの予測テーブルは、フェッチされた命令アドレスの所定のストリームに対してヒットする可能性が低い。したがって、電力消費を低減させるために、分岐予測器は、所定の期間、所定の命令アドレス又はこれらの組み合わせに対し、各方向テーブルがヒットすると予測されるかどうかを予測する。分岐予測器は、ヒットが予測されず、したがって有用な分岐方向情報を提供する可能性が低い方向テーブルを無効にする。これにより、分岐予測器は、複数の方向テーブルへのアクセスの総数を低減させ、分岐予測精度を実質的に低下させることなく電力を低減させる。
【0007】
図1は、いくつかの実施形態による、フィルタリングされた分岐予測構造を含むプロセッサ100を示す。本明細書で使用されるように、分岐予測構造は、プロセッサ100における分岐予測に対する分岐予測構造の影響を選択的に有効又は無効することができる場合に、フィルタリングされた構造である。本明細書で更に説明するように、プロセッサ100は、構造へのアクセスを抑制すること、構造を無効にすること(例えば、構造を低電力状態に置くこと)、又は、これらの組み合わせを含むいくつかの方法のうち1つ以上において、構造が分岐予測に影響を与えないように、分岐予測構造をフィルタリングする。
【0008】
プロセッサ100は、電子デバイスの代わりに、特定のタスクを実行するように命令セット(例えば、コンピュータプログラム)を実行する。いくつかの実施形態では、プロセッサ100は、デスクトップ又はラップトップコンピュータ、サーバ、ゲームコンソール、スマートフォン、タブレット等の様々な電子デバイスのうち何れかに組み込まれる。命令の実行をサポートするために、プロセッサ100は、命令フェッチステージ102及び追加のパイプラインステージ(図示省略)を有する命令パイプラインを含む。追加のパイプラインステージは、フェッチされた命令をオペレーションのセットに復号するステージと、復号されたオペレーションを実行する実行ステージと、実行された命令をリタイアするリタイアステージと、を含む。いくつかの実施形態では、プロセッサ100は、1つ以上のメモリコントローラ、入力/出力コントローラ、メモリ構造(例えば、1つ以上のキャッシュ)等を含む、命令の実行をサポートするための追加のモジュールを含むことが理解されよう。また、いくつかの実施形態では、プロセッサ100は、追加の命令パイプラインを含むことが理解されよう。例えば、いくつかの実施形態では、プロセッサ100は、複数のプロセッサコアを含み、各プロセッサコアは、命令セットを実行するための少なくとも1つの命令パイプラインを有する。さらに、いくつかの実施形態では、プロセッサ100は、描画オペレーション、表示オペレーション、他のグラフィックスオペレーションに関連するオペレーションを実行する1つ以上のグラフィックスプロセッシングユニット(GPU)等のように、特殊なタスクに関連するオペレーションを実行するように特に設計された追加のプロセッシングユニットを含む。
【0009】
図1の例示された実施形態に戻ると、命令フェッチステージ102は、命令ポインタ101に基づいて、命令キャッシュ103から命令を取り出す(フェッチする)。当業者に理解されるように、命令ポインタ101は、フェッチされる現在の命令(複数可)を示すアドレス値であり、実行される命令のプログラムフローを修正するために、選択されたオペレーションを実行することによって修正される。例えば、いくつかの実施形態では、分岐命令は、例えば、分岐命令又は関連する命令によって指定されたデータの評価に基づいて、命令ポインタ101を修正する。
【0010】
高い命令フェッチ帯域幅をサポートするために、プロセッサ100は、所定のフェッチされた命令が分岐命令に対応するかどうかを予測し、所定の分岐命令の方向を予測し(すなわち、所定の分岐命令が実行されるか否かを予測し)、所定の分岐命令が実行されると予測される場合に、所定の分岐命令のターゲットアドレスを予測する分岐予測器110を含む。分岐予測器110は、L1 BTB112と、L2 BTB114と、分岐方向テーブル116と、分岐予測制御モジュール120と、を含む、分岐予測をサポートするためのいくつかのモジュール及び構造を含む。分岐予測制御モジュール120は、分岐予測構造を有効又は無効にすること、分岐予測構造へのアクセスを抑制すること、分岐予測構造に記憶されたデータを管理すること、本明細書で更に説明する他の管理オペレーションを含む、分岐予測器110のオペレーションを管理する。
【0011】
L1 BTB112及びL2 BTB114の各々は、分岐命令であると予測される異なる命令ポインタ値に対応する複数のエントリを含む。少なくとも1つの実施形態では、分岐予測制御モジュール120は、L2 BTB114がL1 BTB112のビクティムバッファとなるように、L1 BTB112及びL2 BTB114のエントリを管理する。いくつかの実施形態では、L2 BTB114は、L1 BTB112よりも大きな構造であり、L1 BTB112よりも多くのエントリを含む。分岐予測制御モジュール120は、指定された条件(例えば、新たなデータがL1 BTB112に移動される等)に基づいてL1 BTB112からデータをエビクトするので、分岐予測制御モジュール120は、エビクトされたデータをL2 BTB114に移動する。
【0012】
命令サイクル毎に、命令フェッチステージ102は、命令ポインタ101を分岐予測器110に提供する。これに応じて、分岐予測制御モジュール120は、L1 BTB112が、命令ポインタ101によって示されるフェッチされた命令アドレスに対応するエントリを含むかどうかを判別する。エントリが、受信された命令ポインタ値に対応すると識別したことに応じて(BTBヒットと呼ばれる)、分岐予測制御モジュール120は、識別されたエントリから分岐ターゲットアドレス(BTA)を取り出し、BTAを命令フェッチステージ102に提供する。
【0013】
分岐予測制御モジュール120は、フェッチされた命令アドレス毎にL1 BTB112にアクセスすることに加えて、L2 BTB114へのアクセスが生産的であると予期されるかどうか、すなわち、L2 BTB114へのアクセスがBTBヒットと予期されるかどうかに基づいて、L2 BTB114に選択的にアクセスする。
図2及び
図3に関して以下に更に説明するように、分岐予測制御モジュール120は、仮想メモリ空間の特定の領域に対応するフェッチされたアドレスについて、L1 BTB112におけるヒットのカウントを維持し、ここでは、特定の領域をメモリページと呼ぶ。分岐予測制御モジュール120によって監視されるメモリページは、プロセッサ100で実行されるオペレーティングシステムによって維持されるメモリページ等のように、プロセッサ100における他のオペレーションのために使用されるメモリページとは異なってもよいことが理解されよう。
【0014】
分岐予測制御モジュール120は、フェッチされた命令アドレスを受信したことに応じて、フェッチされた命令アドレスに対応するメモリページを識別し、識別されたメモリページに対応するカウントを識別する。分岐予測制御モジュール120は、カウントが閾値を下回っていることに応じて、フェッチされた命令アドレスをL2 BTB114に提供するとともに、フェッチされた命令アドレスがL1 BTB112においてヒットしたかどうかを識別する。L2 BTB114におけるヒットに応じて、分岐予測制御モジュール120は、L2 BTB114の識別されたエントリから分岐ターゲットアドレス(BTA)を取り出し、BTAを命令フェッチステージ102に提供する。
【0015】
分岐予測制御モジュール120は、識別されたメモリページのカウントが所定の閾値を上回ると判別したことに応じて、例えば、フェッチ命令アドレスをL2 BTB114に提供しないことによって、フェッチされた命令アドレスのL2 BTB114へのアクセスを抑制する。よって、分岐予測制御モジュール120は、L1 BTB112にヒットすると予測されるフェッチされた命令アドレスのL2 BTB114へのアクセスを回避し、プロセッサ100における電力消費を低減させる。
【0016】
分岐予測器110は、BTAをフェッチステージ102に提供することに加えて、予測される分岐命令毎に分岐方向予測を提供し、分岐方向予測は、分岐が実行されることが予測されるかどうかを示す。分岐方向の予測をサポートするために、分岐予測器110は、分岐方向テーブル116を含む。少なくとも1つの実施形態では、分岐方向テーブル116は、タグ付き幾何学長(TAGE)予測器の少なくとも一部を形成し、個々のテーブル(例えば、テーブル117,118)は、等比級数(geometric series)を形成するフェッチされた命令アドレスのグローバル履歴を記憶する、部分的にタグ付けされた予測器テーブル(partially tagged predictor table)である。また、各テーブルは、対応する等比級数に従って異なる履歴を記憶する。テーブルの各のエントリは、対応するエントリが分岐予測に有用であると予測されるかどうかを示す有用ビットと、分岐方向のバイアス値を追跡するためのカウンタと、エントリに関連する仮想アドレスを示すタグと、を記憶する。
【0017】
分岐予測制御モジュールは、分岐方向テーブル116の各々に記憶されたデータを管理する。少なくとも1つの実施形態では、分岐予測制御モジュールは、何れの分岐命令が実行され、何れの分岐命令が実行されないかを含む、プロセッサ100において実行される分岐命令のパターンを経時的に分析し、識別されたパターンに基づいて分岐方向テーブル116を更新する。少なくとも1つの実施形態では、分岐予測制御モジュール120は、本明細書で分岐予測ウィンドウと呼ばれるブロック又はセットで実行される命令を分析し、各分岐予測ウィンドウ上で分岐方向テーブル116にアクセスする。識別されたパターンに基づいて、分岐予測制御モジュールは、バイアス値、有用ビット、1つ以上のエントリに関連するタグ、又は、これらの組み合わせを更新する。
【0018】
少なくとも1つの実施形態では、分岐方向テーブル116は、2つのレベル(レベル1(L1)テーブル及びレベル2(L2)テーブルと呼ばれる)に分割される。予測ウィンドウの間、分岐予測制御モジュール120は、BTB112,114の何れかが予測ウィンドウ内の分岐を示すことに応じて、方向予測を識別するために、L1テーブル及びL2テーブルの両方にアクセスする。いくつかの実施形態では、分岐予測制御モジュール120は、予測ウィンドウに関連する経路履歴(例えば、予測ウィンドウに含まれる命令に関連する制御フロー履歴)に基づいて生成されたタグを使用して、各テーブルにアクセスする。一致したタグを有するエントリを有する分岐方向テーブル116の各々は、対応するエントリに記憶されたバイアス値を分岐予測制御モジュール120に提供し、分岐予測制御モジュール120は、受信したバイアス値を、特定の分岐予測アルゴリズムに従って選択又は組み合わせる。特定の分岐予測アルゴリズムは、プロセッサ100の設計及びアプリケーションに応じて変わる。
【0019】
いくつかのシナリオでは、所定の予測ウィンドウの経路履歴によって、1つ以上の分岐方向テーブル116は、生成されたタグに対応するエントリを記憶せず、又は、分岐予測制御モジュール120によって生成された分岐方向予測の精度を向上させない分岐予測情報を提供する。これらの1つ以上の分岐予測テーブルは、所定の予測ウィンドウ又は予測ウィンドウのセットについて有用な分岐予測情報を提供しないので、これらの分岐予測テーブルへのアクセスを、本明細書では「非生産的」読み出しと呼ぶ。非生産的読み出しは、分岐予測の精度を実質的に向上させることなく、プロセッサ100内の電力を消費することが理解されよう。したがって、
図4~
図6に関して本明細書で更に説明するように、分岐予測器110は、選択された分岐予測テーブルが非生産的読み出しを生じさせる予測可能性(predicted likelihood)に基づいて、1つ以上の分岐方向テーブル116を非アクティブ状態に選択的に置く。非アクティブ状態の分岐予測テーブルは、分岐予測制御モジュール120によってアクセスされず、いくつかの実施形態では、低電力状態に置かれ、これにより、電力を節約する。本明細書で更に説明するように、分岐予測制御モジュール120は、予測ウィンドウのセット間の各テーブルへのヒットの数に基づいて、分岐方向テーブル116へのヒットのパターン履歴に基づいて、又は、これらの組み合わせに基づいて等のように、いくつかの方法のうち1つ以上で非アクティブ状態に置かれる分岐予測テーブルを選択する。
【0020】
図2は、いくつかの実施形態による、BTB114へのアクセスのフィルタリングを管理する
図1の分岐予測器110の一部のブロック図である。図示した例では、分岐予測制御モジュールは、BTBアクセス制御モジュール230と、ページアクセステーブル225と、を含む。BTBアクセス制御モジュール230は、受信したフェッチされた命令アドレス(例えば、フェッチされたアドレス211)及びページアクセステーブル225に記憶されたデータに基づいて、L2 BTB114へのアクセスを制御する。
【0021】
ページアクセステーブル225は、複数のエントリ(例えば、エントリ226)を含み、各エントリは、メモリページ(例えば、メモリページ231)に対応する。上述したように、いくつかの実施形態では、メモリページ(例えば、メモリページ231,232)は、プロセッサ100において実行されるオペレーティングシステムによって使用されるメモリページに対応する。他の実施形態では、メモリページ231,232は、オペレーティングシステムによって使用されるメモリページに対応しない。いくつかの実施形態では、メモリページ231,232の各々のサイズは、プロセッサ100のユーザ又はプログラマによって構成可能である。
【0022】
ページアクセステーブル225の各エントリは、メモリページ識別子フィールド(例えば、エントリ226の識別子フィールド227)と、アクセスカウントフィールド(例えば、エントリ226のアクセスカウントフィールド228)と、を含む。メモリページ識別子フィールド227は、エントリに対応するメモリページの識別子を記憶し、アクセスカウントフィールド228は、以下に更に説明するように、L2 BTB114におけるヒットなしのメモリページへの連続アクセス数を記憶する。動作中、BTBアクセス制御モジュール230は、ページアクセステーブル225のエントリ及びフィールドを管理し、ページアクセステーブル225に基づくメモリページに対するアクセスカウントに基づいて、L2 BTB114へのアクセスをフィルタリングする。
【0023】
図3は、いくつかの実施形態による、L2 BTB114へのアクセスをフィルタリングする方法300のフローチャートを示す。ブロック302において、BTBアクセス制御モジュール230は、フェッチされた命令アドレス(例えば、フェッチされたアドレス211)を受信する。ブロック304において、BTBアクセス制御モジュール230は、フェッチされたアドレスに対応するメモリページを識別し、識別されたメモリページがページアクセステーブル225にエントリを有するかどうかを判別する。エントリを有する場合、方法のフローは、以下に説明するブロック308に移動する。識別されたメモリページがページアクセステーブル225にエントリを有しない場合、方法のフローは、ブロック306に移動し、BTBアクセス制御モジュール230は、識別されたメモリページのページアクセステーブル225にエントリを割り当て、割り当てられたエントリのアクセスカウントフィールドを初期値(例えば、ゼロ)に設定する。いくつかのケースでは、アクセス制御モジュールは、最近最も使用されていない(a least recently used)置換ポリシー等の特定の置換ポリシーを使用して別のエントリを置き換えることによって、エントリを割り当てる。方法のフローは、ブロック308に進む。
【0024】
ブロック308において、BTBアクセス制御モジュール230は、識別されたメモリページのアクセスカウントフィールドが閾値よりも大きいかどうかを判別する。閾値よりも大きい場合、方法のフローは、ブロック310に移動し、BTBアクセス制御モジュール230は、例えば、フェッチされた命令アドレスをL2 BTB114に提供しないことによって、L2 BTB114へのアクセスをフィルタリングする。方法のフローは、ブロック311に移動し、BTBアクセス制御モジュール230は、L1 BTB112が、フェッチされた命令アドレスに対するBTAをL2 BTB114に送信するかどうかを判別する。そうでない場合(すなわち、フェッチされた命令アドレスに対するL1 BTBミスが存在する場合)、方法のフローは、ブロック302に戻る。フェッチされた命令アドレスに対するL1 BTBヒットが存在し、L1 BTB112が、フェッチされた命令アドレスに対するBTAをL2 BTB114に送信する場合、方法のフローは、ブロック321に移動し、BTBアクセス制御モジュール230は、識別されたメモリページに対するアクセスカウントフィールドを初期値にリセットする。方法のフローは、ブロック302に戻る。
【0025】
ブロック308に戻り、BTBアクセス制御モジュール230が、識別されたメモリページに対するアクセスカウントが閾値以下であると判別した場合、方法のフローは、ブロック312に進み、BTBアクセス制御モジュール230は、フェッチされた命令アドレスをL2 BTB114に提供して、L2 BTB114が、フェッチされた命令アドレスに対するBTAを記憶するかどうかを判別する。方法のフローは、ブロック314に進む。
【0026】
ブロック314において、L1 BTB112は、L1 BTB112が、フェッチされた命令アドレスに対するBTAを記憶するかどうかに基づいて、BTBヒット又はBTBミスを示す。L1 BTB112におけるBTBヒットに応じて、方法のフローは、ブロック316に移動し、BTBアクセス制御モジュール230は、識別されたメモリページに対するアクセスカウントを修正しないままにする。方法のフローは、ブロック302に戻る。
【0027】
ブロック314に戻り、L1 BTB112がBTBミスを示す場合、方法のフローは、ブロック318に移動し、BTBアクセス制御モジュール230は、L2 BTB114が、フェッチされた命令アドレスに対するBTBヒットを示したかどうかを判別する。フェッチされた命令アドレスに対するL2 BTB114におけるヒットに応じて、方法のフローは、ブロック319に移動し、BTBアクセス制御モジュール230は、識別されたメモリページに対するアクセスカウントフィールドを初期値にリセットする。方法のフローは、ブロック302に戻る。ブロック318において、L2 BTBがBTBミスを示す場合、方法のフローは、ブロック320に移動し、BTBアクセス制御モジュールは、識別されたメモリページに対するアクセスカウントフィールドをインクリメントする。
【0028】
図4は、いくつかの実施形態による、分岐方向テーブル116の少なくともサブセットへのアクセスをフィルタリングすることを管理する
図1の分岐予測器110の一部のブロック図である。図示した例では、方向予測テーブルは、2つのサブセット(L1方向テーブル442(例えば、L1方向テーブル448,449)のセット、及び、L2方向テーブル444(例えば、L2方向テーブル446,447)のセット)に分離される。分岐予測制御モジュール120は、方向テーブルアクセス制御モジュール452と、テーブル使用履歴455と、を含む。方向テーブルアクセス制御モジュール452は、何れのL2方向テーブル444が分岐方向に対する予測を提供するかを識別し、識別されたL2方向テーブルをテーブル使用履歴455に記録する。また、方向テーブルアクセス制御モジュール452は、テーブル使用履歴455に基づいて、L2方向テーブル444が有用な予測を提供するパターンを識別し、識別されたパターンに基づいて、L2方向テーブル444のうち選択された1つへのアクセスを有効又は無効にする。
【0029】
例を用いて説明すると、所定の予測ウィンドウの分岐方向を判別するために、分岐予測制御モジュール120は、L1方向テーブル442の各々にアクセスし、特定の分岐方向アルゴリズムに従ってL1方向テーブル442によって生成された方向予測を組み合わせて、「L1方向予測」の説明のために指定された方向予測を生成する。従来、分岐予測制御モジュール120は、L1方向テーブル442と同様に、L2方向テーブル444の各々に同時にアクセスして、「L2方向予測」の説明のために指定された別個の独立した方向予測を生成する。L1方向予測とL2方向予測との間に競合が生じた場合、L2方向テーブルがより大きく、より多くの分岐履歴を利用し、より精度が高いので、L2方向予測が典型的には選択される。また、L1予測テーブルよりもアクセスが低速になる。しかしながら、上述したように、所定の予測ウィンドウについては、L2方向テーブル444のサブセットのみが方向予測を提供する可能性が高い。したがって、少なくとも1つの実施形態では、方向テーブルアクセス制御モジュール452は、L2方向テーブル444の選択されたサブセットへのアクセスを無効にし、これにより、方向予測の精度を実質的に低下させることなく、電力を節約する。
【0030】
L2方向テーブル444のサブセットを識別する例示的な技術が
図5及び
図6に示されている。
図5を参照すると、いくつかの実施形態による、複数の予測ウィンドウに亘るテーブル使用に基づいてL2方向テーブル444のサブセットを識別する方法500のフローチャートが示されている。ブロック502において、方向テーブルアクセス制御モジュール452は、テーブル使用履歴455を使用して、N(Nは、整数)個の予測ウィンドウに亘ってL2方向テーブル444の各々の使用を識別する。N個の予測ウィンドウの各セットを、本明細書では「エポック」と呼ぶ。少なくとも1つの実施形態では、方向テーブルアクセス制御モジュール452は、予測ウィンドウの間にL2方向テーブルにおいてタグのヒットが存在する場合、所定のL2方向テーブルが予測ウィンドウに使用されると識別する。
【0031】
ブロック504において、方向テーブルアクセス制御モジュール452は、エポックに対する分岐予測器110における方向予測誤り率を識別する。少なくとも1つの実施形態では、予測誤り率は、Nで除算されたエポックの間にプロセッサ100によって識別された分岐方向予測誤りの数である。プロセッサ100は、様々な従来の予測誤り識別技術のうち何れかを使用して、方向予測誤りを識別する。分岐予測誤り率に基づいて、方向テーブルアクセス制御モジュール452は、エポックに対する方向予測誤りのレベル、方向予測誤り率が変化している割合、及び、方向予測誤り率が増大又は減少しているかどうか、のうち1つ以上を示す制御値を生成する。
【0032】
例えば、いくつかの実施形態では、方向テーブルアクセス制御モジュール452は、M(Mは、整数)個のエポックについて計算された参照予測誤り率を生成する。方向テーブルアクセス制御モジュール452は、エポックに対して、エポックに対する予測誤り率と参照予測誤り率との差に基づいて、誤り値を計算する。次に、方向テーブルアクセス制御モジュール452は、3つの成分、すなわち、1)前のエポックに対する予測誤り率を示す比例成分、2)前のエポックに対する誤り値の合計を示す積分成分、3)最後の2つの誤り値の差を示す微分成分、に基づいて、比例-積分-微分(PID)コントローラを使用して、制御値を計算する。
【0033】
ブロック506において、方向テーブルアクセス制御モジュール452は、ブロック504において計算された制御値に基づいて、アクティブなL2方向テーブルの数を決定する。例えば、制御値が、予測誤り率が閾値を上回るか、閾値を上回る割合で増大していることを示す場合、方向テーブルアクセス制御モジュール452は、アクティブなL2方向テーブルの数を比較的多い量に設定する。一方、制御値が、予測誤り率が閾値を下回るか、閾値を下回る割合で増大していることを示す場合、方向テーブルアクセス制御モジュール452は、アクティブなL2方向テーブルの数を比較的少ない量に設定する。これにより、方向テーブルアクセス制御モジュール452は、予測誤り率を所定の許容範囲内に維持する。
【0034】
ブロック508において、方向テーブルアクセス制御モジュール452は、前のエポックに亘るL2方向テーブル444の各々の使用に基づいて、及び、ブロック506において識別されたアクティブなL2方向テーブルの数に基づいて、非アクティブになるL2方向テーブル444のサブセットを選択する。例えば、いくつかの実施形態では、方向テーブルアクセス制御モジュール452は、前のエポック内での使用が閾値を下回るL2方向テーブルをサブセットに選択する。サブセットに選択されたL2方向テーブルの数によって、ブロック506において計算された必要数によって示されるアクティブなL2方向テーブルが少なすぎる結果になる場合、方向テーブルアクセス制御モジュールは、必要数が満たされるまで、サブセットからL2方向テーブルを除去する。非アクティブなL2方向テーブル444のサブセットを選択した後、方向テーブルアクセス制御モジュール452は、後続のエポックの間、選択されたサブセットへのアクセスを抑制する。
【0035】
図6は、いくつかの実施形態による、エポック毎に予測されたテーブル使用に基づいて、L2方向テーブル444のサブセットを識別する方法600のフローチャートを示す。方法600に関して、方向テーブルアクセス制御モジュール452は、各予測ウィンドウの間に各L2方向テーブル444の使用を監視し、使用状況をテーブル使用履歴455に記録することが想定される。少なくとも1つの実施形態では、方向テーブルアクセス制御モジュールは、対応するL2方向テーブルがタグ一致を示している場合に、テーブルエントリの対応するビット位置に1を記憶し、L2方向テーブルがタグミスを示している場合に、対応するビット位置に0を記憶することによって、特定の期間の間(例えば、所定数の過去の予測ウィンドウ等)、各L2方向テーブル444の使用パターンを記録する。
【0036】
ブロック602において、方向テーブルアクセス制御モジュール452は、テーブル使用履歴455にアクセスして、L2方向テーブル444の使用をプロファイルする。いくつかの実施形態では、方向テーブルアクセス制御モジュール452は、分岐方向を予測するために通常用いられる分岐予測技術を使用して、パターンを識別する。ブロック604において、方向テーブルアクセス制御モジュール452は、識別されたパターンに基づいて、L2方向テーブル444の各々に対して、対応するテーブルが次の予測ウィンドウの間に使用されると予期されるかどうかを予測する。ブロック606において、方向テーブルアクセス制御モジュールは、次の予測ウィンドウのために、ブロック604において使用されると予測されたL2方向テーブルをアクティブにする。したがって、次の予測ウィンドウの間、方向テーブルアクセス制御モジュール452は、アクティブにされたL2方向テーブルのみにアクセスする。これにより、方向テーブルアクセス制御モジュールは、分岐予測精度を維持しながら、電力を節約する。方法のフローは、次の予測ウィンドウのためにブロック602に戻る。
【0037】
本明細書に開示されるように、方法は、プロセッサの命令パイプラインのフェッチステージでの実行のために第1の命令アドレスをフェッチしたことに応じて、第1の命令アドレスを含む第1のメモリ領域を識別することと、第1のメモリ領域について、第1の分岐ターゲットバッファ(BTB)への第1のアクセスミス数を識別することと、第1のアクセスミス数が閾値を超えたことに応じて、第1の命令アドレスに対する第1のBTBへのアクセスを抑制することと、を含む。一態様では、方法は、第1の命令アドレスをフェッチしたことに応じて、第2のBTBにアクセスすることを含む。別の態様では、第1のBTBは、第2のBTBのビクティムバッファである。更に別の態様では、第1のメモリ領域について第1のアクセスミス数を識別することは、複数のアクセスミスカウントを記憶するテーブルに基づいて第1のアクセス数を識別することを含み、複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている。
【0038】
別の態様では、方法は、第1のBTBにおける第1のアクセスミスに応じて、複数のアクセスミスカウントのうち何れかをインクリメントすることを含む。更に別の態様では、複数のアクセスミスカウントのうち何れかをインクリメントすることは、第1のBTBにおける第1のアクセスミス及び第2のBTBにおける第2のアクセスミスに応じて、複数のアクセスミスカウントのうち何れかをインクリメントすることを含む。別の態様では、方法は、第1のBTBにおけるアクセスヒットに応じて、複数のアクセスミスカウントのうち何れかをリセットすることを含む。更に別の態様では、方法は、第2のBTBから第1のBTBに分岐ターゲットアドレスを転送したことに応じて、複数のアクセスミスカウントのうち何れかをリセットすることを含む。
【0039】
本明細書に開示されるように、いくつかの実施形態では、方法は、第1の期間に亘る第1の複数の分岐方向予測テーブルの各々の使用を示す第1の使用履歴を識別することと、第1の使用履歴に基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、プロセッサの分岐予測器の予測ウィンドウに対して、第1の複数の分岐方向予測テーブルの第1のサブセットへのアクセスを抑制することと、を含む。一態様では、第1の使用履歴を識別することは、分岐予測器の複数の予測ウィンドウについての第1の使用履歴を識別することを含む。一態様では、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することは、複数の予測ウィンドウについての分岐予測誤り率を決定することと、第1の使用履歴及び分岐予測誤り率に基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、を含む。更に別の態様では、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することは、第1の使用履歴に基づいて、分岐予測器の後続の予測ウィンドウの間に使用されると予期される第1の複数の分岐方向予測テーブルのサブセットを予測することと、予測されたサブセットに基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、を含む。
【0040】
一実施形態では、プロセッサは、第1の命令アドレスをフェッチするように構成されたフェッチステージを含む命令パイプラインと、分岐予測器と、を備え、分岐予測器は、分岐ターゲットアドレスを命令パイプラインに提供するように構成された第1の分岐ターゲットバッファ(BTB)と、分岐予測制御モジュールと、を備え、分岐予測制御モジュールは、第1の命令アドレスを含む第1のメモリ領域を識別することと、第1のメモリ領域について、第1のBTBへの第1のアクセスミス数を識別することと、第1のアクセスミス数が閾値を超えたことに応じて、第1の命令アドレスに対する第1のBTBへのアクセスを抑制することと、を行うように構成されている。一態様では、プロセッサは、第2のBTBを備え、分岐予測制御モジュールは、第1の命令アドレスをフェッチしたことに応じて、第2のBTBにアクセスするように構成されている。別の態様では、第1のBTBは、第2のBTBのビクティムバッファである。更に別の態様では、分岐予測制御モジュールは、複数のアクセスミスカウントを記憶するテーブルに基づいて第1のアクセスミス数を識別するように構成されており、複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている。
【0041】
一態様では、分岐予測制御モジュールは、第1のBTBにおける第1のアクセスミスに応じて、複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている。別の態様では、分岐予測制御モジュールは、第1のBTBにおける第1のアクセスミス及び第2のBTBにおける第2のアクセスミスに応じて、複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている。更に別の態様では、分岐予測制御モジュールは、第1のBTBにおけるアクセスヒットに応じて、複数のアクセスミスカウントのうち何れかをリセットするように構成されている。更に別の態様では、分岐予測制御モジュールは、第2のBTBから第1のBTBに分岐ターゲットアドレスを転送したことに応じて、複数のアクセスミスカウントのうち何れかをリセットするように構成されている。
【0042】
いくつかの実施形態では、プロセッサは、分岐予測器を備え、分岐予測器は、分岐命令方向の予測を提供するように構成された第1の複数の分岐方向予測テーブルと、分岐予測制御モジュールと、を備え、分岐予測制御モジュールは、第1の期間に亘る第1の複数の分岐方向予測テーブルの各々の使用を示す第1の使用履歴を識別することと、第1の使用履歴に基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、分岐予測器の予測ウィンドウに対して、第1の複数の分岐方向予測テーブルの第1のサブセットへのアクセスを抑制することと、を行うように構成されている。一態様では、分岐予測制御モジュールは、分岐予測器の複数の予測ウィンドウについて第1の使用履歴を識別することによって、第1の使用履歴を識別するように構成されている。
【0043】
別の態様では、分岐予測制御モジュールは、複数の予測ウィンドウについての分岐予測誤り率を決定することと、第1の使用履歴及び分岐予測誤り率に基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、によって、第1の複数の分岐方向予測テーブルの第1のサブセットを選択するように構成されている。更に別の態様では、分岐予測制御モジュールは、第1の使用履歴に基づいて、分岐予測器の後続の予測ウィンドウの間に使用されると予期される第1の複数の分岐方向予測テーブルのサブセットを予測することと、予測されたサブセットに基づいて、第1の複数の分岐方向予測テーブルの第1のサブセットを選択することと、によって、第1の複数の分岐方向予測テーブルの第1のサブセットを選択するように構成されている。
【0044】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0045】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0046】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。