JP7232331B2 - ループ終了予測器 - Google Patents

ループ終了予測器 Download PDF

Info

Publication number
JP7232331B2
JP7232331B2 JP2021529284A JP2021529284A JP7232331B2 JP 7232331 B2 JP7232331 B2 JP 7232331B2 JP 2021529284 A JP2021529284 A JP 2021529284A JP 2021529284 A JP2021529284 A JP 2021529284A JP 7232331 B2 JP7232331 B2 JP 7232331B2
Authority
JP
Japan
Prior art keywords
loop
prediction
predictor
branch
retired
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
JP2021529284A
Other languages
English (en)
Other versions
JP2022509171A (ja
JPWO2020112171A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022509171A publication Critical patent/JP2022509171A/ja
Publication of JPWO2020112171A5 publication Critical patent/JPWO2020112171A5/ja
Application granted granted Critical
Publication of JP7232331B2 publication Critical patent/JP7232331B2/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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)
  • Executing Machine-Instructions (AREA)

Description

分岐予測は、パイプライン処理プロセッサが命令を投機的に実行するために用いる技術である。分岐予測は、プロセッサによって分岐が取られるか否かの可能性を評価することによって、分岐が取るべき適切な経路を決定しようとする。分岐予測器が取るべき経路を正しく予測すると、分岐予測によって命令パイプラインのフローが改善される。しかし、分岐予測器が経路を誤って予測すると(分岐予測ミス)、プロセッサが、投機的に実行され又は部分的に実行される命令を破棄するので、プロセッサの時間及びリソースが無駄になる。
典型的な分岐予測技術は、一般的な条件付き予測器(conditional predictors)を分岐予測に利用する。これらの一般的な条件付き予測器は、関連する信頼レベルを用いて分岐予測を生成する。ただし、信頼レベルが信頼できない場合、分岐予測器は、誤予測率が高い分岐予測を生成する可能性がある 。誤予測率が高くなると、処理システム全体の電力及びリソースの浪費につながる可能性がある。したがって、分岐誤予測率を改善する改良された分岐予測技術が望まれている。
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用する場合には、類似又は同一の要素を示す。
いくつかの実施形態による、分岐予測をサポートするループ終了予測器を含むプロセッサのブロック図である。 いくつかの実施形態による、図1の分岐予測器のブロック図である。 いくつかの実施形態による、分岐予測方法のフロー図である。 いくつかの実施形態による、リタイアされた予測ブロックの識別子を示す図である。 いくつかの実施形態による、プロセッサにおけるループ終了予測の信頼レベルを達成する例を示す一連の表である。
投機的実行中の分岐の予測ミスは、無駄な作業とパイプライン処理の過度の遅延とを引き起こす。予測が間違って行われた場合には、予測パイプラインは一般的にフラッシュする必要があり、これにより、フラッシュに関連するパフォーマンス上の低下をもたらす。さらに、分岐の予測ミスは、例えば、誤って予測された分岐に続く命令を処理することによって電力を浪費することが知られている。パイプライン及びリソースが共有されるマルチスレッドモードでコアが動作している場合には、誤った分岐予測の間に処理帯域幅も浪費される。無駄な作業の量を減らして、電力を節約し、シングルスレッド及びマルチスレッドのパフォーマンスを改善するために、図1~図5は、ループ終了予測を実行するための処理システム及び方法を示す。ループ終了予測は、条件付き分岐予測を、分岐予測の精度向上と分岐誤予測の減少をもたらすループ終了予測によってオーバーライドするために用いられる技術である。
図1は、様々な実施形態による、ループ終了予測を実施するプロセッサ100のブロック図である。プロセッサ100は、メモリ102と、命令キャッシュ104と、命令フェッチユニット106と、処理パイプライン112と、を含む。命令フェッチユニット106は、分岐予測器108を含む。分岐予測器108は、1つ以上の分岐ターゲットバッファ(BTB)テーブル110を含む予測エンジン107に結合されたトレーニングエンジン109を含む。処理パイプライン112は、デコードユニット114と、発行ユニット116と、実行ユニット118と、ライトバックユニット120と、を含む。様々な実施形態では、処理システムは、コンピュータプロセッサ内に含まれるか、コンピュータシステム内に分散されている。メモリ102は、命令及びデータを記憶するためのキャッシュメモリ等の任意のタイプの揮発性又は不揮発性メモリを含む。命令キャッシュ104は、メモリ102からの命令にアクセスし、フェッチされる命令を記憶する。様々な実施形態では、メモリ102及び命令キャッシュ104は、複数のキャッシュレベルを含む。さらに、プロセッサ100は、データキャッシュ(図示省略)を含む。
図1には、説明を容易にするために、命令フェッチユニット106及び処理パイプライン112の簡単な例が示されている。様々な実施形態では、命令フェッチユニット106及び/又は分岐予測器108は、処理パイプライン112の一部である。処理パイプライン112は、エラーをチェックし処理するロジック、処理パイプライン112を通る1つ以上の並列経路、及び、本技術分野で知られている他の機能等の他の機能も含むことができる。処理パイプライン112を通る順方向経路が図1に示されているが、プロセッサ100の要素間には、他のフィードバック経路及び信号経路が含まれてもよい。
様々な実施形態では、プロセッサ100の動作中に、命令フェッチユニット106は、命令キャッシュ104から命令をフェッチして、デコードユニット114によってさらに処理する。一実施形態では、命令フェッチユニット106は、分岐予測器108を含むとともに他の分岐予測ロジック(図示省略)も含む。或いは、他の実施形態では、分岐予測器108は、命令フェッチユニット106とは別個に配置されている。分岐予測器108は、以下により詳細に説明するように、ループ終了予測を用いて分岐予測を実施する処理回路の一例である。
デコードユニット114は、命令をデコードし、デコードされた命令、命令の一部、又は、他のデコードされたデータを発行ユニット116に渡す。発行ユニット116は、命令又は他のデータを分析し、分析に基づいて、デコードされた命令、命令の一部、又は、他のデータを1つ以上の実行ユニット118に送信する。1つ以上の実行ユニット118は、命令を実行するための固定小数点実行ユニット、浮動小数点実行ユニット、ロード/ストア実行ユニット、ベクトル実行ユニット等の実行ユニットを含む。ライトバックユニット120は、命令の実行結果を宛先リソース(図示省略)に書き戻す。宛先リソースは、レジスタ、キャッシュメモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、又は、実行される命令若しくはデータのための他の任意のタイプの宛先を含む、任意のタイプのリソースであってもよい。
プロセッサ100のリタイア時間中に、トレーニングエンジン109は、リタイアされた予測ブロックを処理パイプライン112から受信する。リタイアされた予測ブロックの各々は、一緒に予測され、リタイアされた命令バイトのセットを記述する。トレーニングエンジン109は、分岐予測器108のトレーニング部分であり、リタイアされた予測ブロック及び後続のリタイアされた予測ブロックを使用した命令ストリーム内のループの評価に基づいて、ループを終了させる分岐を識別し、このような分岐の方向を予測するために使用される情報を予測エンジン107に提供する。予測エンジン107は、分岐予測器108の分岐予測出力として用いられるループ終了予測を生成するために、トレーニングエンジン109によって提供されるループ終了分岐情報を利用する分岐予測器108の一部である。様々な実施形態において、ループ終了予測が分岐予測器108の出力として利用されるかどうかは、信頼レベル閾値及び/又はトレーニングエンジン109によって提供される信頼レベルに基づいている。分岐予測器108が改善された分岐予測動作のためにループ終了予測を利用するために、分岐予測器108は、トレーニングエンジン109及び予測エンジン107をタンデム(tandem)に用いて、汎用の条件付き予測器によって生成される汎用の条件付き予測のためのオーバーライドメカニズムを提供する。汎用の条件付き予測器は、本技術分野で一般的に知られている技術を用いて分岐予測を確認する条件付き予測器である。
様々な実施形態では、トレーニングエンジン109は、リタイアされた予測ブロック及び後続のリタイアされた予測ブロックを監視して、プロセッサ100の命令ストリームが現在ループ内にあるかどうかを判別し、ループを終了させる条件分岐を識別する。いくつかの実施形態では、ループは、例えば、コンピュータプログラム及び/又は命令内の特定の基準に基づいて繰り返される命令のシーケンスと考えられる。いくつかの実施形態では、ループは、例えば、コンピュータプログラム及び/又は命令内の特定の基準に基づいて繰り返されるのではなく、特定のコールリターンレベル(図2を参照して以下にさらに説明する)に属する命令のサブシーケンスを考慮する場合にのみ繰り返される命令のシーケンスと考えられる。ループのタイプは、例えば、特定回数の反復のために命令のシーケンスを繰り返すforループ又はwhileループの場合がある。ループ終了分岐の位置は、ループを終了するまでの反復回数に関する情報とともに、予測エンジン107によって、例えば、予測エンジン107内に配置され得る汎用の条件付き予測器をオーバーライドするために利用される。
命令ストリーム内の特定のコールリターンレベルでループが発生しているかどうかを判別した後に、トレーニングエンジン109は、ループ内にあるループ終了分岐を識別する。ループ終了分岐は、ループ内に留まっている間は同じ方向(取られる又は取られない)のままであり、ループを終了するときに反転する条件分岐である。ループ終了分岐は、ループ内にある条件分岐の方向挙動を監視することによって、トレーニングエンジン109で識別される。ループ終了分岐を識別すると、トレーニングエンジン109は、ループ反復カウントを監視して、ループ終了分岐に関連する信頼レベルを生成するために使用されるループ反復カウントの繰り返し頻度を決定する。ループ終了分岐、ループのサイズ及び予測時の反復カウントに関連する信頼レベルの評価に基づいて、予測エンジン107は、分岐予測器108によって出力される分岐方向の予測を(ループ予測器の出力を汎用の条件付き予測器と組み合わせることによって)生成する。次に、分岐予測器108は、1つ以上のBTBテーブル(一般に、BTバッファ及びBTBとも呼ばれる)110によって記憶又は提供される分岐ターゲットアドレスを生成することができる。分岐予測器108は、プロセッサ(例えば、図1のプロセッサ100)の命令フェッチユニット106内に少なくとも部分的に実装される。BTBテーブル110は、図1の分岐予測器108の内部に示されているが、BTBテーブル110は、プロセッサ100内の命令フェッチユニット106又は分岐予測器108の特定の要素に近接して配置されてもよいし、配置されなくてもよい。いくつかの実施形態では、プロセッサ100は、複数の命令フェッチユニット106及び処理パイプライン112をさらに含む。
図2は、いくつかの実施形態による、分岐予測器207のブロック図である。分岐予測器207は、トレーニングエンジン210に結合された予測エンジン206を含む。予測エンジン206は、条件付き予測器228と、分岐ターゲットバッファ286(BTB286)と、間接予測器236と、次のプログラムカウンタ予測器246(NXT PC予測器246)と、を含む。条件付き予測器228は、汎用の条件付き予測器230と、ループ終了予測器232と、マルチプレクサ233と、を含む。トレーニングエンジン210は、ループ終了分岐モニタ252と、ループ検出器254と、予測バッファ256と、を含む。様々な実施形態において、ループ終了予測器232は、ループ検出器254及びループ終了分岐モニタ252を含んでもよい。様々な実施形態において、ループ終了予測器232は、予測可能な反復カウントの後にループを終了する条件分岐のタグ付き幾何学長さ(TAGE)に対する補正器として用いられる条件付き予測器である。本明細書でさらに説明するように、分岐予測器207は、タイミングクリティカルでなく、プロセッサ100への実装の影響を最小限に抑える低電力、低面積設計であるループ終了予測により、分岐予測アプリケーションのパフォーマンスの向上を提供しつつ、汎用の条件付き予測(例えば、TAGE予測)をオーバーライドすることができる。
分岐予測器207の動作中、トレーニングエンジン210のループ検出器254は、プロセッサ100のリタイア時間中に、リタイアされた予測ブロック及び後続のリタイアされた予測ブロックを予測バッファ256から受信する。リタイア時間とは、命令の結果をプロセッサのアーキテクチャ状態にコミットする動作が発生する又は発生した(例えば、結果がレジスタ等に書き込まれた)時間を指す。予測ブロックは、予測された命令バイトのセットと、それに含まれる分岐に関する情報である。予測ブロックには、例えば、開始アドレス及び終了アドレス、記述子、予測ブロックに含まれる分岐の方向が含まれる。予測バッファ256に記憶される予測ブロック情報は、ブロックが予測されるときに最初に生成され、次いで、分岐が正しく予測されなかった場合でも、ブロックに属する分岐を追跡するために誤予測フラッシュ時に更新される。リタイアされた予測ブロックは、予測ブロックがリタイアされたものであり、リタイアされた予測ブロックによって提供される情報は、リタイアされた分岐のアーキテクチャ上の動作を反映している。様々な実施形態において、ループ検出器254は、リタイアされた予測ブロック及び後続のリタイアされた予測ブロックを用いて、トレーニングエンジン210でループが発生しているかどうかを識別する。
様々な実施形態では、予測バッファ256は、予測エンジン206によって行われた分岐予測に関連する情報を追跡する。予測情報は、例えば、予測アドレス、予測のターゲット、及び、予測の履歴を含む。様々な実施形態において、予測バッファ256は、リダイレクトの場合に用いられることがあり、この場合、フラッシュ及び回復を行ってから予測が再開される必要があり、その後に、回復のために予測バッファ256が読み出される。また、予測バッファ256は、トレーニング中に、リタイアされた予測ブロックをループ検出器254に提供するために用いられる。リタイアされた予測ブロックをループ検出器254に提供する前に、予測バッファ256は、NXT PC予測器246から予測ブロックを受信し、リダイレクトを更新し、予測ブロックを処理パイプライン112からリタイアする。予測バッファ256の読み出しは、最近リタイアされた、リタイアされた予測ブロックに対して実行される。条件付き予測器228、BTB286及び間接予測器236を含む予測エンジン206の予測器は、これに応じて、トレーニングエンジン210を用いてトレーニングされる。
様々な実施形態において、ループ検出器254に提供されるリタイアされた予測ブロックに関して、タグは、条件付き予測器228によって行われる予測のフェッチアドレス又は予測アドレスを表す。タグは、リタイアされた予測ブロックのアドレスのインジケータとして機能する。記述子は、リタイアされた予測ブロックの記述を提供し、フェッチアドレスにおいて、例えば分岐予測器207によって予測された分岐を表す。一実施形態では、分岐予測器207は、サイクル毎に最大2つの分岐を予測することができ、記述子は、サイクル毎に単一の分岐又は2つの分岐があるかどうか、及び、各分岐が条件付き又は無条件の分岐であるかどうかを記述する。方向エントリは、リタイアされた予測ブロックに関連する方向を提供する。様々な実施形態において、2つの分岐の予測の場合、予測されたブロックは、第1の分岐が取られていないと予測された場合にのみ2つの分岐を含むことができるので、方向は第2の分岐の方向である。様々な実施形態において、リタイアされた予測ブロックの両方のアドレスタグ、記述子及び/又は方向が、条件付き予測器228のループ終了予測器232によって提供されるループ終了予測を判別するために用いられる。
分岐予測器207の分岐予測出力として用いるループ終了予測を生成するために、ループ終了予測器232は、ループを識別するためにリタイア時に分岐を監視するループ検出器254に依存している。いくつかの実施形態では、ループ検出器254は、非投機的パス上で動作し、所定のコールリターンレベルでのみループを考慮する。つまり、コールリターンレベル内で繰り返される命令のシーケンスは、ループの反復毎に命令のシーケンスが異なる呼び出し及びリターンが命令に含まれている場合であっても、ループとみなされる場合がある。様々な実施形態において、例えば、各スレッドは、コールリターンレベル毎にループ検出器254を有する。ループ検出器254は、コールリターンレベル毎に、すなわち、各ループの内容が同等であることとは対照的に、コールリターンレベルに基づいてループ検出を実行するので、ループ検出器254は、各ループの内容が他の反復されるループと完全に同等ではない場合であっても、ループが発生したかどうかを検出することができる。例えば、命令ストリームは、コール(呼び出し)を実行することによってサブルーチンを呼び出すことができ、サブルーチンの終了時にリターン(戻り)が開始される。その結果、コールが実行されると、例えば、より高いコールリターンレベルにジャンプする。リターンが実行されると、より低いコールリターンレベルへのフォールバック(後退)が発生する。したがって、ループの反復毎にサブルーチンを呼び出すプログラム等の所定の命令の場合、命令は、ループの反復毎にサブルーチン内で異なることを実行している可能性がある。しかしながら、ループ検出器254は、コールリターンレベルに基づいて、所定の命令ストリームのループを依然として検出する。
所定のコールリターンレベルに対して、リタイアされた予測ブロックを受信した後に、ループ検出器254は、リタイアされた予測ブロックを表す状態のスナップショットを取得することによってループ検出を開始する。様々な実施形態において、スナップショットは、タグ、記述子、及び、リタイアされた予測ブロックの方向を含む。様々な実施形態において、スナップショットのタイミングは、リタイアの状態に応じて変化し得る。例えば、スナップショットは、周期的、及び/又は、ランダムな時間、及び/又は、リタイア状態内の異なる時間要因を表す間隔で取得されてもよい。様々な実施形態において、ループの識別は、リタイア時に発生する。これは、リタイア時には処理要素が非投機的であり、すなわち、実際のプログラム動作が知られているのに対し、予測時間は投機的であり、実際のプログラム動作が知られていないためである。
スナップショットがループ検出器254によって取得された後に、ループ検出器254は、アドレスのスナップショットを後続のリタイアされた予測ブロックと比較して、スナップショットと一致するかどうかを判別する。一実施形態では、ループ検出器254は、比較ロジックを用いて、アドレスのスナップショットを、リタイアされた予測ブロックの後続のストリーム内の各リタイアされた予測ブロックと比較して、スナップショットと一致するかどうかを判別する。スナップショットと一致する場合、ループ検出器254によってループが検出されている。
ループ検出器254によってループが検出されると、ループ検出器254は、ループを観察して、検出されたループ内のループを終了させるための条件分岐、すなわち、ループ終了分岐を識別する。様々な実施形態において、ループ終了分岐又はループ終了候補は、所定の条件を用いて識別される。例えば、ループ終了候補は、以下の条件が満たされた場合に識別され得る。(1)監視対象のループの反復カウントが、指定された飽和基準に達した。(2)2つの分岐のうち一方の分岐の方向が、記録されている予期された方向と一致しない。及び/又は(3)予測ブロックが、見つかった新しい分岐にリダイレクトされなかった。ループ終了分岐は、ループ検出器254によって記憶され、ループ終了分岐モニタ252に提供される。
ループ終了分岐モニタ252は、ループ検出器254からループ終了分岐を受信し、ループ終了分岐の方向を評価する。例えば、ループ終了分岐モニタ252は、ループ終了分岐の方向を、取られたか取られていないかの何れかとして評価する。ループ終了分岐モニタ252は、ループ終了分岐が別の方向に転換するまでに同じ方向を繰り返す回数を記録する。様々な実施形態において、ループ終了分岐における反復された方向から別の方向への転換は、ループが終了する前にループが受けた反復回数(ループ反復カウント)のインジケータである。ループ反復カウントは、ループ終了分岐モニタ252によって記憶され、ループ反復カウントが繰り返される回数、すなわち、ループ反復カウントの繰り返し頻度を決定する。一実施形態では、ループ終了分岐モニタ252は、現在のループ反復カウントを先行するループ反復カウントと比較してループ反復カウントの繰り返し頻度を判別することによって、ループ反復カウントを監視する。ループ反復カウントの繰り返し頻度は、ループ終了分岐モニタ252によって割り当てられる、対応する信頼レベルを確認するために用いられる。
様々な実施形態において、ループ終了予測の信頼レベル(ループ終了予測信頼レベル)は、ループ終了予測の強度の指標を提供し、信頼閾値と比較されて、ループ終了分岐の方向を予測する場合に、汎用の条件付き予測器230による条件付き予測出力をオーバーライドするかどうかを決定する。一実施形態では、対応する信頼レベルは、ループ反復カウントの繰り返し頻度(繰り返されるループ反復カウントの数)と同等であってもよく、ループ終了分岐モニタ252に記憶される。様々な実施形態において、信頼レベルの増加及び/又は減少は、ループ反復カウント繰り返し頻度の増加及び/又は減少に一致することによって決定される。例えば、様々な実施形態では、ループが同じ回数の反復後に連続して複数回終了すると、信頼レベルが増加する。様々な実施形態において、ループ終了分岐モニタ252によって、ループ反復カウントがもはや繰り返されていないと判別されると、信頼レベルは初期値ゼロに更新される。信頼レベルは、ループ終了予測器232の使用を開始するための閾値としてプログラム可能である。
信頼レベルが確認されると、ループ終了予測器232は、信頼レベルが信頼レベル閾値を超えるかどうかを判別する。一実施形態では、信頼レベル閾値は、ループ終了予測が、汎用の条件付き予測器230によって生成された条件付き予測をオーバーライドし得る閾値である。様々な実施形態において、設計上の選択に応じて、信頼レベル閾値が1から10の間の値に設定され、信頼レベル閾値の信頼レベルが1から10の間の値に設定される。例えば、信頼レベル閾値が6の場合、6から10の間のループ終了予測信頼値は、ループ終了予測器232をトリガし、汎用の条件付き予測器230をオーバーライドする。信頼レベルが信頼レベル閾値に達するか超えると、ループ終了予測器232は、汎用の条件付き予測器230によって提供される条件付き予測をオーバーライドする。汎用の条件付き予測器230は、ループ終了予測器232がマルチプレクサ233を用いてループ終了予測をNXT PC予測器246に提供することによって、オーバーライドされる。信頼レベルが信頼レベル閾値に到達しないか超えない場合、ループ終了予測器232は、汎用の条件付き予測器230によって提供される条件付き予測をオーバーライドしない。次に、NXT PC予測器246は、予測ブロックを予測バッファ256に提供し、分岐予測器207によって出力される分岐予測を提供する。分岐予測器207は、汎用の条件付き予測又はループ終了予測出力の何れかに基づいて、プロセッサ100の命令フェッチユニットによる命令フェッチのために予測アドレスを提供する。
図3は、様々な実施形態による、ループ終了予測を用いて分岐を予測する方法300を示すフロー図である。方法300は、図1に示すプロセッサ100及び図2に示す分岐予測器207のいくつかの実施形態で実施される。
様々な実施形態において、方法のフローは、ブロック308で始まる。ブロック308において、ループ検出器254は、第1のリタイア時間中に予測されたブロック、すなわち、リタイアされた予測ブロックを受信する。ブロック312において、コールリターンレベルに基づいて、ループ検出器254は、リタイアされた予測ブロックのスナップショットを取得するかどうかを決定する。スナップショットを取得しないと決定した場合、方法300はブロック308に戻る。スナップショットを取得すると決定した場合、方法300はブロック316に進む。ブロック316において、ループ検出器254は、リタイアされた予測ブロックのスナップショットを取得する。様々な実施形態では、スナップショットは、アドレスタグ、記述子及び方向のうち少なくとも1つを含む。ブロック318において、ループ検出器254は、第2のリタイア時間中に、後続のリタイアされた予測ブロックを受信する。様々な実施形態において、後続のリタイアされた予測ブロックは、アドレスタグ、記述子及び方向を含む。ブロック320において、ループ検出器254は、スナップショットされたリタイアされた予測ブロックのスナップショットを、後続のリタイアされた予測ブロックと比較する。ブロック324において、ループ検出器254は、ループが発生しているかどうかを判別する。様々な実施形態において、ループ検出器254は、スナップショットに関連する全てのタグ、記述子及び方向と、後続のリタイアされた予測ブロックに関連する全てのタグ、記述子及び方向と、の間に一致がある場合に、ループが発生していると判別する。ループ検出器254が、リタイアされた予測ブロックのセットに対してループが発生していないと判別すると、方法300はブロック316に戻る。ループが発生しているとループ検出器254が判別した場合、方法300はブロック330に進む。
ブロック330において、ループ検出器254は、例えば、ループ終了分岐を識別するために、ループ検出器254によって用いられるループ内の条件分岐を監視する。ブロック332において、ループ検出器254は、ループを終了させるループ終了分岐を識別する。様々な実施形態において、第1のスナップショットと第2のスナップショットとの間の一致において、全ての条件分岐の方向が記録される。後続のループ反復において、全ての条件分岐の方向が、以前に記録された全ての条件分岐の方向と比較される。様々な実施形態において、方向を変える最初の分岐が、ループ終了分岐として識別される。
ブロック334において、ループ終了分岐モニタ252は、ループ終了分岐を監視し、ループ検出器254によって識別されたループ終了分岐に基づいてループ反復カウントを決定する。
ブロック340において、ループ終了分岐モニタ252は、ループ反復カウントを監視して、ループ反復カウントの繰り返し頻度を判定する。ブロック344において、ループ終了分岐モニタ252は、ループ反復カウント繰り返し頻度を用いて信頼レベルを確認する。
ブロック348において、ループ終了予測器232は、信頼レベルをループ終了予測に割り当てる。様々な実施形態では、ループ終了分岐モニタ252は、信頼レベルをループ終了予測に割り当てることができる。いくつかの実施形態では、信頼レベル閾値は、設計上の選択に応じて変化し得る。
ブロック348において信頼レベルを割り当てると、方法300は、ブロック340に戻り、ループの次の発生を監視し、ブロック370に続く。ブロック370において、信頼レベル閾値を超えると、ループ終了予測器232は、マルチプレクサ233を用いて汎用の条件付き予測をオーバーライドする。
図4は、いくつかの実施形態による、リタイアされた予測ブロックの識別子402を示す図である。識別子402は、タグ(TAG_1)と、記述子(DESCRIPTOR_1)と、方向(DIRECTION_1)と、を含む。識別子402のTAG_1は、所定の予測ブロックの次の命令をフェッチするためのフェッチアドレス又は予測アドレスを表す。DESCRIPTOR_1は、分岐予測器207によって予測された分岐、又は予測されたブロックに含まれる命令の実行中に検出された分岐を表す。図2を参照して上述したように、識別子402のスナップショットと後続のリタイアされた予測ブロックの識別子との比較結果は、分岐予測器207によって用いられ、分岐予測器207は、ループ終了予測を用いて分岐予測を生成する。
図5は、いくつかの実施形態による、分岐予測器を使用してループ終了予測のための信頼レベルを達成する例を示す一連の表である。図2に関連して、図5は、条件分岐テーブル502と、ループ反復カウントテーブル504と、ループ反復カウント繰り返し頻度テーブル506と、信頼レベルテーブル508と、を含む。様々な実施形態において、条件分岐テーブル502は、例えば、ループ検出器254によって観察されるループ終了分岐を含む条件分岐を示す。ループ反復カウントテーブル504は、例えば、ループ終了分岐モニタ252によって観察されたループ反復の数を示している。図5に提供された例では、ループの反復カウントは、5つの連続するインスタンスに対して3である。ループ反復カウント繰り返し頻度テーブル506は、例えば、ループ終了分岐モニタ252によって観察された、ループ反復カウントが繰り返された回数を示している。提供された例では、ループ反復カウントの繰り返し頻度は4である。信頼レベルテーブル508は、所定のループ反復カウント頻度に対してループ終了分岐モニタ252によって割り当てられた信頼レベルを示している。提供された例では、ループ終了予測器232によって使用されるためにループ終了分岐モニタ252によって割り当てられた信頼レベルは4である。例えば、信頼レベル閾値が2であると、ループ終了予測器232は、汎用の条件付き予測器230をオーバーライドし、関連するループ終了予測を、分岐予測のために分岐予測器207に提供する。
本明細書に開示されるように、いくつかの実施形態では、方法は、ループ終了予測器によって生成されたループ終了予測に信頼レベルを割り当てることと、信頼レベルが信頼レベル閾値を超えたことに基づいて、汎用の条件付き予測器の汎用の条件付き予測をオーバーライドすることと、を含む。一態様では、方法は、ループ検出器によって判別されたループ内で識別されたループ終了分岐に基づいてループ反復カウントを決定することによって、信頼レベルを生成することを含む。別の態様では、方法は、ループ反復カウントを監視してループ反復カウントの繰り返し頻度を決定して信頼レベルを生成することを含む。さらに別の態様では、方法は、リタイア時間中に、リタイアされた予測ブロックのスナップショットと後続のリタイアされた予測ブロックとを用いて、ループが発生しているかどうかを判別することを含む。
一態様では、スナップショットは、リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む。別の態様では、後続のリタイアされた予測ブロックは、後続のリタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む。さらに別の態様では、汎用の条件付き予測をオーバーライドするためにマルチプレクサを用いる。さらに別の態様では、スナップショットは周期的に取得される。
本明細書に開示されるように、いくつかの実施形態では、プロセッサは、ループ終了予測器を含む予測エンジンと、ループ検出器に結合されたループ終了分岐モニタを含むトレーニングエンジンであって、予測エンジンに結合されたトレーニングエンジンと、を備える。プロセッサのループ検出器は、複数のコールリターンレベルのうち少なくとも1つのコールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得し、スナップショットを第2のリタイア時間における後続のリタイアされた予測ブロックと比較し、比較に基づいて、汎用の条件付き予測をオーバーライドするかどうかをループ終了分岐モニタ及びループ終了予測器が決定するのに用いられるループ及びループ内のループ終了分岐を識別する。一態様では、ループ終了分岐モニタは、ループ終了分岐に基づいてループ反復カウントを決定する。
別の態様では、ループ終了分岐モニタは、ループ反復カウントを監視して、ループ反復カウントの繰り返し頻度を決定する。さらに別の態様では、ループ終了予測器は、ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを生成する。さらに別の態様では、ループ終了予測の信頼レベルは、汎用の条件付き予測をオーバーライドするために用いられる。別の態様では、スナップショットは、リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む。さらに別の態様では、プロセッサは、リタイアされた予測ブロック及び後続のリタイアされた予測ブロックをトレーニングエンジンに提供するためにトレーニングエンジンに結合された処理パイプラインを備える。
別の態様では、複数のコールリターンレベルは4つに限られており、複数のコールリターンレベルの各コールリターンレベルは、少なくとも1つのループ検出器を含む。さらに別の態様では、プロセッサは、ループ終了予測器に結合されたマルチプレクサと、マルチプレクサに結合された汎用の条件付き予測器と、をさらに備え、汎用の条件付き予測をオーバーライドする決定がループ終了予測器によって行われると、マルチプレクサがループ終了予測器によってトリガされ、汎用の条件付き予測器をオーバーライドする。
本明細書に開示されるように、いくつかの実施形態では、方法は、コールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得することと、リタイアされた予測ブロックのスナップショットを後続のリタイアされた予測ブロックと比較して、ループがいつ発生しているかを判別することと、ループが発生している場合に、ループを終了させるループ内のループ終了分岐を識別することと、ループ終了分岐に基づいてループ反復カウントを決定することと、ループ反復カウントの繰り返し頻度を監視してループ反復カウントの繰り返し頻度を決定することと、ループ反復カウントの監視に基づいて汎用の条件付き予測をオーバーライドすることと、を含む。一態様では、方法は、ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを確認することを含む。別の態様では、汎用の条件付き予測をオーバーライドすることは、終了予測の信頼レベルが信頼レベル閾値を超えた場合に行われる。
いくつかの実施形態では、上記の装置及び技術は、上述したプロセッサ等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (19)

  1. ループ検出器によって判別されたループ内で識別されたループ終了分岐に基づいてループ反復カウントを決定することによって、ループが終了する信頼度を示す信頼レベルを生成することと、
    ループ終了予測器によって生成されたループ終了予測に前記信頼レベルを割り当てることと、
    前記信頼レベルが信頼レベル閾値を超えたことに基づいて、汎用の条件付き予測器の汎用の条件付き予測をオーバーライドすることと、を含む、
    方法。
  2. 前記ループ反復カウントを監視してループ反復カウントの繰り返し頻度を決定して前記信頼レベルを生成することをさらに含む、
    請求項の方法。
  3. リタイア時間中に、リタイアされた予測ブロックのスナップショットと後続のリタイアされた予測ブロックとを用いて、前記ループが発生しているかどうかを判別することをさらに含む、
    請求項の方法。
  4. 前記スナップショットは、前記リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
    請求項の方法。
  5. 前記後続のリタイアされた予測ブロックは、前記後続のリタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
    請求項の方法。
  6. 前記汎用の条件付き予測をオーバーライドするためにマルチプレクサを用いる、
    請求項1の方法。
  7. 前記スナップショットは周期的に取得される、
    請求項の方法。
  8. プロセッサであって、
    ループ終了予測器を含む予測エンジンと、
    ループ検出器に結合されたループ終了分岐モニタを含むトレーニングエンジンであって、前記予測エンジンに結合されたトレーニングエンジンと、を備え、
    前記プロセッサの前記ループ検出器は、複数のコールリターンレベルのうち少なくとも1つのコールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得し、前記スナップショットを第2のリタイア時間における後続のリタイアされた予測ブロックと比較し、前記比較に基づいて、汎用の条件付き予測をオーバーライドするかどうかを前記ループ終了分岐モニタ及び前記ループ終了予測器が決定するのに用いられるループ及び前記ループ内のループ終了分岐を識別する、
    プロセッサ。
  9. 前記ループ終了分岐モニタは、前記ループ終了分岐に基づいてループ反復カウントを決定する、
    請求項のプロセッサ。
  10. 前記ループ終了分岐モニタは、前記ループ反復カウントを監視して、ループ反復カウントの繰り返し頻度を決定する、
    請求項のプロセッサ。
  11. 前記ループ終了予測器は、前記ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを生成する、
    請求項10のプロセッサ。
  12. 前記ループ終了予測の信頼レベルは、前記汎用の条件付き予測をオーバーライドするために用いられる、
    請求項11のプロセッサ。
  13. 前記スナップショットは、前記リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
    請求項のプロセッサ。
  14. 前記リタイアされた予測ブロック及び前記後続のリタイアされた予測ブロックを前記トレーニングエンジンに提供するために前記トレーニングエンジンに結合された処理パイプラインをさらに備える、
    請求項のプロセッサ。
  15. 前記複数のコールリターンレベルは4つに限られており、前記複数のコールリターンレベルの各コールリターンレベルは、少なくとも1つのループ検出器を含む、
    請求項のプロセッサ。
  16. 前記ループ終了予測器に結合されたマルチプレクサと、
    前記マルチプレクサに結合された汎用の条件付き予測器と、をさらに備え、
    前記汎用の条件付き予測をオーバーライドする決定が前記ループ終了予測器によって行われると、前記マルチプレクサが前記ループ終了予測器によってトリガされ、前記汎用の条件付き予測器をオーバーライドする、
    請求項のプロセッサ。
  17. 1つ以上のプロセッサが実行する方法であって、
    コールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得することと、
    前記リタイアされた予測ブロックの前記スナップショットを後続のリタイアされた予測ブロックと比較して、ループが発生する時間を判別することと、
    前記ループが発生する時間の間に、前記ループを終了させる前記ループ内のループ終了分岐を識別することと、
    前記ループ終了分岐に基づいてループ反復カウントを決定することと、
    前記ループ反復カウントの繰り返し頻度を監視してループ反復カウントの繰り返し頻度を決定することと、
    前記ループ反復カウントの監視に基づいて、汎用の条件付き予測をオーバーライドすることと、を含む、
    方法。
  18. 前記ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを確認することをさらに含む、
    請求項17の方法。
  19. 前記汎用の条件付き予測をオーバーライドすることは、前記ループ終了予測の信頼レベルが信頼レベル閾値を超えた場合に行われる、
    請求項18の方法。
JP2021529284A 2018-11-26 2019-06-25 ループ終了予測器 Active JP7232331B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/200,491 US11216279B2 (en) 2018-11-26 2018-11-26 Loop exit predictor
US16/200,491 2018-11-26
PCT/US2019/038965 WO2020112171A1 (en) 2018-11-26 2019-06-25 Loop exit predictor

Publications (3)

Publication Number Publication Date
JP2022509171A JP2022509171A (ja) 2022-01-20
JPWO2020112171A5 JPWO2020112171A5 (ja) 2022-07-19
JP7232331B2 true JP7232331B2 (ja) 2023-03-02

Family

ID=70770397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021529284A Active JP7232331B2 (ja) 2018-11-26 2019-06-25 ループ終了予測器

Country Status (6)

Country Link
US (1) US11216279B2 (ja)
EP (1) EP3887942B1 (ja)
JP (1) JP7232331B2 (ja)
KR (1) KR102571624B1 (ja)
CN (1) CN113168329A (ja)
WO (1) WO2020112171A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor
US20220283811A1 (en) * 2021-03-03 2022-09-08 Microsoft Technology Licensing, Llc Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance
US11693666B2 (en) * 2021-10-20 2023-07-04 Arm Limited Responding to branch misprediction for predicated-loop-terminating branch instruction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6092187A (en) * 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US7136992B2 (en) * 2003-12-17 2006-11-14 Intel Corporation Method and apparatus for a stew-based loop predictor
US20070061554A1 (en) * 2005-09-09 2007-03-15 Lsi Logic Corporation Branch predictor for a processor and method of predicting a conditional branch
US8904155B2 (en) * 2006-03-17 2014-12-02 Qualcomm Incorporated Representing loop branches in a branch history register with multiple bits
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
US8006070B2 (en) * 2007-12-05 2011-08-23 International Business Machines Corporation Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
JP4526560B2 (ja) * 2007-12-05 2010-08-18 日本テキサス・インスツルメンツ株式会社 プロセッサおよび信号処理方法
US9836304B2 (en) * 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
US9477478B2 (en) * 2012-05-16 2016-10-25 Qualcomm Incorporated Multi level indirect predictor using confidence counter and program counter address filter scheme
US9519586B2 (en) * 2013-01-21 2016-12-13 Qualcomm Incorporated Methods and apparatus to reduce cache pollution caused by data prefetching
US9442736B2 (en) * 2013-08-08 2016-09-13 Globalfoundries Inc Techniques for selecting a predicted indirect branch address from global and local caches
US9471322B2 (en) * 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
CN104298488B (zh) * 2014-09-29 2018-02-23 上海兆芯集成电路有限公司 循环预测器指导的循环缓冲器
US9934041B2 (en) 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIE, Zichao et al.,An Energy-Efficient Branch Prediction Technique via Global-History Noise Reduction,Proceedings of the International Symposium on Low Power Electronics and Design,IEEE,2013年09月04日,pages211-216,https://ieeexplore.ieee.org/document/6629296

Also Published As

Publication number Publication date
EP3887942A4 (en) 2022-08-24
WO2020112171A1 (en) 2020-06-04
EP3887942B1 (en) 2023-09-27
KR102571624B1 (ko) 2023-08-29
CN113168329A (zh) 2021-07-23
JP2022509171A (ja) 2022-01-20
KR20210084625A (ko) 2021-07-07
EP3887942A1 (en) 2021-10-06
US20200167164A1 (en) 2020-05-28
US11216279B2 (en) 2022-01-04

Similar Documents

Publication Publication Date Title
JP5579930B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
US9891923B2 (en) Loop predictor-directed loop buffer
US7278012B2 (en) Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
EP2602711B1 (en) Next fetch predictor training with hysteresis
JP7232331B2 (ja) ループ終了予測器
KR20140014143A (ko) 동일한 데이터 조건에 의존하는 인접 명령의 실행 제어
US20180129501A1 (en) Micro-op fusion for non-adjacent instructions
US20160139926A1 (en) Instruction group formation techniques for decode-time instruction optimization based on feedback
US9965279B2 (en) Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
US20040225866A1 (en) Branch prediction in a data processing system
US11526360B2 (en) Adaptive utilization mechanism for a first-line defense branch predictor
CN112740175A (zh) 基于加载路径历史的分支预测
US11663007B2 (en) Control of branch prediction for zero-overhead loop
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
US9436473B2 (en) Scheduling program instructions with a runner-up execution position
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
JP2014059665A (ja) マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210727

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220629

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230217

R150 Certificate of patent or registration of utility model

Ref document number: 7232331

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150