IP Library Granted Patent US 12,487,830
Granted Patent B1
US 12,487,830 · App. 18/896,226 · Granted Dec 2, 2025

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

Inventors: John G. Favor (San Francisco, CA); Michael N. Michael (Folsom, CA)
Assignee: Ventana Micro Systems Inc.
G06F9/3806G06F9/3844G06F9/3848
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,487,830
App. No.
18/896,226
Granted
Dec 2, 2025
Kind
B1
Abstract

A prediction unit includes a first predictor that provides an output comprising a hashed fetch address of a current fetch block in response to an input. The first predictor input comprises a hashed fetch address of a previous fetch block that immediately precedes the current fetch block in program execution order. A second predictor provides an output comprising a fetch address of a next fetch block that immediately succeeds the current fetch block in program execution order in response to an input. The second predictor input comprises the hashed fetch address of the current fetch block output by the first predictor.

Claims (62)

1 . A microprocessor, comprising:

a first prediction circuit configured to make first predictions of information about fetch blocks of a program instruction stream, wherein a fetch block comprises a previously executed sequential run of instructions;

a second prediction circuit configured to make second predictions of information about the fetch blocks of the program instruction stream;

wherein the second prediction circuit is configured to use the first predictions to make the second predictions;

wherein the second prediction circuit is configured to make the second predictions with a higher prediction accuracy than the first prediction circuit is configured to make the first predictions; and

wherein a second misprediction penalty associated with a misprediction by the second prediction circuit is greater than a first misprediction penalty associated with a misprediction by the first prediction circuit.

2 . The microprocessor of claim 1 ,

wherein to detect a misprediction of a first prediction made by the first prediction circuit, the microprocessor is configured to compare the first prediction with a second prediction made by the second prediction circuit; and

wherein to detect a misprediction of the second prediction, the microprocessor is configured to compare the second prediction with results of execution of a fetch block associated with the first and second predictions.

3 . The microprocessor of claim 2 ,

wherein the misprediction of the first prediction is detected prior to execution of the fetch block.

4 . The microprocessor of claim 1 ,

wherein the first prediction circuit is a single-cycle prediction unit;

wherein the second prediction circuit is a fully pipelined multi-cycle prediction unit; and

wherein the second prediction circuit is configured to use the first predictions made at a rate of one per clock cycle to make the second predictions at a rate of one per clock cycle.

5 . The microprocessor of claim 1 ,

wherein the first prediction circuit comprises a set-associative structure.

6 . The microprocessor of claim 1 ,

wherein the information of the first predictions fully enables initiation of lookups in predictor structures of the second prediction circuit.

7 . The microprocessor of claim 1 ,

wherein the information of the first predictions comprises path history used in lookups in predictor structures of the second prediction circuit.

8 . The microprocessor of claim 1 ,

wherein the information of the first predictions comprises hashed tags used in lookups in predictor structures of the second prediction circuit.

9 . The microprocessor of claim 1 ,

wherein the information of the first predictions is insufficient for use by an instruction fetch unit to fetch a fetch block from an instruction cache, whereas the information of the second predictions is sufficient for use by the instruction fetch unit to fetch a fetch block from the instruction cache.

10 . The microprocessor of claim 1 ,

wherein the first prediction circuit comprises an input and an output; and

wherein the input of a current clock cycle comprises at least a portion of the output of the previous clock cycle.

11 . A method, comprising:

making, by a first prediction circuit, first predictions of information about fetch blocks of a program instruction stream, wherein a fetch block comprises a previously executed sequential run of instructions; and

making, by a second prediction circuit, second predictions of information about the fetch blocks of the program instruction stream;

wherein the first predictions are used by the second prediction circuit to make the second predictions;

wherein the second predictions are made by the second prediction circuit with a higher prediction accuracy than the first prediction circuit makes the first predictions; and

wherein a second misprediction penalty associated with a misprediction by the second prediction circuit is greater than a first misprediction penalty associated with a misprediction by the first prediction circuit.

12 . The method of claim 11 , further comprising:

comparing the first prediction with a second prediction made by the second prediction circuit to detect a misprediction of a first prediction made by the first prediction circuit; and

comparing the second prediction with results of execution of a fetch block associated with the first and second predictions to detect a misprediction of the second prediction.

13 . The method of claim 12 ,

wherein the misprediction of the first prediction is detected prior to execution of the fetch block.

14 . The method of claim 11 , further comprising:

wherein the first prediction circuit is a single-cycle prediction unit;

wherein the second prediction circuit is a fully pipelined multi-cycle prediction unit; and

using, by the second prediction circuit, the first predictions made at a rate of one per clock cycle to make the second predictions at a rate of one per clock cycle.

15 . The method of claim 11 ,

wherein the first prediction circuit comprises a set-associative structure.

16 . The method of claim 11 ,

wherein the information of the first predictions fully enables initiation of lookups in predictor structures of the second prediction circuit.

17 . The method of claim 11 ,

wherein the information of the first predictions comprises path history used in lookups in predictor structures of the second prediction circuit.

18 . The method of claim 11 ,

wherein the information of the first predictions comprises hashed tags used in lookups in predictor structures of the second prediction circuit.

19 . The method of claim 11 ,

wherein the information of the first predictions is insufficient for use by an instruction fetch unit to fetch a fetch block from an instruction cache, whereas the information of the second predictions is sufficient for use by the instruction fetch unit to fetch a fetch block from the instruction cache.

20 . The method of claim 11 ,

wherein the first prediction circuit comprises an input and an output; and

wherein the input of a current clock cycle comprises at least a portion of the output of the previous clock cycle.

21 . A non-transitory computer-readable medium having instructions stored thereon that are capable of causing or configuring a microprocessor comprising:

a first prediction circuit configured to make first predictions of information about fetch blocks of a program instruction stream, wherein a fetch block comprises a previously executed sequential run of instructions;

a second prediction circuit configured to make second predictions of information about the fetch blocks of the program instruction stream;

wherein the second prediction circuit is configured to use the first predictions to make the second predictions;

wherein the second prediction circuit is configured to make the second predictions with a higher prediction accuracy than the first prediction circuit is configured to make the first predictions; and

wherein a second misprediction penalty associated with a misprediction by the second prediction circuit is greater than a first misprediction penalty associated with a misprediction by the first prediction circuit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2024
From: FAVOR, JOHN G.; MICHAEL, MICHAEL N.
To: VENTANA MICRO SYSTEMS INC.
Reel/Frame 069056/0394 →
Continuity (1)
Continuation 17879525 · Aug 2, 2022
References Cited (59)
US 5235697A · Steely, Jr. et al. · 1993 [cited by applicant]
US 5418922A · Liu · 1995 [cited by applicant]
US 5434985A · Emma et al. · 1995 [cited by applicant]
US 5692152A · Cohen et al. · 1997 [cited by applicant]
US 6016533A · Tran · 2000 [cited by applicant]
US 6134654A · Patel et al. · 2000 [cited by applicant]
US 6356990B1 · Aoki et al. · 2002 [cited by applicant]
US 6418525B1 · Charney et al. · 2002 [cited by applicant]
US 6957327B1 · Gelman et al. · 2005 [cited by applicant]
US 7493480B2 · Emma et al. · 2009 [cited by applicant]
US 8825955B2 · Sleiman et al. · 2014 [cited by applicant]
US 8959320B2 · Beaumont-Smith et al. · 2015 [cited by applicant]
US 9367471B2 · Blasco-Allue et al. · 2016 [cited by applicant]
US 9983878B2 · Levitan et al. · 2018 [cited by applicant]
US 10157137B1 · Jain et al. · 2018 [cited by applicant]
US 10613869B2 · Greenhalgh et al. · 2020 [cited by applicant]
US 10740248B2 · Campbell et al. · 2020 [cited by applicant]
US 10747539B1 · Hakewill et al. · 2020 [cited by applicant]
US 11372646B2 · Chirca et al. · 2022 [cited by applicant]
US 11550588B2 · Kalamatianos et al. · 2023 [cited by applicant]
US 11687343B2 · Ishii et al. · 2023 [cited by applicant]
US 11816489B1 · Favor et al. · 2023 [cited by applicant]
US 11836498B1 · Favor et al. · 2023 [cited by applicant]
US 20060036836A1 · Gelman et al. · 2006 [cited by applicant]
US 20060095680A1 · Park et al. · 2006 [cited by applicant]
US 20060149951A1 · Abernathy et al. · 2006 [cited by applicant]
US 20080215865A1 · Hino et al. · 2008 [cited by applicant]
US 20090037709A1 · Ishii · 2009 [cited by applicant]
US 20100017586A1 · Gelman et al. · 2010 [cited by applicant]
US 20120290821A1 · Shah et al. · 2012 [cited by applicant]
US 20140344558A1 · Holman et al. · 2014 [cited by applicant]
US 20150100762A1 · Jacobs · 2015 [cited by applicant]
US 20160117153A1 · Salmon-Legagneur et al. · 2016 [cited by applicant]
US 20170109289A1 · Gonzalez Gonzalez et al. · 2017 [cited by applicant]
US 20170286421A1 · Hayenga et al. · 2017 [cited by applicant]
US 20180246718A1 · Lin · 2018 [cited by applicant]
US 20190163902A1 · Reid et al. · 2019 [cited by applicant]
US 20190317769A1 · Hu et al. · 2019 [cited by applicant]
US 20200004543A1 · Kumar et al. · 2020 [cited by applicant]
US 20200081716A1 · Yalavarti et al. · 2020 [cited by applicant]
US 20200082280A1 · Orion et al. · 2020 [cited by applicant]
US 20200104137A1 · Natarajan et al. · 2020 [cited by applicant]
US 20200150968A1 · Fatehi et al. · 2020 [cited by applicant]
US 20210173783A1 · Thyagarajan et al. · 2021 [cited by applicant]
US 20220156082A1 · McDonald et al. · 2022 [cited by applicant]
US 20220357953A1 · Lee et al. · 2022 [cited by applicant]
US 20230401063A1 · Favor et al. · 2023 [cited by applicant]
US 20230401065A1 · Favor et al. · 2023 [cited by applicant]
US 20230401066A1 · Favor et al. · 2023 [cited by applicant]
US 20240045610A1 · Favor et al. · 2024 [cited by applicant]
US 20240045695A1 · Favor et al. · 2024 [cited by applicant]
US 20240231829A1 · Favor et al. · 2024 [cited by applicant]
CN 112559049A · 2021 [cited by applicant]
Tang, Weiyu et al. “Integrated I-cache Way Predictor and Branch Target Buffer to Reduce Energy Consumption.” International Symposium on High Performance Computing. 2009. pp. 1-8. [cited by applicant]
Zhu, Zhichun et al. “Access-Mode Predictions for Low-Power Cache Design.” in IEEE Micro, vol. 22, No. 2. pp. 58-71. Year 2002. [cited by applicant]
Yu, Chun-Chang et al. “Power Reduction of a Set-Associative Instruction Cache Using a Dynamic Early Tag Lookup.” Design, Automation & Test in Europe Conference & Exhibition (Date). Grenoble, France. 2021. pp. 1799-1802. [cited by applicant]
Seznec, Andre et al. “Multiple-Block Ahead Branch Predictors.” ACM. pp. 116-127. Oct. 1996. [cited by applicant]
Asheim, Truls et al. “Fetch-Directed Instruction Prefetching Revisited.” arXiv preprint arXiv:2006.13547. Jun. 24, 2020. pp. 1-5. [cited by applicant]
Barr, Kenneth et al. The Fetch Block Predictor: Implementing a Higher-Bandwidth Fetch. The Wayback Machine—https://web.archive.org/web/20200117211153/http://kbarr.net:80/courses. pp. 1-6. Archived Jan. 2020. [cited by applicant]