Access-based eviction of blocks from solid state drive cache memory

US2016239222A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2016239222-A1
Application numberUS-201514623731-A
CountryUS
Kind codeA1
Filing dateFeb 17, 2015
Priority dateFeb 17, 2015
Publication dateAug 18, 2016
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Methods and systems are presented for allocating CPU cycles among processes in a storage system. One method includes operations for maintaining segments in a first memory, each segment including blocks, and for maintaining a block temperature for each block in a second memory. The first memory is a read-cache where one segment is written at a time, and each block is readable from the first memory without reading the corresponding complete segment. The block temperature is based on the frequency of access to the respective block, and a segment temperature is based on the block temperature of its blocks. Additionally, the segment with the lowest segment temperature is selected for eviction from the second memory, and blocks in the selected segment with a block temperature greater than a threshold temperature are identified. The selected segment is evicted, and a segment with the identified blocks is written to the first memory.

First claim

Opening claim text (preview).

What is claimed is: 1 . A method comprising: maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on the block temperature for the corresponding plurality of blocks within the segment; selecting a segment from a plurality of segments with a lowest segment temperature for eviction from the second memory; identifying blocks in the selected segment with a block temperature greater than a threshold temperature; evicting the selected segment from the first memory; and writing to the first memory a new segment having the identified blocks, wherein writing to the first memory further includes, storing blocks in a third memory; creating the new segment with the identified blocks and additional blocks until the segment is full; storing in a single operation the new segment in the first memory; and maintaining the temperature of the identified blocks and initializing the temperature of blocks first cached in the first memory. 2 . The method as recited in claim 1 , wherein the block temperature increases when the block is accessed, wherein the block temperature decreases periodically. 3 . The method as recited in claim 1 , wherein the segment temperature is equal to a total number of bytes in blocks with temperatures greater than or equal to a temperature threshold. 4 . The method as recited in claim 1 , wherein the first memory is a solid-state drive (SSD). 5 . The method as recited in claim 1 , wherein the second memory is one of a random access memory (RAM) or a dynamic random-access memory (DRAM). 6 . A method comprising: maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on the block temperature for the corresponding plurality of blocks within the segment; selecting a segment from a plurality of segments with a lowest segment temperature for eviction from the second memory; identifying blocks in the selected segment with a block temperature greater than a threshold temperature; evicting the selected segment from the first memory; and writing to the first memory a new segment having the identified blocks; wherein each block is associated with a volume, wherein each segment is operable to include blocks from one volume and each segment is operable to include blocks from a plurality of volumes; wherein each block has a first block address defined by a corresponding volume and an offset within the volume, the method further including: translating the first block address to a second block address defined by a segment where the block is stored and an offset within the segment; and identifying an ordinal of the block within the segment based on the offset of the second block address. 7 . (canceled) 8 . A method comprising: maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on the block temperature for the corresponding plurality of blocks within the segment; selecting a segment from a plurality of segments with a lowest segment temperature for eviction from the second memory; identifying blocks in the selected segment with a block temperature greater than a threshold temperature; evicting the selected segment from the first memory; writing to the first memory a new segment having the identified blocks; and identifying a second plurality of segments whose block temperature is not maintained for the blocks in the segments, wherein the segment temperature for the second plurality of segments is equal to a number of active bytes in the segment. 9 . The method as recited in claim 1 , wherein a read-cache memory is a memory acting as a cache for read requests and not acting as a cache for write requests. 10 . (canceled) 11 . The method as recited in claim 1 , wherein the identified blocks are copied forward by being re-cached in the first memory, wherein blocks in the segment that were not identified are not copied forward. 12 . A method comprising: maintaining, in a first memory, a plurality of segments, each segment including a plurality of blocks, and maintaining, in a second memory, a block temperature for each of a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on the block temperature for the corresponding plurality of blocks within the segment; selecting a segment from a plurality of segments with a lowest segment temperature for eviction from the second memory; identifying blocks in the selected segment with a block temperature greater than a threshold temperature; evicting the selected segment from the first memory; writing to the first memory a new segment having the identified blocks; and identifying a third plurality of segments utilizing a first in first out (FIFO) process for being cached in the first memory, wherein the segment temperature for the third plurality of segments is equal to a predetermined fixed value. 13 . The method as recited in claim 1 , wherein selecting a segment further includes: calculating the segment temperature for segments cached in the first memory; and selecting the segment with the lowest calculated temperature. 14 . The method as recited in claim 1 , wherein a non-volatile random-access memory (NVRAM) memory is used as write cache, wherein the segments are formed in the NVRAM and transferred to hard disk storage. 15 . A system comprising: a first memory for storing a plurality of segments, each segment including a plurality of blocks, wherein the first memory is a read-cache memory where one segment is written at a time, wherein each block is readable from the first memory without reading the corresponding complete segment; a second memory for storing a block temperature for each of the plurality of blocks, each block temperature being based on a frequency of access to the respective block, wherein a segment temperature for each segment is based on the block temperature for the corresponding plurality of blocks within the segment; and a processor operable to select a segment from a plurality of segments with a lowest s

Assignees

Inventors

Classifications

  • Improving I/O performance · CPC title

  • adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel · CPC title

  • in relation to availability · CPC title

  • at area level, e.g. provisioning of virtual or logical volumes · CPC title

  • for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2016239222A1 cover?
Methods and systems are presented for allocating CPU cycles among processes in a storage system. One method includes operations for maintaining segments in a first memory, each segment including blocks, and for maintaining a block temperature for each block in a second memory. The first memory is a read-cache where one segment is written at a time, and each block is readable from the first memo…
Who is the assignee on this patent?
Nimble Storage Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0246. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Aug 18 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).