IP Library Granted Patent US 9,015,406
Granted Patent B2
US 9,015,406 · App. 14/221,894 · Granted Apr 21, 2015

Flash memory cache for data storage device

Inventor: Umesh Maheshwari (San Jose, CA)
Assignee: Nimble Storage, Inc.
G06F12/0246G06F12/0253G06F12/0802G06F12/0866G06F2212/222G06F12/0873G06F2212/224G06F2212/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,015,406
App. No.
14/221,894
Granted
Apr 21, 2015
Kind
B2
Abstract

A storage device made up of multiple storage media is configured such that a flash memory serves as a cache for data stored on a backend storage device having one or more magnetic storage media. The storage device includes a controller configured to maintain a direct mapping from respective backend block addresses of the backend storage device to respective physical addresses of the flash memory. Such mapping is used to translate a backend block address of the backend storage device at which a first block is stored into a physical address of the flash memory at which the first block is cached.

Claims (32)

1. A method for operating a flash memory controller of a flash array, the flash array (i) configured as a cache for a disk-based storage device and (ii) containing a plurality of segments, each segment containing a plurality of data blocks, the method comprising:

for each of the segments, determining ones of the data blocks that are obsolete and ones of the data blocks that are cold, wherein obsolete data blocks are ones of the data blocks that are no longer needed and cold data blocks are ones of the data blocks that are not likely to be accessed;

determining an aggregate number of obsolete blocks and cold blocks contained in each of the segments;

selecting one or more of the segments based on the aggregate number of obsolete blocks and cold blocks contained in each of the segments;

and

erasing at least one of the one or more selected segments to produce one or more reclaimed segments of the flash array.

2. The method of claim 1 , wherein the obsolete data blocks comprise data that has been made obsolete as a result of more recent versions of said data being written to the flash array.

3. The method of claim 1 , wherein the cold data blocks in the cache comprise data that is less frequently and/or recently used by an application accessing the disk-based storage device than other data stored in the cache.

4. The method of claim 1 , wherein prior to erasing at least one of the one or more selected segments, writing data blocks that are neither obsolete nor cold from the one or more selected segments to other segments in the flash array.

5. The method of claim 4 , wherein more than one of the segments are selected and fewer than all of the selected segments are erased.

6. The method of claim 1 , wherein at least one of the one or more selected segments of the cache are erased without copying any data into other segments of the cache.

7. The method of claim 1 , wherein prior to erasing at least one of the one or more selected segments, writing data blocks that are not obsolete from the one or more selected segments to other segments in the flash array.

8. A storage device, comprising:

one or more magnetic storage media;

a flash memory (i) configured as a cache for data stored on the one or more magnetic storage media and (ii) containing a plurality of segments, each segment containing a plurality of data blocks; and

a controller configured to manage operations of the cache by:

for each of the segments, determining ones of the data blocks that are obsolete and ones of the data blocks that are cold, wherein obsolete data blocks are ones of the data blocks that are no longer needed and cold data blocks are ones of the data blocks that are not likely to be accessed;

determining an aggregate number of obsolete blocks and cold blocks contained in each of the segments;

selecting one or more of the segments based on the aggregate number of obsolete blocks and cold blocks contained in each of the segments;

and

erasing at least one of the one or more selected segments to produce one or more reclaimed segments of the cache.

9. The storage device of claim 8 , wherein the obsolete data blocks comprise data that has been made obsolete as a result of more recent versions of said data being written to other blocks of the cache.

10. The storage device of claim 8 , wherein the cold data blocks in the cache comprise data that is less frequently and/or recently used by an application accessing the disk-based storage device than other data stored in the cache.

11. The storage device of claim 8 , wherein the controller is further configured to write data blocks that are neither obsolete nor cold from the one or more selected segments to other segments of the cache prior to erasing at least one of the one or more segments.

12. The storage device of claim 11 , wherein more than one of the segments are selected and the controller is further configured to erase fewer than all of the selected segments.

13. The storage device of claim 8 , wherein the controller is further configured to write data blocks that are not obsolete from the one or more selected segments to other segments of the cache prior to erasing at least one of the one or more selected segments.

14. A storage device, comprising multiple storage media, one such medium (i) serving as a cache for data stored on another such medium and (ii) containing a plurality of segments, each segment, and a controller configured to manage said cache by:

for each of the segments, determining ones of the data blocks that are obsolete and ones of the data blocks that are cold, wherein obsolete data blocks are ones of the data blocks that are no longer needed and cold data blocks are ones of the data blocks that are not likely to be accessed;

determining an aggregate number of obsolete blocks and cold blocks contained in each of the segments;

selecting one or more of the segments based on the aggregate number of obsolete blocks and cold blocks contained in each of the segments;

and

erasing at least one of the one or more selected segments to produce one or more reclaimed segments of the 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 Mar 16, 2015
From: MAHESHWARI, UMESH
To: NIMBLE STORAGE, INC.
Reel/Frame 035176/0201 →
Continuity (3)
Continuation 13595211 · Aug 27, 2012
Continuation 12636693 · Dec 11, 2009
Related Publication 20140337561A1 · Nov 13, 2014