IP Library Granted Patent US 9,529,722
Granted Patent B1
US 9,529,722 · App. 14/795,634 · Granted Dec 27, 2016

Prefetch with localities and performance monitoring

Inventors: Xiangyu Tang (San Jose, CA); Jason Bellorado (San Jose, CA); Lingqi Zeng (San Jose, CA); Zheng Wu (San Jose, CA); Arunkumar Subramanian (San Jose, CA)
Assignee: SK hynix memory solutions Inc.
G06F12/0862G06F3/0611G06F3/0638G06F3/0679G06F2212/1021G06F2212/222G06F2212/602G06F2212/6022
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,529,722
App. No.
14/795,634
Granted
Dec 27, 2016
Kind
B1
Abstract

A locality associated with a read request is identified based at least in part on a read address included in the read request. A predicted read address is generated based at least in part on the locality. It is decided whether to permit the predicted read address to be prefetched; in the event it is decided to permit the predicted read address to be prefetched, data from the predicted read address is prefetched and the prefetched data is stored in a prefetch cache.

Claims (112)

1. A system, comprising:

a locality tracker configured to identify a locality associated with a read request based at least in part on a read address included in the read request;

a read address predictor configured to generate a predicted read address based at least in part on the locality;

a performance monitor configured to decide whether to permit the predicted read address to be prefetched;

a storage interface configured to: in the event it is decided to permit the predicted read address to be prefetched, prefetch data from the predicted read address; and

a prefetch cache configured to: in the event it is decided to permit the predicted read address to be prefetched, store the prefetched data.

2. The system recited in claim 1 , wherein the system includes a semiconductor device, including one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

3. The system recited in claim 1 , wherein the performance monitor is configured to decide whether to permit the predicted read address to be prefetched, including by:

determining a utilization metric representative of a degree to which storage is being accessed; and

determining whether the utilization metric is less than a utilization threshold, wherein in the event it is determined that the utilization metric is greater than the utilization threshold, data is not prefetched from the predicted read address.

4. The system recited in claim 1 , wherein the performance monitor is configured to decide whether to permit the predicted read address to be prefetched, including by:

determining a hit rate metric representative of a degree to which one or more previous predicted read addresses have been correctly predicted for the locality; and

determining whether the hit rate metric is greater than a hit rate threshold, wherein in the event it is determined that the hit rate metric is less than the hit rate threshold, data is not prefetched from the predicted read address.

5. The system recited in claim 1 , wherein the performance monitor is configured to decide whether to permit the predicted read address to be prefetched, including by:

determining a read amplification metric representative of a degree to which one or more previous prefetches for the locality have contributed to read congestion; and

determining whether the read amplification metric is less than a read amplification threshold, wherein in the event it is determined that the read amplification metric is greater than the read amplification threshold, data is not prefetched from the predicted read address.

6. The system recited in claim 1 , wherein the performance monitor is configured to decide whether to permit the predicted read address to be prefetched, including by:

determining a utilization metric representative of a degree to which storage is being accessed;

determining a hit rate metric representative of a degree to which one or more previous predicted read addresses have been correctly predicted for the locality;

determining a read amplification metric representative of a degree to which one or more previous prefetches for the locality have contributed to read congestion; and

determining if (1) the utilization metric is less than a utilization threshold, (2) the hit rate metric is greater than a hit rate threshold, and (3) the read amplification metric is less than a read amplification threshold, wherein:

in the event it is determined that (1) the utilization metric is less than the utilization threshold, (2) the hit rate metric is greater than the hit rate threshold, and (3) the read amplification metric is less than the read amplification threshold, data is prefetched from the predicted read address; and

in the event it is determined that (1) the utilization metric is greater than the utilization threshold, (2) the hit rate metric is less than the hit rate threshold, or (3) the read amplification metric is greater than the read amplification threshold, data is prefetched from the predicted read address.

7. The system recited in claim 1 , wherein:

there are a plurality of localities;

the prefetch cache is divided up into a plurality of portions, wherein each portion in the plurality of portions corresponds to a locality in the plurality of localities; and

the system further includes a cache manager configured to:

determine if the portion of the prefetch cache corresponding to the locality, associated with a read request, is full; and

in the event it is determined that the portion of the prefetch cache corresponding to the locality is full:

evict an oldest piece of data in the portion of the prefetch cache corresponding to the locality; and

store the prefetched data in the portion of the prefetch cache corresponding to the locality.

8. The system recited in claim 1 , wherein the locality tracker is further configured to:

obtain a read address, a length, and a sequence number associated with the read request;

determine a minimum distance between the read address associated with the read request and a plurality of stored read addresses;

determine if the minimum distance is less than a locality threshold;

in the event it is determined that the minimum distance is less than the locality threshold, update a locality entry corresponding to a stored read address from which the minimum distance was determined; and

in the event it is determined that the minimum distance is greater than the locality threshold:

determine if a number of localities is less than a maximum number of localities;

in the event it is determined that the number of localities is greater than the maximum number of localities, evict a locality entry having a smallest sequence number; and

create a new locality entry using the read address, the length, and the sequence number.

9. A method, comprising:

identifying a locality associated with a read request based at least in part on a read address included in the read request;

generating a predicted read address based at least in part on the locality;

using a processor to decide whether to permit the predicted read address to be prefetched; and

in the event it is decided to permit the predicted read address to be prefetched:

prefetching data from the predicted read address; and

storing the prefetched data in a prefetch cache.

10. The method recited in claim 9 , wherein the method is performed by a semiconductor device, including one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

11. The method recited in claim 9 , wherein deciding whether to permit the predicted read address to be prefetched includes:

determining a utilization metric representative of a degree to which storage is being accessed; and

determining whether the utilization metric is less than a utilization threshold, wherein in the event it is determined that the utilization metric is greater than the utilization threshold, data is not prefetched from the predicted read address.

12. The method recited in claim 9 , wherein deciding whether to permit the predicted read address to be prefetched includes:

determining a hit rate metric representative of a degree to which one or more previous predicted read addresses have been correctly predicted for the locality; and

determining whether the hit rate metric is greater than a hit rate threshold, wherein in the event it is determined that the hit rate metric is less than the hit rate threshold, data is not prefetched from the predicted read address.

13. The method recited in claim 9 , wherein deciding whether to permit the predicted read address to be prefetched includes:

determining a read amplification metric representative of a degree to which one or more previous prefetches for the locality have contributed to read congestion; and

determining whether the read amplification metric is less than a read amplification threshold, wherein in the event it is determined that the read amplification metric is greater than the read amplification threshold, data is not prefetched from the predicted read address.

14. The method recited in claim 9 , wherein deciding whether to permit the predicted read address to be prefetched includes:

determining a utilization metric representative of a degree to which storage is being accessed;

determining a hit rate metric representative of a degree to which one or more previous predicted read addresses have been correctly predicted for the locality;

determining a read amplification metric representative of a degree to which one or more previous prefetches for the locality have contributed to read congestion; and

determining if (1) the utilization metric is less than a utilization threshold, (2) the hit rate metric is greater than a hit rate threshold, and (3) the read amplification metric is less than a read amplification threshold, wherein:

in the event it is determined that (1) the utilization metric is less than the utilization threshold, (2) the hit rate metric is greater than the hit rate threshold, and (3) the read amplification metric is less than the read amplification threshold, data is prefetched from the predicted read address; and

in the event it is determined that (1) the utilization metric is greater than the utilization threshold, (2) the hit rate metric is less than the hit rate threshold, or (3) the read amplification metric is greater than the read amplification threshold, data is prefetched from the predicted read address.

15. The method recited in claim 9 , wherein:

there are a plurality of localities;

the prefetch cache is divided up into a plurality of portions, wherein each portion in the plurality of portions corresponds to a locality in the plurality of localities; and

the method further includes:

using the processor to determine if the portion of the prefetch cache corresponding to the locality, associated with a read request, is full; and

in the event it is determined that the portion of the prefetch cache corresponding to the locality is full:

evicting an oldest piece of data in the portion of the prefetch cache corresponding to the locality; and

storing the prefetched data in the portion of the prefetch cache corresponding to the locality.

16. The method recited in claim 9 further comprising:

obtaining a read address, a length, and a sequence number associated with the read request;

determining a minimum distance between the read address associated with the read request and a plurality of stored read addresses;

determining if the minimum distance is less than a locality threshold;

in the event it is determined that the minimum distance is less than the locality threshold, updating a locality entry corresponding to a stored read address from which the minimum distance was determined; and

in the event it is determined that the minimum distance is greater than the locality threshold:

determining if a number of localities is less than a maximum number of localities;

in the event it is determined that the number of localities is greater than the maximum number of localities, evicting a locality entry having a smallest sequence number; and

creating a new locality entry using the read address, the length, and the sequence number.

17. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

identifying a locality associated with a read request based at least in part on a read address included in the read request;

generating a predicted read address based at least in part on the locality;

deciding whether to permit the predicted read address to be prefetched; and

in the event it is decided to permit the predicted read address to be prefetched:

prefetching data from the predicted read address; and

storing the prefetched data in a prefetch cache.

18. The computer program product recited in claim 17 , wherein the computer instructions for deciding whether to permit the predicted read address to be prefetched include computer instructions for:

determining a utilization metric representative of a degree to which storage is being accessed;

determining a hit rate metric representative of a degree to which one or more previous predicted read addresses have been correctly predicted for the locality;

determining a read amplification metric representative of a degree to which one or more previous prefetches for the locality have contributed to read congestion; and

determining if (1) the utilization metric is less than a utilization threshold, (2) the hit rate metric is greater than a hit rate threshold, and (3) the read amplification metric is less than a read amplification threshold, wherein:

in the event it is determined that (1) the utilization metric is less than the utilization threshold, (2) the hit rate metric is greater than the hit rate threshold, and (3) the read amplification metric is less than the read amplification threshold, data is prefetched from the predicted read address; and

in the event it is determined that (1) the utilization metric is greater than the utilization threshold, (2) the hit rate metric is less than the hit rate threshold, or (3) the read amplification metric is greater than the read amplification threshold, data is prefetched from the predicted read address.

19. The computer program product recited in claim 17 , wherein:

there are a plurality of localities;

the prefetch cache is divided up into a plurality of portions, wherein each portion in the plurality of portions corresponds to a locality in the plurality of localities; and

the computer program product further includes computer instructions for:

determining if the portion of the prefetch cache corresponding to the locality, associated with a read request, is full; and

in the event it is determined that the portion of the prefetch cache corresponding to the locality is full:

evicting an oldest piece of data in the portion of the prefetch cache corresponding to the locality; and

storing the prefetched data in the portion of the prefetch cache corresponding to the locality.

20. The computer program product recited in claim 17 further comprising computer instructions for:

obtaining a read address, a length, and a sequence number associated with the read request;

determining a minimum distance between the read address associated with the read request and a plurality of stored read addresses;

determining if the minimum distance is less than a locality threshold;

in the event it is determined that the minimum distance is less than the locality threshold, updating a locality entry corresponding to a stored read address from which the minimum distance was determined; and

in the event it is determined that the minimum distance is greater than the locality threshold:

determining if a number of localities is less than a maximum number of localities;

in the event it is determined that the number of localities is greater than the maximum number of localities, evicting a locality entry having a smallest sequence number; and

creating a new locality entry using the read address, the length, and the sequence number.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: SK HYNIX MEMORY SOLUTIONS INC.
To: SK HYNIX INC.
Reel/Frame 044899/0443 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2015
From: TANG, XIANGYU; BELLORADO, JASON; ZENG, LINGQI; WU, ZHENG; SUBRAMANIAN, ARUNKUMAR
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 036821/0377 →
Continuity (1)
Provisional Application 62031742 · Jul 31, 2014