IP Library Granted Patent US 11,704,249
Granted Patent B2
US 11,704,249 · App. 17/354,168 · Granted Jul 18, 2023

Frozen time cache for multi-host read operations

Inventors: Adarsh Sreedhar (Karnataka, IN); Ramanathan Muthiah (Karnataka, IN)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F12/0862G06F3/0604G06F3/0659G06F3/0679G06F2212/602
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 11,704,249
App. No.
17/354,168
Granted
Jul 18, 2023
Kind
B2
Abstract

Aspects of a storage device including a memory and a controller are provided. The controller may receive a prefetch request to retrieve data for a host having a promoted stream. The controller may access a frozen time table indicating hosts for which data has been prefetched and frozen times associated with the host and other hosts. The controller can determine whether the host has a higher priority over other hosts included in the frozen time table based on corresponding frozen times and data access parameters associated with the host. The controller may determine to prefetch the data for the host in response to the prefetch request when the host has a higher priority than the other hosts. The controller can receive a host read command associated with the promoted stream from the host and provide the prefetched data to the host in response to the host read command.

Claims (56)

1. A storage device, comprising:

a memory; and

a controller coupled to the memory and configured to:

receive a prefetch request to retrieve data for a first host device;

access a frozen time table indicating a plurality of host devices for which data has been prefetched from the memory, the frozen time table further indicating a plurality of frozen times associated with respective ones of the plurality of host devices;

determine whether the first host device has priority over a second host device included in the frozen time table, wherein the first host device is associated with a first frozen time of the plurality of frozen times, the second host device is associated with a second frozen time of the plurality of frozen times, and the first host device is determined to have the priority over the second host device in response to either:

the second frozen time being smaller than the first frozen time, and the frozen time table indicating that the second host device has a cache thrash and the first host device has a cache hit,

or

the second frozen time being equivalent to the first frozen time, the frozen time table indicating that the first host device has a first amount of prefetched data that was hit in a prior host read command and the second host device has a second amount of prefetched data that was hit in a prior host read command, and the first amount of prefetched data being greater than the second amount of prefetched data;

determine to prefetch the data for the first host device in response to the first host device being determined to have the priority over the second host device;

receive a host read command from the first host device; and

provide the prefetched data to the first host device in response to the host read command.

2. The storage device of claim 1 , wherein the controller is further configured to determine whether the data that has been prefetched for the first host device resulted in a cache hit or a cache thrash based on one or more data access parameters.

3. The storage device of claim 1 , wherein the frozen time table identifies each of the plurality of host devices by a corresponding host identifier.

4. The storage device of claim 1 , wherein the frozen time table further indicates a plurality of streams associated with a same host device of the plurality of host devices for which data has been prefetched from the memory, wherein the frozen time table identifies each of the plurality of streams by a corresponding stream identifier and associates each of the plurality of streams with a host identifier of the same host device.

5. The storage device of claim 1 , wherein the controller is further configured to:

determine a frozen time for prefetched data upon storing the prefetched data in a data cache for each of the plurality of host devices, the frozen time corresponding to a time interval between a first time at which the data is prefetched from the memory and transferred to the data cache and a second time at which the data cache is cleared based on one or more data access parameters; and

update an entry in the frozen time table with the determined frozen time for a corresponding one of the plurality of host devices.

6. The storage device of claim 5 , wherein the controller is further configured to initiate a frozen time counter at a time at which the prefetched data is transferred onto the data cache.

7. The storage device of claim 5 , wherein the data cache is cleared based on the frozen time table indicating that prefetched data for a corresponding one of the plurality of host devices resulted in a cache hit.

8. The storage device of claim 5 , wherein the data cache is cleared based on the frozen time table indicating that prefetched data for a corresponding one of the plurality of host devices resulted in a cache thrash to service a host read command from one of the plurality of host devices different from the first host device.

9. The storage device of claim 1 , wherein the controller is further configured to:

generate a prioritized listing of the plurality of host devices, each of the plurality of host devices being prioritized based on a corresponding frozen time of the plurality of frozen times.

10. The storage device of claim 9 , wherein the frozen time table comprises the prioritized listing of the plurality of host devices.

11. The storage device of claim 1 , wherein the controller is further configured to:

receive host read commands from the plurality of host devices in a submission queue; and

prioritize the host read commands in the submission queue based on the plurality of frozen times associated with the plurality of host devices.

12. The storage device of claim 1 , wherein the controller is further configured to update an entry in the frozen time table that corresponds to the first host device to indicate that the prefetched data resulted in a cache hit based on the host read command.

13. The storage device of claim 1 , wherein the controller is further configured to determine whether the first host device has the priority over the second host device included in the frozen time table based on one or more data access parameters associated with the first host device, the one or more data access parameters comprising a first data access parameter that indicates a latency for a host device to send a host read command following the prefetch request and a second data access parameter that indicates how frequent the host device submits host read commands.

14. The storage device of claim 1 , wherein the host read command is associated with a promoted stream of the first host device.

15. A storage device, comprising:

non-volatile memory; and

a controller coupled to the non-volatile memory and configured to:

receive a prefetch request to retrieve data for a first host device;

access a frozen time table indicating a plurality of host devices for which data has been prefetched from the non-volatile memory, the frozen time table further indicating a plurality of frozen times associated with respective ones of the plurality of host devices;

determine to prefetch the data for the first host device in response to the prefetch request based on the first host device having a higher priority than a second host device included in the frozen time table, wherein the first host device is associated with a first frozen time of the plurality of frozen times, the second host device is associated with a second frozen time of the plurality of frozen times, and the higher priority of the first host device is in response to either:

the second frozen time being smaller than the first frozen time, and the frozen time table indicating that the second host device has a cache thrash and the first host device has a cache hit,

or

the second frozen time being equivalent to the first frozen time, the frozen time table indicating that the first host device has a first amount of prefetched data that was hit in a prior host read command and the second host device has a second amount of prefetched data that was hit in a prior host read command, and the first amount of prefetched data being greater than the second amount of prefetched data; receive a host read command from the first host device; and

provide the prefetched data to the first host device in response to the host read command.

16. The storage device of claim 15 , wherein the controller is further configured to determine whether the data that has been prefetched for the first host device resulted in a cache hit or a cache thrash based on one or more data access parameters.

17. The storage device of claim 15 , wherein the controller is further configured to:

determine a frozen time for prefetched data upon storing the prefetched data in a data cache for each of the plurality of host devices, the frozen time corresponding to a time interval between a first time at which the data is prefetched from the non-volatile memory and transferred to the data cache and a second time at which the data cache is cleared based on one or more data access parameters; and

update an entry in the frozen time table with the determined frozen time for a corresponding one of the plurality of host devices.

18. The storage device of claim 15 , wherein the host read command is associated with a promoted stream of the first host device.

19. A storage device, comprising:

means for receiving a prefetch request to retrieve data for a first host device;

means for accessing a frozen time table indicating a plurality of host devices for which data has been prefetched from non-volatile memory, the frozen time table further indicating a plurality of frozen times associated with respective ones of the plurality of host devices;

means for determining whether the first host device has priority over a second host device included in the frozen time table, wherein the first host device is associated with a first frozen time of the plurality of frozen times, the second host device is associated with a second frozen time of the plurality of frozen times, and the first host device is determined to have the priority over the second host device in response to either:

the second frozen time being smaller than the first frozen time, and the frozen time table indicating that the second host device has a cache thrash and the first host device has a cache hit,

or

the second frozen time being equivalent to the first frozen time, the frozen time table indicating that the first host device has a first amount of prefetched data that was hit in a prior host read command and the second host device has a second amount of prefetched data that was hit in a prior host read command, and the first amount of prefetched data being greater than the second amount of prefetched data;

means for determining to prefetch the data for the first host device in response to the first host device being determined to have the priority over the second host device;

means for receiving a host read command from the first host device; and

means for providing the prefetched data to the first host device in response to the host read command.

20. The storage device of claim 19 , wherein the host read command is associated with a promoted stream of the first host device.

Assignments (10)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 057651 FRAME 0296 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058981/0958 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2021
From: SREEDHAR, ADARSH; MUTHIAH, RAMANATHAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 057695/0223 →
SECURITY INTEREST Recorded Sep 17, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 057651/0296 →
Continuity (1)
Related Publication 20220405206A1 · Dec 22, 2022
Cited By (1)
US 12,585,586