Cache with compressed data and tag

US9996471B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9996471-B2
Application numberUS-201615194902-A
CountryUS
Kind codeB2
Filing dateJun 28, 2016
Priority dateJun 28, 2016
Publication dateJun 12, 2018
Grant dateJun 12, 2018

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.

Cache line data and metadata are compressed and stored in first and, optionally, second memory regions, the metadata including an address tag When the compressed data fit entirely within a primary block in the first memory region, both data and metadata are retrieved in a single memory access. Otherwise, overflow data is stored in an overflow block in the second memory region. The first and second memory regions may be located in the same row of a DRAM, for example, or in different regions of a DRAM and may be configured to enable standard DRAM components to be used. Compression and decompression logic circuits may be included in a memory controller.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus for storing a plurality of cache lines, where each cache line is configured to store data and metadata associated with the data, and where the metadata includes an address tag, the apparatus comprising: a first memory region comprising a plurality of rows, each row of the plurality of rows comprising one or more primary blocks and each primary block sized to store data of a cache line; a second memory region comprising a plurality of overflow blocks, each overflow block associated with a primary block of the plurality of primary blocks; a first logic circuit configured to: compress data of a first cache line or both data and metadata of the first cache line to produce a compressed data block; when the compressed data block fits in a primary block, store the compressed data block in the first primary block; and a second logic circuit configured to: decompress data retrieved from a second primary block to recover data and metadata of a second cache line associated with an address; and determine if an address tag of the metadata matches the address, where the first logic circuit is further configured to: assert a ‘Fits’ bit associated with a first primary block when the compressed data block fits in a primary block and is stored in the first primary block; and when the compressed data block does not fit in a primary block, de-assert the ‘Fits’ bit associated with the first primary block, store a first portion of the data and metadata of the first cache line in the first primary block and store a second portion of the data and metadata of the first cache line in an overflow block associated with the first primary block; and where the second logic circuit is further configured to: decompress data retrieved from a second primary block to recover data and metadata of a second cache line associated with an address when a ‘Fits’ bit associated with a second primary block is asserted; and when the ‘Fits’ bit associated with the second primary block is not asserted, retrieve a first portion of the data and metadata of the second cache line from the second primary block and retrieve a second portion of the data and metadata of the second cache line from a second overflow block, where the second overflow block is associated with the second primary block. 2. The apparatus of claim 1 , where an overflow block of the plurality of overflow blocks is located in the same memory row as the primary block with which it associated. 3. The apparatus of claim 2 , where a size of an overflow block of the plurality of overflow blocks is insufficient to store metadata of a cache line and where the memory row is configured to store a ‘RowOverflow’ bit, the apparatus further comprising: a third memory region of sufficient size to store metadata of the plurality of cache lines in a plurality of third overflow blocks; where the first logic circuit is configured to: store a first portion of the data and metadata of the first cache line in the first primary block and store a second portion of the data and metadata of the first cache line of the first cache line in a third overflow block associated with the first primary block when a memory row is not large enough to hold all of the compressed data associated with the memory and assert the ‘RowOverflow’ bit of the memory row; and where the second logic circuit is configured: retrieve data from the second primary block and a third overflow block to recover data and metadata of the first cache line, when the ‘RowOverflow’ bit is asserted, where the third overflow block is associated with the second primary block. 4. The apparatus of claim 3 , where each primary block of the first memory region is associated with one overflow block of the third memory region in a direct mapping. 5. The apparatus of claim 1 , where an overflow block of the plurality of overflow blocks is sized to store metadata of a cache line. 6. The apparatus of claim 1 , where each primary block of the first memory region is associated with one overflow block of the second memory region. 7. The apparatus of claim 1 , further comprising a memory controller that comprises the first and second logic circuits, where the first memory region and the second memory region are regions of a dynamic random access memory (DRAM) and where the memory controller is coupled to the DRAM via a bus. 8. The apparatus of claim 1 , where the first logic circuit is configured to store the first and second portions of the data and metadata of the first cache line in a compressed form when the compressed data block does not fit in a primary block. 9. The apparatus of claim 1 , where the first logic circuit is configured to store the first and second portions of the data and metadata of the first cache line in uncompressed form when the compressed data block does not fit in a primary block. 10. The apparatus of claim 1 , further comprising a cache client. 11. The apparatus of claim 1 , further comprising a memory controller that comprises the first and second logic circuits. 12. The apparatus of claim 1 , further comprising a backing storage device, where the address comprises an address in the backing storage device. 13. The apparatus of claim 12 , where the backing storage device comprises a storage class memory (SCM). 14. A non-transient computer readable medium containing instructions of a hardware language that define the apparatus of claim 1 . 15. A method of reading a cache line containing cache line data and cache line metadata, the method comprising: locating a primary block in a first memory region, the primary block associated with the cache line; reading first data in the located primary block; if a ‘fits’ bit associated with the first data is asserted, decompressing the first data, to obtain the cache line data and the cache line metadata; if the ‘fits’ bit associated with the first data is not asserted: locating an overflow block in a second memory region, the overflow block associated with the located primary block; reading second data held in the overflow block; and combining the first and second data to obtain the cache line data and the cache line metadata. 16. The method of claim 15 , further comprising: identifying the cache line from an address in a backing storage device; identifying a first address tag from the address; comparing the first address tag with a second address tag of the metadata; where the cache line is associated with an address, the method further comprising; and reading the backing storage device at the address if the first and second tags do not match. 17. The method of claim 16 , where the backing storage device comprises a storage class memory (SCM). 18. The method of claim 16 , where the first memory region and the second memory region are regions of a dynamic random access memory (DRAM) and where reading the first data comprises accessing the DRAM via a data bus structure. 19. A method of writing a cache line containing cache line data and cache line metadata to a memory comprising a first memory region configured as a plurality of primary block and a second memory region configured as a plurality of overflow blocks, each overflow block of the plurality of overflow block associated with a corresponding primary block of the plurality of primary block, the method comprising: compressing the cache line data and the cache line metadata to produce compressed data; if the compressed data fits within a primary block of the plurality of pri

Assignees

Inventors

Classifications

  • Data transfer between cache memory and other subsystems, e.g. storage devices or host systems · CPC title

  • Compressed data · CPC title

  • being part of a memory device, e.g. cache DRAM · CPC title

  • Allocation or management of cache space · CPC title

  • Metadata, control data · 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 US9996471B2 cover?
Cache line data and metadata are compressed and stored in first and, optionally, second memory regions, the metadata including an address tag When the compressed data fit entirely within a primary block in the first memory region, both data and metadata are retrieved in a single memory access. Otherwise, overflow data is stored in an overflow block in the second memory region. The first and sec…
Who is the assignee on this patent?
Advanced Risc Mach Ltd
What technology area does this patent fall under?
Primary CPC classification G06F12/0868. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 12 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 11 related publications on this page (citations in our corpus or others sharing the same primary CPC).