JP7232331B2 - ループ終了予測器 - Google Patents
ループ終了予測器 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 36
- 238000012549 training Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 22
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 13
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000011010 flushing procedure 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
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 210000005100 blood-tumour barrier Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 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/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/325—Address 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/3848—Speculative 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
Claims (19)
- ループ検出器によって判別されたループ内で識別されたループ終了分岐に基づいてループ反復カウントを決定することによって、ループが終了する信頼度を示す信頼レベルを生成することと、
ループ終了予測器によって生成されたループ終了予測に前記信頼レベルを割り当てることと、
前記信頼レベルが信頼レベル閾値を超えたことに基づいて、汎用の条件付き予測器の汎用の条件付き予測をオーバーライドすることと、を含む、
方法。 - 前記ループ反復カウントを監視してループ反復カウントの繰り返し頻度を決定して前記信頼レベルを生成することをさらに含む、
請求項1の方法。 - リタイア時間中に、リタイアされた予測ブロックのスナップショットと後続のリタイアされた予測ブロックとを用いて、前記ループが発生しているかどうかを判別することをさらに含む、
請求項2の方法。 - 前記スナップショットは、前記リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
請求項3の方法。 - 前記後続のリタイアされた予測ブロックは、前記後続のリタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
請求項4の方法。 - 前記汎用の条件付き予測をオーバーライドするためにマルチプレクサを用いる、
請求項1の方法。 - 前記スナップショットは周期的に取得される、
請求項3の方法。 - プロセッサであって、
ループ終了予測器を含む予測エンジンと、
ループ検出器に結合されたループ終了分岐モニタを含むトレーニングエンジンであって、前記予測エンジンに結合されたトレーニングエンジンと、を備え、
前記プロセッサの前記ループ検出器は、複数のコールリターンレベルのうち少なくとも1つのコールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得し、前記スナップショットを第2のリタイア時間における後続のリタイアされた予測ブロックと比較し、前記比較に基づいて、汎用の条件付き予測をオーバーライドするかどうかを前記ループ終了分岐モニタ及び前記ループ終了予測器が決定するのに用いられるループ及び前記ループ内のループ終了分岐を識別する、
プロセッサ。 - 前記ループ終了分岐モニタは、前記ループ終了分岐に基づいてループ反復カウントを決定する、
請求項8のプロセッサ。 - 前記ループ終了分岐モニタは、前記ループ反復カウントを監視して、ループ反復カウントの繰り返し頻度を決定する、
請求項9のプロセッサ。 - 前記ループ終了予測器は、前記ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを生成する、
請求項10のプロセッサ。 - 前記ループ終了予測の信頼レベルは、前記汎用の条件付き予測をオーバーライドするために用いられる、
請求項11のプロセッサ。 - 前記スナップショットは、前記リタイアされた予測ブロックのアドレスタグ、記述子及び方向を含む、
請求項8のプロセッサ。 - 前記リタイアされた予測ブロック及び前記後続のリタイアされた予測ブロックを前記トレーニングエンジンに提供するために前記トレーニングエンジンに結合された処理パイプラインをさらに備える、
請求項8のプロセッサ。 - 前記複数のコールリターンレベルは4つに限られており、前記複数のコールリターンレベルの各コールリターンレベルは、少なくとも1つのループ検出器を含む、
請求項8のプロセッサ。 - 前記ループ終了予測器に結合されたマルチプレクサと、
前記マルチプレクサに結合された汎用の条件付き予測器と、をさらに備え、
前記汎用の条件付き予測をオーバーライドする決定が前記ループ終了予測器によって行われると、前記マルチプレクサが前記ループ終了予測器によってトリガされ、前記汎用の条件付き予測器をオーバーライドする、
請求項8のプロセッサ。 - 1つ以上のプロセッサが実行する方法であって、
コールリターンレベルに基づいて、第1のリタイア時間中にリタイアされた予測ブロックのスナップショットを取得することと、
前記リタイアされた予測ブロックの前記スナップショットを後続のリタイアされた予測ブロックと比較して、ループが発生する時間を判別することと、
前記ループが発生する時間の間に、前記ループを終了させる前記ループ内のループ終了分岐を識別することと、
前記ループ終了分岐に基づいてループ反復カウントを決定することと、
前記ループ反復カウントの繰り返し頻度を監視してループ反復カウントの繰り返し頻度を決定することと、
前記ループ反復カウントの監視に基づいて、汎用の条件付き予測をオーバーライドすることと、を含む、
方法。 - 前記ループ反復カウントの繰り返し頻度を用いて、ループ終了予測の信頼レベルを確認することをさらに含む、
請求項17の方法。 - 前記汎用の条件付き予測をオーバーライドすることは、前記ループ終了予測の信頼レベルが信頼レベル閾値を超えた場合に行われる、
請求項18の方法。
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)
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)
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 |
-
2018
- 2018-11-26 US US16/200,491 patent/US11216279B2/en active Active
-
2019
- 2019-06-25 JP JP2021529284A patent/JP7232331B2/ja active Active
- 2019-06-25 EP EP19888976.8A patent/EP3887942B1/en active Active
- 2019-06-25 CN CN201980081392.XA patent/CN113168329A/zh active Pending
- 2019-06-25 WO PCT/US2019/038965 patent/WO2020112171A1/en unknown
- 2019-06-25 KR KR1020217017229A patent/KR102571624B1/ko active IP Right Grant
Non-Patent Citations (1)
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 |