IP Library Granted Patent US 11,080,062
Granted Patent B2
US 11,080,062 · App. 16/739,540 · Granted Aug 3, 2021

Address manipulation using indices and tags

Inventors: Parthiv Pota (Cupertino, CA); Sanjay Patel (San Ramon, CA); Raj Kumar Singh Parihar (San Jose, CA)
Assignee: MIPS Tech, LLC
G06F9/3806G06F9/30058
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 11,080,062
App. No.
16/739,540
Granted
Aug 3, 2021
Kind
B2
Abstract

Techniques are disclosed for address manipulation using indices and tags. A first index is generated from bits of a processor program counter, where the first index is used to access a branch predictor bimodal table. A first branch prediction is provided from the bimodal table, based on the first index. The first branch prediction is matched against N tables, where the tables contain prior branch histories, and where: the branch history in table T(N) is of greater length than the branch history of table T(N−1), and the branch history in table T(N−1) is of greater length than the branch history of table T(N−2). A processor address is manipulated using a greatest length of hits of branch prediction matches from the N tables, based on one or more hits occurring. The branch predictor address is manipulated using the first branch prediction from the bimodal table, based on zero hits occurring.

Claims (44)

1. A processor-implemented method for address manipulation comprising:

generating a first index from one or more bits of a processor program counter, wherein the first index is used to access a branch predictor bimodal table;

providing a first branch prediction from the bimodal table, based on the first index;

matching the first branch prediction against N tables, wherein N is three or more, wherein the tables contain prior branch histories, and wherein:

the branch history in table T(N) is of greater length than the branch history of table T(N−1); and

the branch history in table T(N−1) is of greater length than the branch history of table T(N−2);

manipulating a processor address using a greatest length of hits of branch prediction matches from the N tables, based on one or more hits occurring; and

manipulating the branch predictor address using the first branch prediction from the bimodal table, based on zero hits occurring.

2. The method of claim 1 wherein the manipulating the branch predictor address is used for accessing a branch predictor array.

3. The method of claim 1 wherein the branch predictor bimodal table is direct mapped.

4. The method of claim 3 wherein the branch predictor bimodal table is tagless.

5. The method of claim 1 further comprising generating a second, a third, and a fourth index, wherein the second index is used in table T(N), the third index is used in table T(N−1), and the fourth index is used in table T(N−2).

6. The method of claim 5 wherein the second, third, and fourth indices are generated using hashing.

7. The method of claim 5 wherein the index for table T(N) is used as a tag for table T(N−1).

8. The method of claim 7 wherein a tag for table T(N−2) comprises a hashtag.

9. The method of claim 7 wherein the index for table T(N−1) is used as a tag for table T(N−2).

10. The method of claim 9 wherein the tag for table T(N−2) comprises a hashtag.

11. The method of claim 1 further comprising updating the contents of the N tables, based on the one or more hits occurring.

12. The method of claim 11 wherein the contents of the N tables include branch histories.

13. The method of claim 11 wherein the contents of the N tables include one or more hysteresis counters.

14. The method of claim 11 wherein the contents of the N tables include one or more prediction counters.

15. The method of claim 1 further comprising populating one or more of the N tables based on runtime sampling of instruction branches.

16. The method of claim 1 wherein the first branch prediction is based on a prediction model.

17. The method of claim 16 wherein the prediction model adapts over time based on a rate of prediction matches.

18. The method of claim 1 wherein the size of two or more of the N tables is different.

19. The method of claim 1 wherein the processor address that was manipulated is used as a fetch address.

20. A computer program product embodied in a non-transitory computer readable medium for address manipulation, the computer program product comprising code which causes one or more processors to perform operations of:

generating a first index from one or more bits of a processor program counter, wherein the first index is used to access a branch predictor bimodal table;

providing a first branch prediction from the bimodal table, based on the first index;

matching the first branch prediction against N tables, wherein N is three or more, wherein the tables contain prior branch histories, and wherein:

the branch history in table T(N) is of greater length than the branch history of table T(N−1); and

the branch history in table T(N−1) is of greater length than the branch history of table T(N−2);

manipulating a processor address using a greatest length of hits of branch prediction matches from the N tables, based on one or more hits occurring; and

manipulating the branch predictor address using the first branch prediction from the bimodal table, based on zero hits occurring.

21. A computer system for address manipulation comprising:

a memory which stores instructions;

one or more processors attached to the memory wherein the one or more processors, when executing the instructions which are stored, are configured to:

generate a first index from one or more bits of a processor program counter, wherein the first index is used to access a branch predictor bimodal table;

provide a first branch prediction from the bimodal table, based on the first index;

match the first branch prediction against N tables, wherein N is three or more, wherein the tables contain prior branch histories, and wherein:

the branch history in table T(N) is of greater length than the branch history of table T(N−1); and

the branch history in table T(N−1) is of greater length than the branch history of table T(N−2);

manipulate a processor address using a greatest length of hits of branch prediction matches from the N tables, based on one or more hits occurring; and

manipulate the branch predictor address using the first branch prediction from the bimodal table, based on zero hits occurring.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2020
From: POTA, PARTHIV; PATEL, SANJAY; SINGH PARIHAR, RAJ KUMAR
To: MIPS TECH, LLC
Reel/Frame 051478/0942 →
Cited By (3)
US 12,288,075 US 12,487,825 US 12,699,873