JP7034159B2 - ストリーム長予測を使用する分岐予測器検索限定 - Google Patents

ストリーム長予測を使用する分岐予測器検索限定 Download PDF

Info

Publication number
JP7034159B2
JP7034159B2 JP2019527211A JP2019527211A JP7034159B2 JP 7034159 B2 JP7034159 B2 JP 7034159B2 JP 2019527211 A JP2019527211 A JP 2019527211A JP 2019527211 A JP2019527211 A JP 2019527211A JP 7034159 B2 JP7034159 B2 JP 7034159B2
Authority
JP
Japan
Prior art keywords
branch
search
predictor
stream
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019527211A
Other languages
English (en)
Other versions
JP2020501242A (ja
Inventor
リペッツ、ダニエル
ボナンノー、ジェームズ
キャディガン、ジュニア、マイケル、ジョセフ
コルラ、アダム、ベンジャミン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020501242A publication Critical patent/JP2020501242A/ja
Application granted granted Critical
Publication of JP7034159B2 publication Critical patent/JP7034159B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、マイクロプロセッサ設計の分野に関し、より詳しくは、ストリーム長予測を使用する分岐予測器検索限定(branch predictor search qualification)に関する。
分岐予測は、パイプライン化された高周波マイクロプロセッサの性能重視の構成要素である。分岐予測は、各分岐命令の方向(取られるのか取られないのか)および宛先アドレスを予測するのに使用される。分岐予測により、処理は、分岐の結果が決定されるのを待つ必要なく、分岐の予測経路に沿って継続することが可能になるので、これは有益である。分岐が間違って予測された場合にはペナルティが発生する。パイプライン化された分岐予測器は、予測をするのにいくつかのサイクルを要する。
従来、分岐予測は、プログラム内で実行すべき最も可能性の高いコードの経路に沿ってプロセッサ・パイプラインを下るよう命令の流れを導くのに使用される。分岐予測は、IF-THEN-ELSE構造体に含まれるコードのどの部分が、コードのどの部分が過去において実行されたのかに基づいて実行されるのかを予測することなど、所与の分岐が行われるのかまたは行われないのかを予測するために履歴情報を使用する。次いで、最初に行われる分岐であることが期待される分岐がフェッチされ、投機的に実行される。予測が間違っていたことが後で決定される場合、投機的に実行されたまたは部分的に実行された命令は破棄され、パイプラインはもう一度やり直しされ、命令は正しい分岐経路を有する分岐まで進み、分岐と次に実行すべき命令との間に遅延を招く。
分岐予測を提供するのに使用される構造体のアクセス時間は、それらの容量を制限する。階層的分岐予測器は、システムにより大きな容量を提供することができる。そのような設計において、第1のレベルの予測器の複数の連続検索からの分岐予測の不在は、典型的には、レベル2構造体からレベル1構造体への「レベル1ミス」に近い複数の分岐の検索およびバルク転送をトリガするのに使用することができる「レベル1ミス」の表示として使用される。しかし、予測の不在は、容量問題によることであり得るか、その場合、階層の第2のレベルにアクセスするのは有益である、または予測の不在は、検索されるコードのセクションに位置する分岐命令が何もないことによることであり得るかのいずれかである。非同期先読み分岐予測器は、典型的には、これらの2つの場合を区別することができない。したがって、階層的分岐予測器内の検索および転送プロセスを改善することが有利であろう。
実施形態によれば、コンピュータ実装方法が、プロセッサのストリーム・ベース・インデックス・アクセラレータ予測器によって、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定することを含む。プロセッサの階層的非同期先読み分岐予測器の第1のレベルの分岐予測器が、命令アドレスと予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために検索される。階層的非同期先読み分岐予測器の第2のレベルの分岐予測器の検索が、検索範囲内の分岐予測を見つけるのに失敗することに基づいてトリガされる。
他の実施形態によれば、システムが、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定するように動作可能であるプロセッサのストリーム・ベース・インデックス・アクセラレータ予測器を備える。システムは、第1のレベルの分岐予測器と第2のレベルの分岐予測器とを備えたプロセッサの階層的非同期先読み分岐予測器も備える。階層的非同期先読み分岐予測器は、命令アドレスと予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために第1のレベルの分岐予測器を検索し、検索範囲内の分岐予測を見つけるのに失敗することに基づいて第2のレベルの分岐予測器の検索をトリガするように動作可能である。
さらに他の実施形態によれば、コンピュータ・プログラム製品が、プログラム命令が具現化されたコンピュータ可読記憶媒体を備え、その場合、コンピュータ可読記憶媒体は、一時的信号それ自体ではない。プログラム命令は、プロセッサのストリーム・ベース・インデックス・アクセラレータ予測器によって、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定することを含む方法をプロセッサに実施させるようにプロセッサによって実行可能である。プロセッサの階層的非同期先読み分岐予測器の第1のレベルの分岐予測器が、命令アドレスと予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために検索される。階層的非同期先読み分岐予測器の第2のレベルの分岐予測器の検索が、検索範囲内の分岐予測を見つけるのに失敗することに基づいてトリガされる。
主題は、明細書の結論において、特に指摘され、特許請求の範囲において明確に特許請求される。次に、本発明の好ましい実施形態を、例としてのみ、および以下の図面を参照して説明する。
実施形態によるコンピューティング・デバイスの構成要素のブロック図である。 実施形態によるシステムのブロック図である。 実施形態による分岐ターゲット・バッファにおけるエントリを示す図である。 実施形態による別のシステムのブロック図である。 実施形態による分岐予測器検索を示す図である。 実施形態による分岐予測器拡張検索を示す図である。 実施形態による分岐予測器縮小検索を示す図である。 実施形態によるコンピュータ実装方法を示すフローチャートである。
実施形態は、ストリーム・ベース分岐予測インデックス・アクセラレータ(SPRED)と組み合わせて分岐予測プロセスにプロセッサの階層的非同期先読み分岐予測器を使用する。階層的非同期先読み分岐予測器は、第1のレベルの分岐予測器と、第1のレベルの分岐予測器における分岐を見つけるのに失敗することにより検索される第2のレベルの分岐予測器とを含む。第1のレベルの分岐予測器および第2のレベルの分岐予測器は、それぞれ、異なるサイズおよび性能特性を有する1つまたは複数の分岐ターゲット・バッファ(BTB)を含むことができる。BTBは、分岐、目標情報、および任意選択で他の予測支援情報を記憶する構造体である。
非同期先読み分岐予測は、命令フェッチから開始するプロセッサ・パイプラインとは非同期的に行われる。命令フェッチと同じ時間フレームにおいて、指定した命令アドレスから再開され次第、分岐予測は、再開アドレスにおいて、またはその後に、第1の分岐を見つけるために第1のレベルの分岐予測器を独立して検索する。分岐を見つけ次第、分岐予測論理は、それを命令フェッチ論理に、およびパイプライン論理に報告し、分岐予測と、デコードされる命令との間の結果としての相関が可能になるようにする。パイプラインの残りとは独立して、分岐予測論理は、予測された行われる分岐の予測宛先アドレスを用いてそれ自体のインデックスを再作成する。予測された行われない分岐では、それは連続して検索を継続する。次いで、それは次の分岐を探す。次いで、このプロセスは繰り返される。分岐予測器のインデックスを作成すること、それらから内容を読み出すこと、および予測された行われる分岐があるかどうかを決定すること、およびそうである場合、その宛先アドレスは、現代の高周波設計で複数のプロセッサ・サイクルを要することがある。
第1のレベルの分岐予測器は、一般に、命令アドレスを使用してインデックスが作成され、ある量だけインクリメントされて、コードの領域内の分岐を連続して検索することを継続する。間違った分岐の場合など、プロセッサ命令ストリームが再開されるたびに、検索が開始し、新たなストリームが開始される。したがって、各予測された行われる分岐は、新たなストリームを開始する。実施形態は、SPREDからストリーム長情報を利用して、潜在的な第1のレベルの分岐予測器ミスに対してどのように動作するかを決定する。第2のレベルの分岐予測器の完全な検索などの完全な動作は、検索される現在のストリームを終了させる行われる分岐予測の命令アドレスが現在の検索アドレスよりも大きいことをSPREDが示すとき、防止することができ、そのとき、分岐予測が何も見つけられなかったとき普通ならレベル1のミスとして報告されたはずであるくらいにその現在の検索アドレスが開始点を超えて十分に離れている。ストリームが早期に終了することをSPREDが予測したが、分岐は何も見つけられなかったとき(例えば、固定ミス限度の前に)、ミスは加速させることができる。
図1は、実施形態を含むシステムの例であるコンピュータ・システム100を示す。コンピュータ・システム100は、分岐予測器105およびインデックス・アクセラレータ107を含むコンピュータ・プロセッサ104の間に通信を提供する通信ファブリック102と、メモリ106と、永続記憶装置108と、通信ユニット110と、入出力(I/O)インターフェース112と、キャッシュ116とを含む。通信ファブリック102は、システム内のプロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)、システム・メモリ、周辺デバイス、および任意の他のハードウェア構成要素の間でデータを渡し、または情報を制御し、あるいはその両方をするように設計された任意のアーキテクチャを用いて実装することができる。例えば、通信ファブリック102は、1つまたは複数のバスを用いて実装することができる。
メモリ106および永続記憶装置108は、コンピュータ可読記憶媒体である。この実施形態において、メモリ106は、ランダム・アクセス・メモリ(RAM)を含む。概して、メモリ106は、任意の適切な揮発性または非揮発性コンピュータ可読記憶媒体を含むことができる。キャッシュ116は、最近アクセスしたデータおよびメモリ106からアクセスしたデータに近いデータを保持することによってプロセッサ104の性能を高める高速メモリである。キャッシュ116は、プロセッサ104内にまたはその外部にあるいはその両方に分散させることができ、命令(例えば、Iキャッシュ)またはデータ(例えば、Dキャッシュ)あるいはその両方を含むことができる。
実施形態を実施するのに使用されるプログラム命令およびデータは、キャッシュ116およびメモリ106の1つまたは複数のメモリを介してそれぞれのプロセッサ104の1つまたは複数によって実行するために永続記憶装置108に記憶することができる。実施形態において、永続記憶装置108は、磁気ハード・ディスク・ドライブを含む。代替案として、または磁気ハード・ディスク・ドライブに加えて、永続記憶装置108は、固体ハード・ドライブ、半導体記憶デバイス、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROM)、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を記憶することができる任意の他のコンピュータ可読記憶媒体を含むことができる。
永続記憶装置108によって使用される媒体は、取外し可能でもよい。例えば、取外し可能ハード・ドライブを永続記憶装置108に使用することができる。他の例には、光および磁気ディスク、サム・ドライブおよび永続記憶装置108の一部でもある別のコンピュータ可読記憶媒体への転送のためにドライブに挿入されるスマート・カードが含まれる。
これらの例における通信ユニット110は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット110は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット110は、物理的通信リンクまたは無線通信リンクのいずれか、あるいはその両方の使用を通じて通信を提供することができる。実施形態を実施するのに使用されるプログラム命令およびデータは、通信ユニット110を通じて永続記憶装置108にダウンロードすることができる。
I/Oインターフェース112により、各コンピュータ・システムに接続することができる他のデバイスとのデータの入力および出力が可能になる。例えば、I/Oインターフェース112は、キーボード、キーパッド、タッチ・スクリーン、または他の何らかの適切な入力デバイス、あるいはその組合せなど、外部デバイス118との接続をもたらすことができる。外部デバイス118は、例えば、サム・ドライブ、ポータブル光または磁気ディスク、およびメモリ・カードなどのポータブル・コンピュータ可読記憶媒体を含むこともできる。実施形態を実施するのに使用されるソフトウェアおよびデータは、そのようなポータブル・コンピュータ可読記憶媒体に記憶することができ、I/Oインターフェース112を介して永続記憶装置108にロードすることができる。I/Oインターフェース112は、ディスプレイ120に接続することもできる。ディスプレイ120は、データを表示する機構をユーザに提供することができ、例えば、コンピュータ・モニタであることができる。
分岐予測器105およびインデックス・アクセラレータ107は、命令ストリームにおける分岐の位置に関する予測を行い、記憶することができるハードウェア論理構成要素の1つまたは複数の組を含むことができる。分岐予測器105およびインデックス・アクセラレータ107の実施形態例は、図2~8を参照して本明細書においてさらに説明する。
図2は、図1の分岐予測器105の実施形態として階層的非同期先読み分岐予測器205と、図1のインデックス・アクセラレータ107の実施形態としてSPRED207とを含むシステム200を示す。図2の階層的非同期先読み分岐予測器例205は、第1のレベルの分岐予測器(BTB1)204と、BTB1検索およびヒット論理202と、第2のレベルの分岐予測器(BTB2)206と、BTB2検索トラッカ208と、BTB2検索およびヒット論理210とを含む。BTB1検索およびヒット論理202は、BTB1 204におけるBTBエントリのアクセスおよび更新を制御するが、BTB2検索およびヒット論理210は、BTB2 206におけるBTBエントリのアクセスおよび更新を制御する。例示的な実施形態において、BTB1 204は、一次または第1のレベルのBTBであり、BTB2 206は、二次または第2のレベルのBTBである。BTB2検索トラッカ208は、SPRED限定(qualified)BTB1ミスに基づいてBTB2 206からの複数のBTBエントリのバルク転送を検索し、制御するためのフィルタとして構成することができる。SPRED限定BTB1ミスは、メモリの同じ領域に関連した命令キャッシュ・ミスによってさらに制限することができる。BTB1検索およびヒット論理202、SPRED207、ならびにBTB2検索およびヒット論理210を別々に示すが、それらは組み合わせて単一の論理ブロックにし、またはさらに細かく分割することができることが理解されよう。
BTB1 204およびBTB2 206のそれぞれは、BTBエントリの複数の組を含むセット・アソシエイティブ方式である。BTB2 206は、分岐予測情報のより高いレベルのキャッシュである。BTB2 206の容量は、エントリを記憶するためにBTB1 204の容量よりも大きく、BTB1 204は、図1のキャッシュ116の命令キャッシュよりも大きな、またはそれに等しい命令フットプリントを包含する。BTBエントリの一般的な例をBTBエントリ300(エントリ300とも称する)として図3に示し、それは分岐アドレス・タグ302と、予測宛先アドレス306とを含む。図1~3を引き続いて参照すると、分岐アドレス・タグ302が、BTB行310内のエントリを見つけるのに使用され、その場合、図2のBTB1 204およびBTB2 206のそれぞれは、複数のBTB行312と、BTB行310ごとの複数のセット・アソシエイティブ方式のBTBエントリとを含むことができる。BTB1 204およびBTB2 206は、互いに対して異なる数のBTB行312および列を有することができる。各BTBエントリ300は、関連した分岐が行われたか、または行われなかったかを示すために分岐方向などの他の分岐予測情報(図示せず)を含むことができる。
例示的な実施形態において、図1のプロセッサ104における命令フェッチの再開に対応する検索アドレスが、BTB1検索およびヒット論理202に送られ、その後、それは次の再開まで命令フェッチとは非同期的に動作する。分岐予測を探すとき、BTB1 204は、読み出され、それが検索アドレスと一致する分岐アドレス・タグ302を有するエントリを含む場合、分岐予測を提供することができる。BTB1 204は、入力をBTB1検索およびヒット論理202に提供して、一致または「ヒット」が検索アドレスに基づいて見つけられるかどうかを決定する。一致が見つかった場合、BTB1検索およびヒット論理202が予測宛先アドレスを出力する。一致が見つからなかった場合、BTB1 204の連続検索は、検索範囲にわたって継続してから、BTB1ミスを宣言し、BTB2検索トラッカ208を通じてさらに動作を行う。
BTB1 204の検索範囲は、SPRED207によって設定することができる。実施形態において、SPRED207は、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定する。BTB1 204は、命令アドレスと予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリ300における分岐予測を見つけるために検索される。BTB2 206の検索は、検索範囲内の分岐予測を見つけるのに失敗することに基づいてトリガすることができる。
いくつかの実施形態において、BTB2検索トラッカ208は、省略することができる。BTB2検索トラッカ208を含む実施形態において、BTB1ミスは、BTB2ページの粒度により追跡することができる。例えば、BTB2バルク転送粒度(ページ・サイズ)が4KBである場合、同じ4KBページにおける任意の限定されたBTB1ミスが同じページ・ミスとみなされる。BTB2検索トラッカ208における検索トラッカが特定のページにおけるBTB1ミスに対してアクティブである場合、その同じページにおける任意の後続のミスは無視されるが、その検索トラッカはアクティブであり、そのページ・アドレスは、最近完了したものとして識別される。有効な命令キャッシュ・ミス妥当性インジケータ(例えば、「1」に設定されたビット)を有するが、BTB1ミス妥当性インジケータが無効である(例えば、「0」に設定されたビット)、BTB2検索トラッカ208におけるアクティブな検索トラッカの複製であるBTB1ミスを検出し次第、検索トラッカの関連したBTB1ミス妥当性インジケータは、有効(例えば、「1」)に設定することができる。
BTB1ミスとは独立して、命令キャッシュ・ミスが起きたとき、それらはBTB2検索トラッカ208に送ることができる。各検索トラッカは、命令キャッシュ・ミスを追跡することもできる。命令キャッシュ・ミスは、BTB2バルク転送と同じページ粒度、または異なる命令キャッシュ粒度により追跡することができる。命令キャッシュ・ミス・アドレスがBTB1ミス(BTB1ミス・アドレス)に対してアクティブであるが、命令キャッシュ・ミスに対してはアクティブでないトラッカのアドレスと一致した場合、命令キャッシュ・ミス妥当性インジケータは、有効(例えば、「1」)に設定することができる。
アクティブな検索トラッカは、BTB2 206の検索を実施するのに使用することができる。例示的な実施形態において、検索トラッカがBTB1ミスおよび命令キャッシュ・ミスの両方に対してアクティブであるときは、全ページ転送を行うことができる。ページ内のBTB2 206のすべての行は検索され、ヒットがBTB1 204に書き込まれる。BTB1ミスおよび命令キャッシュ・ミスの両方に対してアクティブである検索トラッカは、BTB2バルク転送が完了するまでアクティブのままであることができる。
SPRED207は、命令ストリームにおいて受け取った第1の命令のアドレスに対応する行のインデックスを追跡することができ、SPRED207の現在の行に含まれる情報が読み出される。様々な実施形態において、アドレス空間の幅により、様々な数の固有の命令アドレスが存在することがあり、結果として、異なる数の行が様々な実施形態においてSPRED207に必要とされる可能性がある。一般に、所与の命令に対する命令アドレスのビットのサブセットだけが、所与の命令に対する分岐予測データを含むSPRED207における行番号を識別するのに使用される。例えば、32ビットの命令アドレスが使用される(ビット0から31までを含む)実施形態において、各命令アドレスは、命令アドレスの最初の17ビット(ビット0から16まで)で構成された左タグ(Lタグ)、命令アドレスの次の10ビット(ビット17から26まで)で構成されたインデックス、および命令アドレスの最後の5ビット(ビット27から31まで)で構成された右タグ(Rタグ)に分割することができる。この実施形態において、インデックスとして使用される命令アドレスの10ビットだけが、分岐予測データがその命令に対して記憶されるSPRED207における行を決定するのに使用されるので、SPRED207は1024行を含む。さらに、いくつかの実施形態において、SPRED207は、BTB1 204と同じ数の行を含み、命令アドレスの、BTB1 204と同じ10ビットに基づいてインデックスが作成されるように設計される。他の実施形態において、BTB1 204およびSPRED207は、それぞれのテーブルにおいてどの行がその命令に対する分岐予測情報を含むのかを決定するのに異なる数のビットを使用する。これらの実施形態において、BTB1 204およびSPRED207は、異なる数の行を有し、それでも正しい動作ができることが可能である。
現在の命令に対応するSPRED207の行に含まれるデータは、現在の命令に分岐が期待されるかどうかを決定するために読み出すことができる。SPRED207の1つの行が、偽信号が使用される実施形態において、多数の命令アドレスに対応することができること、およびこれらの実施形態において、複数の命令アドレスがSPRED207における同じ行に対応することができることを理解されたい。一実施形態において、SPRED207の現在の行に記憶されたデータの最初のビットは、行われる予測がBTB1 204の対応する行に存在するか否かの2進法表示を含む。この実施形態において、行われる予測がBTB1 204の対応する行に存在するか否かの決定は、BTB1 204のいくつの検索がストリームを終了させる行われる分岐に出合う前に行う必要があるのかを示すオフセット・フィールドを使用して行われる。
プロセッサ104は、SPRED207の現在の選択された行に示される最初に行われる分岐予測の宛先アドレスを識別することができる。いくつかの実施形態において、SPRED207の1つまたは複数の行によって示される最初に行われる予測に対する宛先アドレスを予測するために、変更ターゲット・バッファ(CTB)などの追加の構造体を使用することができる。これらの実施形態において、最初に行われる予測の宛先アドレスは、省略することができ、BTB1 204の列の表示は、CTBなどの追加の構造体を使用して、最初に行われる予測の宛先アドレスをより容易に識別するのに使用することができる。
SPRED207から予測が取り出されるのと同時にBTB1 204から予測を取り出すことができる。SPRED207から取り出された予測は、BTB1 204から取り出された予測によって確認または論争されるまで有効とみなすことができる。様々な実施形態において、SPRED207に含まれるデータのビットは、予測の宛先アドレスに対してSPRED207のインデックスを再度作成するのに使用されるデータのビットであることができる。SPRED207のインデックスを再度作成するためにデータのより多いまたはより少ないビットが使用される実施形態において、SPRED207の所与の行に含まれる数の長さは異なることがある。最初に行われる分岐予測の宛先アドレスが識別されると、プロセッサ104は、最初に行われる分岐予測に対する宛先アドレスに対応する行に対してSPRED207およびBTB1 204のインデックスを再度作成する。SPRED207およびBTB1 204のインデックスが再度作成されると、プロセッサ104は、新たな宛先アドレスにおける分岐予測に対してBTB1 204およびSPRED207を検索するプロセスを再開する。
プロセッサ104は、より多くの検索すべきアドレス空間があるかどうかを決定することができる。BTB1検索およびヒット論理202などの検索論理が、検索を停止すべきであると判断した場合、分岐予測検索が終了する。再開は、分岐予測論理における新たな検索ストリームを開始する。再開が行われると、プロセッサ104は、分岐に対する検索を連続して続けることができる。他の実施形態において、プロセッサ104は、SPRED207がストリームの終了を見つけたときは、インデックスを再度作成することを加速させることもでき、したがって、プロセッサ104は、新たなストリームへの検索を開始するように分岐予測器105をリダイレクトする。命令アドレスが前の命令アドレスに続く再開の要求を受け取った場合、プロセッサ104は、分岐の存在の予測に対するBTB1 204およびSPRED207の次の連続行を検索することを継続することができる。概して、BTB1 204 およびSPRED207のインデックスは、BTB1 204およびSPRED207における次の行が命令ストリームに存在する命令の次の連続の組に対する分岐予測情報を含むので、インクリメントすることができる。
SPRED207は、予測出口点またはストリームを終了させる行われる分岐を決定することができる。例えば、ストリーム0の開始において、0x00の開始命令アドレスは、SPRED207へのインデックスを作成するのに使用することができ、SPRED207の出力は、出口点がストリーム0の開始からX位置/命令であることを示すことができる。SPRED207の出力は、X位置/命令がストリーム0において検索されると、ストリーム1へのインデックスを作成することを加速させるのに使用することができる。インデックスを作成することは、開始命令アドレスとともに進んで、Y位置/命令の出力を生じ、ストリーム1の出口点が存在するところなどを示すことができる。この方式により、SPRED207は、ストリームの検索開始アドレスとともに(例えば)、ストリームごとに1回読み出しする必要があるだけであり得る。SPRED207のエントリは、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長として予測出口点へのオフセットを含む情報を含むことができる。
いくつかの実施形態において、精度カウンタ209(すなわち、SPRED精度カウンタ)が、SPRED207が予測ストリーム長を正しく予測し正しい予測が使用される回数に基づいて更新される。検索範囲の使用は、命令アドレスと予測ストリーム長とによって境界されるとき、精度カウンタ209が精度閾値超であることを決定することに基づくことができる。SPRED207の精度が精度閾値未満である場合、SPRED207を不正確とみなすことができ、結果として、精度カウンタ209が精度閾値未満であることを決定することに基づいて検索範囲の使用を無効にし、デフォルトの検索の深さの使用を有効にすることになる。例えば、デフォルトの検索範囲を、ミスを宣言する前の3つのエントリの検索などの所定の値に設定することができる。対照的に、SPRED207は、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長に基づいてデフォルトの検索範囲よりも大きいまたは小さい検索範囲を設定することができる。
図4は、図1の分岐予測器105の実施形態として階層的非同期先読み分岐予測器405と、図1のインデックス・アクセラレータ107の実施形態としてSPRED407とを含むシステム400を示す。図4の階層的非同期先読み分岐予測器例405は、BTB1 404および分岐ターゲット・バッファ・プリロード・テーブル(BTBP)403を有する第1のレベルの分岐予測器401と、BTB1検索およびヒット論理402と、第2のレベルの分岐予測器(BTB2)406と、BTB2検索トラッカ408と、BTB2検索およびヒット論理410とを含む。
BTBP403は、分岐命令のターゲットおよび任意選択で方向を予測するためにより大きな主BTB(BTB1 404)と並列に検索される小型のBTBであることができる。BTB1 404がより大きいので、それは限定された数の読出し書込みポート(同じサイクルで同じバンクに読出しおよび書込みをすることが可能でない制限を有する、通常1つまたは2つの読出しおよび単一の書込みポート)を有することができる大型のSRAMアレイを用いて実装することができる。しかし、BTBP403は、BTB1 404よりもずっと小さいので、それは、例えば、SRAMレジスタ・ファイルを用いて実装することができる。BTBP403は、同時に使用することができる多くの読出し書込みポートを有することができる。したがって、分岐予測情報の複数のソースは、まずBTBP403に書き込まれることによってBTBP403の書込み帯域幅を利用することができる。BTBP403は、BTB1 404のフィルタとして働くように構築することができ、その場合、BTB1 404は、BTBP403から分岐予測情報を受け取る。例示的な実施形態において、BTBP403は、BTBP403からBTB1 404への最も有用(例えば、少なくとも1つの検索ヒット)とみなされる分岐を促進する。BTBP403は、BTB1 404から最近退去された分岐予測情報を記憶することによってセット・アソシエイティブ方式のビクティムBTBキャッシュとしての機能を果たすこともできる。BTBP403は、ソフトウェア・プリロード・インストールをサポートすることができ、BTB2 406などの他の構造体とインターフェースすることができる。
図2の実施形態と同様に、BTB1検索およびヒット論理402は、BTB1 404(および任意選択でBTBP403)におけるBTBエントリのアクセスおよび更新を制御するが、BTB2検索およびヒット論理410は、BTB2 406におけるBTBエントリのアクセスおよび更新を制御する。例示的な実施形態において、BTBP403 およびBTB1 404は、第1のレベルの分岐予測器401を集合的に形成し、BTB2 406は、二次または第2のレベルのBTBである。BTB2検索トラッカ408は、SPRED限定BTB1ミスに基づいてBTB2 406からBTBP403へのBTBエントリのバルク転送を検索し、制御するためのフィルタとして構成することができる。SPRED限定BTB1ミスは、メモリの同じ領域に関連した命令キャッシュ・ミスによってさらに制限することができる。BTB1検索およびヒット論理402、SPRED407、ならびにBTB2検索およびヒット論理410を別々に示すが、それらは組み合わせて単一の論理ブロックにすることができ、またはさらに細かく分割することができることが理解されよう。直接BTB2 406からBTB1 404への複数の分岐を転送するのではなく、BTB2検索およびヒット論理410は、分岐をBTBP403に転送することができる。BTBP403に位置した分岐は、BTBP403内の分岐の「ヒット」を識別し次第、BTB1 404に転送することができる。
いくつかの実施形態において、BTB1 404およびBTBP403は、SPRED407によって定義された検索範囲と並列に検索される。他の実施形態において、SPRED 407によって定義された検索範囲は、BTB1 404の検索を制限するが、BTBP403の検索範囲は制限しない。BTB1 404およびBTB2 406は、図2のBTB1 204およびBTB2 206と同様に構造化することができる。SPRED407、BTB2検索トラッカ408、精度カウンタ409、ならびにBTB2検索およびヒット論理410は、図2のSPRED207、BTB2検索トラッカ208、精度カウンタ209、ならびにBTB2検索およびヒット論理210と同様に動作することができる。
図5~7は、図2および4のSPRED207、407を有効にし、および有効にせずに実施された第1のレベルの分岐予測器検索の例を示す。SPRED207、407が無効にされているとき、通常の検索プロセス500を実施することができる。精度カウンタ209、409を含む実施形態では、精度カウンタ209、409が精度閾値未満である間、BTB1 204、404は、オフセット0において検索開始アドレス502から調べ、デフォルトの検索の深さ504に達するまでオフセット1およびオフセット2において検索を継続することができる。デフォルトの検索の深さ504に達した後、一致が何も見つからなかった場合、ミスが示され、それは結果としてBTB2 206、406をさらに検索することになり得る。精度カウンタ209、409が精度閾値超である(または精度カウンタ209、409は省略される)場合、命令アドレスと予測ストリーム長とによって境界される検索範囲にわたってSPRED207、407から検索が実施される。予測ストリーム長は、デフォルトの検索の深さ504を超えて拡張することができ、それにより、BTB2 206、406の不必要な検索の時期尚早のトリガが防止され、または予測ストリーム長は、デフォルトの検索の深さ504未満であることができ、それにより、BTB2 206、406検索の早期トリガが可能になり得る。
検索プロセス600は、SPRED有効拡張検索の例である。オフセット0において検索開始アドレス602からBTB1 204、404を調べ、デフォルトの検索の深さ604に達するまでオフセット1およびオフセット2において検索を継続することができる。ミスを宣言するのではなく、検索は、デフォルトの検索の深さ604を超えてオフセット3および4まで拡張し、予測ストリーム長606に達するとミスを示す。SPRED207、407によって予測されたように、行われる分岐がオフセット4で見つかった場合、精度カウンタ209、409は、インクリメントすることができる。それ以外の場合、BTB2 206、406の検索をトリガすることができ、精度カウンタ209、409をデクリメントすることができる。
検索プロセス700は、SPRED有効縮小検索の例である。オフセット0において検索開始アドレス702からBTB1 204、404を調べることができる。デフォルトの検索の深さ704に達するまでオフセット1およびオフセット2において検索を継続するのではなく、予測ストリーム長706においてオフセット0に達し次第、デフォルトの検索の深さ704の前にミスが早期に示される。SPRED207、407によって予測されたように、行われる分岐がオフセット0において見つかった場合、精度カウンタ209、409をインクリメントすることができる。それ以外の場合、BTB2 206、406の検索をトリガすることができ、精度カウンタ209、409をデクリメントすることができる。
次に図8を参照すると、ストリーム長予測を使用する分岐予測器検索限定のプロセス800が、例示的な実施形態において、ここで説明される。プロセス800は、図1~7を参照して説明され、図1の分岐予測器105およびインデックス・アクセラレータ107によって実装することができる。
ブロック802において、プロセッサ104のSPRED207、407は、命令アドレスと命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定する。ブロック804において、プロセッサ104の階層的非同期先読み分岐予測器205、405の第1のレベルの分岐予測器(BTB1 204、404またはBTP403あるいはその組合せ)は、命令アドレスと予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を検索する。
ブロック806において、階層的非同期先読み分岐予測器205、405の第2のレベルの分岐予測器(BTB2 206、406)の検索が、検索範囲内の分岐予測を見つけるのに失敗することに基づいてトリガされる。検索のトリガは、結果としてBTB2 206、406からBTB1 204、404またはBTBP403あるいはその両方への複数の分岐のバルク転送となることがある。SPRED207、407の使用は、図2、4、および6の例に示すように、デフォルトの検索の深さ(命令キャッシュ・ミスにより、さらに限定される可能性がある)を超えてBTB2 206、406の検索を拡張することができる。SPRED207、407は、図2、4、および7の例に示すように、代替案として、デフォルトの検索の深さ(命令キャッシュ・ミスにより限定される可能性がある)に達する前にBTB2 206、406の検索をトリガすることができる。
前に説明したように、いくつかの実施形態において、SPRED207、407が予測ストリーム長を正しく予測し正しい予測が使用される回数に基づいて精度カウンタ209、409を更新することができる。検索範囲の使用は、精度カウンタ207、407が精度閾値超であることを決定することに基づいて有効にすることができる。精度カウンタ207、407が精度閾値未満であることを決定することに基づいて、検索範囲の使用は、無効にすることができ、デフォルトの検索の深さの使用は有効にすることができる。
本発明は、統合の任意の可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せでもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるための、上にコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し、記憶することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の適切な組合せでもよいが、それに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチ・カードまたは上に記録された命令を有する溝における隆起構造体などの機械的にエンコードされたデバイス、および前述のものの任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書では、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体中を伝搬する電磁波(例えば、光ファイバ・ケーブル中を通過する光パルス)、または電線中を伝送される電気信号などの一時的信号それ自体であるとはみなされない。
本明細書に説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、またはSmalltalk(R)もしくはC++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで作成されたソース・コードもしくはオブジェクト・コードのいずれかでもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、および部分的に遠隔コンピュータ上または完全に遠隔コンピュータもしくはサーバ上で実行することができる。最後のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通じてユーザのコンピュータに接続することができ、または接続は、外部コンピュータと(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行うことができる。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路を個人向けにすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照して本明細書に説明する。フローチャートまたはブロック図あるいはその両方の各ブロックおよびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実装する命令を含んだ製品を含むべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示するものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実装するように、コンピュータ実装プロセスを作出するべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点において、フローチャートまたはブロック図における各ブロックは、指定した論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメントまたは部分を表すことができる。いくつかの代替実装形態において、ブロックにおいて記載した機能は、図に記載した順序以外で起きる可能性がある。例えば、連続して示す2つのブロックは、実際、関与する機能により、実質的に同時に実行されることがあり、またはブロックは、逆の順序で実行されることもある。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定した機能もしくは動作を実施し、または専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベース・システムによって実装することができることも留意されたい。
本発明の様々な実施形態の説明を例示のために提示してきたが、開示した実施形態に対して網羅的であることまたは限定されることは意図されてない。多くの変更形態および変形形態が、説明した実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書に使用した用語は、実施形態の原理、市場に見出される技術に対する実際の適用または技術的改善を最もよく説明するように、または本明細書に開示した実施形態を当業者が理解することを可能にするように選択された。

Claims (15)

  1. コンピュータ実装方法であって、
    プロセッサのストリーム・ベース・インデックス・アクセラレータ予測器によって、命令アドレスと前記命令アドレスを含むメモリからフェッチされる複数の命令の命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定することであって前記ストリーム・ベース・インデックス・アクセラレータ予測器は、分岐予測データの複数の行を含み、前記命令ストリームにおいて受け取った第1の命令の前記命令アドレスに対応する1つまたは複数の前記行のインデックスを追跡し、前記命令ストリームを終了させる行われる前記分岐としての出口点を示し、前記ストリーム・ベース・インデックス・アクセラレータ予測器が前記予測ストリーム長を決定して前記命令ストリームを終了させる行われる前記分岐が見つかった場合、インクリメントされ、それ以外の場合、デクリメントされる精度カウンタが、精度閾値超であれば、前記予測ストリーム長を使用し、前記精度カウンタが、前記精度閾値未満であれば、前記命令ストリームについてのデフォルトの検索の深さを使用する、前記決定することと、
    前記命令アドレスと前記予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために前記プロセッサの階層的非同期先読み分岐予測器の第1のレベルの分岐予測器を検索することと、
    前記検索範囲内の前記分岐予測を見つけるのに失敗することに基づいて前記階層的非同期先読み分岐予測器の第2のレベルの分岐予測器の検索をトリガすることと
    を含む、コンピュータ実装方法。
  2. 前記第1のレベルの分岐予測器が、分岐ターゲット・バッファと分岐ターゲット・バッファ・プリロード・テーブルとを備える、請求項1に記載のコンピュータ実装方法。
  3. 前記第2のレベルの分岐予測器の前記検索に基づいて、複数の分岐を前記第2のレベルの分岐予測器から前記分岐ターゲット・バッファまたは前記分岐ターゲット・バッファ・プリロード・テーブルに転送することをさらに含む、請求項2に記載のコンピュータ実装方法。
  4. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索をトリガすることが、前記デフォルトの検索の深さに達する前に、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、実施される、請求項1に記載のコンピュータ実装方法。
  5. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索が、前記デフォルトの検索の深さを前記予測ストリーム長は超えて前記検索範囲が拡張され、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、トリガされる、請求項1に記載のコンピュータ実装方法。
  6. システムであって、
    命令アドレスと前記命令アドレスを含むメモリからフェッチされる複数の命令の命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定するように動作可能であるプロセッサのストリーム・ベース・インデックス・アクセラレータ予測器であって、前記ストリーム・ベース・インデックス・アクセラレータ予測器は、分岐予測データの複数の行を含み、前記命令ストリームにおいて受け取った第1の命令の前記命令アドレスに対応する1つまたは複数の前記行のインデックスを追跡し、前記命令ストリームを終了させる行われる前記分岐としての出口点を示し、前記ストリーム・ベース・インデックス・アクセラレータ予測器が前記予測ストリーム長を決定して前記命令ストリームを終了させる行われる前記分岐が見つかった場合、インクリメントされ、それ以外の場合、デクリメントされる精度カウンタが、精度閾値超であれば、前記予測ストリーム長を使用し、前記精度カウンタが、前記精度閾値未満であれば、前記命令ストリームについてのデフォルトの検索の深さを使用する、前記ストリーム・ベース・インデックス・アクセラレータ予測器と、
    第1のレベルの分岐予測器および第2のレベルの分岐予測器を備える前記プロセッサの階層的非同期先読み分岐予測器と
    を備え、前記階層的非同期先読み分岐予測器が、
    前記命令アドレスと前記予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために前記第1のレベルの分岐予測器を検索し、
    前記検索範囲内の前記分岐予測を見つけるのに失敗することに基づいて前記第2のレベルの分岐予測器の検索をトリガするように動作可能である、システム。
  7. 前記第1のレベルの分岐予測器が、分岐ターゲット・バッファと分岐ターゲット・バッファ・プリロード・テーブルとを備える、請求項に記載のシステム。
  8. 前記階層的非同期先読み分岐予測器が、前記第2のレベルの分岐予測器の前記検索に基づいて複数の分岐を前記第2のレベルの分岐予測器から前記分岐ターゲット・バッファまたは前記分岐ターゲット・バッファ・プリロード・テーブルに転送するように動作可能である、請求項に記載のシステム。
  9. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索が、前記デフォルトの検索の深さに達する前に、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、トリガされる、請求項に記載のシステム。
  10. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索が、前記デフォルトの検索の深さを前記予測ストリーム長は超えて前記検索範囲が拡張され、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、トリガされる、請求項に記載のシステム。
  11. プログラム命令が具現化されたコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品であって、前記コンピュータ可読記憶媒体が、一時的信号それ自体ではなく、前記プログラム命令が、プロセッサによって、
    前記プロセッサのストリーム・ベース・インデックス・アクセラレータ予測器によって、命令アドレスと前記命令アドレスを含むメモリからフェッチされる複数の命令の命令ストリームを終了させる行われる分岐との間の予測ストリーム長を決定することであって前記ストリーム・ベース・インデックス・アクセラレータ予測器は、分岐予測データの複数の行を含み、前記命令ストリームにおいて受け取った第1の命令の前記命令アドレスに対応する1つまたは複数の前記行のインデックスを追跡し、前記命令ストリームを終了させる行われる前記分岐としての出口点を示し、前記ストリーム・ベース・インデックス・アクセラレータ予測器が前記予測ストリーム長を決定して前記命令ストリームを終了させる行われる前記分岐が見つかった場合、インクリメントされ、それ以外の場合、デクリメントされる精度カウンタが、精度閾値超であれば、前記予測ストリーム長を使用し、前記精度カウンタが、前記精度閾値未満であれば、前記命令ストリームについてのデフォルトの検索の深さを使用する、前記決定することと、
    前記命令アドレスと前記予測ストリーム長とによって境界される検索範囲内の1つまたは複数のエントリにおける分岐予測を見つけるために前記プロセッサの階層的非同期先読み分岐予測器の第1のレベルの分岐予測器を検索することと、
    前記検索範囲内の前記分岐予測を見つけるのに失敗することに基づいて前記階層的非同期先読み分岐予測器の第2のレベルの分岐予測器の検索をトリガすることと
    を含む方法を前記プロセッサに実施させるように実行可能である、コンピュータ・プログラム製品。
  12. 前記第1のレベルの分岐予測器が、分岐ターゲット・バッファと分岐ターゲット・バッファ・プリロード・テーブルとを備える、請求項1に記載のコンピュータ・プログラム製品。
  13. 前記プログラム命令により、前記プロセッサが、
    前記第2のレベルの分岐予測器の前記検索に基づいて複数の分岐を前記第2のレベルの分岐予測器から前記分岐ターゲット・バッファまたは前記分岐ターゲット・バッファ・プリロード・テーブルに転送することをさらに実施する、請求項1に記載のコンピュータ・プログラム製品。
  14. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索をトリガすることが、前記デフォルトの検索の深さに達する前に、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、実施される、請求項1に記載のコンピュータ・プログラム製品。
  15. 前記階層的非同期先読み分岐予測器の前記第2のレベルの分岐予測器の前記検索が、前記デフォルトの検索の深さを前記予測ストリーム長は超えて前記検索範囲が拡張され、前記検索範囲内の前記分岐予測を見つけるのに失敗することが行われて、トリガされる、請求項1に記載のコンピュータ・プログラム製品。
JP2019527211A 2016-12-13 2017-12-01 ストリーム長予測を使用する分岐予測器検索限定 Active JP7034159B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/376,847 2016-12-13
US15/376,847 US10394559B2 (en) 2016-12-13 2016-12-13 Branch predictor search qualification using stream length prediction
PCT/EP2017/081131 WO2018108574A1 (en) 2016-12-13 2017-12-01 Branch predictor search qualification using stream length prediction

Publications (2)

Publication Number Publication Date
JP2020501242A JP2020501242A (ja) 2020-01-16
JP7034159B2 true JP7034159B2 (ja) 2022-03-11

Family

ID=60569917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019527211A Active JP7034159B2 (ja) 2016-12-13 2017-12-01 ストリーム長予測を使用する分岐予測器検索限定

Country Status (7)

Country Link
US (1) US10394559B2 (ja)
JP (1) JP7034159B2 (ja)
CN (1) CN109791494B (ja)
DE (1) DE112017005014B4 (ja)
GB (1) GB2571899B (ja)
TW (1) TWI651648B (ja)
WO (1) WO2018108574A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550588B2 (en) * 2018-08-22 2023-01-10 Advanced Micro Devices, Inc. Branch target filtering based on memory region access count
US11614944B2 (en) * 2020-11-09 2023-03-28 Centaur Technology, Inc. Small branch predictor escape
US11556474B1 (en) 2021-08-19 2023-01-17 International Business Machines Corporation Integrated semi-inclusive hierarchical metadata predictor
US11928471B2 (en) 2021-08-19 2024-03-12 International Business Machines Corporation Metadata predictor
US11782919B2 (en) 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105699A (ja) 1998-08-31 2000-04-11 Stmicroelectronics Inc 命令レベル並列性を増加させるためのリザベ―ションステ―ション
US20130339695A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Asynchronous lookahead second level branch target buffer
JP2016507092A (ja) 2013-01-15 2016-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分岐予測のための信頼性閾値ベースの対抗分岐パス実行

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5574871A (en) 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US6076141A (en) * 1996-01-24 2000-06-13 Sun Microsytems, Inc. Look-up switch accelerator and method of operating same
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6185675B1 (en) * 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6263427B1 (en) 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US7082520B2 (en) 2002-05-09 2006-07-25 International Business Machines Corporation Branch prediction utilizing both a branch target buffer and a multiple target table
US7873818B2 (en) 2008-02-22 2011-01-18 International Business Machines Corporation System and method for search area confined branch prediction
US8443176B2 (en) * 2008-02-25 2013-05-14 International Business Machines Corporation Method, system, and computer program product for reducing cache memory pollution
US8543796B2 (en) * 2008-11-05 2013-09-24 Intel Corporation Optimizing performance of instructions based on sequence detection or information associated with the instructions
US9235419B2 (en) 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US10127044B2 (en) 2013-10-25 2018-11-13 Advanced Micro Devices, Inc. Bandwidth increase in branch prediction unit and level 1 instruction cache
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20170046159A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Power efficient fetch adaptation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105699A (ja) 1998-08-31 2000-04-11 Stmicroelectronics Inc 命令レベル並列性を増加させるためのリザベ―ションステ―ション
US20130339695A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Asynchronous lookahead second level branch target buffer
JP2016507092A (ja) 2013-01-15 2016-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 分岐予測のための信頼性閾値ベースの対抗分岐パス実行

Also Published As

Publication number Publication date
TWI651648B (zh) 2019-02-21
DE112017005014B4 (de) 2023-11-23
TW201823969A (zh) 2018-07-01
CN109791494B (zh) 2023-08-11
JP2020501242A (ja) 2020-01-16
US20180165094A1 (en) 2018-06-14
US10394559B2 (en) 2019-08-27
WO2018108574A1 (en) 2018-06-21
DE112017005014T5 (de) 2019-07-11
GB2571899A (en) 2019-09-11
CN109791494A (zh) 2019-05-21
GB201909974D0 (en) 2019-08-28
GB2571899B (en) 2021-07-21

Similar Documents

Publication Publication Date Title
JP7034159B2 (ja) ストリーム長予測を使用する分岐予測器検索限定
US10185570B2 (en) Dynamic thread sharing in branch prediction structures
US9747103B2 (en) Auxiliary branch prediction with usefulness tracking
US10642619B2 (en) Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV)
US11163573B2 (en) Hierarchical metadata predictor with periodic updates
US10481912B2 (en) Variable branch target buffer (BTB) line size for compression
US10241800B2 (en) Split-level history buffer in a computer processing unit
US10423420B2 (en) Stream based branch prediction index accelerator for multiple stream exits
US20180060075A1 (en) Method for reducing fetch cycles for return-type instructions
US10691460B2 (en) Pointer associated branch line jumps for accelerated line jumps
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US8909907B2 (en) Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US11561796B2 (en) Linked miss-to-miss instruction prefetcher
US20160239305A1 (en) Branch target buffer column predictor
US10430195B2 (en) Stream based branch prediction index accelerator with power prediction
US11194575B2 (en) Instruction address based data prediction and prefetching
US11182165B2 (en) Skip-over offset branch prediction
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200624

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220301

R150 Certificate of patent or registration of utility model

Ref document number: 7034159

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150