JP7397858B2 - フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 - Google Patents
フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 Download PDFInfo
- Publication number
- JP7397858B2 JP7397858B2 JP2021513296A JP2021513296A JP7397858B2 JP 7397858 B2 JP7397858 B2 JP 7397858B2 JP 2021513296 A JP2021513296 A JP 2021513296A JP 2021513296 A JP2021513296 A JP 2021513296A JP 7397858 B2 JP7397858 B2 JP 7397858B2
- Authority
- JP
- Japan
- Prior art keywords
- cti
- fetch
- count
- branch prediction
- sequential
- 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
Links
- 239000000872 buffer Substances 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 24
- 238000012546 transfer Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 11
- 230000003068 static effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 43
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3237—Power saving characterised by the action undertaken by disabling clock generation or distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明は、米国エネルギー省(DOE)から授与された、ローレンス・リバモア国立研究所とのPathForwardプロジェクト(主契約番号:DE-AC52-07NA27344、サブ契約番号:B620717)の下で政府の支援を受けて行われたものである。米国政府は、本発明において一定の権利を有する。
以下の説明では、実施形態を説明するために様々な用語が使用される。次に、これらの用語のうち2つについて、簡単且つ一般的に説明する。用語は、明確性及び簡潔性のために、本明細書に詳述されない重要な追加的態様を有してもよい。したがって、説明は、用語を限定することを意図していないことに留意されたい。
説明される実施形態は、電子デバイス内のプロセッサを含む。プロセッサは、計算動作、メモリ操作、他の機能ブロック及びデバイスとの通信等を実行する、中央処理装置(CPU)コア、1つ以上のキャッシュメモリ、通信インターフェース等の機能ブロックを含む。プロセッサは、シーケンシャルフェッチロジック機能ブロックを含み、シーケンシャルフェッチロジック機能ブロックは、分岐予測情報を取得するためのプロセッサ内の分岐予測機能ブロックへのアクセスを、可能な場合に回避する動作を実行する。説明する実施形態では、特定のサイズ(例えば、32バイト、64バイト等)の命令のブロックであるフェッチグループが、キャッシュメモリ又はメインメモリからまとめてフェッチされ、プロセッサ内の命令実行パイプラインでの実行のために準備される。所定のフェッチグループがフェッチされ、実行の準備がされると、シーケンシャルフェッチロジックは、所定のフェッチグループに関連する記録をチェックし(かかる記録が存在する場合)、以前に制御転送命令(CTI)を含まないと決定された所定のフェッチグループに続けて、順次フェッチされるフェッチグループの数を決定する。例えば、いくつかの実施形態では、シーケンシャルフェッチロジックは、所定のフェッチグループ内のCTIに関連する記録をチェックして、フェッチグループの数を決定する。別の例として、いくつかの実施形態では、シーケンシャルフェッチロジックは、所定のフェッチグループ内のCTIのターゲット命令に関連する記録をチェックして、フェッチグループの数を決定する。このフェッチグループにはCTIがないため、フェッチグループが順次フェッチされ、分岐予測情報が必要ない。したがって、フェッチグループの各々がフェッチされ、実行のために準備されるので、シーケンシャルフェッチロジックは、分岐予測情報を取得するための分岐予測機能ブロックへのアクセスを抑制する。例えば、シーケンシャルフェッチロジックは、分岐予測情報を取得するための分岐予測機能ブロック内の分岐ターゲットバッファ(BTB)、分岐方向予測器等のチェックを抑制することができる。
図1は、いくつかの実施形態による、電子デバイス100を示すブロック図である。図1に示すように、電子デバイス100は、プロセッサ102及びメモリ104を含む。一般に、プロセッサ102及びメモリ104は、ハードウェアによって、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、プロセッサ102及びメモリ104は、1つ以上の個別の半導体チップを含む1つ以上の半導体チップ上に全体的に製造することができ、ディスクリート回路要素と組み合わせた半導体チップから製造することができ、ディスクリート回路要素のみから製造することができる。本明細書で説明するように、プロセッサ102及びメモリ104は、特定のフェッチグループの分岐予測機能ブロックへのアクセスを抑制するための動作を実行する。
上記のように、電子デバイス100は、プロセッサ102を備え、プロセッサ102は、マイクロプロセッサ、CPUコア、及び/又は、別の処理メカニズムであってもよい。図2は、いくつかの実施形態による、プロセッサ102を示すブロック図である。特定の機能ブロックが図2に示されているが、いくつかの実施形態では、異なる構成、接続性、数、及び/又は、タイプの機能ブロックがプロセッサ102に存在し得る。一般に、プロセッサ102は、本明細書に記載の動作を実行するのに十分な機能ブロックを含む。
説明された実施形態では、電子デバイス内のプロセッサ(例えば、プロセッサ102)は、CTIに関連する記録を使用して、CTIに続けて順次フェッチされる、CTIを含まないフェッチグループの数を決定し、この数のフェッチグループのために対応する分岐予測情報を取得するための分岐予測ユニットへのアクセスを抑制する。図7は、いくつかの実施形態による、分岐予測ユニットへのアクセスを抑制するためにCTIに関連付する記録を使用するためのプロセスを示すフローチャートである。図7に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態により実行される動作は、異なる動作、及び/又は、異なる順序で実行される動作を含む。図7の例では、プロセッサ102と同様の内部構成を有する電子デバイス内のプロセッサが、様々な動作を実行するものとして説明されている。しかしながら、いくつかの実施形態では、異なる内部構成を有するプロセッサが、説明された動作を実行する。
いくつかの実施形態では、電子デバイス100のプロセッサ102は、マルチスレッドプロセッサであり、したがって、命令実行の2つ以上の個別のスレッドをサポートする。一般に、マルチスレッドプロセッサは、個別のスレッド専用の機能ブロック及び/又はハードウェア構造を含むが、スレッド間で共有され、及び/又は、1つ以上のスレッドの各々の動作を実行する機能ブロック及び/又はハードウェア構造を含むこともできる。例えば、分岐予測ユニット及びシーケンシャルフェッチユニット等の機能ブロックは、全てのスレッドに対して、それぞれ分岐予測動作及び分岐予測ユニットアクセス抑制を実行することができる。別の例として、シーケンシャルフェッチテーブル(シーケンシャルフェッチテーブルを使用する実施形態において)は、全てのスレッド(又は、複数のスレッドのいくつかの組み合わせ)に使用される単一のシーケンシャルフェッチテーブルとして実装されてもよいし、各スレッドに対応する個別のシーケンシャルフェッチテーブルが存在するようにスレッド毎に実装されてもよい。これらの実施形態では、シーケンシャルフェッチテーブルの各々の記録は、関連付けられたスレッドについて維持され、他のスレッドのシーケンシャルフェッチテーブルに維持される記録と異なる場合がある。さらに別の例として、シーケンシャルフェッチロジックは、スレッド毎の分岐予測ユニットへのアクセスを抑制することができ、したがって、対応するスレッドの分岐予測ユニットへのアクセスを抑制するために、本明細書で説明するように使用される、スレッド毎に個別の独立したカウンタを維持することができる。
Claims (22)
- プログラムコード内の命令を実行する場合に制御転送命令(CTI)を処理する電子デバイスであって、
プロセッサを備え、
前記プロセッサは、
分岐予測機能ブロックと、
シーケンシャルフェッチロジック機能ブロックと、を含み、
前記シーケンシャルフェッチロジック機能ブロックは、
CTIに関連付けられた記録において、前記CTIがリタイアした後であって後続のCTIがリタイアする前にリタイアするフェッチグループの数のカウントを保持することであって、前記保持することは、リタイアキューから前記カウントを受信することを含み、前記リタイアキューは、各CTIが前記プロセッサ内で実行されている間に、各CTIに付随するメタデータ内のCTI識別情報に基づいて前記カウントを計算する、ことと、
CTIの実行の準備をしている間に、前記記録に基づいて、CTIを含まない命令の特定の数のフェッチグループが、前記CTIに続けて順次実行されるためにフェッチされることを決定することと、
前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされると、そのフェッチグループ内の命令の分岐予測情報を取得するための前記分岐予測機能ブロックへの対応するアクセスを抑制することと、
を行うように構成されている、
電子デバイス。 - 前記プロセッサは、
前記分岐予測機能ブロックに関連付けられた分岐ターゲットバッファ(BTB)をさらに含み、
前記シーケンシャルフェッチロジック機能ブロックは、
特定のタイプのCTIを検出すると、後続のCTIがリタイアする前に順次リタイアしたフェッチグループの数のカウントを保持し、
前記CTIに関連付けられた前記BTB内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶する、
請求項1の電子デバイス。 - 前記特定のタイプのCTIは、静的ターゲット命令を有する無条件CTI、又は、行われないパスが静的ターゲット命令に向けられる条件付きCTIを含む、
請求項2の電子デバイス。 - 前記シーケンシャルフェッチロジック機能ブロックは、
前記フェッチグループの数のカウントが閾値より大きい場合にのみ、前記CTIに関連付けられた前記BTB内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶する、
請求項2の電子デバイス。 - 前記プロセッサは、
シーケンシャルフェッチテーブル(SFT)をさらに含み、
前記シーケンシャルフェッチロジック機能ブロックは、
CTIのターゲット命令がリタイアすると、後続のCTIがリタイアする前に順次リタイアしたフェッチグループの数のカウントを保持し、
前記CTIの前記ターゲット命令に関連付けられた前記SFT内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶する、
請求項1の電子デバイス。 - 前記シーケンシャルフェッチロジック機能ブロックは、
前記フェッチグループの数のカウントが閾値より大きい場合にのみ、前記CTIのターゲット命令に関連付けられた前記SFT内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶する、
請求項5の電子デバイス。 - 前記シーケンシャルフェッチロジック機能ブロックは、前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされたときに、分岐予測情報を取得するための前記分岐予測機能ブロックへの対応するアクセスを抑制する場合に、
カウンタをフェッチグループの前記特定の数と同じ値に設定し、
フェッチグループの各々がフェッチされて実行の準備ができ、前記分岐予測機能ブロックへの対応するアクセスが抑制された場合に、前記カウンタをデクリメントし、
前記カウンタがゼロになった後に、1つ以上の後続のフェッチグループがフェッチされて実行の準備がされると、前記1つ以上の後続のフェッチグループ内の命令の分岐予測情報を取得するために、前記分岐予測機能ブロックへの対応するアクセスが実行されるのを許可するように構成されている、
請求項1の電子デバイス。 - 前記分岐予測機能ブロックは、
分岐ターゲットバッファ(BTB)と、
分岐方向予測器と、を含み、
前記シーケンシャルフェッチロジック機能ブロックは、前記分岐予測機能ブロックへのアクセスを抑制する場合に、少なくとも前記BTB及び前記分岐方向予測器へのアクセスを抑制する、
請求項1の電子デバイス。 - 前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされる間、
前記CTIに関連付けられた記録を記憶する1つ以上の機能ブロックへのアクセスが抑制され、
前記1つ以上の機能ブロックが低電力モードに置かれている、
請求項1の電子デバイス。 - 各フェッチグループは、前記プロセッサでの実行のために準備される同じ転送動作においてフェッチされる所定数の命令を含む、
請求項1の電子デバイス。 - 前記分岐予測機能ブロックへの対応するアクセスを抑制することは、電力を消費する少なくとも1つの動作を抑制することによって、電力を節約することを含む、
請求項1の電子デバイス。 - 分岐予測機能ブロックと、シーケンシャルフェッチロジック機能ブロックと、を含むプロセッサを有する電子デバイスにおいて、プログラムコード内の命令を実行する場合に制御転送命令(CTI)を処理するための方法であって、
CTIに関連付けられた記録において、前記CTIがリタイアした後であって後続のCTIがリタイアする前にリタイアするフェッチグループの数のカウントを保持することであって、前記保持することは、リタイアキューから前記カウントを受信することを含み、前記リタイアキューは、各CTIが前記プロセッサ内で実行されている間に、各CTIに付随するメタデータ内のCTI識別情報に基づいて前記カウントを計算する、ことと、
前記シーケンシャルフェッチロジック機能ブロックが、CTIの実行の準備をしている間に、前記記録に基づいて、CTIを含まない命令の特定の数のフェッチグループが、前記CTIに続けて順次実行されるためにフェッチされることを決定することと、
前記シーケンシャルフェッチロジック機能ブロックが、前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされると、そのフェッチグループ内の命令の分岐予測情報を取得するための前記分岐予測機能ブロックへの対応するアクセスを抑制することと、を含む、
方法。 - 前記プロセッサは、前記分岐予測機能ブロックに関連付けられた分岐ターゲットバッファ(BTB)をさらに含み、
前記プロセッサが、特定のタイプのCTIを検出すると、後続のCTIがリタイアする前に順次リタイアしたフェッチグループの数のカウントを保持することと、
前記シーケンシャルフェッチロジック機能ブロックが、前記CTIに関連付けられた前記BTB内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶することと、をさらに含む、
請求項12の方法。 - 前記特定のタイプのCTIは、静的ターゲット命令を有する無条件CTI、又は、行われないパスが静的ターゲット命令に向けられる条件付きCTIを含む、
請求項13の方法。 - 前記フェッチグループの数のカウントが閾値より大きい場合にのみ、前記CTIに関連付けられた前記BTB内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶することをさらに含む、
請求項13の方法。 - 前記プロセッサは、シーケンシャルフェッチテーブル(SFT)をさらに含み、
前記プロセッサが、CTIのターゲット命令がリタイアすると、後続のCTIがリタイアする前に順次リタイアしたフェッチグループの数のカウントを保持することと、
前記シーケンシャルフェッチロジック機能ブロックが、前記CTIの前記ターゲット命令に関連付けられた前記SFT内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶することと、をさらに含む、
請求項12の方法。 - 前記フェッチグループの数のカウントが閾値より大きい場合にのみ、前記CTIのターゲット命令に関連付けられた前記SFT内のエントリに、前記フェッチグループの数のカウントを示す記録を記憶することをさらに含む、
請求項16の方法。 - 前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされたときに、分岐予測情報を取得するための前記分岐予測機能ブロックへの対応するアクセスを抑制することは、
前記シーケンシャルフェッチロジック機能ブロックが、カウンタをフェッチグループの前記特定の数と同じ数に設定することと、
前記シーケンシャルフェッチロジック機能ブロックが、フェッチグループの各々がフェッチされて実行の準備ができ、前記分岐予測機能ブロックへの対応するアクセスが抑制された場合に、前記カウンタをデクリメントすることと、
前記シーケンシャルフェッチロジック機能ブロックが、前記カウンタがゼロになった後に、1つ以上の後続のフェッチグループがフェッチされて実行の準備がされると、前記1つ以上の後続のフェッチグループ内の命令の分岐予測情報を取得するために、前記分岐予測機能ブロックへの対応するアクセスが実行されるのを許可することと、を含む、
請求項12の方法。 - 前記分岐予測機能ブロックは、分岐ターゲットバッファ(BTB)と、分岐方向予測器と、を含み、前記分岐予測機能ブロックへのアクセスを抑制することは、少なくとも前記BTB及び前記分岐方向予測器へのアクセスを抑制することを含む、
請求項12の方法。 - 各フェッチグループは、前記プロセッサでの実行のために準備される同じ転送動作においてフェッチされる所定数の命令を含む、
請求項12の方法。 - 前記特定の数のフェッチグループの各々がフェッチされて実行の準備がされる間、
前記シーケンシャルフェッチロジック機能ブロックが、CTIに関連付けられた記録を記憶する1つ以上の機能ブロックのアクセスを抑制することと、
前記シーケンシャルフェッチロジック機能ブロックが、前記1つ以上の機能ブロックを低電力モードに置くことと、をさらに含む、
請求項12の方法。 - 前記分岐予測機能ブロックへの対応するアクセスを抑制することは、電力を消費する少なくとも1つの動作を抑制することによって、電力を節約することを含む、
請求項12の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/127,093 | 2018-09-10 | ||
US16/127,093 US11513801B2 (en) | 2018-09-10 | 2018-09-10 | Controlling accesses to a branch prediction unit for sequences of fetch groups |
PCT/US2019/037804 WO2020055471A1 (en) | 2018-09-10 | 2019-06-18 | Controlling accesses to a branch prediction unit for sequences of fetch groups |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022500749A JP2022500749A (ja) | 2022-01-04 |
JP7397858B2 true JP7397858B2 (ja) | 2023-12-13 |
Family
ID=69720752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021513296A Active JP7397858B2 (ja) | 2018-09-10 | 2019-06-18 | フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11513801B2 (ja) |
EP (1) | EP3850480B1 (ja) |
JP (1) | JP7397858B2 (ja) |
KR (1) | KR20210043631A (ja) |
CN (1) | CN112673346A (ja) |
WO (1) | WO2020055471A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099851B2 (en) * | 2018-10-26 | 2021-08-24 | International Business Machines Corporation | Branch prediction for indirect branch instructions |
US20220197662A1 (en) * | 2020-12-22 | 2022-06-23 | Niranjan Kumar Soundararajan | Accessing A Branch Target Buffer Based On Branch Instruction Information |
US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded instruction fetch pipeline |
US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
US12008375B2 (en) | 2022-06-08 | 2024-06-11 | Ventana Micro Systems Inc. | Branch target buffer that stores predicted set index and predicted way number of instruction cache |
US12106111B2 (en) | 2022-08-02 | 2024-10-01 | Ventana Micro Systems Inc. | Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block |
US12020032B2 (en) | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
US12118360B2 (en) * | 2023-01-05 | 2024-10-15 | Ventana Micro Systems Inc. | Branch target buffer miss handling |
CN118779008A (zh) * | 2023-04-06 | 2024-10-15 | 华为技术有限公司 | 一种指令提取的方法及相关装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080082843A1 (en) | 2006-09-28 | 2008-04-03 | Sergio Schuler | Dynamic branch prediction predictor |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740417A (en) * | 1995-12-05 | 1998-04-14 | Motorola, Inc. | Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states |
US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
US7725695B2 (en) * | 2005-05-31 | 2010-05-25 | Arm Limited | Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch |
TW200723094A (en) * | 2005-12-01 | 2007-06-16 | Ind Tech Res Inst | Dynamic branch prediction system and method |
US9552032B2 (en) * | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9547358B2 (en) * | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9135012B2 (en) * | 2012-06-14 | 2015-09-15 | International Business Machines Corporation | Instruction filtering |
US9891922B2 (en) * | 2012-06-15 | 2018-02-13 | International Business Machines Corporation | Selectively blocking branch prediction for a predetermined number of instructions |
GB2515076B (en) * | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
-
2018
- 2018-09-10 US US16/127,093 patent/US11513801B2/en active Active
-
2019
- 2019-06-18 CN CN201980058993.9A patent/CN112673346A/zh active Pending
- 2019-06-18 WO PCT/US2019/037804 patent/WO2020055471A1/en unknown
- 2019-06-18 JP JP2021513296A patent/JP7397858B2/ja active Active
- 2019-06-18 KR KR1020217007316A patent/KR20210043631A/ko unknown
- 2019-06-18 EP EP19861169.1A patent/EP3850480B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080082843A1 (en) | 2006-09-28 | 2008-04-03 | Sergio Schuler | Dynamic branch prediction predictor |
Also Published As
Publication number | Publication date |
---|---|
JP2022500749A (ja) | 2022-01-04 |
EP3850480A1 (en) | 2021-07-21 |
CN112673346A (zh) | 2021-04-16 |
EP3850480B1 (en) | 2024-06-05 |
KR20210043631A (ko) | 2021-04-21 |
WO2020055471A1 (en) | 2020-03-19 |
EP3850480A4 (en) | 2022-05-25 |
US20200081716A1 (en) | 2020-03-12 |
US11513801B2 (en) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7397858B2 (ja) | フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 | |
JP5894120B2 (ja) | ゼロサイクルロード | |
KR102546238B1 (ko) | 다중 테이블 분기 타겟 버퍼 | |
US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
US20090282225A1 (en) | Store queue | |
US11550588B2 (en) | Branch target filtering based on memory region access count | |
US10073789B2 (en) | Method for load instruction speculation past older store instructions | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
US20130159679A1 (en) | Providing Hint Register Storage For A Processor | |
US10719441B1 (en) | Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
CN115427932A (zh) | 为处理器中的微操作高速缓存过滤微操作 | |
US20220261350A1 (en) | Promoting Prefetched Data from a Cache Memory to Registers in a Processor | |
US10175982B1 (en) | Storing taken branch information | |
KR20220113410A (ko) | 페치 그룹들의 시퀀스들에 대한 분기 예측 유닛에의 액세스 제어 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220520 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230606 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230905 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231030 |
|
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: 20231107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231201 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7397858 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |