Cache system having ability to store compressed and uncompressed data lines
Original Publication Date: 2002-Feb-17
Included in the Prior Art Database: 2003-Jun-21
Disclosed is a system for storing both compressed and uncompressed lines of data. The basic architecture of a cache system in accordance with the present disclosure has a variable associativity, the associativity being determined by the number of lines which can be stored in a physical line. By storing data lines in a compressed format in a cache system, the application-perceived amount of data can be increased significantly, thereby leading to a reduction in cache miss rate and system bus traffic. A cache system storing both compressed and uncompressed lines of data is shown in Fig. 1. The system is comprised of a memory array storing a number of data lines, two tags per line (including valid, dirty, and cache management information as necessary), and a compression indicator. Each physical memory line is divided into 2 sectors. A line can store either one uncompressed data line, or up to two compressed data lines, each data line having been compressed to require up to half a physical line of storage (sector). When a cache lookup is performed, the physical data line and both tags are retrieved simultaneously. The tags are compared under the control of the compression indicator. The tags are referred to as primary and secondary tag, the primary tag being used for all uncompressed data lines and for a first sector storing a compressed line, the secondary tag used for a second sector storing a compressed line. If an uncompressed line is being processed (as indicated by the compression indicator), and a tag match is found, the physical line can be supplied to the requester. If a compressed line is being processed, and one of the tags is found to match, then the compressed data is selected from the appropriate storage sector, (optionally) aligned, and (optionally) decompressed.