JP6731048B2 - 有用性追跡を用いた補助分岐予測 - Google Patents

有用性追跡を用いた補助分岐予測 Download PDF

Info

Publication number
JP6731048B2
JP6731048B2 JP2018524441A JP2018524441A JP6731048B2 JP 6731048 B2 JP6731048 B2 JP 6731048B2 JP 2018524441 A JP2018524441 A JP 2018524441A JP 2018524441 A JP2018524441 A JP 2018524441A JP 6731048 B2 JP6731048 B2 JP 6731048B2
Authority
JP
Japan
Prior art keywords
entry
auxiliary
branch predictor
congruence class
entries
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
JP2018524441A
Other languages
English (en)
Other versions
JP2018537771A (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 JP2018537771A publication Critical patent/JP2018537771A/ja
Application granted granted Critical
Publication of JP6731048B2 publication Critical patent/JP6731048B2/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/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、一般に、コンピュータ処理システムに関し、より詳細には、処理システムにおける有用性追跡を用いた補助分岐予測に関する。
コンピュータ・プロセッサ中の命令パイプラインは、いくつかのパイプライン段を使用して命令を処理することによって命令実行スループットを改善し、複数の段は、命令ストリームの、異なる命令に対して並列に作用することができる。命令ストリーム中の条件付き分岐命令は、パイプラインの命令フェッチ段で次の命令をフェッチする前にパイプライン中の実行段で条件付き分岐命令が解決されるまでプロセッサが待機する場合、パイプライン・ストールという結果になることがある。分岐予測器が、条件付き分岐が行われることになるか否かを推測しようと試みることができる。分岐予測器は分岐ターゲット予測を含むこともでき、分岐ターゲット予測は、命令自体をデコードし実行することによって分岐ターゲットが計算される前に、行われる条件付きまたは無条件分岐のターゲットを推測しようと試みる。分岐ターゲットは、オフセットに基づくか、またはレジスタを介した間接的参照に基づくか、あるいはその両方に基づく、計算されたアドレスとすることができる。分岐が予測ミスされた(mispredict)場合、スループット・ペナルティを被る。
分岐ターゲット・バッファ(BTB)を使用して、行われると予測された分岐命令のターゲットを分岐命令のアドレスに基づいて予測することができる。分岐命令のターゲットを予測することで、分岐ターゲット・アドレスの計算のためにパイプラインの実行段に分岐命令が達するのを待機しないことによってパイプライン・ストールを防止することができる。分岐ターゲット予測を実施することによって、分岐命令と、行われると予測された分岐命令のターゲットとの間で複数のバブル/空のサイクルを有する代わりに、分岐のターゲット命令デコードを同じサイクルで、または分岐命令の後のサイクルで、実施することができる。BTBに含まれるかまたは別個に実装される場合のある他の分岐予測コンポーネントは、分岐履歴テーブルおよびパターン履歴テーブルを含む。分岐履歴テーブルは、分岐の方向(分岐と非分岐)を、分岐アドレスの関数として予測することができる。パターン履歴テーブルは、予測されるべき所与の分岐に至る遭遇される分岐のパターンの関数として、分岐の方向予測を補佐することができる。
補助分岐予測を管理するための方法、補助分岐予測を管理するための処理システム、およびコンピュータ・プログラムを提供する。
一実施形態によれば、主要分岐予測器(primary branch predictor)と補助分岐予測器(auxiliary branch predictor)とを備える処理システムにおいて補助分岐予測を管理するための方法が提供される。この方法は、主要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて、補助分岐予測器の合同クラス(congruence class)を突き止めることを含む。合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリが、合同クラス中で識別される。予測ミスされたターゲット・アドレスに対応する補助データが、エントリにインストールされる。補助データをインストールすることに基づいて、エントリの補助有用性レベルは初期値にリセットされる。
別の実施形態によれば、補助分岐予測を管理するための処理システムが、主要分岐予測器と、補助分岐予測器と、補助インストールおよび更新コントローラとを備える。主要分岐予測器は、複数の主要分岐予測構造を含む。補助分岐予測器は、複数の合同クラスを含み、合同クラスの各々は、複数のエントリを有する。補助インストールおよび更新コントローラは、主要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて、補助分岐予測器の合同クラスを突き止めるように動作する。合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリが、合同クラス中で識別される。予測ミスされたターゲット・アドレスに対応する補助データが、エントリにインストールされる。補助データをインストールすることに基づいて、エントリの補助有用性レベルは初期値にリセットされる。
さらに他の実施形態によれば、コンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令が組み入れられたコンピュータ可読記憶媒体を含む。プログラム命令は、主要分岐予測器と補助分岐予測器とを備えるプロセッサによって実行可能であり、それにより、主要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて補助分岐予測器の合同クラスを突き止めることを、プロセッサに行わせる。合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリが、合同クラス中で識別される。予測ミスされたターゲット・アドレスに対応する補助データが、エントリにインストールされる。補助データをインストールすることに基づいて、エントリの補助有用性レベルは初期値にリセットされる。
一実施形態による処理システムのブロック図である。 一実施形態による分岐予測器を描く図である。 一実施形態による補助分岐予測器を描く図である。 一実施形態による、処理システムにおける補助分岐予測を管理するためのプロセス・フロー図である。 一実施形態による、補助分岐予測器についての補助有用性レベル管理のプロセス・フロー図である。 一実施形態による、補助分岐予測器についての保護制限管理のプロセス・フロー図である。 一実施形態による、ターゲット・アドレス選択に関するプロセス・フロー図である。 一実施形態によるコンピューティング・システムの図である。
実施形態は、有用性追跡を用いた補助分岐予測を提供する。補助分岐予測器を、非常に正確な分岐予測器の比較的小さいテーブル(すなわちエントリ数の点からみて)として実装することができる。補助分岐予測器にエントリをインストールすることを管理して、どの分岐が性能を最適化するかを有用性追跡に基づいて追跡することができる。多くの作業負荷においては、分岐命令アドレスの小さいサブセットが、予測ミスされる分岐結果のうちの大きいパーセンテージを占める。実施形態は、頻繁に主要分岐予測器によって予測ミスされ補助分岐予測器によって正しく予測される分岐を動的に識別し、これらの分岐を補助分岐予測器中で保持する。残りの分岐は、より小さい他の主要分岐予測器エントリを用いて効果的に予測することができる。
図1は、一実施形態による処理システム100のブロック図を描く。処理システム100は、メモリ102、命令キャッシュ104、命令フェッチ・ユニット108、分岐予測器118、および処理パイプライン106を備える。処理システム100は、コンピュータ・プロセッサ内に備わるか、またはそうでない場合はコンピュータ・システム内で分散されるものとすることができる。メモリ102には命令およびデータが記憶されてよく、命令キャッシュ104は、メモリ102中の命令にアクセスし、これらの命令を、フェッチされるように記憶することができる。メモリ102は、キャッシュ・メモリなど、任意のタイプの揮発性または不揮発性メモリを含むことができる。メモリ102および命令キャッシュ104は、複数のキャッシュ・レベルを含むことができる。データ・キャッシュ(図示せず)が処理システム100に備わってもよい。
図1では、命令フェッチ・ユニット108および処理パイプライン106の単純化された例が描かれている。処理システム100はさらに、複数の処理パイプライン106および命令フェッチ・ユニット108を備えることもできる。処理パイプライン106は、デコード・ユニット110、発行ユニット112、実行段114、およびライトバック・ロジック116を含む。命令フェッチ・ユニット108の全体または分岐予測器118もまた、処理パイプライン106の一部であってもよい。処理パイプライン106は、エラー・チェックおよび対処ロジックや、処理パイプライン106を通る1つまたは複数の並列パスや、当技術分野で知られている他の機構など、他の機構を備えることもできる。図1では、処理システム100を通る順方向パスが描かれているが、他のフィードバック・パスおよびシグナリング・パスが処理システム100の要素間に含まれてもよい。
命令フェッチ・ユニット108は、デコード・ユニット110によってさらに処理されるように、命令を命令キャッシュ104からフェッチする。例示的な一実施形態では、命令フェッチ・ユニット108は、分岐予測器118を備える。別法として、分岐予測器118は、命令フェッチ・ユニット108とは別個に位置してもよい。命令フェッチ・ユニット108はまた、他の分岐予測ロジック(図示せず)を備えることもできる。分岐予測器118は、有用性追跡を用いた補助分岐予測を実装するための処理回路の例である。
デコード・ユニット110は、命令をデコードし、デコードされた命令、命令の一部、または他のデコードされたデータを発行ユニット112に渡す。発行ユニット112は、命令または他のデータを分析し、分析に基づいて、デコードされた命令、命令の一部、または他のデータを実行段114中の1つまたは複数の実行ユニットに送信する。実行段114は、命令を実行する。実行段114は、固定小数点実行ユニット、浮動小数点実行ユニット、ロード/記憶実行ユニット、およびベクトル実行ユニットなど、複数の実行ユニットを備える場合がある。ライトバック・ロジック116は、命令実行の結果を宛先リソース120に書き戻す。宛先リソース120は、レジスタ、キャッシュ・メモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、または、実行された命令もしくはデータのための任意の他のタイプの宛先を含めた、任意のタイプのリソースとすることができる。
図2は、図1の分岐予測器118の例をより詳細に描く。図2の例示的な分岐予測器118は、1つまたは複数の主要分岐予測器202と、補助分岐予測器204とを備える。主要分岐予測器202は、分岐ターゲット・バッファ(BTB)206、分岐履歴テーブル(BHT)208、および1つまたは複数のパターン履歴テーブル(PHT)210など、主要分岐予測構造の任意の組合せを備えることができる。BTB206は、連想型に設定されてよく、BTBエントリの複数のセット(列)を含むことができ、各BTBエントリは、例えば、分岐アドレス・タグおよび予測されるターゲット・アドレスを含む。BHT208は、分岐が行われると予測されるかそれとも行われないと予測されるかを示す分岐履歴情報を保持する。BHT208はまた、BHT方向予測についての予測強度インジケータ(例えば、強い非分岐、弱い非分岐、弱い分岐、および強い分岐)を含むこともできる。BHT208は、命令アドレスに基づいて索引付けされてよい。各PHT210は、PHT方向予測についての予測強度インジケータと、分岐予測パターンに関連するタグとを保持することができる。各PHT210の深度(エントリ数)は、図1の処理システム100によって処理された命令中で観察された、観察された繰り返し発生する分岐パターンまたはシーケンスに基づいて、調整されてよい。各PHT210へは、別個に管理および調整される索引に基づいてアクセスすることができる。各PHT210の索引付けは、命令アドレスのパス履歴および機能、大域的な方向履歴ベクトル、または大域的な辿られたパス履歴ベクトル、あるいはその組合せに基づくことができる。
図2の分岐予測器118はまた、主要分岐予測器202中のエントリのインストールおよび更新を制御する、主要インストールおよび更新コントローラ212を備える。主要分岐予測器202に対して、主要インストールおよび更新コントローラ212の単一のインスタンスが描かれているが、主要インストールおよび更新コントローラ212は、1つまたは複数の特定の分岐予測器タイプをサポートするために、すなわちBTB206、BHT208、および1つまたは複数のPHT210を別々に管理するために、細分されてもよいことが理解されるであろう。分岐予測器118はさらに、主要検索およびヒット・コントローラ214を備え、この主要検索およびヒット・コントローラ214は、例えば検索アドレス218または対応する索引付け方式あるいはその両方に基づいて、主要分岐予測器202の主要分岐予測構造を並列に検索して主要予測器ターゲット・アドレス216を決定することができる。
同様に、分岐予測器118は、補助分岐予測器204中のエントリをインストールおよび更新するように動作可能な、補助インストールおよび更新コントローラ220を備えることができる。補助インストールおよび更新コントローラ220は、先行インストール・キュー(previous install queue)222を使用して、インストールを管理し、補助分岐予測器204中のエントリの重複を回避することができる。補助検索およびヒット・コントローラ224が、例えば主要検索およびヒット・コントローラ214を介して提供された検索アドレス218または対応する索引付け方式あるいはその両方に基づいて、補助分岐予測器204を検索して補助予測器ターゲット・アドレス226を決定することができる。主要分岐予測器202と補助分岐予測器204とは、並列に検索されてよく、この結果、主要予測器ターゲット・アドレス216および補助予測器ターゲット・アドレス226として、相互と異なる場合のある予測が得られる。補助分岐予測器204は、各エントリと共に、補助有用性レベル228を記憶することができる。補助検索およびヒット・コントローラ224が補助分岐予測器204中でヒットを突き止めると、補助予測器ターゲット・アドレス226に対応する補助有用性レベル228が提供される。ターゲット・アドレス・セレクタ230が、補助有用性レベル228を使用して、分岐予測器118の結果であるターゲット・アドレス232として主要予測器ターゲット・アドレス216を選択するかそれとも補助予測器ターゲット・アドレス226を選択するかを決定することができる。
ターゲット・アドレス232は、命令をプリフェッチするために図1の命令フェッチ・ユニット108によって使用することができる。後で、図1の処理パイプライン106中で、ターゲット・アドレス232がアドレス予測ミスまたは方向予測ミス(分岐/非分岐)あるいはその両方として予測ミスされたと決定された場合、分岐予測器118は、予測ミスされた分岐234のインジケータを受け取る。分岐予測器118は、分岐の方向を予測することができ、分岐すると予測された場合は、分岐が進むターゲット・アドレス232を予測することができる。分岐しないと予測された場合は、次の順次的な命令アドレスが、フェッチして実行すべき次の命令であり、この命令アドレスもまた本明細書においてターゲット・アドレスと呼ばれることがある。ターゲット・アドレス・セレクタ230、または分岐予測器118の他のロジックは、予測ミスされた分岐234が主要分岐予測器202によって予測されたかそれとも補助分岐予測器204によって予測されたかを決定することができる。誤った方向予測は、結果的に誤ったターゲット・アドレス予測となるので、実施形態では、予測ミスされたターゲット・アドレスに対応する予測ミス・インジケータは、ターゲット・アドレス予測ミスまたは方向予測ミスあるいはその両方を示す。補助分岐予測器204の実施形態は、方向予測またはターゲット・アドレス予測あるいはその両方に使用されることが可能である。
主要分岐予測器予測ミス・インジケータ236が、主要インストールおよび更新コントローラ212と補助インストールおよび更新コントローラ220との両方に提供されてよい。主要分岐予測器予測ミス・インジケータ236は、主要分岐予測器202の内容を更新するために、主要インストールおよび更新コントローラ212によって使用されてよい。補助分岐予測器予測ミス・インジケータ238が、補助インストールおよび更新コントローラ220に提供されてよい。本明細書でさらに後述されるように、主要分岐予測器予測ミス・インジケータ236と補助分岐予測器予測ミス・インジケータ238との両方を使用して、補助分岐予測器204の内容が更新されてよい。さらに、BTB206中のBTBエントリの無効化など、主要分岐予測器202の内容の変更が、主要インストールおよび更新コントローラ212から補助インストールおよび更新コントローラ220に伝達されてよく、それにより、例えば、補助分岐予測器204中の参照先エントリ、または先行インストール・キュー222の一部(例えばレコード)もしくはすべてが無効化されてよい。
主要インストールおよび更新コントローラ212は、主要分岐予測器予測ミス・インジケータ236を使用して、主要分岐予測器202に対するインストールおよび更新をトリガすることができるが、主要分岐予測器202は、パス履歴や、分岐/非分岐インジケータなど、他のイベントに基づいて、インストールされるかまたは更新されるかあるいはその両方が行われてもよい。主要インストールおよび更新コントローラ212はまた、例えば、前に記憶されたチェックポイントへの復元の一部として、テストとして、または他の目的で、主要分岐予測器202のうちの1つまたは複数のプリロードをサポートすることもできる。同様に、補助インストールおよび更新コントローラ220は、主要分岐予測器予測ミス・インジケータ236および補助分岐予測器予測ミス・インジケータ238を使用して、パス履歴や、分岐/非分岐インジケータなど、他のイベントに基づいて、補助分岐予測器204に対するインストールおよび更新をトリガすることができる。補助インストールおよび更新コントローラ220はまた、例えば、前に記憶されたチェックポイントへの復元の一部として、テストとして、または他の目的で、補助分岐予測器204のプリロードをサポートすることもできる。
補助分岐予測器204は、命令アドレス(例えば検索アドレス218)または大域的分岐/パス履歴(例えば各PHT210を索引付けするのに使用されるような)あるいはその両方によって索引付けされた、連想型に設定されたタグ付きテーブルとして構造化されてよい。図3に、補助分岐予測器204の例示的な構造が、より詳細に描かれる。補助分岐予測器204は、複数の合同クラス302を含むことができる。補助インストールおよび更新コントローラ220、または補助検索およびヒット・コントローラ224、あるいはその両方は、合同クラス302のうちの特定の合同クラス304を突き止める(すなわち検索アドレス・ビットのサブセットを合同クラス304の索引付けされた位置とマッチさせることに基づいて)ように、索引付けすることができる。合同クラス304を含めた各合同クラス302は、複数のエントリ306A〜Dを有する。図3の例では、合同クラス304は、エントリ306A、306B、306C、および306Dを含む。各エントリ306は、補助タグ308および補助データ310を含むことができる。補助タグ308は、合同クラス304の位置との組合せで、索引付けされた/アドレス指定された特定の位置にマッピングすることになるビットの一部を含む。
一例として、図1の命令フェッチ・ユニット108によってフェッチされた命令のアドレスが、図2の検索アドレス218の初期値として使用されて、分岐予測器118がアクセスされ、分岐ターゲット・アドレスが予測される。補助分岐予測を探るときは、補助分岐予測器204が読み取られ、検索アドレス218の一部とマッチする補助タグ308を有するエントリ306を補助分岐予測器204が含む場合は、補助分岐予測器204は補助予測器ターゲット・アドレス226を提供することができる。補助分岐予測器204は、補助検索およびヒット・コントローラ224に入力を提供して、マッチまたは「ヒット」が突き止められるかどうかを決定する。マッチが見つかった場合は、補助検索およびヒット・コントローラ224は、補助予測器ターゲット・アドレス226を、同じエントリ306からの補助有用性レベル228の関連する値と共に出力する。補助分岐予測器204に記憶されている補助予測器ターゲット・アドレス226は、アドレス・ビットのサブセットのみを含むものとすることができ、このサブセットは、補助検索およびヒット・コントローラ224またはターゲット・アドレス・セレクタ230あるいはその両方によって、追加のアドレス・ビットを含むように拡張されてよい。
各補助予測器エントリ306はまた、パーセプトロン(すなわち機械学習)予測器、局所的履歴テーブル、または複雑な状態機械など、1つまたは複数の非常に正確な分岐予測器を、補助予測器状態データ312中に含むことができる。複雑な予測アルゴリズムをサポートするには、1エントリ306当たり大量のデータが必要であろう。したがって、補助分岐予測器204は通常、BTB206中のエントリの数と比較してずっと少ない総エントリを含み、これらのエントリは、当技術分野で知られている単純な分岐アドレス・タグおよびターゲット・フォーマットを使用することができる。図3の例では、各エントリ306中の補助データ310は、保護制限314を含み、また有効性316を含むこともできる。
一実施形態では、補助インストールおよび更新コントローラ220は、主要分岐予測器202による予測ミスがあったとき、エントリ306を補助分岐予測器204にインストールしようと試みる。合同クラス304内で、補助インストールおよび更新コントローラ220は、置換ポリシーに従って置換すべき既存エントリ306が合同クラス304中にあればどのエントリ306を置換するかを決定する。合同クラス304中のすべての既存エントリ306A〜Dを置換から保護する方が性能にとってよりよい可能性が高いと置換ポリシーによって決定した場合は、試みられたインストールは成功しないことがある。
一実施形態では、インストールしようとするとき、補助インストールおよび更新コントローラ220の置換ポリシーは、有効性316によって示されるように無効なエントリが合同クラス304中にある場合は、無効なエントリを置換することになる。ない場合は、補助インストールおよび更新コントローラ220は、最も有用でないエントリ(すなわち、合同クラス304のエントリ306A〜Dのうちで最低の補助有用性レベル228を有するもの)が保護されていない(例えば、0の保護制限314を有する)場合に、この最も有用でないエントリを置換する。エントリ306のインストール時、補助有用性レベル228は、低い初期値に(例えば1に)設定されてよい。エントリ306の補助有用性レベル228は、主要分岐予測器202が誤っていた(例えば、主要分岐予測器予測ミス・インジケータ236がセットされる)とき、および補助分岐予測器204からの予測が正しかった(例えば、補助分岐予測器予測ミス・インジケータ238がクリアである)かまたは補助分岐予測器204のエントリ306が十分に訓練されていない(例えば、補助有用性レベル228が訓練しきい値未満である)かのいずれかのときは、常に増加してよい。補助有用性レベル228がインクリメントされて、同じ合同クラス304中のすべてのエントリ306A〜Dが低減しきい値よりも高い補助有用性レベルを有するようになると、合同クラス304中のすべてのエントリ306A〜Dの補助有用性レベル228が低減されるものとすることができる(例えば、合同クラス304中のエントリ306A〜D中で補助有用性レベル228を2で割る)。これにより、合同クラス304中の補助有用性レベル228がエントリ306A〜306Dの相対的な有用性を正確に表し、すべてが最大値で飽和しないことが保証される。同様に、合同クラス304中の2つのエントリ306が最大値に達したときに合同クラス304中のエントリ306A〜D中の補助有用性レベル228を2で割ることを使用して、エントリ306A〜306Dの相対的な有用性を維持することもできる。
保護制限314を使用して、新たにインストールされたエントリ306が、補助予測器状態データ312に関連する予測器が訓練されて補助有用性レベル228が決定される前に置換されるのを防ぐことができる。保護制限314はまた、有用であることが最近わかったエントリ306が置換されるのも防ぐ。保護制限314は、補助分岐予測器204のエントリ306へのインストール時に、0でない値に初期化されてよい。補助有用性レベル228を保護しきい値よりも高くインクリメントすると、保護制限314は、0でない値に再初期化されてよい。この2つの場合の初期化値は、0でない同じ値である必要は必ずしもない。新しいエントリを補助分岐予測器204にインストールしようとするとき、最も有用でないエントリ(例えば、最低の補助有用性レベル228を有するエントリ306A〜306D)が0の保護制限314を有する場合は、インストールは継続することが許される。最も有用でないエントリの保護制限314が0でない場合は、保護制限314が低減され、新しいインストールは防止される。
補助有用性レベル228が置換ポリシーに影響を及ぼすことに加えて、補助有用性レベル228はまた、補助分岐予測器204からの予測が使用されるか否かにも影響を及ぼすことができる。例えば、5ビットの補助有用性レベル228を用いる場合、値が0と7の間であれば、補助予測器ターゲット・アドレス226は使用されないものとすることができるが、補助状態データ312に関連する予測器は訓練されることが可能である。補助有用性レベル228の値が8と31の間であれば、主要予測器ターゲット・アドレス216が選択されるのではなく、補助予測器ターゲット・アドレス226がターゲット・アドレス232としてターゲット・アドレス・セレクタ230によって使用に向けて選択されるものとすることができる。この例を続けるが、合同クラス304中のすべてのエントリ306A〜Dが、16〜31の範囲の補助有用性レベル228を有する(または有することになる)と、値はすべて半分に低減されるものとすることができる(例えば、シフト演算を使用して2で割る)。合同クラス304中の2つのエントリが、31の補助有用性レベル228値を有する(または有することになる)と、合同クラス304中のすべてのエントリ306A〜D中の補助有用性レベル228は半分に低減されるものとすることができる(例えば、シフト演算を使用して2で割る)。
補助分岐予測器204についての更新ポリシーは、補助予測器の選択に依存する。例えば、パーセプトロン予測器の場合、ポリシーは、補助有用性レベル228中の値が低いせいで補助データ310が予測の実施に使用されなかった場合であっても、補助分岐予測器204とのマッチが発生したときは常にエントリ306を更新すること、とすることができる。パーセプトロン予測器では、パーセプトロンの予測が分岐結果とマッチしなかった場合、またはパーセプトロン予測が分岐結果とマッチしたが予測の大きさ(すなわち予測強度)が信頼度しきい値未満であった場合は、更新が行われることが可能である。
図4は、一実施形態による、処理システムにおける補助分岐予測を管理するための高レベルのプロセス・フロー図を描く。図4のプロセス400は、図2の補助インストールおよび更新コントローラ220、または図1および2の分岐予測器118の他の要素、あるいはその両方によって実施できる方法である。説明しやすくするために、プロセス400は、図1および2の処理システム100の分岐予測器118に関して、またさらに図3に関して述べる。
ブロック402で、補助インストールおよび更新コントローラ220は、主要分岐予測器202の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータ236を受け取ることに基づいて、補助分岐予測器204の合同クラス304を突き止める。ターゲット・アドレス・セレクタ230は、予測ミスされた分岐234が主要分岐予測器202から生じたかそれとも補助分岐予測器204から生じたかを識別する助けとするために、ターゲット・アドレス232として主要予測器ターゲット・アドレス216が選択されたかそれとも補助予測器ターゲット・アドレス226が選択されたかを追跡することができる。例えば、主要予測器ターゲット・アドレス216がターゲット・アドレス232として使用された場合に、実際のアドレスの解決時に処理パイプライン106が予測ミスの発生を決定したときは、処理パイプライン106は、予測ミスされた分岐234の指標を生成することができる。主要予測器ターゲット・アドレス216に関連する予測ミスされた分岐234の指標が受け取られると、ターゲット・アドレス・セレクタ230は、主要分岐予測器予測ミス・インジケータ236をセットすることができる。主要分岐予測器予測ミス・インジケータ236または他の信号あるいはその両方を使用して、主要分岐予測器202が分岐予測の実施において正しかったことまたは正しくなかったことを示すことができる。同様に、補助分岐予測器予測ミス・インジケータ238または他の信号あるいはその両方を使用して、補助分岐予測器204が分岐予測の実施において正しかったことまたは正しくなかったことを示すことができる。
ブロック404で、補助インストールおよび更新コントローラ220は、合同クラス304の1つまたは複数の他のエントリ306に対して最も有用でないレベルに設定された補助有用性レベル228を有するエントリ306を、合同クラス304中で識別する。例えば、合同クラス304中でエントリ306Bが0の補助有用性レベル228を有し、合同クラス304中のエントリ306A、306C、および306Dが0よりも大きい補助有用性レベル228を有していた場合は、エントリ306Bが、最も有用でないレベルに設定されているものとして識別されることになる。
補助インストールおよび更新コントローラ220はまた、エントリ306を選択するために、合同クラス304のエントリ306A〜Dの保護制限314または有効性316あるいはその両方を調べることができる。補助インストールおよび更新コントローラ220は、合同クラス304中の各エントリ306A〜Dの保護制限314をチェックすることができるが、この保護制限314は、各エントリ306A〜Dが上書きされないよう保護されているか保護されていないかを識別する。補助インストールおよび更新コントローラ220は、合同クラス304中の保護されていないエントリ306A〜Dのうち、最も有用でないレベルに設定された補助有用性レベル228を有するエントリ306を、合同クラス304中で識別することができる。有効性316が含まれるときは、補助インストールおよび更新コントローラ220は、無効なエントリがあるかどうか合同クラス304をチェックすることができ、無効なエントリを合同クラス304中で突き止めることに基づいて、この無効なエントリが、更新に向けたエントリ306として選択される。無効なエントリが合同クラス304中に存在しないと決定されることに基づいて、合同クラス304中の、最も有用でないレベルに設定された補助有用性レベル228を有するエントリ306が選択される。
ブロック406で、補助インストールおよび更新コントローラ220は、予測ミスされたターゲット・アドレスに対応する補助データ310をエントリ306にインストールする。例えば、予測ミスされたターゲット・アドレスの一部が、エントリ306における補助予測器ターゲット・アドレス226に書き込まれてよく、合同クラス304は、予測ミスされた分岐234のアドレスによって索引付けされてよい。補助分岐予測器204中での重複を避けるために、補助分岐予測器204への最近成功した複数のインストールのレコードが、先行インストール・キュー222に記憶されてよい。先行インストール・キュー222中でマッチするレコードを突き止めることに基づいて、補助分岐予測器204への新たなインストールが防止されるものとすることができる。先行インストール・キュー222は、キュー・リフレッシュ期間の経過後に無効化されてよい。
ブロック408で、補助インストールおよび更新コントローラ220は、補助データ310をインストールすることに基づいて、エントリ306の補助有用性レベル228を初期値にリセットする。一例として、さらに反復が行われることでエントリ306の補助有用性レベル228が確認されインクリメントされるまで、補助有用性レベル228は、低い有用性を示すために値0または1に設定されてよい。インストール時、エントリ306の有効性316が有効に設定されてよい。
補助分岐予測器204が、BTB206など主要分岐予測器202のうちの1つのサブセットとして構成される実施形態では、補助タグ308はBTBタグにリンクされてよい。例えば、BTB206中の合同クラス内の列が、補助分岐予測器204中の補助タグ308として記憶されてよい。BTB206中でBTBエントリが上書きされたとき、主要インストールおよび更新コントローラ212は、「オーファン(orphan)」補助エントリを避けるために、このBTBエントリを参照するエントリ306を無効化するよう補助インストールおよび更新コントローラ220をトリガすることができる。これは「オーファン無効化」と呼ばれる。オーファン無効化時、補助インストールおよび更新コントローラ220はまた、先行インストール・キュー222の、影響を受けるレコード、または先行インストール・キュー222全体も無効化することができる。したがって、補助インストールおよび更新コントローラ220は、主要分岐予測器202の参照元エントリが無効化されたと決定することに基づいて、補助分岐予測器204中の参照先エントリを無効化することができ、ここで、主要分岐予測器202中の参照元エントリは、補助分岐予測器204中の参照先エントリに対応する。補助分岐予測器204中の参照先エントリを無効化することに基づいて、先行インストール・キュー222中の参照先エントリのレコードを無効化すること、または先行インストール・キュー222を完全に無効化することが実施されてよい。
図5は、図2の補助分岐予測器204についての補助有用性レベル管理のプロセス・フロー図である。図5のプロセス500は、図2の補助インストールおよび更新コントローラ220、または図1および2の分岐予測器118の他の要素、あるいはその両方によって実施できる方法である。説明しやすくするために、プロセス500は、図1および2の処理システム100の分岐予測器118に関して、またさらに図3に関して述べる。
ブロック502で、その後、補助データ310がエントリ306にインストールされた後でエントリ306に対して主要分岐予測器予測ミス・インジケータ236がセットされたと決定したとき、および補助分岐予測器204が補助データ310を使用して分岐を正しく予測したかまたはエントリ306の補助有用性レベル228が訓練しきい値未満であるかのいずれかであると決定したとき、補助インストールおよび更新コントローラ220は、合同クラス304中のエントリ306の補助有用性レベル228を増加させることができる。主要分岐予測器202のうちの1つによる予測ミス、および補助分岐予測器204による正しい予測は、特定の予測について補助分岐予測器204が主要分岐予測器202よりも有用である可能性が高いことを示す。訓練しきい値は、現在の予測が正しくなかった場合でも補助分岐予測器204が学習を継続するために、さらに反復が行われることを可能にする。
ブロック504で、補助インストールおよび更新コントローラ220は、合同クラス304のすべてのエントリ306A〜Dの補助有用性レベル228が低減しきい値よりも高いと決定することに基づいて、合同クラス304のすべてのエントリ306A〜Dについて等しく補助有用性レベル228を低減する。
ブロック506で、補助インストールおよび更新コントローラ220は、合同クラス304の2つのエントリ306の補助有用性レベル228が最大値に達したと決定することに基づいて、合同クラス304のすべてのエントリ306A〜Dについて等しく補助有用性レベル228を低減する。
図6は、図2の補助分岐予測器204についての保護制限管理のプロセス・フロー図である。図6のプロセス600は、図2の補助インストールおよび更新コントローラ220、または図1および2の分岐予測器118の他の要素、あるいはその両方によって実施できる方法である。説明しやすくするために、プロセス600は、図1および2の処理システム100の分岐予測器118に関して、またさらに図3に関して述べる。
ブロック602で、補助インストールおよび更新コントローラ220は、補助データ310のインストール時に、エントリ306の保護制限314を0でない値に初期化する。
ブロック604で、補助インストールおよび更新コントローラ220は、エントリ306の補助有用性レベル228が保護しきい値を超えると決定することに基づいて、エントリ306の保護制限314を0でない値にリセットする。
ブロック606で、補助インストールおよび更新コントローラ220は、エントリ306の保護制限314中に0の値を有することに基づいて、エントリ306を保護されていないものとして識別する。
ブロック608で、補助インストールおよび更新コントローラ220は、エントリ306の保護制限314中に0でない値を有することに基づいて、エントリ306を保護されているものとして識別する。
ブロック610で、補助インストールおよび更新コントローラ220は、保護されている最も有用でないエントリのインストールを防止することに基づいて、保護されている最も有用でないエントリの保護制限314をデクリメントする。
図7は、ターゲット・アドレス選択に関するプロセス・フロー図である。図7のプロセス700は、図1および2の分岐予測器118によって実施できる方法である。説明しやすくするために、プロセス700は、図1および2の処理システム100の分岐予測器118に関して、またさらに図3に関して述べる。
ブロック702で、主要分岐予測器202と補助分岐予測器204とが検索アドレス218に基づいて並列に検索されて、分岐予測が行われる。主要検索およびヒット・コントローラ214が、主要分岐予測器202の主要分岐予測構造を検索することができ、補助検索およびヒット・コントローラ224が、補助分岐予測器204を検索する。得られた主要予測器ターゲット・アドレス216の値が、主要検索およびヒット・コントローラ214からターゲット・アドレス・セレクタ230に提供される。得られた補助予測器ターゲット・アドレス226および補助有用性レベル228の値が、ターゲット・アドレス・セレクタ230に提供されるものとすることができる。
ブロック704で、ターゲット・アドレス・セレクタ230は、補助分岐予測器204のマッチするエントリ306の補助有用性レベル228が有用性しきい値よりも高いと決定することに基づいて、補助分岐予測器204からの、検索アドレス218に対応する補助予測器分岐ターゲット226を選択する。
ブロック706で、ターゲット・アドレス・セレクタ230は、補助分岐予測器204のマッチするエントリ306の補助有用性レベル228が有用性しきい値未満であると決定することに基づいて、主要分岐予測器202からの、検索アドレス218に対応する主要予測器分岐ターゲット216を選択する。
図8は、プロセッサ805における有用性追跡を用いた補助分岐予測のためのシステム800のブロック図を描く。本明細書に記載の方法は、ハードウェア、ソフトウェア(例えばファームウェア)、またはこれらの組合せにおいて実装されることが可能である。例示的な一実施形態では、本明細書に記載の方法は、パーソナル・コンピュータ、ワークステーション、ミニコンピュータ、またはメインフレーム・コンピュータなどのコンピュータのマイクロプロセッサの一部としてのハードウェアにおいて実装される。したがって、システム800は、図8に示されるようなコンピュータ801を備える。
例示的な一実施形態では、図8に示されるようなハードウェア・アーキテクチャに関して、コンピュータ801は、図1の処理パイプライン106と分岐予測器118とを含む処理回路であるプロセッサ805を備える。コンピュータ801はさらに、メモリ・コントローラ815に結合されたメモリ810と、ローカル入出力コントローラ835を介して通信可能に結合された1つまたは複数の入力または出力あるいはその両方の(I/O)デバイス840、845(または周辺装置)とを備える。入出力コントローラ835は、例えば、次のものに限定されないが、当技術分野で知られているような1つまたは複数のバスまたは他の有線もしくはワイヤレス接続とすることができる。入出力コントローラ835は、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、および受信機など、通信を可能にするための追加の要素を有する場合もあるが、簡単にするためにこれらは省略されている。さらに、ローカル・インタフェースは、前述のコンポーネント間での適切な通信を可能にするために、アドレス接続、制御接続、またはデータ接続、あるいはその組合せを含む場合もある。
プロセッサ805は、ソフトウェア、特にキャッシュ・ストレージなどのストレージ820またはメモリ810に記憶されたソフトウェアを実行するための、ハードウェア・デバイスである。プロセッサ805は、任意のカスタムメイドもしくは市販のプロセッサ、中央処理装置(CPU)、コンピュータ801に関連するいくつかのプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップもしくはチップ・セットの形の)、マクロプロセッサ、または一般に、命令を実行するための任意のデバイスとすることができる。
メモリ810は、揮発性メモリ要素(例えば、ランダム・アクセス・メモリ(DRAM、SRAM、SDRAMなどのRAM)および不揮発性メモリ要素(例えば、ROM、消去可能プログラム可能な読取専用メモリ(EPROM)、電気的に消去可能プログラム可能な読取専用メモリ(EEPROM)、プログラム可能な読取専用メモリ(PROM)、テープ、コンパクト・ディスク読取専用メモリ(CD−ROM)、ディスク、ディスケット、カートリッジ、カセット、またはその他など)のうちの、任意の1つまたは組合せを含むことができる。さらに、メモリ810は、電子的な、磁気的な、光学的な、または他の、あるいはその組合せのタイプの記憶媒体を組み込む場合もある。メモリ810は分散アーキテクチャを有することができ、その場合、様々なコンポーネントは、相互からリモートに位置するが、プロセッサ805によってアクセスできることに留意されたい。
メモリ810中の命令は、1つまたは複数の別々のプログラムを含む場合があり、各プログラムは、論理機能を実装するための実行可能命令の順序付きリストを含む。図8の例では、メモリ810中の命令は、適切なオペレーティング・システム(OS)811を含む。オペレーティング・システム811は本質的に、他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、ならびに、通信制御および関係するサービスを提供する。
例示的な一実施形態では、従来型のキーボード850およびマウス855を入出力コントローラ835に結合することができる。I/Oデバイス840、845など、他の入力デバイスおよび出力デバイスは、例えば、次のものに限定されないが、プリンタ、スキャナ、マイクロフォンなどを含む場合がある。最後に、I/Oデバイス840、845はさらに、入力と出力の両方を伝達するデバイス、例えば、次のものに限定されないが、ネットワーク・インタフェース・カード(NIC)または変調器/復調器(他のファイル、デバイス、システム、もしくはネットワークにアクセスするための)、無線周波数(RF)または他の送受信機、電話インタフェース、ブリッジ、ルータなどを含む場合もある。システム800はさらに、ディスプレイ830に結合されたディスプレイ・コントローラ825を備えることができる。例示的な一実施形態では、システム800はさらに、ネットワーク865に結合するためのネットワーク・インタフェース860を備えることができる。ネットワーク865は、ブロードバンド接続を介してコンピュータ801と任意の外部サーバやクライアントなどとの間で通信するための、IPベースのネットワークとすることができる。ネットワーク865は、コンピュータ801と外部システムとの間でデータを送受信する。例示的な一実施形態では、ネットワーク865は、サービス・プロバイダによって監督されるマネージドIPネットワークとすることができる。ネットワーク865は、例えば、WiFiやWiMaxなどのワイヤレス・プロトコルおよび技術を使用して、ワイヤレス方式で実装されてよい。ネットワーク865はまた、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、または他の類似のタイプのネットワーク環境など、パケット交換ネットワークとすることもできる。ネットワーク865は、固定ワイヤレス・ネットワーク、ワイヤレス・ローカル・エリア・ネットワーク(LAN)、ワイヤレス・ワイド・エリア・ネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN)、バーチャル・プライベート・ネットワーク(VPN)、イントラネット、または他の適切なネットワーク・システムとすることができ、信号を送受信するための機器を備える。
コンピュータ801がPC、ワークステーション、インテリジェント・デバイスなどである場合、メモリ810中の命令はさらに、BIOS(basic input output system)を含むことができる(簡単にするために省略されている)。BIOSは、起動時にハードウェアを初期化およびテストし、OS811を立ち上げ、ハードウェア・デバイス間のデータの転送をサポートする、本質的なソフトウェア・ルーチンのセットである。コンピュータ801がアクティブ化されたときにBIOSを実行できるように、BIOSはROMに記憶される。
コンピュータ801が動作中のとき、プロセッサ805は、メモリ810内に記憶された命令をフェッチして実行すること、メモリ810との間でデータを伝達すること、および命令に従ってコンピュータ801の動作を全体的に制御することを行うように構成される。
例示的な一実施形態では、図2の分岐予測器118がハードウェアにおいて実装される場合、図4〜7のプロセス400〜700など本明細書に記載の方法は、当技術分野でそれぞれよく知られている次の技術のいずれかまたは組合せを用いて実装されることが可能である。すなわち、データ信号に対してロジック機能を実装するためのロジック・ゲートを有するディスクリート・ロジック回路、適切な組合せロジック・ゲートを有する特定用途向け集積回路(ASIC)、プログラマブル・ゲート・アレイ(PGA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などである。
技術的効果および利点は、補助分岐予測器の複雑さの増した予測からの利益を最も得る小さい分岐サブセットに対して補助分岐予測器中で分岐予測器エントリを割り振ることによって、向上した分岐予測精度を効率的な方式で達成することを含む。有用性追跡が、主要分岐予測器結果と補助分岐予測器結果との間での効率的な選択を可能にする。保護制限が、機械学習アルゴリズムを使用する補助分岐予測器のための訓練期間を可能にする。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、装置、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示すことに留意されたい。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、またはコードの一部を表す場合があり、これは、指定される論理機能を実装するための少なくとも1つの実行可能命令を含む。また、いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合があることにも留意されたい。例えば、関係する機能に応じて、連続して示される2つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施する専用ハードウェアベースのシステムによって、または、専用ハードウェアとコンピュータ命令との組合せによって、実装できることにも気付くであろう。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(1つまたは複数)を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、次のものに限定されないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取専用メモリ(CD−ROM)、ディジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にエンコードされるデバイス(命令が記録される、パンチカード、または溝の中の隆起構造など)、およびこれらの任意の適切な組合せを含む。本明細書におけるコンピュータ可読記憶媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、あるいは、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せ)を介して外部コンピュータまたは外部記憶デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶されるように転送する。
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Smalltalk(R)やC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、1つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)行われてもよい。いくつかの実施形態では、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の、フローチャート説明またはブロック図あるいはその両方に関して記述されている。フローチャート説明またはブロック図あるいはその両方の各ブロック、および、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実装できることは理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装する手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為の態様を実装する命令を含む製造品を構成するように、コンピュータ可読記憶媒体に記憶されるものであってもよく、このコンピュータ可読記憶媒体は、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに、特定の方式で機能するよう指令することができる。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の動作ステップを実施し、コンピュータ実装プロセスを作り出すものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、または命令の一部を表す場合があり、これは、指定される論理機能を実装するための少なくとも1つの実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関係する機能に応じて、連続して示される2つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令とを組み合わせて遂行する、専用ハードウェアベースのシステムによって、実装できることにも気付くであろう。
本開示は、例証および記述の目的で提示したものであり、網羅的または限定的なものとはしない。多くの変更および変形が、当業者には明らかであろう。実施形態は、原理および実際の応用を説明するために、かつ他の当業者が本開示を理解できるようにするために、選ばれ記述されたものである。
本明細書では、本発明の例証的な実施形態について添付図面に関して述べたが、本発明の実施形態はこれらの厳密な実施形態に限定されないこと、ならびに、本開示の範囲または思想を逸脱することなく当業者によって様々な他の変形および変更が加えられてもよいことを理解されたい。

Claims (21)

  1. 主要分岐予測器と補助分岐予測器とを備える処理システムにおいて補助分岐予測を管理するための方法であって、
    前記主要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて、前記補助分岐予測器の合同クラスを突き止めることと、
    前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリを、前記合同クラス中で識別することと、
    前記予測ミスされたターゲット・アドレスに対応する補助データを前記エントリにインストールすることと、
    前記補助データをインストールすることに基づいて前記エントリの前記補助有用性レベルを初期値にリセットすることと、
    その後、前記補助データが前記エントリにインストールされた後で前記エントリに対して前記主要分岐予測器予測ミス・インジケータがセットされたと決定し、かつ、前記補助分岐予測器が前記補助データを使用して分岐を正しく予測したかまたは前記エントリの前記補助有用性レベルが訓練しきい値未満であるかのいずれかであると決定したときに、前記エントリの前記補助有用性レベルを増加させることと、
    前記合同クラスのすべてのエントリの前記補助有用性レベルが低減しきい値よりも高いと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    前記合同クラスの2つのエントリの前記補助有用性レベルが最大値に達したと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    を含む方法。
  2. 前記主要分岐予測器と前記補助分岐予測器とを検索アドレスに基づいて並列に検索して分岐予測を行うことと、
    前記補助分岐予測器のマッチするエントリの前記補助有用性レベルが有用性しきい値よりも高いと決定することに基づいて、前記補助分岐予測器からの、前記検索アドレスに対応する補助予測器分岐ターゲットを選択することと、
    前記補助分岐予測器の前記マッチするエントリの前記補助有用性レベルが前記有用性しきい値未満であると決定することに基づいて、前記主要分岐予測器からの、前記検索アドレスに対応する主要予測器分岐ターゲットを選択することと、
    をさらに含む、請求項1に記載の方法。
  3. 前記エントリを前記合同クラス中で識別することがさらに、
    前記合同クラス中の複数のエントリの各々が上書きされないよう保護されているか保護されていないかを識別する、前記エントリの各々の保護制限をチェックすることと、
    前記合同クラス中の保護されていないエントリのうち、最も有用でないレベルに設定された前記補助有用性レベルを有するエントリを前記合同クラス中で識別することと、
    を含む、請求項1に記載の方法。
  4. 前記補助データのインストール時に前記エントリの前記保護制限を0でない値に初期化することと、
    前記エントリの前記補助有用性レベルが保護しきい値を超えると決定することに基づいて、前記エントリの前記保護制限を前記0でない値にリセットすることと、
    前記エントリの前記保護制限中に0の値を有することに基づいて、前記エントリを保護されていないものとして識別することと、
    前記エントリの前記保護制限中に前記0でない値を有することに基づいて、前記エントリを保護されているものとして識別することと、
    保護されている最も有用でないエントリのインストールを防止することに基づいて、前記保護されている最も有用でないエントリの前記保護制限をデクリメントすることと、
    をさらに含む、請求項3に記載の方法。
  5. 前記エントリを前記合同クラス中で識別することがさらに、
    無効なエントリがあるかどうか前記合同クラスをチェックすることと、
    前記無効なエントリを前記合同クラス中で突き止めることに基づいて、前記無効なエントリを更新に向けたエントリとして識別し、前記エントリの有効性を有効に設定することと、
    無効なエントリが前記合同クラス中にないと決定することに基づいて、前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された前記補助有用性レベルを有する前記エントリを、前記合同クラス中で識別することと、
    を含む、請求項3に記載の方法。
  6. 前記補助分岐予測器への最近成功した複数のインストールのレコードを先行インストール・キューに記憶することと、
    前記先行インストール・キュー中でマッチするレコードを突き止めることに基づいて、前記補助分岐予測器への新たなインストールを防止することと、
    キュー・リフレッシュ期間の経過後に前記先行インストール・キューを無効化することと、
    をさらに含む、請求項1に記載の方法。
  7. 前記主要分岐予測器の参照元エントリが無効化されたと決定することに基づいて前記補助分岐予測器中の参照先エントリを無効化することであって、前記主要分岐予測器の前記参照元エントリが前記補助分岐予測器中の前記参照先エントリに対応するものである、前記無効化することと、
    前記補助分岐予測器中の前記参照先エントリを無効化することに基づいて、前記先行インストール・キュー中の前記参照先エントリのレコードを無効化するかまたは前記先行インストール・キューを完全に無効化することと、
    をさらに含む、請求項6に記載の方法。
  8. 補助分岐予測を管理するための処理システムであって、
    複数の主要分岐予測構造を含む主要分岐予測器と、
    複数の合同クラスを含む補助分岐予測器であって、前記合同クラスの各々が複数のエントリを含む、前記補助分岐予測器と、
    補助インストールおよび更新コントローラとを備え、前記補助インストールおよび更新コントローラが、
    前記主要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて、前記補助分岐予測器の合同クラスを突き止めることと、
    前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリを、前記合同クラス中で識別することと、
    前記予測ミスされたターゲット・アドレスに対応する補助データを前記エントリにインストールすることと、
    前記補助データをインストールすることに基づいて前記エントリの前記補助有用性レベルを初期値にリセットすることと、
    その後、前記補助データが前記エントリにインストールされた後で前記エントリに対して前記主要分岐予測器予測ミス・インジケータがセットされたと決定し、かつ、前記補助分岐予測器が前記補助データを使用して分岐を正しく予測したかまたは前記エントリの前記補助有用性レベルが訓練しきい値未満であるかのいずれかであると決定したときに、前記エントリの前記補助有用性レベルを増加させることと、
    前記合同クラスのすべてのエントリの前記補助有用性レベルが低減しきい値よりも高いと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    前記合同クラスの2つのエントリの前記補助有用性レベルが最大値に達したと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    を実施するように動作可能である、処理システム。
  9. 前記主要分岐予測器を検索アドレスに基づいて検索して分岐予測を行う、主要検索およびヒット・コントローラと、
    前記主要検索およびビット・コントローラと並列に前記補助分岐予測器を検索する、補助検索およびヒット・コントローラと、
    ターゲット・アドレス・セレクタとをさらに備え、前記ターゲット・アドレス・セレクタが、
    前記補助分岐予測器のマッチするエントリの前記補助有用性レベルが有用性しきい値よりも高いと決定することに基づいて、前記補助分岐予測器からの、前記検索アドレスに対応する補助予測器分岐ターゲットを選択することと、
    前記補助分岐予測器の前記マッチするエントリの前記補助有用性レベルが前記有用性しきい値未満であると決定することに基づいて、前記主要分岐予測器からの、前記検索アドレスに対応する主要予測器分岐ターゲットを選択することと、
    を実施するように動作可能である、請求項8に記載の処理システム。
  10. 前記エントリを前記合同クラス中で識別することがさらに、
    前記合同クラス中の複数のエントリの各々が上書きされないよう保護されているか保護されていないかを識別する、前記エントリの各々の保護制限をチェックすることと、
    前記合同クラス中の保護されていないエントリのうち、最も有用でないレベルに設定された前記補助有用性レベルを有するエントリを前記合同クラス中で識別することと、
    を含む、請求項8に記載の処理システム。
  11. 前記補助インストールおよび更新コントローラがさらに、
    前記補助データのインストール時に前記エントリの前記保護制限を0でない値に初期化することと、
    前記エントリの前記補助有用性レベルが保護しきい値を超えると決定することに基づいて、前記エントリの前記保護制限を前記0でない値にリセットすることと、
    前記エントリの前記保護制限中に0の値を有することに基づいて、前記エントリを保護されていないものとして識別することと、
    前記エントリの前記保護制限中に前記0でない値を有することに基づいて、前記エントリを保護されているものとして識別することと、
    保護されている最も有用でないエントリのインストールを防止することに基づいて、前記保護されている最も有用でないエントリの前記保護制限をデクリメントすることと、
    を実施するように動作可能である、請求項10に記載の処理システム。
  12. 前記エントリを前記合同クラス中で識別することがさらに、
    無効なエントリがあるかどうか前記合同クラスをチェックすることと、
    無効なエントリを前記合同クラス中で突き止めることに基づいて、前記無効なエントリを更新に向けたエントリとして識別し、前記エントリの有効性を有効に設定することと、
    無効なエントリが前記合同クラス中にないと決定することに基づいて、前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された前記補助有用性レベルを有する前記エントリを、前記合同クラス中で識別することと、
    を含む、請求項10に記載の処理システム。
  13. 先行インストール・キューをさらに備え、前記補助インストールおよび更新コントローラがさらに、
    前記補助分岐予測器への最近成功した複数のインストールのレコードを前記先行インストール・キューに記憶することと、
    前記先行インストール・キュー中でマッチするレコードを突き止めることに基づいて、前記補助分岐予測器への新たなインストールを防止することと、
    キュー・リフレッシュ期間の経過後に前記先行インストール・キューを無効化することと、
    を実施するように動作可能である、請求項8に記載の処理システム。
  14. 前記補助インストールおよび更新コントローラがさらに、
    前記主要分岐予測器の参照元エントリが無効化されたと決定することに基づいて前記補助分岐予測器中の参照先エントリを無効化することであって、前記主要分岐予測器の前記参照元エントリが前記補助分岐予測器中の前記参照先エントリに対応するものである、前記無効化することと、
    前記補助分岐予測器中の前記参照先エントリを無効化することに基づいて、前記先行インストール・キュー中の前記参照先エントリのレコードを無効化するかまたは前記先行インストール・キューを完全に無効化することと、
    を実施するように動作可能である、請求項13に記載の処理システム。
  15. プロセッサに、
    要分岐予測器の予測ミスされたターゲット・アドレスに対応する主要分岐予測器予測ミス・インジケータを受け取ることに基づいて、助分岐予測器の合同クラスを突き止めることと、
    前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された補助有用性レベルを有するエントリを、前記合同クラス中で識別することと、
    前記予測ミスされたターゲット・アドレスに対応する補助データを前記エントリにインストールすることと、
    前記補助データをインストールすることに基づいて前記エントリの前記補助有用性レベルを初期値にリセットすることと、
    その後、前記補助データが前記エントリにインストールされた後で前記エントリに対して前記主要分岐予測器予測ミス・インジケータがセットされたと決定し、かつ、前記補助分岐予測器が前記補助データを使用して分岐を正しく予測したかまたは前記エントリの前記補助有用性レベルが訓練しきい値未満であるかのいずれかであると決定したときに、前記エントリの前記補助有用性レベルを増加させることと、
    前記合同クラスのすべてのエントリの前記補助有用性レベルが低減しきい値よりも高いと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    前記合同クラスの2つのエントリの前記補助有用性レベルが最大値に達したと決定することに基づいて、前記合同クラスのすべてのエントリについて等しく前記補助有用性レベルを低減することと、
    を行わせる、コンピュータ・プログラム。
  16. 前記プロセッサに、
    前記主要分岐予測器と前記補助分岐予測器とを検索アドレスに基づいて並列に検索して分岐予測を行うことと、
    前記補助分岐予測器のマッチするエントリの前記補助有用性レベルが有用性しきい値よりも高いと決定することに基づいて、前記補助分岐予測器からの、前記検索アドレスに対応する補助予測器分岐ターゲットを選択することと、
    前記補助分岐予測器の前記マッチするエントリの前記補助有用性レベルが前記有用性しきい値未満であると決定することに基づいて、前記主要分岐予測器からの、前記検索アドレスに対応する主要予測器分岐ターゲットを選択することと、
    を行わせる、請求項15に記載のコンピュータ・プログラム。
  17. 前記エントリを前記合同クラス中で識別することがさらに、
    前記合同クラス中の複数のエントリの各々が上書きされないよう保護されているか保護されていないかを識別する、前記エントリの各々の保護制限をチェックすることと、
    前記合同クラス中の保護されていないエントリのうち、最も有用でないレベルに設定された前記補助有用性レベルを有するエントリを前記合同クラス中で識別することと、
    を含む、請求項15に記載のコンピュータ・プログラム。
  18. 前記プロセッサに、
    前記補助データのインストール時に前記エントリの前記保護制限を0でない値に初期化することと、
    前記エントリの前記補助有用性レベルが保護しきい値を超えると決定することに基づいて、前記エントリの前記保護制限を前記0でない値にリセットすることと、
    前記エントリの前記保護制限中に0の値を有することに基づいて、前記エントリを保護されていないものとして識別することと、
    前記エントリの前記保護制限中に前記0でない値を有することに基づいて、前記エントリを保護されているものとして識別することと、
    保護されている最も有用でないエントリのインストールを防止することに基づいて、前記保護されている最も有用でないエントリの前記保護制限をデクリメントすることと、
    を行わせる、請求項17に記載のコンピュータ・プログラム。
  19. 前記エントリを前記合同クラス中で識別することがさらに、
    無効なエントリがあるかどうか前記合同クラスをチェックすることと、
    前記無効なエントリを前記合同クラス中で突き止めることに基づいて、前記無効なエントリを更新に向けたエントリとして識別し、前記エントリの有効性を有効に設定することと、
    無効なエントリが前記合同クラス中にないと決定することに基づいて、前記合同クラスの1つまたは複数の他のエントリに対して最も有用でないレベルに設定された前記補助有用性レベルを有する前記エントリを、前記合同クラス中で識別することと、
    を含む、請求項17に記載のコンピュータ・プログラム。
  20. 前記プロセッサに、
    前記補助分岐予測器への最近成功した複数のインストールのレコードを先行インストール・キューに記憶することと、
    前記先行インストール・キュー中でマッチするレコードを突き止めることに基づいて、前記補助分岐予測器への新たなインストールを防止することと、
    キュー・リフレッシュ期間の経過後に前記先行インストール・キューを無効化することと、
    を行わせる、請求項15に記載のコンピュータ・プログラム。
  21. 前記プロセッサに、
    前記主要分岐予測器の参照元エントリが無効化されたと決定することに基づいて前記補助分岐予測器中の参照先エントリを無効化することであって、前記主要分岐予測器の前記参照元エントリが前記補助分岐予測器中の前記参照先エントリに対応するものである、前記無効化することと、
    前記補助分岐予測器中の前記参照先エントリを無効化することに基づいて、前記先行インストール・キュー中の前記参照先エントリのレコードを無効化するかまたは前記先行インストール・キューを完全に無効化することと、
    を行わせる、請求項20に記載のコンピュータ・プログラム。
JP2018524441A 2015-12-15 2016-12-07 有用性追跡を用いた補助分岐予測 Active JP6731048B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/969,492 2015-12-15
US14/969,492 US9507598B1 (en) 2015-12-15 2015-12-15 Auxiliary branch prediction with usefulness tracking
PCT/IB2016/057406 WO2017103740A1 (en) 2015-12-15 2016-12-07 Auxiliary branch prediction with usefulness tracking

Publications (2)

Publication Number Publication Date
JP2018537771A JP2018537771A (ja) 2018-12-20
JP6731048B2 true JP6731048B2 (ja) 2020-07-29

Family

ID=57351942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018524441A Active JP6731048B2 (ja) 2015-12-15 2016-12-07 有用性追跡を用いた補助分岐予測

Country Status (6)

Country Link
US (2) US9507598B1 (ja)
JP (1) JP6731048B2 (ja)
CN (1) CN108351777B (ja)
DE (1) DE112016004441T5 (ja)
GB (1) GB2562651B (ja)
WO (1) WO2017103740A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10607137B2 (en) * 2017-04-05 2020-03-31 International Business Machines Corporation Branch predictor selection management
US10261797B2 (en) * 2017-04-27 2019-04-16 International Business Machines Corporation Indirect target tagged geometric branch prediction using a set of target address pattern data
US10902348B2 (en) * 2017-05-19 2021-01-26 International Business Machines Corporation Computerized branch predictions and decisions
US20190004803A1 (en) * 2017-06-30 2019-01-03 Qualcomm Incorporated Statistical correction for branch prediction mechanisms
US10725782B2 (en) * 2017-09-12 2020-07-28 Qualcomm Incorporated Providing variable interpretation of usefulness indicators for memory tables in processor-based systems
US11579886B2 (en) 2018-01-09 2023-02-14 International Business Machines Corporation System and method for multi-level classification of branches
US11113066B2 (en) 2018-01-09 2021-09-07 International Business Machines Corporation Predicting a branch instruction classified as simple or hard to predict based on a confidence counter in a branch type table
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10620960B2 (en) * 2018-08-20 2020-04-14 Arm Limited Apparatus and method for performing branch prediction
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US10949208B2 (en) * 2018-12-17 2021-03-16 Intel Corporation System, apparatus and method for context-based override of history-based branch predictions
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
ES2802723B2 (es) * 2019-07-12 2021-07-27 Univ Alcala Henares Un metodo para el trazado selectivo de la ejecucion de instrucciones, dispositivo de procesamiento relacionado y procesador
US11928471B2 (en) 2021-08-19 2024-03-12 International Business Machines Corporation Metadata predictor

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998008160A1 (en) 1996-08-20 1998-02-26 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance
JP2000227857A (ja) * 1999-02-05 2000-08-15 Hitachi Ltd 分岐先連想記憶方式の情報処理装置
US6532521B1 (en) * 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US6772325B1 (en) 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6560693B1 (en) * 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6412050B1 (en) * 1999-12-30 2002-06-25 Intel Corporation Memory record update filtering
US7069426B1 (en) * 2000-03-28 2006-06-27 Intel Corporation Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
US7107437B1 (en) * 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7062607B2 (en) * 2001-09-24 2006-06-13 Intel Corporation Filtering basic instruction segments in a processor front-end for power conservation
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement
US7676663B2 (en) * 2004-03-09 2010-03-09 International Business Machines Corporation Method, system and program product for pipelined processor having a branch target buffer (BTB) table with a recent entry queue in parallel with the BTB table
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US8090934B2 (en) * 2006-07-11 2012-01-03 Cetin Kaya Koc Systems and methods for providing security for computer systems
US7707396B2 (en) * 2006-11-17 2010-04-27 International Business Machines Corporation Data processing system, processor and method of data processing having improved branch target address cache
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation
US8639913B2 (en) * 2008-05-21 2014-01-28 Qualcomm Incorporated Multi-mode register file for use in branch prediction
US8171269B2 (en) * 2009-03-06 2012-05-01 Agere Systems Inc. Branch target buffer with entry source field for use in determining replacement priority
US8832418B2 (en) * 2009-08-28 2014-09-09 Via Technologies, Inc. Efficient branch target address cache entry replacement
US8972706B2 (en) * 2011-05-26 2015-03-03 International Business Machines Corporation Performance in predicting branches
US9229723B2 (en) * 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
US9262169B2 (en) * 2012-06-11 2016-02-16 International Business Machines Corporation Branch prediction table install source tracking
US9235419B2 (en) * 2012-06-11 2016-01-12 International Business Machines Corporation Branch target buffer preload table
US9250909B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US9891922B2 (en) * 2012-06-15 2018-02-13 International Business Machines Corporation Selectively blocking branch prediction for a predetermined number of instructions
GB2506462B (en) * 2013-03-13 2014-08-13 Imagination Tech Ltd Indirect branch prediction
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking

Also Published As

Publication number Publication date
CN108351777A (zh) 2018-07-31
DE112016004441T5 (de) 2018-06-14
GB2562651B (en) 2019-04-10
WO2017103740A1 (en) 2017-06-22
GB2562651A (en) 2018-11-21
GB201811397D0 (en) 2018-08-29
CN108351777B (zh) 2022-02-18
US9507598B1 (en) 2016-11-29
JP2018537771A (ja) 2018-12-20
US20170168825A1 (en) 2017-06-15
US9747103B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
JP6731048B2 (ja) 有用性追跡を用いた補助分岐予測
US9378020B2 (en) Asynchronous lookahead hierarchical branch prediction
US10185570B2 (en) Dynamic thread sharing in branch prediction structures
US9471314B1 (en) Auxiliary perceptron branch predictor with magnitude usage limit
US9280351B2 (en) Second-level branch target buffer bulk transfer filtering
US9411598B2 (en) Semi-exclusive second-level branch target buffer
US9626188B2 (en) Relative offset branching in a fixed-width reduced instruction set computing architecture
US9244688B2 (en) Branch target buffer preload table
US10353710B2 (en) Techniques for predicting a target address of an indirect branch instruction
US20150363201A1 (en) Predicting indirect branches using problem branch filtering and pattern cache
US20200167163A1 (en) Selectively supporting static branch prediction settings only in association with processor-designated types of instructions
US9606804B2 (en) Absolute address branching in a fixed-width reduced instruction set computing architecture
US9256436B2 (en) Branch prediction table install source tracking
US20130339683A1 (en) Instruction filtering
US10346172B2 (en) Caching of perceptron branch patterns using ternary content addressable memory based on a most influential bit location in a branch history vector
US11194575B2 (en) Instruction address based data prediction and prefetching
US11663126B1 (en) Return address table branch predictor
US11182165B2 (en) Skip-over offset branch prediction

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180815

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200619

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: 20200630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200703

R150 Certificate of patent or registration of utility model

Ref document number: 6731048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150