IP Library Granted Patent US 10,102,134
Granted Patent B2
US 10,102,134 · App. 15/190,231 · Granted Oct 16, 2018

Instruction and logic for run-time evaluation of multiple prefetchers

Inventors: Zeshan A. Chishti (Beaverton, OR); Christopher B. Wilkerson (Portland, OR); Seth Pugsley (Salt Lake City, UT); Peng-Fei Chuang (Redwood City, CA); Robert L. Scott (Gilbert, AZ); Aamer Jaleel (Northborough, MA); Shih-Lien L. Lu (Portland, OR); Kingsum Chow (Portland, OR)
Assignee: Intel Corporation
G06F12/0862G06F9/3808G06F2212/6026
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,102,134
App. No.
15/190,231
Granted
Oct 16, 2018
Kind
B2
Abstract

A processor includes a cache, a prefetcher module to select information according to a prefetcher algorithm, and a prefetcher algorithm selection module. The prefetcher algorithm selection module includes logic to select a candidate prefetcher algorithm determine and store memory addresses of predicted memory accesses of the candidate prefetcher algorithm when performed by the prefetcher module, determine cache lines accessed during memory operations, and evaluate whether the determined cache lines match the stored memory addresses. The prefetcher algorithm selection module further includes logic to adjust an accuracy ratio of the candidate prefetcher algorithm, compare the accuracy ratio with a threshold accuracy ratio, and determine whether to apply the first candidate prefetcher algorithm to the prefetcher module.

Claims (77)

1. A processor, comprising:

a cache;

a prefetcher module including circuitry to select information according to a prefetcher algorithm and to send the selected information to a destination module; and

a prefetcher algorithm selection module, including circuitry to:

select a first candidate prefetcher algorithm;

determine and store memory addresses of predicted memory accesses of the first candidate prefetcher algorithm when performed by the prefetcher module;

determine cache lines accessed during execution of one or more memory operations;

evaluate whether any of the determined cache lines match any of the stored memory addresses of predicted memory accesses of the first candidate prefetcher algorithm;

based upon whether determined cache lines match stored memory addresses, adjust an accuracy ratio of the first candidate prefetcher algorithm;

compare the accuracy ratio of the first candidate prefetcher algorithm with a threshold accuracy ratio; and

determine whether to apply the first candidate prefetcher algorithm to the prefetcher module based upon the comparison of the accuracy ratio with the threshold accuracy ratio.

2. The processor of claim 1 , wherein the circuitry to determine cache lines accessed during execution of one or more memory operations includes circuitry to determine addresses of cache hits and cache misses of the cache.

3. The processor of claim 1 , wherein the prefetcher algorithm selection module further includes circuitry to:

compare the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

apply the first candidate prefetcher algorithm to the prefetcher module based upon the comparison with the second candidate prefetcher algorithm.

4. The processor of claim 1 , wherein the prefetcher algorithm selection module further includes circuitry to:

compare the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

deactivate operation of the second candidate prefetcher algorithm in the prefetcher module based upon the comparison with the first candidate prefetcher algorithm.

5. The processor of claim 4 , wherein circuitry to deactivate operation of the second candidate prefetcher includes circuitry to perform based upon a determination that memory addresses yielded by the second candidate prefetcher algorithm are a subset of memory addresses yielded by the first candidate prefetcher algorithm.

6. The processor of claim 1 , wherein the circuitry to adjust the accuracy ratio of the first candidate prefetcher algorithm further includes circuitry to:

increment a prefetch success counter indicating a match between determined cache lines and stored memory addresses;

increment a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

find the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

7. The processor of claim 1 , wherein the circuitry to adjust the accuracy ratio of the first candidate prefetcher algorithm further includes circuitry to:

maintain a prefetch success counter indicating a failure to match determined cache lines and stored memory addresses;

increment a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

find the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

8. A system comprising:

a cache;

a prefetcher module including circuitry to select information according to a prefetcher algorithm and to send the selected information to a destination module; and

a prefetcher algorithm selection module, including circuitry to:

select a first candidate prefetcher algorithm;

determine and store memory addresses of predicted memory accesses of first candidate prefetcher algorithm when performed by the prefetcher module;

determine cache lines accessed during execution of one or more memory operations;

evaluate whether any of the determined cache lines match any of the stored memory addresses of predicted memory accesses of the first candidate prefetcher algorithm;

based upon whether determined cache lines match stored memory addresses, adjust an accuracy ratio of the first candidate prefetcher algorithm;

compare the accuracy ratio of the first candidate prefetcher algorithm with a threshold accuracy ratio; and

determine whether to apply the first candidate prefetcher algorithm to the prefetcher module based upon the comparison of the accuracy ratio with the threshold accuracy ratio.

9. The system of claim 8 , wherein the circuitry to determine cache lines accessed during execution of one or more memory operations includes circuitry to determine addresses of cache hits and cache misses of the cache.

10. The system of claim 8 , wherein the prefetcher algorithm selection module further includes circuitry to:

compare the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

apply the first candidate prefetcher algorithm to the prefetcher module based upon the comparison with the second candidate prefetcher algorithm.

11. The system of claim 8 , wherein the prefetcher algorithm selection module further includes circuitry to:

compare the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

deactivate operation of the second candidate prefetcher algorithm in the prefetcher module based upon the comparison with the first candidate prefetcher algorithm.

12. The system of claim 11 , wherein circuitry to deactivate operation of the second candidate prefetcher includes circuitry to perform deactivation based upon a determination that memory addresses yielded by the second candidate prefetcher algorithm are a subset of memory addresses yielded by the first candidate prefetcher algorithm.

13. The system of claim 8 , wherein the circuitry to adjust the accuracy ratio of the first candidate prefetcher algorithm further includes circuitry to:

increment a prefetch success counter indicating a match between determined cache lines and stored memory addresses;

increment a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

find the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

14. The system of claim 8 , wherein the circuitry to adjust the accuracy ratio of the first candidate prefetcher algorithm further includes circuitry to:

maintain a prefetch success counter indicating a failure to match determined cache lines and stored memory addresses;

increment a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

find the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

15. A method comprising, within a processor:

selecting a first candidate prefetcher algorithm for use on a prefetcher module, the prefetcher module including circuitry to select information according to one or more algorithms and to send the selected information to a destination module;

determining and storing memory addresses of predicted memory accesses of first candidate prefetcher algorithm when performed by the prefetcher module;

determining cache lines of a cache accessed during execution of one or more memory operations;

evaluating whether any of the determined cache lines match any of the stored memory addresses of predicted memory accesses of the first candidate prefetcher algorithm;

based upon whether determined cache lines match stored memory addresses, adjusting an accuracy ratio of the first candidate prefetcher algorithm;

comparing the accuracy ratio of the first candidate prefetcher algorithm with a threshold accuracy ratio; and

determining whether to apply the first candidate prefetcher algorithm to the prefetcher module based upon the comparison of the accuracy ratio with the threshold accuracy ratio.

16. The method of claim 15 , determining cache lines accessed during execution of one or more memory operations includes determining addresses of cache hits and cache misses of the cache.

17. The method of claim 15 , wherein the prefetcher algorithm selection module further includes:

comparing the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

applying the first candidate prefetcher algorithm to the prefetcher module based upon the comparison with the second candidate prefetcher algorithm.

18. The method of claim 15 , further comprising:

comparing the first candidate prefetcher algorithm with a second candidate prefetcher algorithm; and

deactivating operation of the second candidate prefetcher algorithm in the prefetcher module based upon the comparison with the first candidate prefetcher algorithm.

19. The method of claim 15 , wherein adjusting the accuracy ratio of the first candidate prefetcher algorithm further includes:

incrementing a prefetch success counter indicating a match between determined cache lines and stored memory addresses;

incrementing a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

finding the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

20. The method of claim 15 , wherein adjusting the accuracy ratio of the first candidate prefetcher algorithm further includes:

maintaining a prefetch success counter indicating a failure to match determined cache lines and stored memory addresses;

incrementing a prefetch request counter indicating an attempted match between determined cache lines and stored memory addresses; and

finding the accuracy ratio by dividing the prefetch success counter by the prefetch request counter.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2016
From: CHISHTI, ZESHAN A.; WILKERSON, CHRISTOPHER B.; PUGSLEY, SETH; CHUANG, PENG-FEI; SCOTT, ROBERT L.; JALEEL, AAMER; LU, SHIH-LIEN L.; CHOW, KINGSUM
To: INTEL CORPORATION
Reel/Frame 038990/0980 →
Continuity (2)
Continuation 14181032 · Feb 14, 2014
Related Publication 20160299847A1 · Oct 13, 2016
Cited By (2)
US 12,423,101 US 12,493,556