Accessing compressed data of varying-sized quanta in non-volatile memory
US-9396104-B1 · Jul 19, 2016 · US
US2017199820A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2017199820-A1 |
| Application number | US-201515320468-A |
| Country | US |
| Kind code | A1 |
| Filing date | Mar 27, 2015 |
| Priority date | Jun 27, 2014 |
| Publication date | Jul 13, 2017 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A technique for managing cache in a data storage system is disclosed. Data storage system cache memory is arranged into multiple input/output (IO) cache macroblocks, where a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks. A write request is receive at the data storage system. If the IO data associated with the write request is determined to be compressible, the IO data is compressed in-line and written to an IO data block in a compressed IO cache macroblock, otherwise non-compressed IO data is written to an IO data block in a non-compressed IO cache macroblock.
Opening claim text (preview).
What is claimed is: 1 . A method for managing data storage in a data storage system, the method comprising: arranging data storage system cache memory into multiple input/output (IO) cache macroblocks, wherein a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks; receiving, at the data storage system, an write request; determining if IO data associated with the write request is compressible data; if the IO data is determined to be compressible, compressing the IO data in-line, and writing the compressed IO data to an IO data block in a compressed IO cache macroblock; and if the IO data is determined to be non-compressible, writing the non-compressed IO data to an IO data block in a non-compressed IO cache macroblock. 2 . The method of claim 1 , further comprising: creating a cache macroblock data structure, wherein the cache macroblock data structure includes cache metadata describing characteristics of the IO data blocks stored in the compressed IO cache macroblocks. 3 . The method of claim 2 , further comprising: receiving, at the data storage system, request to delete an IO cache macroblock, wherein deleting the IO cache macroblock includes setting a delete bit corresponding to the IO cache macroblock in a bitmap in the cache macroblock data structure. 4 . The method of claim 1 , wherein the compressed IO cache macroblocks are further configured to include IO cache macroblock header data comprising IO data block size information and compression algorithm version information. 5 . The method of claim 1 , wherein writing the IO data to an IO cache macroblock further includes: determining that a previous version of the IO data is currently stored in an existing IO data block, wherein the existing IO data block belongs to a compressed IO cache macroblock or non-compressed IO cache macroblock; and if the IO data is less than or equal in size to the previous version of the IO data block, overwriting the previous IO data stored in the existing IO data block with the IO data associated with the write request. 6 . The method of claim 1 , wherein writing the IO data to an IO cache macroblock further includes: determining that a previous version of the IO data is not currently stored in an existing IO data block; determining if there is sufficient space to write the IO data in an existing IO cache macroblock; if there is sufficient space, writing the IO data to a the existing IO cache macroblock; and if there is not sufficient space, evicting an existing IO cache macroblock and writing the IO data to a new IO cache macroblock. 7 . The method of claim 6 , wherein evicting an existing IO cache macroblock further includes: if an existing IO cache macroblock having all IO data blocks marked as deleted is identified, reusing the IO cache macroblock as the new IO cache macroblock; else identifying and evicting an IO cache macroblock and reusing the evicted IO cache macroblock as the new IO cache macroblock. 8 . The method of claim 1 , further including: receiving, at the data storage system, a read request from a host; determining that IO data associated with the read request is stored in an existing IO cache macroblock; if the IO data is in a compressed cache macroblock, decompressing the IO data in-line; and returning the IO data to the host. 9 . The method of claim 1 , further including: receiving, at the data storage system, a read request from a host; determining that IO data associated with the read request is stored in a persistent IO macroblock residing in persistent storage; copying the persistent IO macroblock from persistent storage to an IO cache macroblock residing in cache; if the copied IO cache macroblock is compressed, decompressing the IO data in-line; and returning the IO data to the host. 10 . The method of claim 1 , wherein the first set of IO cache macroblocks and second set of IO cache macroblocks vary in size. 11 . A system for managing data storage in a data storage system, the system comprising a special purpose storage processor and memory configured to: arrange data storage system cache memory into multiple input/output (IO) cache macroblocks, wherein a first set of IO cache macroblocks are configured as compressed IO cache macroblocks, each compressed IO cache macroblock storing a plurality of variable sized compressed IO data blocks, and a second set of IO cache macroblocks are configured as non-compressed IO cache macroblocks, each non-compressed IO cache macroblock storing a plurality of fixed sized non-compressed IO data blocks; receive, at the data storage system, an write request; determine if IO data associated with the write request is compressible data; if the IO data is determined to be compressible, compress the IO data in-line, and writing the compressed IO data to an IO data block in a compressed IO cache macroblock; and if the IO data is determined to be non-compressible, write the non-compressed IO data to an IO data block in a non-compressed IO cache macroblock. 12 . The system of claim 11 , further comprising: create a cache macroblock data structure, wherein the cache macroblock data structure includes cache metadata describing characteristics of the IO data blocks stored in the compressed IO cache macroblocks. 13 . The system of claim 12 , further comprising: receive, at the data storage system, request to delete an IO cache macroblock, wherein deleting the IO cache macroblock includes setting a delete bit corresponding to the IO cache macroblock in a bitmap in the cache macroblock data structure. 14 . The system of claim 11 , wherein the compressed IO cache macroblocks are further configured to include IO cache macroblock header data comprising IO data block size information and compression algorithm version information. 15 . The system of claim 11 , wherein write the IO data to an IO cache macroblock further includes: determine that a previous version of the IO data is currently stored in an existing IO data block, wherein the existing IO data block belongs to a compressed IO cache macroblock or non-compressed IO cache macroblock; and if the IO data is less than or equal in size to the previous version of the IO data block, overwrite the previous IO data stored in the existing IO data block with the IO data associated with the write request. 16 . The system of claim 11 , wherein write the IO data to an IO cache macroblock further includes: determine that a previous version of the IO data is not currently stored in an existing IO data block; determine if there is, sufficient space to write the IO data in an existing IO cache macroblock; if there is sufficient space, write the IO data to a the existing IO cache macroblock; and if there is not sufficient space, evict an existing IO cache macroblock and writing the IO data to a new IO cache macroblock. 17 . The system of claim 16 , wherein evict an existing IO cache macroblock further includes: if an existing IO cache macroblock having all IO data blocks marked as deleted is identified, reuse the IO cache macroblock as the new IO cache macroblock; else identify and evicting an IO cache macroblock and reusing the evicted IO cache macroblock as the new IO cache macroblock.
Replication mechanisms · CPC title
Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket · CPC title
Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title
with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list · CPC title
Details relating to cache mapping · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.