IP Library › Granted Patent US 10,754,781
Granted Patent B2
US 10,754,781 · App. 15/443,607 · Granted Aug 25, 2020

Heuristic method to control fetching of metadata from a cache hierarchy

Inventors: James J. Bonanno (Wappingers Falls, NY); Michael J. Cadigan, Jr. (Poughkeepsie, NY); Adam B. Collura (Hopewell Junction, NY); Daniel Lipetz (Linden, NJ); Ashutosh Misra (Bangalore, IN); Brian R. Prasky (Campbell Hall, NY)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/0875G06F9/3806G06F9/3848G06F11/3409G06F11/3466G06F12/0897G06F11/3024G06F2201/88G06F2212/1021G06F2212/452
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 10,754,781
App. No.
15/443,607
Granted
Aug 25, 2020
Kind
B2
Abstract

Embodiments are directed to a method for optimizing performance of a microprocessor. The method includes monitoring the performance of the microprocessor in each of a plurality of performance modes. The method further includes choosing a performance mode based on the monitoring. Thereafter, using the performance mode for a predetermined amount of time. Each of the plurality of performance modes is a branch prediction mode.

Claims (53)

1. A method for optimizing performance of a microprocessor, the method comprising:

monitoring performance of the microprocessor in each of a plurality of performance modes;

choosing a performance mode based on the monitoring; and

using the performance mode for a predetermined amount of time;

wherein:

each of the plurality of performance modes comprises different criteria for selecting when to move data between levels of a branch prediction cache hierarchy, the branch prediction cache hierarchy comprising a level two cache, a first level one cache, and a second level one cache, the level two cache larger than the first level one cache, and the first level one cache larger than the second level one cache,

a criterion for a first performance mode of the plurality of performance modes comprises a branch prediction miss being indicated from a search process of the first level one cache content,

a criterion for a second performance mode of the plurality of performance modes comprises a branch prediction miss being indicated from a parallel search process of both the first level one cache content and the second level one cache content, and

a criterion for a third performance mode of the plurality of performance modes comprises an instruction miss being indicated from a search process of an instruction cache.

2. The method of claim 1 , wherein monitoring, choosing, and using occur in a periodic manner.

3. The method of claim 2 , wherein using comprises using the performance mode for a predetermined amount of time before repeating monitoring, choosing, and using.

4. The method of claim 1 , wherein monitoring performance comprises determining cycles per instruction for each performance mode of the plurality of performance modes.

5. The method of claim 1 , wherein monitoring performance comprises determining branch prediction accuracy for each performance mode of the plurality of performance modes.

6. The method of claim 1 , wherein choosing the performance mode comprises:

updating a saturation counter based on the monitoring; and

choosing the performance mode based on the saturation counter.

7. The method of claim 6 , wherein the saturation counter is configured to change a performance mode upon an occurrence of one performance mode of the plurality of performance mode having superior performance for consecutive iterations.

8. The method of claim 1 , wherein monitoring performance comprises:

selecting the first performance mode from the plurality of performance modes;

running a predetermined number of events in the first performance mode;

counting a number of instructions completed in the first performance mode; and

repeating the running and counting for each performance mode of the plurality of performance modes.

9. The method of claim 1 , further comprising:

saving an operation state of a current task in a software stack; and

upon the restoration of a task, restoring the task saved in the software stack.

10. A microprocessor comprising:

branch prediction logic;

a first level one cache in a branch prediction cache hierarchy;

a second level one cache in the branch prediction cache hierarchy smaller than the first level one cache;

a level two cache in the branch prediction cache hierarchy, the level two cache larger than the first level one cache; and

logic configured to optimize performance of the microprocessor by performing a method comprising:

monitoring performance of the microprocessor in each of a plurality of performance modes;

choosing a performance mode based on the monitoring; and

using the performance mode for a predetermined amount of time;

wherein:

each of the plurality of performance modes comprises different criteria for selecting when to move data between the first level one cache, the second level one cache, and the level two cache,

a criterion for a first performance mode of the plurality of performance modes comprises a branch prediction miss being indicated from a search process of the first level one cache content,

a criterion for a second performance mode of the plurality of performance modes comprises a branch prediction miss being indicated from a parallel search process of both the first level one cache content and the second level one cache content, and

a criterion for a third performance mode of the plurality of performance modes comprises an instruction miss being indicated from a search process of an instruction cache.

11. The microprocessor of claim 10 , wherein:

monitoring, choosing, and using occur in a periodic manner; and

using comprises using the performance mode for a predetermined amount of time before repeating monitoring, choosing, and using.

12. The microprocessor of claim 10 , wherein monitoring performance comprises determining cycles per instruction for each performance mode of the plurality of performance modes.

13. The microprocessor of claim 10 , wherein monitoring performance comprises determining branch prediction accuracy for each performance mode of the plurality of performance modes.

14. The microprocessor of claim 10 , wherein choosing the performance mode comprises:

updating a saturation counter based on the monitoring; and

choosing the performance mode based on the saturation counter; wherein:

the saturation counter is configured to change a performance mode upon an occurrence of one performance mode of the plurality of performance mode having superior performance for consecutive iterations.

15. The microprocessor of claim 10 , wherein monitoring performance comprises:

selecting the first performance mode from the plurality of performance modes;

running a predetermined number of events in the first performance mode;

counting a number of cycles completed in the first performance mode; and

repeating the running and counting for each performance mode of the plurality of performance modes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2017
From: BONANNO, JAMES J.; CADIGAN, MICHAEL J., JR.; COLLURA, ADAM B.; LIPETZ, DANIEL; MISRA, ASHUTOSH; PRASKY, BRIAN R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041386/0410 →
Continuity (1)
Related Publication 20180246811A1 · Aug 30, 2018