Victim cache that supports draining write-miss entries
US-2024264952-A1 · Aug 8, 2024 · US
US9727481B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9727481-B2 |
| Application number | US-201615019909-A |
| Country | US |
| Kind code | B2 |
| Filing date | Feb 9, 2016 |
| Priority date | Feb 17, 2015 |
| Publication date | Aug 8, 2017 |
| Grant date | Aug 8, 2017 |
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.
Methods and systems are presented for evicting or copying-forward blocks in a storage system during garbage collection. In one method, a block status is maintained in a first memory to identify if the block is active or inactive, blocks being stored in segments that are configured to be cacheable in a second memory, a read-cache memory. Whenever an operation on a block is detected making the block inactive in one volume, the system determines if the block is still active in any volume, the block being cached in a first segment in the second memory. When the system detects that the first segment is being evicted from the second memory, the system re-caches the block into a second segment in the second memory if the block status of the block is active and the frequency of access to the block is above a predetermined value.
Opening claim text (preview).
What is claimed is: 1. A method comprising: maintaining, in a first memory of a storage system, a block status for each of a plurality of blocks, the block status identifying if the corresponding block is active in any volume of the storage system, each block being associated with one or more volumes and each block being stored within one segment of a plurality of segments, wherein the plurality of segments is configured to be cacheable in a second memory that is a read cache memory; whenever an operation on a block is detected that makes the block inactive in at least one volume, determining if the block is active in any volume, the block being cached within a first segment in the second memory; when the block is not active in any volume, setting the block status of the block as inactive; detecting that the first segment is being evicted from the second memory; and re-caching, in response to the eviction of the first segment, the block into a second segment in the second memory when the block status of the block is active and a frequency of access to the block is above a predetermined value. 2. The method as recited in claim 1 , wherein re-caching the block into a second segment includes: creating the second segment; adding the block to the second segment; completing the second segment with other blocks; and caching the second segment in the second memory. 3. The method as recited in claim 1 , wherein the frequency of access to the block is measured via a temperature associated with the block, wherein the temperature is increased when the block is accessed, and the temperature is decreased periodically. 4. The method as recited in claim 1 , wherein the block is active in a volume when the block holds current data for the volume, wherein the block is inactive in the volume when the blocks holds data for the volume that is no longer current. 5. The method as recited in claim 1 , wherein the operation making the block inactive is any one of overwriting the block, deleting the block, or deleting a volume holding the block. 6. The method as recited in claim 1 , wherein the block is not re-cached when the block is not active in any volume. 7. The method as recited in claim 1 , wherein the first memory is a random access memory (RAM), the second memory is a solid state drive (SSD) memory, and a third memory for storing segments is one or more hard disk drives (HDD). 8. The method as recited in claim 1 , wherein a volume is a linear accessible storage area, wherein a unit for reading or writing to the volume is the block. 9. The method as recited in claim 1 , wherein the block is readable without having to read the complete segment where the block resides. 10. The method as recited in claim 1 , wherein at least one segment from the plurality of segments is configured to hold blocks from two or more different volumes. 11. A storage device comprising: a first memory configured to store a block status for each of a plurality of blocks, the block status identifying if the corresponding block is active in any volume of the storage system; a second memory for caching segments from a plurality of segments, the second memory being a read cache memory, wherein each block is associated with one or more volumes and each block is stored within one segment from the plurality of segments; a third memory for storing the plurality of segments; and a processor configured to detect when an operation on a block makes the block inactive in at least one volume, and determine if the block is active in any volume, the block being cached within a first segment in the second memory, wherein whenever an operation on a block is detected that makes the block inactive in at least one volume, the processor determines if the block is active in any volume, the block being cached within a first segment in the second memory; wherein when the block is not active in any volume, the processor sets the block status of the block as inactive; and whenever the processor detects that the first segment is being evicted from the second memory, the processor re-caches the block into a second segment in the second memory if the block status of the block is active and a frequency of access to the block is above a predetermined value. 12. The storage device as recited in claim 11 , wherein re-caching the block into a second segment includes: creating the second segment; adding the block to the second segment; completing the second segment with other blocks; and caching the second segment in the second memory. 13. The storage device as recited in claim 11 , wherein the first memory is a random access memory (RAM), the second memory is a solid state drive (SSD) memory, and the third memory is one or more hard disk drives (HDD). 14. The storage device as recited in claim 11 , wherein data is stored in the second memory and in the third memory in segments. 15. The storage device as recited in claim 11 , wherein the frequency of access to the block is measured via a temperature associated with the block, wherein the temperature is increased when the block is accessed, and the temperature is decreased periodically. 16. The storage device as recited in claim 11 , wherein the block is active in a volume when the block holds current data for the volume, wherein the block is inactive in the volume when the blocks holds data for the volume that is no longer current. 17. A non-transitory computer-readable storage medium storing a computer program, the computer-readable storage medium comprising: program instructions for maintaining, in a first memory of a storage system, a block status for each of a plurality of blocks, the block status identifying if the corresponding block is active in any volume of the storage system, each block being associated with one or more volumes and each block being stored within segment of a plurality of segments, wherein the plurality of segments is configured to be cacheable in a second memory that is a read cache memory; program instructions for, whenever an operation on a block is detected that makes the block inactive in at least one volume, determining if the block is active in any volume, the block being cached within a first segment in the second memory; program instructions for, when the block is not active in any volume, setting the block status of the block as inactive; program instructions for detecting that the first segment is being evicted from the second memory; and program instructions for re-caching, in response to the eviction of the first segment, the block into a second segment in the second memory when the block status of the block is active and a frequency access to the block is above a predetermined value. 18. The storage medium as recited in claim 17 , wherein re-caching the block into a second segment includes: program instructions for creating the second segment; program instructions for adding the block to the second segment; program instructions for completing the second segment with other blocks; and program instructions for caching the second segment in the second memory. 19. The storage medium as recited in claim 17 , wherein the frequency of access to the block is measured via a temperature associated with the block, wherein the temperature is increased when the block is accessed, and the temperature is decreased periodically. 20. The storage medium as recited in claim 17 , wherein the block is active in a volume when the block holds current data for the volume, wherein the block is inacti
using selective caching, e.g. bypass · CPC title
Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays · CPC title
Hit rate improvement · CPC title
Details of cache memory · CPC title
Caches characterised by their organisation or structure · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.