IP Library Granted Patent US 10,067,687
Granted Patent B2
US 10,067,687 · App. 15/676,395 · Granted Sep 4, 2018

Method and apparatus for storing data in a storage system that includes a final level cache (FLC)

Inventor: Sehat Sutardja (Los Altos Hills, CA)
Assignee: Marvell World Trade LTD.
G06F3/0611G06F3/0644G06F3/0656G06F3/0676G06F12/0866G06F12/0897G11B20/10527G11B20/1217G11B20/1252G11B20/1879G11B27/36G06F2212/1016G06F2212/1024G06F2212/202G06F2212/21G06F2212/217G06F2212/224G06F2212/225G06F2212/281G06F2212/282G06F2212/313G06F2212/462G06F2212/70G11B2020/10657G11B2020/1238G11B2020/1242G11B2020/1292G11B2020/183G11C15/043
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 10,067,687
App. No.
15/676,395
Granted
Sep 4, 2018
Kind
B2
Abstract

A storage system includes a final level cache (FLC) module coupled to a storage medium. The storage medium includes a bulk storage portion having a higher data density than a cache storage portion. The cache storage portion is configured as an FLC cache accessed by the FLC module prior to accessing the bulk storage portion. The FLC module receives a request for data from a processor coupled to one or more levels of cache that are separate from the FLC cache. The processor generates the request if the data is not cached in the one or more levels of cache. The FLC module determines whether the data requested is cached in the FLC cache, retrieves the data from the FLC cache if the data is cached in the FLC cache, and retrieves the data from the bulk storage portion if the data is not cached in the FLC cache.

Claims (65)

1. A storage system, comprising:

a final level cache (FLC) module coupled to a storage medium, wherein:

the storage medium comprises a plurality of storage portions, the plurality of storage portions including at least a bulk storage portion and a cache storage portion, the bulk storage portion having a higher data density than the cache storage portion, wherein the cache storage portion is configured as an FLC cache to be accessed by the FLC module prior to the FLC module accessing the bulk storage portion of the storage medium; and

the FLC module is configured to:

receive a request for data from a processor, wherein the processor is coupled to one or more levels of cache that are separate from the FLC cache, wherein the request for data is generated by the processor in response to data requested by the processor not being cached in the one or more levels of cache coupled to the processor,

determine, in response to the request for data from the processor, whether the data requested by the processor is cached in the FLC cache,

retrieve, in response to determining the data requested by the processor is cached in the FLC cache, the data requested by the processor from the FLC cache, and

retrieve, in response to determining the data requested by the processor is not cached in the FLC cache, the data requested by the processor from the bulk storage portion of the storage medium having the higher data density than the cache storage portion of the storage medium.

2. The storage system of claim 1 , further comprising a write module configured to:

write data on the bulk storage portion using a first recording format, and

write data on the cache storage portion using a second recording format,

wherein the second recording format is different than the first recording format.

3. The storage system of claim 1 , further comprising a write module configured to:

write data on the bulk storage portion using a shingled magnetic recording format, and

write data on the cache storage portion using a different recording format than the shingled magnetic recording format.

4. The storage system of claim 1 , wherein:

the cache storage portion includes a plurality of tracks, and

each track of the plurality of tracks stores 2 N cache lines, where N is an integer greater than or equal to zero.

5. The storage system of claim 4 , wherein a size of each of the cache lines is greater than or equal to one megabyte.

6. The storage system of claim 1 , wherein:

the bulk storage portion is adjacent to an inner diameter of the storage medium; and

the cache storage portion is adjacent to an outer diameter of the storage medium.

7. The storage system of claim 1 , wherein the cache storage portion has a lower track density than the bulk storage portion.

8. The storage system of claim 1 , wherein density indicates a number of sectors per track or a number of bytes per sector.

9. The storage system of claim 1 , further comprising:

a semiconductor memory configured to implement the one or more levels of cache,

wherein the semiconductor memory is selected from a group consisting of magneto-resistive random access memory, flash memory, and dynamic random access memory.

10. The storage system of claim 1 , further comprising a read module to read data stored in one of a plurality of tracks of the cache storage portion before a read head settles on the one of the plurality of tracks.

11. The storage system of claim 1 , wherein the FLC module is configured to cache data on the cache storage portion using fully set associative caching, the storage system further comprising:

a content-addressable memory configured to store hash tables corresponding to the fully set associative caching,

wherein the content-addressable memory is implemented using dynamic random access memory.

12. The storage system of claim 1 , wherein:

the storage medium includes one or more platters; and

the storage medium is configured to store greater than or equal to one terabyte of data on each of the platters at the higher data density using shingled magnetic recording.

13. The storage system of claim 1 , further comprising:

a write module configured to write data on the bulk storage portion; and

a read module configured to read the data from the bulk storage portion following each write operation performed on the bulk storage portion,

wherein in response to detecting an error in reading the data from the bulk storage portion, the write module is configured to rewrite the data from the cache storage portion to the bulk storage portion.

14. A method, comprising:

storing data on a bulk storage portion of a storage medium at a higher data density than storing data on a cache storage portion of the storage medium;

configuring the cache storage portion as a final level cache to be accessed prior to accessing the bulk storage portion;

receiving a request for data from a processor, wherein the processor is coupled to one or more levels of cache that are separate from the final level cache, wherein the request for data is generated by the processor in response to data requested by the processor not being cached in the one or more levels of cache coupled to the processor;

determining, in response to the request for data from the processor, whether the data requested by the processor is cached in the final level cache;

retrieving, in response to determining the data requested by the processor is cached in the final level cache, the data requested by the processor from the final level cache; and

retrieving, in response to determining the data requested by the processor is not cached in the final level cache, the data requested by the processor from the bulk storage portion of the storage medium having the higher data density than the cache storage portion of the storage medium.

15. The method of claim 14 , further comprising:

writing data on the bulk storage portion using a first recording format; and

writing data on the cache storage portion using a second recording format,

wherein the second recording format is different than the first recording format.

16. The method of claim 14 , further comprising:

selecting a plurality of tracks on the cache storage portion; and

storing 2 N cache lines on each track of the plurality of tracks, where N is an integer greater than or equal to zero; and

selecting a size of each of the cache lines greater than or equal to one megabyte.

17. The method of claim 14 , further comprising:

selecting the bulk storage portion adjacent to an inner diameter of the storage medium;

selecting the cache storage portion adjacent to an outer diameter of the storage medium; and

selecting a lower track density for the cache storage portion than for the bulk storage portion.

18. The method of claim 14 , further comprising reading data stored in one of a plurality of tracks of the cache storage portion before a read head settles on the one of the plurality of tracks.

19. The method of claim 14 , further comprising:

caching data on the cache storage portion using fully set associative caching; and

storing hash tables corresponding to the fully set associative caching on a content-addressable memory implemented using dynamic random access memory.

20. The method of claim 14 , further comprising:

writing data on the bulk storage portion;

reading the data from the bulk storage portion following each write operation performed on the bulk storage portion; and

rewriting the data from the cache storage portion to the bulk storage portion in response to detecting an error in reading the data from the bulk storage portion.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
Continuity (4)
Continuation 15204368 · Jul 7, 2016
Continuation 14702078 · May 1, 2015
Provisional Application 61987947 · May 2, 2014
Related Publication 20170344276A1 · Nov 30, 2017