IP Library › Granted Patent US 10,705,987
Granted Patent B2
US 10,705,987 · App. 16/301,127 · Granted Jul 7, 2020

Autonomous prefetch engine

Inventors: Arkadi Avrukin (Santa Clara, CA); Seungyoon Song (Santa Clara, CA); Tariq Afzal (Santa Clara, CA); Yongjae Hong (Santa Clara, CA); Michael Frank (Santa Clara, CA); Thomas Zou (Santa Clara, CA); Hoshik Kim (Seoul, KR); Jungsook Lee (Seoul, KR)
Assignee: LG ELECTRONICS INC.
G06F13/1673G06F3/0658G06F12/084G06F12/0804G06F12/0862G06F12/0897G06F13/40G06F13/4234G06F15/7807G06F2212/1032G06F2212/602G06F2212/608Y02D10/14Y02D10/151
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,705,987
App. No.
16/301,127
Granted
Jul 7, 2020
Kind
B2
Abstract

A control circuit for controlling memory prefetch requests to system level cache (SLC). The control circuit includes a circuit identifying memory access requests received at the system level cache (SLC), where each of the memory access requests includes an address (ANEXT) of memory to be accessed. Another circuit associates a tracker with each of the memory access streams. A further circuit performs tracking for the memory access streams by: when the status is tracking and the address (ANEXT) points to an interval between the current address (ACURR) and the last prefetched address (ALAST), issuing a prefetch request to the SLC; and when the status is tracking, and distance (ADIST) between the current address (ACURR) and the last prefetched address (ALAST) is greater than a specified maximum prefetch for the associated tracker, waiting for further requests to control a prefetch process.

Claims (61)

1. A control circuit for controlling memory prefetch requests to system level cache (SLC), the control circuit comprising:

a circuit configured to identify memory access requests received at the system level cache (SLC) from a system on a chip (SoC) component, wherein each of the memory access requests include an address (ANEXT) of memory to be accessed and a component ID;

a circuit configured to associate a tracker, from among a plurality of trackers, with each of identified memory access streams,

wherein each of the plurality of trackers comprise entry parameters of status, increment, address distance (ADIST), age (AGE), temporal distance (TDIST), prefetch status (PF), current address (ACURR), and last prefetched address (ALAST); and

a circuit configured to perform tracking for each of the identified memory access streams by:

when the status is tracking and the address (ANEXT) points to an interval between the current address (ACURR) and the last prefetched address (ALAST), issuing a prefetch request to the system level cache (SLC); and

when the status is tracking, and distance (ADIST) between the current address (ACURR) and the last prefetched address (ALAST) is greater than a specified maximum prefetch for the associated tracker, waiting for further requests to control a prefetch process.

2. The control circuit of claim 1 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is available, changing the state of the associated tracker from available to initial tracking, recording the address (ANEXT) as the current address (ACURR), and wait for further requests in order to identify a memory access pattern.

3. The control circuit of claim 1 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial tracking, and a difference between the address (ANEXT) and the current address (ACURR) matches a stride from a pool of strides, changing the state of the associated tracker from initial tracking to initial hit and waiting further requests to confirm the selected stride.

4. The control circuit of claim 3 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial tracking, and the difference between the address (ANEXT) and the current address (ACURR) does not match the stride from the pool of strides, incrementing a value of the age (AGE) as the request is considered a miss.

5. The control circuit of claim 1 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial hit and a difference between the address (ANEXT) and the current address meets a value of the increment, changing the state of the associated tracker from initial hit to tracking and waiting for further requests to control a prefetch process.

6. The control circuit of claim 5 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial hit and the difference between the address (ANEXT) and the current address does not meet the value of the increment, incrementing a value of the age (AGE) as the request is considered a miss.

7. The control circuit of claim 1 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is tracking and the address (ANEXT) does not point to the interval between the current address (ACURR) and the last prefetched address (ALAST), incrementing the value of the age (AGE) as the request is considered a miss.

8. The control circuit of claim 7 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the value of the age (AGE) reaches a maximum age (MAXAGE), changing the state of the associated tracker from tracking to available.

9. The control circuit of claim 1 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

receiving simultaneously a plurality of the issued prefetch requests, wherein each of the plurality of issued prefetch requests is associated with one of the plurality of trackers, and wherein each of the plurality of issued prefetch requests comprises the last prefetched address (ALAST), memory bank identification, and frequency of requests expressed as the temporal distance (TDIST);

providing a first priority to any prefetch request of the plurality of issued prefetch requests that has higher frequency and the memory bank identification is for a bank address that is different from a last two granted prefetch requests;

providing a second priority, in a case of a same frequency, to any prefetch request of the plurality of issued prefetch requests that the memory bank identification is for the bank address that is different from the last two granted prefetch requests;

providing a third priority to any prefetch request of the plurality of issued prefetch requests that has the higher frequency; and

issuing a prefetch request to the SLC according to a descending order of the first priority, the second priority, and the third priority.

10. A memory device, comprising

system level cache (SLC); and

control circuitry comprising:

a circuit configured to identify memory access requests received at the system level cache (SLC) from a system on a chip (SoC) component, wherein each of the memory access requests include an address (ANEXT) of memory to be accessed and a component ID;

a circuit configured to associate a tracker, from among a plurality of trackers, with each of identified memory access streams,

wherein each of the plurality of trackers comprise entry parameters of status, increment, address distance (ADIST), age (AGE), temporal distance (TDIST), prefetch status (PF), current address (ACURR), and last prefetched address (ALAST); and

a circuit configured to perform tracking for each of the identified memory access streams by:

when the status is tracking and the address (ANEXT) points to an interval between the current address (ACURR) and the last prefetched address (ALAST), issuing a prefetch request to the system level cache (SLC); and

when the status is tracking, and distance (ADIST) between the current address (ACURR) and the last prefetched address (ALAST) is greater than a specified maximum prefetch for the associated tracker, waiting for further requests to control a prefetch process.

11. The memory device of claim 10 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is available, changing the state of the associated tracker from available to initial tracking, recording the address (ANEXT) as the current address (ACURR), and wait for further requests in order to identify a memory access pattern.

12. The memory device of claim 10 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial tracking, and a difference between the address (ANEXT) and the current address (ACURR) matches a stride from a pool of strides, changing the state of the associated tracker from initial tracking to initial hit and waiting further requests to confirm the selected stride.

13. The memory device of claim 12 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial tracking, and the difference between the address (ANEXT) and the current address (ACURR) does not match the stride from the pool of strides, incrementing a value of the age (AGE) as the request is considered a miss.

14. The memory device of claim 10 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial hit and a difference between the address (ANEXT) and the current address meets a value of the increment, changing the state of the associated tracker from initial hit to tracking and waiting for further requests to control a prefetch process.

15. The memory device of claim 14 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is initial hit and the difference between the address (ANEXT) and the current address does not meet the value of the increment, incrementing a value of the age (AGE) as the request is considered a miss.

16. The memory device of claim 10 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the status is tracking and the address (ANEXT) does not point to the interval between the current address (ACURR) and the last prefetched address (ALAST), incrementing the value of the age (AGE) as the request is considered a miss.

17. The memory device of claim 16 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

when the value of the age (AGE) reaches a maximum age (MAXAGE), changing the state of the associated tracker from tracking to available.

18. The memory device of claim 10 , wherein the circuit configured to perform tracking for each of the identified memory access streams is further configured to perform by:

receiving simultaneously a plurality of the issued prefetch requests, wherein each of the plurality of issued prefetch requests is associated with one of the plurality of trackers, and wherein each of the plurality of issued prefetch requests comprises the last prefetched address (ALAST), memory bank identification, and frequency of requests expressed as the temporal distance (TDIST);

providing a first priority to any prefetch request of the plurality of issued prefetch requests that has higher frequency and the memory bank identification is for a bank address that is different from a last two granted prefetch requests;

providing a second priority, in a case of a same frequency, to any prefetch request of the plurality of issued prefetch requests that the memory bank identification is for the bank address that is different from the last two granted prefetch requests;

providing a third priority to any prefetch request of the plurality of issued prefetch requests that has the higher frequency; and

issuing a prefetch request to the SLC according to a descending order of the first priority, the second priority, and the third priority.

19. A method for controlling memory prefetch requests to system level cache (SLC), the method comprising:

identifying memory access requests received at the system level cache (SLC) from a system on a chip (SoC) component, wherein each of the memory access requests include an address (ANEXT) of memory to be accessed and a component ID;

associating a tracker, from among a plurality of trackers, with each of identified memory access streams, wherein each of the plurality of trackers comprise entry parameters of status, increment, address distance (ADIST), age (AGE), temporal distance (TDIST), prefetch status (PF), current address (ACURR), and last prefetched address (ALAST);

issuing a prefetch request to the system level cache (SLC), when the status is tracking and the address (ANEXT) points to an interval between the current address (ACURR) and the last prefetched address (ALAST); and

waiting for further requests to control a prefetch process, when the status is tracking, and distance (ADIST) between the current address (ACURR) and the last prefetched address (ALAST) is greater than a specified maximum prefetch for the associated tracker.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2019
From: AVRUKIN, ARKADI; SONG, SEUNGYOON; AFZAL, TARIQ; HONG, YONGJAE; FRANK, MICHAEL; ZOU, THOMAS; KIM, HOSHIK; LEE, JUNGSOOK
To: LG ELECTRONICS INC.
Reel/Frame 049260/0639 →
Continuity (2)
Provisional Application 62335652 · May 12, 2016
Related Publication 20190138452A1 · May 9, 2019