Multi-leveled cache management in a hybrid storage system
First Claim
1. An apparatus for storing data comprising:
- a first cache for storing data;
wherein the first cache comprises a volatile memory;
a second cache for storing data, the second cache being in communication with the first cache;
wherein the second cache comprises a non-volatile memory;
a first group of IO interface DMA controllers for communicating between the first cache and a plurality of external host systems;
a second group of IO interface DMA controllers for communicating between the first cache and a plurality of external mechanical disk drives; and
a first flash interface DMA controller for communicating between the second cache and the first cache;
wherein the first flash interface DMA controller copies data from the first cache to the second cache if a pre-defined threshold of unused cache lines is reached in the first cache;
wherein the apparatus is configured for flushing of data to the external mechanical disk drives;
wherein said flushing of data to the external mechanical disk drives is reduced by moving data from the first cache to the second cache until contents of the second cache reaches an allowed percentage usage threshold; and
wherein if there are no IO requests coming from the external host systems, wherein a storage device comprising the first cache and the second cache is idle, data is flushed to the external mechanical disk drives from the storage device from the first cache.
2 Assignments
0 Petitions
Accused Products
Abstract
A hybrid storage system is described having a mixture of different types of storage devices comprising rotational drives, flash devices, SDRAM, and SRAM. The rotational drives are used as the main storage, providing lowest cost per unit of storage memory. Flash memory is used as a higher-level cache for rotational drives. Methods for managing multiple levels of cache for this storage system is provided having a very fast Level 1 cache which consists of volatile memory (SRAM or SDRAM), and a non-volatile Level 2 cache using an array of flash devices. It describes a method of distributing the data across the rotational drives to make caching more efficient. It also describes efficient techniques for flushing data from L1 cache and L2 cache to the rotational drives, taking advantage of concurrent flash devices operations, concurrent rotational drive operations, and maximizing sequential access types in the rotational drives rather than random accesses which are relatively slower. Methods provided here may be extended for systems that have more than two cache levels.
-
Citations
19 Claims
-
1. An apparatus for storing data comprising:
-
a first cache for storing data;
wherein the first cache comprises a volatile memory;a second cache for storing data, the second cache being in communication with the first cache;
wherein the second cache comprises a non-volatile memory;a first group of IO interface DMA controllers for communicating between the first cache and a plurality of external host systems; a second group of IO interface DMA controllers for communicating between the first cache and a plurality of external mechanical disk drives; and a first flash interface DMA controller for communicating between the second cache and the first cache; wherein the first flash interface DMA controller copies data from the first cache to the second cache if a pre-defined threshold of unused cache lines is reached in the first cache; wherein the apparatus is configured for flushing of data to the external mechanical disk drives; wherein said flushing of data to the external mechanical disk drives is reduced by moving data from the first cache to the second cache until contents of the second cache reaches an allowed percentage usage threshold; and wherein if there are no IO requests coming from the external host systems, wherein a storage device comprising the first cache and the second cache is idle, data is flushed to the external mechanical disk drives from the storage device from the first cache. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus for storing data comprising:
-
a CPU for executing software application; a first cache for storing data, the first cache being in communication with the CPU;
wherein the first cache comprises a volatile memory;a second cache for storing data, the second cache being in communication with the first cache;
wherein the second cache comprises a non-volatile memory;a first group of IO interface DMA controllers for communicating between the first cache and a plurality of external mechanical disk drives; and a first flash interface DMA controller for communicating between the second cache and the first cache; wherein the first flash interface DMA controller copies data from the first cache to the second cache if a pre-defined threshold of unused cache lines is reached in the first cache; wherein the apparatus is configured for flushing of data to the external mechanical disk drives; wherein said flushing of data to the external mechanical disk drives is reduced by moving data from the first cache to the second cache until contents of the second cache reaches an allowed percentage usage threshold; and wherein if there are no IO requests coming from an external host, wherein a storage device comprising the first cache and the second cache is idle, data is flushed to the external mechanical disk drives from the first cache. - View Dependent Claims (10, 11)
-
-
12. A method for storing data comprising,
storing data in a first cache, wherein the first cache comprises a volatile memory; -
storing data in a second cache, wherein the second cache comprises a non-volatile memory; transferring data between the first cache and the second cache using a first flash interface DMA controller; wherein the first flash interface DMA controller copies data from the first cache to the second cache if a pre-defined threshold of unused cache lines is reached in the first cache; transferring data between the first cache and a plurality of external hosts using a first group of IO interface DMA controllers; transferring data between the first cache and a plurality of external mechanical disk drives using a second group IO interface DMA controllers; and flushing of data to the external mechanical disk drives; wherein said flushing of data to the external mechanical disk drives is reduced by moving data from the first cache to the second cache until contents of the second cache reaches an allowed percentage usage threshold; and wherein if there are no IO requests coming from the external hosts, wherein a storage device comprising the first cache and the second cache is idle, data is flushed to the external mechanical disk drives from the first cache. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. An article of manufacture, comprising:
-
a non-transient computer-readable medium having stored thereon instructions that are configured to; store data in a first cache, wherein the first cache comprises a volatile memory; store data in a second cache, wherein the second cache comprises a non-volatile memory; transfer data between the first cache and the second cache using a first flash interface DMA controller; wherein the first flash interface DMA controller copies data from the first cache to the second cache if a pre-defined threshold of unused cache lines is reached in the first cache; transfer data between the first cache and a plurality of external hosts using a first group of IO interface DMA controllers; transfer data between the first cache and a plurality of external mechanical disk drives using a second group IO interface DMA controllers; and flush of data to the external mechanical disk drives; wherein said flush of data to the external mechanical disk drives is reduced by moving data from the first cache to the second cache until contents of the second cache reaches an allowed percentage usage threshold; and wherein if there are no IO requests coming from the external hosts, wherein a storage device comprising the first cache and second cache is idle, then data is flushed to the external mechanical disk drives from the first cache.
-
Specification