IP Library Granted Patent US 11,487,665
Granted Patent B2
US 11,487,665 · App. 16/552,896 · Granted Nov 1, 2022

Tiered caching of data in a storage system

Inventors: Riley Thomasson (Santa Clara, CA); Manpreet Singh (Palo Alto, CA); Mohit Gupta (San Jose, CA); Joshua Freilich (San Francisco, CA)
Assignee: Pure Storage, Inc.
G06F12/0806G06F3/0604G06F3/0655G06F3/0679G06F2212/6042
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,487,665
App. No.
16/552,896
Granted
Nov 1, 2022
Kind
B2
Abstract

A first read request for data stored at a non-volatile memory is received by a primary storage controller. The data is programmed from the non-volatile memory to a first cache of the primary storage controller, the first cache to store the data over a first time range. A second read request is received for the data. In response to receiving the second read request for the data, the data is programmed to a second cache to store the data over a second time range that is greater than the first time range. A notification is transmitted to a secondary storage controller, the notification including information associated with the programming of the data to the second cache.

Claims (45)

1. A storage system comprising:

a non-volatile memory;

a second cache; and

a primary storage controller operatively coupled to the non-volatile memory and the second cache, the primary storage controller comprising a first cache and a processing device, the processing device to:

receive a first read request for data stored at the non-volatile memory;

program the data from the non-volatile memory to the first cache to store the data over a first time range;

in response to receiving a second read request for the data and determining that the data was evicted from the first cache within a threshold time frame, program the data to the second cache to store the data over a second time range that is greater than the first time range; and

transmit a notification to a secondary storage controller operatively coupled to the non-volatile memory and the second cache, the notification comprising information associated with the programming of the data to the second cache, wherein the second cache is external to the primary storage controller and the secondary storage controller and shared with the primary storage controller and the secondary storage controller.

2. The storage system of claim 1 , wherein the first cache comprises random access memory, the second cache comprises 3D cross-point memory and the non-volatile memory comprises a NAND memory.

3. The storage system of claim 1 , wherein the processing device is further to:

evict the data from the second cache; and

transmit a second notification to the secondary storage controller, the second notification comprising information associated with the eviction of the data from the second cache.

4. The storage system of claim 1 , wherein the information associated with the programming of the data to the second cache comprises an identification of the data and address information of the data stored at the second cache.

5. The storage system of claim 1 , wherein the first cache has a first eviction policy and the second cache has a second eviction policy, wherein the first eviction policy is different than the second eviction policy.

6. The storage system of claim 1 , wherein the data corresponds to deduplicated data stored at the storage system.

7. The storage system of claim 1 , wherein the processing device is further to:

in response to receiving the first read request for the data stored at the non-volatile memory, determine whether the data is stored at the first cache or the second cache; and

in response to determining that the data is not stored at the first cache or the second cache, program the data from the non-volatile memory to the first cache.

8. A method comprising:

receiving, by a processing device of a primary storage controller, a first read request for data stored at a non-volatile memory;

programming the data from the non-volatile memory to a first cache of the primary storage controller, the first cache to store the data over a first time range;

in response to receiving a second read request for the data and determining that the data was evicted from the first cache within a threshold time frame, programming the data to a second cache shared by the primary storage controller and a secondary storage controller to store the data over a second time range that is greater than the first time range; and

transmitting a notification to the secondary storage controller, the notification comprising information associated with the programming of the data to the second cache.

9. The method of claim 8 , wherein the first cache comprises random access memory, the second cache comprises 3D cross-point memory and the non-volatile memory comprises a NAND memory.

10. The method of claim 8 , further comprising:

evicting the data from the second cache; and

transmitting a second notification to the secondary storage controller, the second notification comprising information associated with the eviction of the data from the long-term second cache.

11. The method of claim 8 , wherein the information associated with the programming of the data to the second cache comprises an identification of the data and address information of the data stored at the second cache.

12. The method of claim 8 , wherein the first cache has a first eviction policy and the second cache has a second eviction policy, wherein the first eviction policy is different than the second eviction policy.

13. The method of claim 8 , wherein the data corresponds to deduplicated data.

14. The method of claim 8 , further comprising:

in response to receiving the first read request for the data stored at the non-volatile memory, determining whether the data is stored at the first cache or the second cache; and

in response to determining that the data is not stored at the first cache or the second cache, programming the data from the non-volatile memory to the first cache.

15. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a primary storage controller to:

receive, by the processing device of the primary storage controller, a first read request for data stored at a non-volatile memory;

program the data from the non-volatile memory to a first cache of the primary storage controller, the first cache to store the data over a first time range;

in response to receiving a second read request for the data and determining that the data was evicted from the first cache within a threshold time frame, program the data to a second cache shared by the primary storage controller and a secondary storage controller to store the data over a second time range that is greater than the first time range; and

transmit a notification to the secondary storage controller, the notification comprising information associated with the programming of the data to the second cache.

16. The non-transitory computer readable storage medium of claim 15 , wherein the first cache comprises random access memory, the second cache comprises 3D cross-point memory and the non-volatile memory comprises a NAND memory.

17. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

evict the data from the second cache; and

transmit a second notification to the secondary storage controller, the second notification comprising information associated with the eviction of the data from the second cache.

18. The non-transitory computer readable storage medium of claim 15 , wherein the information associated with the programming of the data to the second cache comprises an identification of the data and address information of the data stored at the second cache.

19. The non-transitory computer readable storage medium of claim 15 , wherein the first cache has a first eviction policy and the second cache has a second eviction policy, wherein the first eviction policy is different than the second eviction policy.

20. The non-transitory computer readable storage medium of claim 15 , wherein the data corresponds to deduplicated data.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2019
From: THOMASSON, RILEY; SINGH, MANPREET; GUPTA, MOHIT; FREILICH, JOSHUA
To: PURE STORAGE, INC.
Reel/Frame 050186/0668 →
Cited By (1)
US 12,438,719