IP Library Granted Patent US 9,280,474
Granted Patent B2
US 9,280,474 · App. 13/976,325 · Granted Mar 8, 2016

Adaptive data prefetching

Inventors: Demos Pavlou (Barcelona, ES); Pedro Lopez (Barcelona, ES); Mirem Hyuseinova (Barcelona, ES); Fernando Latorre (Barcelona, ES); Steffen Kosinski (Braunschweig, DE); Ralf Goettsche (Braunschweig, DE); Varun K. Mohandru (Braunschweig, DE)
Assignee: Intel Corporation
G06F12/0862G06F9/06G06F9/30G06F9/3455G06F9/383G06F12/02G06F2212/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 9,280,474
App. No.
13/976,325
Granted
Mar 8, 2016
Kind
B2
Abstract

A system and method for adaptive data prefetching in a processor enables adaptive modification of parameters associated with a prefetch operation. A stride pattern in successive addresses of a memory operation may be detected, including determining a stride length (L). Prefetching of memory operations may be based on a prefetch address determined from a base memory address, the stride length L, and a prefetch distance (D). A number of prefetch misses may be counted at a miss prefetch count (C). Based on the value of the miss prefetch count C, the prefetch distance D may be modified. As a result of adaptive modification of the prefetch distance D, an improved rate of cache hits may be realized.

Claims (49)

1. A method, comprising:

determining a value for a stride length (L) in response to detecting a stride pattern in memory operations;

prefetching data for expected memory operations based on a prefetch address determined based on a base memory address, the stride length L, and a prefetch distance (D), wherein the prefetch address is given by a sum of the base memory address and a product (L×D);

maintaining a miss prefetch count (C) indicative of a number of prefetch misses for prefetched memory operations; and

adaptively modifying the prefetch distance D when the miss prefetch count C reaches a count threshold (T), including incrementing the prefetch distance D, and not incrementing the prefetch distance D when a maximum prefetch distance extending to a size of a memory page is attained, and further comprising:

comparing the prefetch address determined to a maximum threshold and, when the prefetch address determined exceeds the maximum threshold, using the maximum threshold as the prefetch address.

2. The method of claim 1 , further comprising:

resetting the miss prefetch count C to zero and the prefetch distance D to one when the stride pattern is no longer detected.

3. The method of claim 1 , wherein the maintaining of the miss prefetch count C comprises:

maintaining an instruction pointer prefetch array including an instance of a miss prefetch count C for each prefetch address value in the prefetch array.

4. The method of claim 1 , wherein the stride pattern is indicative of a fixed memory address offset between successive memory operations.

5. The method of claim 4 , wherein the fixed memory address offset is used for the stride length L.

6. The method of claim 1 , wherein the base memory address is indicated by an instruction referenced by an instruction pointer.

7. The method of claim 1 , further comprising preventing data at a first prefetch address from being prefetched, when the data at the first prefetch address is stored in a cache memory.

8. A processor, comprising:

a data prefetch unit to:

determine a stride length (L) in response to detection of a stride pattern in memory operations;

prefetch data for expected memory operations based on a prefetch address determined based on a base memory address, the stride length L, and a prefetch distance (D), wherein the prefetch address is given by a sum of the base memory address and a product (L×D);

maintain a miss prefetch count (C) indicative of a number of prefetch misses for prefetched memory operations; and

when the miss prefetch count C equals a count threshold (T), modify the prefetch distance D, including incrementation of the prefetch distance D, and to not increment the prefetch distance D when a maximum prefetch distance extending to a size of a memory page is attained, and further comprising:

comparison of the prefetch address determined to a maximum threshold and, when the prefetch address determined exceeds the maximum threshold, use the maximum threshold as the prefetch address.

9. The processor of claim 8 , wherein the data prefetch unit is operable to:

when the stride pattern is no longer detected:

reset the miss prefetch count C to zero and the prefetch distance D to one.

10. The processor of claim 8 , wherein the data prefetch unit is operable to initialize a value for the count threshold T.

11. The processor of claim 8 , wherein the data prefetch unit is operable to:

maintain an instruction pointer prefetch array with an instance of the miss prefetch count C for each prefetch address value.

12. The processor of claim 8 , wherein the stride pattern is indicative of a fixed memory address offset between successive memory operations.

13. The processor of claim 12 , wherein the fixed memory address offset is used for the stride length L.

14. The processor of claim 8 , wherein the base memory address is indicated by an instruction referenced by an instruction pointer.

15. A system comprising:

a processor;

a memory accessible to the processor;

a touchscreen controller; and

wherein the processor includes an adaptive data prefetch unit to:

determine a value for a stride length (L) responsive to detection of a stride pattern in memory operations;

prefetch data for expected memory operations based on a prefetch address determined based on a base memory address, the stride length L, and a prefetch distance (D), wherein the prefetch address is given by a sum of the base memory address and a product (L×D);

count a number of prefetch misses as a miss prefetch count (C) for prefetched memory operations; and

when the miss prefetch count C equals a count threshold (T), modify the prefetch distance D, including incrementation of the prefetch distance D, and to not increment the prefetch distance D when a maximum prefetch distance extending to a size of a memory page is attained, and further comprising:

comparison of the prefetch address determined to a maximum threshold and, when the prefetch address determined exceeds the maximum threshold, use the maximum threshold as the prefetch address.

16. The system of claim 15 , wherein the adaptive prefetch unit is operable to:

when the stride pattern is no longer detected:

reset the miss prefetch count C to zero and the prefetch distance D to one.

17. The system of claim 15 , wherein the adaptive prefetch unit is operable to initialize a value for the count threshold T.

18. The system of claim 15 , wherein the processor is operable to:

maintain an instruction pointer prefetch array with an instance of the miss prefetch count C for each prefetch address value.

19. The system of claim 15 , wherein the stride pattern is indicative of a fixed memory address offset between successive memory operations.

20. The system of claim 19 , wherein the fixed memory address offset is used for the stride length L.

21. The system of claim 15 , wherein the base memory address is indicated by an instruction referenced by an instruction pointer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2013
From: PAVLOU, DEMOS; LOPEZ, PEDRO; HYUSEINOVA, MIREM; LATORRE, FERNANDO; KOSINSKI, STEFFEN; MOHANDRU, VARUN K.; GOETTSCHE, RALF
To: INTEL CORPORATION
Reel/Frame 030693/0215 →
Continuity (1)
Related Publication 20150143057A1 · May 21, 2015