Patent US5530958A successfully refreshed from Google Patents.
US5530958A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Cache memory system and method with multiple hashing functions and hash control storage
Assignee: Massachusetts Institute of Technology
•
Filing: 1994-12-23
•
Granted: 1996-06-25
•
Expires: 2014-12-23
Abstract
Abstract A column-associative cache that reduces conflict misses, increases the hit rate and maintains a minimum hit access time. The column-associative cache indexes data from a main memory into a plurality of cache lines according to a tag and index field through hash and rehash functions. The cache lines represent a column of sets. Each cache line contains a rehash block indicating whether the set is a rehash location. To increase the performance of the column-associative cache, a content addressable memory (CAM) is used to predict future conflict misses.
Inventors
- 👤 Anant Agarwal
- 👤 Steven D. Pudar
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-03 18:33
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/12; G06F12/121; G06F12/123; G06F12/0802; G06F12/0864
Claims Analysis
Total Claims: 30
Claim 1
Independent Claim
178 words
A cache memory system comprising: a cache memory having a plurality of cache locations, each for storing a cache line of data, separately accessed from a main memory, and having a first tag memory, each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and different indexes access common memory locations through the first and second hashing functions; hash control storage storing control data comprising hash data associated with each cache location which indicates the hashing function used to store data in the cache location; and a controller coupled to the cache memory responsive to memory addresses in accesses to the main memory for accessing data in the cache memory through the first and second hashing functions and for replacing data in the cache memory from the main memory responsive to the control data and to comparisons between tags of the memory addresses and tags stored in the first tag memory.
Claim 2
Dependent Claim
178 words
A cache memory system comprising: a cache memory having a plurality of cache locations, each for storing a cache line of data, separately accessed from a main memory, and having a first tag memory, each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and different indexes access common memory locations through the first and second hashing functions; hash control storage storing control data comprising hash data associated with each cache location which indicates the hashing function used to store data in the cache location; and a controller coupled to the cache memory responsive to memory addresses in accesses to the main memory for accessing data in the cache memory through the first and second hashing functions and for replacing data in the cache memory from the main memory responsive to the control data and to comparisons between tags of the memory addresses and tags stored in the first tag memory.
Claim 3
Dependent Claim
61 words
A cache memory system as claimed in claim 1 wherein the controller checks the hash data of the cache location indexed by the first hashing function when there is a miss at that cache location and applies the second hashing function only when said hash data indicates data stored in the cache location was not stored using the second hashing function.
Claim 4
Dependent Claim
46 words
A cache memory system as claimed in claim 1 wherein the controller responds to the hash data to determine whether to replace data stored in a first location indexed through the first cache hashing function or a second cache location indexed through the second hashing function.
Claim 5
Dependent Claim
30 words
A cache memory system as claimed in claim 3 wherein the controller swaps data replaced in a cache location with data in another cache location indexed by a common index.
Claim 6
Dependent Claim
48 words
A cache memory system as claimed in claim 1 further comprising a second tag memory coupled to the controller for storing as control data at least portions of memory addresses that indicate that data stored in a cache location is likely indexed through one of the hashing functions.
Claim 7
Dependent Claim
125 words
A cache memory system as claimed in claim 5 wherein the controller accesses cache memory locations through the first hashing function or the second hashing function dependent on whether at least a portion of a memory address is stored in the second tag memory and, where a miss results at a cache memory location with access through the first hashing function and the second hashing function, the controller replaces the data stored through the first hashing function if said hash data indicates the data accessed through the first hashing function had been stored using the second hashing function, or through the second hashing function if said hash data indicates the data accessed through the first hashing function had been stored using the first hashing function.
Claim 8
Dependent Claim
48 words
A cache memory system as claimed in claim 1 wherein the hash control storage comprises a second tag memory coupled to the controller for storing as control data at least portions of memory addresses that indicate a likely hashing function through which data stored in cache is indexed.
Claim 9
Dependent Claim
19 words
A cache memory system as claimed in claim 7 wherein the second tag memory is a content addressable memory.
Claim 10
Dependent Claim
191 words
A cache memory system comprising: a cache memory having a plurality of cache locations, each for storing a cache line of data, separately accessed from a main memory, and having a first tag memory, each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and such that different indexes access common memory locations through the first and second hashing functions; hash data associated with each of the plurality of cache locations for indicating the hashing function used to store data therein; and a controller coupled to the cache memory for accessing data in the cache locations through the first and second hashing functions and for replacing data in the cache locations from main memory, the controller being responsive to the hash data and a comparison of tags of the memory address and stored tags in cache memory in determining whether to replace data in a first location accessed through the first hashing function or in a second location accessed through the second hashing function.
Claim 11
Dependent Claim
191 words
A cache memory system comprising: a cache memory having a plurality of cache locations, each for storing a cache line of data, separately accessed from a main memory, and having a first tag memory, each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and such that different indexes access common memory locations through the first and second hashing functions; hash data associated with each of the plurality of cache locations for indicating the hashing function used to store data therein; and a controller coupled to the cache memory for accessing data in the cache locations through the first and second hashing functions and for replacing data in the cache locations from main memory, the controller being responsive to the hash data and a comparison of tags of the memory address and stored tags in cache memory in determining whether to replace data in a first location accessed through the first hashing function or in a second location accessed through the second hashing function.
Claim 12
Dependent Claim
18 words
A cache memory system according to claim 9, wherein the first hashing function is a bit selection operation.
Claim 13
Dependent Claim
39 words
A cache memory system according to claim 9, wherein the controller checks the hash data of a cache location indexed by the first hashing function when there is a miss to determine whether to apply the second hashing function.
Claim 14
Dependent Claim
20 words
A cache memory system according to claim 9, wherein the second hashing function is a bit selection and flipping operation.
Claim 15
Dependent Claim
38 words
A cache memory system according to claim 9, wherein the controller removes the data from the cache location indexed by the second hashing function after a miss and retrieves new data from the main memory in place therefor.
Claim 16
Dependent Claim
38 words
A cache memory system according to claim 13, wherein the controller swaps the new data in the cache location indexed by the second hashing function with the data in the cache location indexed by the first hashing function.
Claim 17
Dependent Claim
57 words
A cache memory system according to claim 9, wherein the controller responds to a miss at a cache location through the first hashing function, and to hash data indicating data is stored at that cache location through the second hashing function, to remove data from that cache location and retrieve data from main memory in place therefor.
Claim 18
Dependent Claim
30 words
A cache memory system as claimed in claim 15 wherein the controller swaps data replaced in a cache location with data in another cache location indexed by a common index.
Claim 19
Dependent Claim
66 words
A cache memory system according to claim 9, further comprising a second tag memory coupled to the controller for storing at least portions of addresses that indicate that data stored in a cache location is likely to be indexed through the second hashing function, the controller using the second hashing function in the initial cache indexing where an address is found in the second tag memory.
Claim 20
Dependent Claim
205 words
A cache memory system comprising: a cache data memory having a plurality of cache locations for storing plural cache lines of data, each cache location being referenced by a memory address having an index field and a tag field, and each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and such that different indexes access common memory locations through the first and second hashing functions; a first tag memory coupled to the cache data memory for storing the tag fields of the data stored in the plurality of cache locations; hash data coupled to the cache data memory for indicating hashing functions used to index data in the cache locations; a second tag memory coupled to the cache data memory for storing at least portions of memory addresses that indicate that data stored in a cache location is likely indexed through one of the hashing functions; and a controller responsive to the hash data, the first tag memory and the second tag memory for indexing memory addresses according to at least one of the plural hashing functions.
Claim 21
Dependent Claim
205 words
A cache memory system comprising: a cache data memory having a plurality of cache locations for storing plural cache lines of data, each cache location being referenced by a memory address having an index field and a tag field, and each cache location being indexed by indexes, taken from memory addresses, through first and second hashing functions such that plural memory addresses having a common index access plural memory locations through the first and second hashing functions and such that different indexes access common memory locations through the first and second hashing functions; a first tag memory coupled to the cache data memory for storing the tag fields of the data stored in the plurality of cache locations; hash data coupled to the cache data memory for indicating hashing functions used to index data in the cache locations; a second tag memory coupled to the cache data memory for storing at least portions of memory addresses that indicate that data stored in a cache location is likely indexed through one of the hashing functions; and a controller responsive to the hash data, the first tag memory and the second tag memory for indexing memory addresses according to at least one of the plural hashing functions.
Claim 22
Dependent Claim
33 words
A cache memory system according to claim 18, wherein the controller applies first and second hashing functions to a memory address, the second hashing function being a bit selection and bit flipping operation.
Claim 23
Independent Claim
164 words
A method for accessing data from a cache data memory, having a plurality of cache locations and a first tag memory, comprising the steps of: indexing a memory address having an index field and a tag field into an indexed cache location according to a hashing function; comparing a tag field of the memory address to a tag field in the first tag memory for the indexed cache location; and generating a hit when the tag field of the memory address matches the tag field of the indexed cache location, and generating a miss when the tag field of the memory address does not match the tag field of the indexed cache location, and in generating a miss, choosing between the step of indexing another cache location through another hashing function and the step of replacing data, the step of replacing data in the cache location being chosen if hash data indicates data located in the cache location was indexed through another hashing function.
Claim 24
Independent Claim
164 words
A method for accessing data from a cache data memory, having a plurality of cache locations and a first tag memory, comprising the steps of: indexing a memory address having an index field and a tag field into an indexed cache location according to a hashing function; comparing a tag field of the memory address to a tag field in the first tag memory for the indexed cache location; and generating a hit when the tag field of the memory address matches the tag field of the indexed cache location, and generating a miss when the tag field of the memory address does not match the tag field of the indexed cache location, and in generating a miss, choosing between the step of indexing another cache location through another hashing function and the step of replacing data, the step of replacing data in the cache location being chosen if hash data indicates data located in the cache location was indexed through another hashing function.
Claim 25
Dependent Claim
62 words
A method according to claim 20, further comprising the steps of connecting a content addressable memory to the cache data memory for storing portions of memory addresses, each portion indicating that data stored in a cache location is likely indexed through one of plural hashing functions, and checking the content addressable memory for a match with a portion of the memory address.
Claim 26
Dependent Claim
28 words
A method as claimed in claim 20 further comprising swapping the replaced data in a cache location with data in another cache location indexed by a common index.
Claim 27
Independent Claim
144 words
A method of accessing data from a cache data memory having a plurality of cache locations and first tag memory comprising the steps of: indexing a memory address having an index field and a tag field into an indexed cache location according to a hashing function applied to the index field; and comparing a tag field of the memory address to a tag field in the first tag memory for the indexed cache location; and storing control data which identifies the hashing function used to store data in each cache location; wherein data is accessed in the cache locations through first and second hashing functions and data is replaced in the cache locations from main memory responsive to the control data which is stored according to past cache operations and comparisons between tags of memory addresses and tags stored in the first tag memory.
Claim 28
Independent Claim
144 words
A method of accessing data from a cache data memory having a plurality of cache locations and first tag memory comprising the steps of: indexing a memory address having an index field and a tag field into an indexed cache location according to a hashing function applied to the index field; and comparing a tag field of the memory address to a tag field in the first tag memory for the indexed cache location; and storing control data which identifies the hashing function used to store data in each cache location; wherein data is accessed in the cache locations through first and second hashing functions and data is replaced in the cache locations from main memory responsive to the control data which is stored according to past cache operations and comparisons between tags of memory addresses and tags stored in the first tag memory.
Claim 29
Dependent Claim
39 words
A method as claimed in claim 23 further comprising determining from a second tag memory a hashing function through which data stored in a cache location is likely indexed and selects that hashing function for indexing the cache location.
Claim 30
Dependent Claim
37 words
A method as claimed in claim 23 further comprising swapping data in the cache location indexed by the second hashing function with the data in the cache location indexed by the first hashing function when replacing data.
References Cited (Backward Citations)
DE2154106A1
Cited
US5235697A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1999-06-25 | 1999-12-25 | 2000-06-25 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2003-06-25 | 2003-12-25 | 2004-06-25 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2007-06-25 | 2007-12-25 | 2008-06-25 | $7700.00 | Window Closed / Lapsed |