JP7366122B2 - プロセッサのフィルタリングされた分岐予測構造 - Google Patents
プロセッサのフィルタリングされた分岐予測構造 Download PDFInfo
- Publication number
- JP7366122B2 JP7366122B2 JP2021509763A JP2021509763A JP7366122B2 JP 7366122 B2 JP7366122 B2 JP 7366122B2 JP 2021509763 A JP2021509763 A JP 2021509763A JP 2021509763 A JP2021509763 A JP 2021509763A JP 7366122 B2 JP7366122 B2 JP 7366122B2
- Authority
- JP
- Japan
- Prior art keywords
- btb
- access
- branch
- control module
- prediction
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Description
Claims (16)
- プロセッサ[100]の命令パイプラインのフェッチステージ[102]での実行のために第1の命令アドレス[211]をフェッチしたことに応じて、
前記第1の命令アドレスを含む第1のメモリ領域[231]を識別することと、
前記第1のメモリ領域について、第1の分岐ターゲットバッファ(BTB)[114]への第1のアクセスミス数[228]を識別することと、
前記第1のアクセスミス数が閾値を超えたことに応じて、前記第1の命令アドレスに対する前記第1のBTBへのアクセスを抑制することと、を含む、
方法。 - 前記第1の命令アドレスをフェッチしたことに応じて、第2のBTB[112]にアクセスすることを更に含む、
請求項1の方法。 - 前記第1のBTBは、前記第2のBTBのビクティムバッファである、
請求項2の方法。 - 前記第1のメモリ領域について前記第1のアクセスミス数を識別することは、複数のアクセスミスカウントを記憶するテーブル[225]に基づいて前記第1のアクセスミス数を識別することを含み、前記複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている、
請求項2の方法。 - 前記第1のBTBにおける第1のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントすることを更に含む、
請求項4の方法。 - 前記複数のアクセスミスカウントのうち何れかをインクリメントすることは、前記第1のBTBにおける前記第1のアクセスミス及び前記第2のBTBにおける第2のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントすることを含む、
請求項5の方法。 - 前記第1のBTBにおけるアクセスヒットに応じて、前記複数のアクセスミスカウントのうち何れかをリセットすることを更に含む、
請求項6の方法。 - 前記第2のBTBから前記第1のBTBに分岐ターゲットアドレスを転送したことに応じて、前記複数のアクセスミスカウントのうち何れかをリセットすることを更に含む、
請求項6の方法。 - 第1の命令アドレス[211]をフェッチする[102]ように構成されたフェッチステージを含む命令パイプラインと、
分岐予測器[110]と、を備えるプロセッサ[100]であって、
前記分岐予測器は、
分岐ターゲットアドレスを前記命令パイプラインに提供するように構成された第1の分岐ターゲットバッファ(BTB)[114]と、
分岐予測制御モジュール[120]と、を備え、
前記分岐予測制御モジュールは、
前記第1の命令アドレスを含む第1のメモリ領域[231]を識別することと、
前記第1のメモリ領域について、前記第1のBTBへの第1のアクセスミス数[228]を識別することと、
前記第1のアクセスミス数が閾値を超えたことに応じて、前記第1の命令アドレスに対する前記第1のBTBへのアクセスを抑制することと、
を行うように構成されている、
プロセッサ[100]。 - 第2のBTB[112]を更に備え、
前記分岐予測制御モジュールは、前記第1の命令アドレスをフェッチしたことに応じて、前記第2のBTBにアクセスするように構成されている、
請求項9のプロセッサ。 - 前記第1のBTBは、前記第2のBTBのビクティムバッファである、
請求項10のプロセッサ。 - 前記分岐予測制御モジュールは、
複数のアクセスミスカウントを記憶するテーブル[225]に基づいて前記第1のアクセスミス数を識別するように構成されており、前記複数のアクセスミスカウントの各々は、異なるメモリ領域に関連付けられている、
請求項10のプロセッサ。 - 前記分岐予測制御モジュールは、
前記第1のBTBにおける第1のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている、
請求項12のプロセッサ。 - 前記分岐予測制御モジュールは、
前記第1のBTBにおける前記第1のアクセスミス及び前記第2のBTBにおける第2のアクセスミスに応じて、前記複数のアクセスミスカウントのうち何れかをインクリメントするように構成されている、
請求項13のプロセッサ。 - 前記分岐予測制御モジュールは、
前記第1のBTBにおけるアクセスヒットに応じて、前記複数のアクセスミスカウントのうち何れかをリセットするように構成されている、
請求項13のプロセッサ。 - 前記分岐予測制御モジュールは、
前記第2のBTBから前記第1のBTBに分岐ターゲットアドレスを転送したことに応じて、前記複数のアクセスミスカウントのうち何れかをリセットするように構成されている、
請求項13のプロセッサ。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/109,195 | 2018-08-22 | ||
| US16/109,195 US11550588B2 (en) | 2018-08-22 | 2018-08-22 | Branch target filtering based on memory region access count |
| PCT/US2019/038179 WO2020040857A1 (en) | 2018-08-22 | 2019-06-20 | Filtered branch prediction structures of a processor |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2021534504A JP2021534504A (ja) | 2021-12-09 |
| JP7366122B2 true JP7366122B2 (ja) | 2023-10-20 |
Family
ID=69587063
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021509763A Active JP7366122B2 (ja) | 2018-08-22 | 2019-06-20 | プロセッサのフィルタリングされた分岐予測構造 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US11550588B2 (ja) |
| EP (1) | EP3841465A4 (ja) |
| JP (1) | JP7366122B2 (ja) |
| KR (1) | KR102887111B1 (ja) |
| CN (1) | CN112585580B (ja) |
| WO (1) | WO2020040857A1 (ja) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114840258B (zh) * | 2022-05-10 | 2023-08-22 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
| US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
| US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded 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 |
| US12020032B2 (en) | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
| 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 |
| US20240201998A1 (en) * | 2022-12-16 | 2024-06-20 | Microsoft Technology Licensing, Llc | Performing storage-free instruction cache hit prediction in a processor |
| US12118360B2 (en) * | 2023-01-05 | 2024-10-15 | Ventana Micro Systems Inc. | Branch target buffer miss handling |
| US12405797B2 (en) * | 2023-07-03 | 2025-09-02 | Arm Limited | Branch prediction circuitry |
| US20250110882A1 (en) * | 2023-09-28 | 2025-04-03 | Microsoft Technology Licensing, Llc | Branch target buffer run-ahead |
| US20250138732A1 (en) * | 2023-11-01 | 2025-05-01 | Rambus Inc. | Hardware tracking of memory accesses |
| US20250173145A1 (en) * | 2023-11-28 | 2025-05-29 | Arm Limited | Filtering branch instruction predictions |
| US12373219B2 (en) * | 2023-12-19 | 2025-07-29 | Arm Limited | Reduced power consumption prediction using prediction tables |
| US20260030028A1 (en) * | 2024-07-25 | 2026-01-29 | International Business Machines Corporation | Branch prediction correction based on nonuse of relevant prediction structure |
| CN120743357B (zh) * | 2025-08-29 | 2025-11-18 | 蓝芯算力(深圳)科技有限公司 | 分支预测处理系统、降低分支预测功耗的方法及存储介质 |
| CN121166208B (zh) * | 2025-11-20 | 2026-02-24 | 知合行一技术(上海)有限公司 | 一种处理器流水线装置及指令处理方法 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180165094A1 (en) | 2016-12-13 | 2018-06-14 | International Business Machines Corporation | Branch predictor search qualification using stream length prediction |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
| US6282614B1 (en) | 1999-04-15 | 2001-08-28 | National Semiconductor Corporation | Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches |
| KR100528479B1 (ko) * | 2003-09-24 | 2005-11-15 | 삼성전자주식회사 | 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법 |
| TW200723094A (en) | 2005-12-01 | 2007-06-16 | Ind Tech Res Inst | Dynamic branch prediction system and method |
| US7681021B2 (en) * | 2006-09-28 | 2010-03-16 | Freescale Semiconductor, Inc. | Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch |
| US8205068B2 (en) * | 2008-07-29 | 2012-06-19 | Freescale Semiconductor, Inc. | Branch target buffer allocation |
| US20120311308A1 (en) * | 2011-06-01 | 2012-12-06 | Polychronis Xekalakis | Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches |
| US9582284B2 (en) * | 2011-12-01 | 2017-02-28 | International Business Machines Corporation | Performance of processors is improved by limiting number of branch prediction levels |
| US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
| US9298465B2 (en) * | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
| US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
| US10001998B2 (en) * | 2014-04-18 | 2018-06-19 | Oracle International Corporation | Dynamically enabled branch prediction |
| US9983878B2 (en) | 2014-05-15 | 2018-05-29 | International Business Machines Corporation | Branch prediction using multiple versions of history data |
| US9507596B2 (en) * | 2014-08-28 | 2016-11-29 | Intel Corporation | Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources |
| US10289417B2 (en) | 2014-10-21 | 2019-05-14 | Arm Limited | Branch prediction suppression for blocks of instructions predicted to not include a branch instruction |
| US9996351B2 (en) * | 2016-05-26 | 2018-06-12 | International Business Machines Corporation | Power management of branch predictors in a computer processor |
| US10713054B2 (en) * | 2018-07-09 | 2020-07-14 | Advanced Micro Devices, Inc. | Multiple-table branch target buffer |
-
2018
- 2018-08-22 US US16/109,195 patent/US11550588B2/en active Active
-
2019
- 2019-06-20 EP EP19852753.3A patent/EP3841465A4/en active Pending
- 2019-06-20 KR KR1020217007883A patent/KR102887111B1/ko active Active
- 2019-06-20 JP JP2021509763A patent/JP7366122B2/ja active Active
- 2019-06-20 WO PCT/US2019/038179 patent/WO2020040857A1/en not_active Ceased
- 2019-06-20 CN CN201980054707.1A patent/CN112585580B/zh active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180165094A1 (en) | 2016-12-13 | 2018-06-14 | International Business Machines Corporation | Branch predictor search qualification using stream length prediction |
Non-Patent Citations (1)
| Title |
|---|
| MUSOLL,Enric,Predicting the usefulness of a block result: a micro-architectural technique for high-performance low-power processors,MICRO-32. Proceedings of the 32nd Annual ACM/IEEE International Symposium on Microarchitecture,米国,IEEE,1999年11月18日,pages:1-10 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR102887111B1 (ko) | 2025-11-18 |
| US11550588B2 (en) | 2023-01-10 |
| JP2021534504A (ja) | 2021-12-09 |
| EP3841465A4 (en) | 2022-08-03 |
| EP3841465A1 (en) | 2021-06-30 |
| CN112585580B (zh) | 2025-08-19 |
| WO2020040857A1 (en) | 2020-02-27 |
| CN112585580A (zh) | 2021-03-30 |
| KR20210035311A (ko) | 2021-03-31 |
| US20200065106A1 (en) | 2020-02-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7366122B2 (ja) | プロセッサのフィルタリングされた分岐予測構造 | |
| EP3850480B1 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
| TWI773749B (zh) | 空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法 | |
| US11416256B2 (en) | Selectively performing ahead branch prediction based on types of branch instructions | |
| JP4829191B2 (ja) | キャッシュシステム | |
| CN104156197B (zh) | 微处理器以及微处理器操作方法 | |
| US7502890B2 (en) | Method and apparatus for dynamic priority-based cache replacement | |
| WO2020014066A1 (en) | Multiple-table branch target buffer | |
| US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
| US11163573B2 (en) | Hierarchical metadata predictor with periodic updates | |
| JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
| US20160179676A1 (en) | Cleaning a write-back cache | |
| US20120124291A1 (en) | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data | |
| US11194575B2 (en) | Instruction address based data prediction and prefetching | |
| US20220229783A1 (en) | Technique for training a prediction apparatus | |
| US20170357585A1 (en) | Setting cache entry age based on hints from another cache level | |
| US20140068192A1 (en) | Processor and control method of processor | |
| US20100325361A1 (en) | Method for controlling cache | |
| WO2021133469A1 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220524 |
|
| 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: 20230613 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230913 |
|
| 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: 20230926 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231010 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7366122 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |