IP Library Granted Patent US 9,235,506
Granted Patent B2
US 9,235,506 · App. 14/473,992 · Granted Jan 12, 2016

Methods and systems for marking data in a flash-based cache as invalid

Inventors: Umesh Maheshwari (San Jose, CA); Varun Mehta (Los Altos Hills, CA)
Assignee: Nimble Storage, Inc.
G06F12/0246G06F12/0866G06F12/0888G06F2212/222G06F2212/28G06F2212/7205
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,235,506
App. No.
14/473,992
Granted
Jan 12, 2016
Kind
B2
Abstract

A storage device includes a flash memory-based cache for a hard disk-based storage device and a controller that is configured to limit the rate of cache updates through a variety of mechanisms, including determinations that the data is not likely to be read back from the storage device within a time period that justifies its storage in the cache, compressing data prior to its storage in the cache, precluding storage of sequentially-accessed data in the cache, and/or throttling storage of data to the cache within predetermined write periods and/or according to user instruction.

Claims (21)

1. A method for a storage device having a flash-based cache, a non-volatile random access memory (NVRAM) and a disk-based storage unit, the method comprising:

storing, by a controller of the storage device, a first version of data at an address in the flash-based cache;

storing, by the controller, a second version of the data in the disk-based storage unit but not in the flash-based cache, the second version of the data being different than the first version of the data; and

in response to storing the second version of the data in the disk-based storage unit but not in the flash-based cache, storing, by the controller, only the address of the first version of the data in an invalidate buffer instantiated on the NVRAM so as to mark the first version of the data in the flash-based cache as invalid.

2. The method of claim 1 , further comprising, in response to a failure of the invalidate buffer, purging all data from the flash-based cache so as to prevent the controller from serving stale data from the flash-based cache.

3. The method of claim 1 , further comprising, in response to the controller being unable to store further addresses in the invalidate buffer, invalidating data in the flash-based cache that has been marked as invalid in the NVRAM.

4. The method of claim 1 , wherein a maximum amount of information that can be stored in the NVRAM is less than a maximum amount of information that can be stored in the flash-based cache.

5. A storage device, comprising a flash-based cache, a disk-based storage unit, a non-volatile random access memory (NVRAM) and a controller, the controller (i) communicatively coupled to the flash-based cache, the disk-based storage unit and the NVRAM; and (ii) configured to:

store a first version of data at an address in the flash-based cache;

store a second version of the data in the disk-based storage unit but not in the flash-based cache, the second version of the data being different than the first version of the data; and

in response to storing the second version of the data in the disk-based storage unit but not in the flash-based cache, store only the address of the first version of the data in an invalidate buffer instantiated on the NVRAM so as to mark the first version of the data in the flash-based cache as invalid.

6. The storage device of claim 5 , wherein the controller is further configured to, in response to a failure of the invalidate buffer, purge all data from the flash-based cache so as to prevent the controller from serving stale data from the flash-based cache.

7. The storage device of claim 5 , wherein the controller is further configured to, in response to the controller being unable to store further addresses in the invalidate buffer, invalidate data in the flash-based cache that has been marked as invalid in the NVRAM.

8. The storage device of claim 5 , wherein a maximum amount of information that can be stored in the NVRAM is less than a maximum amount of information that can be stored in the flash-based cache.

9. A non-transitory computer-readable storage medium comprising software instructions that, when executed by a controller of a storage device, cause the controller to:

store a first version of data at an address in a flash-based cache of the storage device;

store a second version of the data in a disk-based storage unit of the storage device but not in the flash-based cache, the second version of the data being different than the first version of the data; and

in response to storing the second version of the data in the disk-based storage unit but not in the flash-based cache, store only the address of the first version of the data in an invalidate buffer instantiated on a non-volatile random access memory (NVRAM) of the storage device so as to mark the first version of the data in the flash-based cache as invalid.

10. The non-transitory computer-readable storage medium of claim 9 , further comprising software instructions that, when executed by the controller, cause the controller to, in response to a failure of the invalidate buffer, purge all data from the flash-based cache so as to prevent the controller from serving stale data from the flash-based cache.

11. The non-transitory computer-readable storage medium of claim 9 , further comprising software instructions that, when executed by the controller, cause the controller to, in response to the controller being unable to store further addresses in the invalidate buffer, invalidate data in the flash-based cache that has been marked as invalid in the NVRAM.

12. The non-transitory computer-readable storage medium of claim 9 , wherein a maximum amount of information that can be stored in the NVRAM is less than a maximum amount of information that can be stored in the flash-based cache.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2014
From: MAHESHWARI, UMESH; MEHTA, VARUN
To: NIMBLE STORAGE, INC.
Reel/Frame 033643/0895 →
Continuity (3)
Continuation 14273367 · May 8, 2014
Division 12836520 · Jul 14, 2010
Related Publication 20140372686A1 · Dec 18, 2014