IP Library Granted Patent US 7,725,656
Granted Patent B1
US 7,725,656 · App. 11/583,463 · Granted May 25, 2010

Braided set associative caching techniques

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,725,656
App. No.
11/583,463
Granted
May 25, 2010
Kind
B1
Abstract

A method and apparatus for storing and retrieving data in an N-way set associative cache with N data array banks is disclosed. On a cache fill corresponding to a particular way, a portion of each cache line (called a chunk) is placed in each data array bank. On a processor load seeking a requested chunk, a candidate chunk is retrieved from each data array bank and the requested chunk is selected from among the candidates.

Claims (50)

1. A method of retrieving a requested chunk corresponding to a requested address from an N-way set associative cache with said set associative cache comprising N data array banks and a cache line comprising the requested chunk and N−1 other chunks said method comprising:

filling said N-way set associative cache with the cache line wherein said filling comprises storing each chunk of said cache line into a distinct data array bank using a braiding function, wherein

each cache line is indexed with a chunk index;

each cache line shares a common set index;

each cache line has a distinct way; and

said N data array banks store said N cache lines of N chunks at locations corresponding to the common set index where (i) each data array bank holds N chunks with distinct chunk index values; and (ii) each data array bank holds a chunk from each cache line;

retrieving from each data array bank a candidate chunk corresponding to a distinct way; and

selecting the requested chunk from the retrieved candidate chunks using an unbraiding function.

2. The method of claim 1 wherein said retrieving occurs in each data array bank concurrently.

3. The method of claim 1 wherein said storing occurs concurrently.

4. The method of claim 1 wherein N is 2.

5. The method of claim 1 wherein N is 4.

6. The method of claim 1 wherein N is 8.

7. The method of claim 1 further comprising said N-way set associative cache producing a way hit signal from a first portion of said requested address and wherein said selecting is based on a function of said way hit signal and a second portion of said requested address.

8. The method of claim 7 wherein said function is a bit wise exclusive OR.

9. The method of claim 7 wherein said function is a modulus sum of said inputs.

10. The method of claim 7 wherein said function is a modulus difference of said inputs.

11. The method of claim 1 wherein said cache line further comprises an additional N chunks and said filling step is repeated for said additional N chunks.

12. An N-way set associative cache supporting a properly banked way chunk permutation function, the N-way set associative cache comprising:

N data array banks each comprising an address input and a data output;

N braiding functions derived from the properly banked way chunk permutation function with each braiding function coupled to one of the address inputs;

a multiplexor coupled to each of the data outputs and comprising a selection input; and

an unbraiding function derived from the properly banked way chunk permutation function and coupled to the selection input.

13. An N-way set associative cache with an address input comprising a chunk index, the N-way set associative cache comprising:

a way hit signal;

a load multiplexor comprising a selection input;

an unbraiding function with the chunk index and the way hit signal as inputs and producing an output to the selection input; and

N data array banks with each comprising a data output that is coupled to the load multiplexor.

14. The N-way set associative cache of claim 13 , wherein the unbraiding function is a bitwise exclusive OR of the inputs.

15. The N-way set associative cache of claim 13 , wherein the unbraiding function is the modulus sum of the inputs.

16. The N-way set associative cache of claim 13 , wherein the unbraiding function is the modulus difference of the inputs.

17. The N-way set associative cache of claim 13 , wherein each data array bank further comprises an address input and further comprising:

N braiding functions derived from the unbraiding function with each braiding function coupled to the address input of one of the corresponding data array banks.

18. The N-way set associative cache of claim 17 , wherein the unbraiding function output is a bitwise exclusive or of the inputs.

19. The N-way set associative cache of claim 17 , wherein the unbraiding function is the modulus sum of the inputs.

20. The N-way set associative cache of claim 17 , wherein the unbraiding function is the modulus difference of the inputs.

21. An N-way set associative cache, comprising:

N cache lines of data each comprising N chunks stored using a braiding function wherein:

each cache line is indexed with a chunk index;

each cache line shares a common set index; and

each cache line has a distinct way;

N data array banks storing the N cache lines of N chunks at locations corresponding to the common set index where (i) each data array bank holds N chunks with distinct chunk index values; and (ii) each data array bank holds a chunk from each cache line.

22. A caching method comprising:

a means for braiding data over N banks of an N-way set associative cache; and

a means for outputting unbraided data from said cache.

23. The method of claim 22 , wherein said means for braiding data permutes a cache line of data where (i) each data array bank of said cache holds N chunks of data with distinct chunk index values, and (ii) each data array bank holds a chunk from each cache line, wherein N cache lines of data each comprise N chunks, each cache line is indexed with a chunk index, each cache line share a common set index and each cache line has a distinct way.

24. The method of claim 22 , wherein said means for braiding data shuffles a way and chunk index of said cache line of data to distribute chunks belonging to a particular way across each data array bank of said cache and to put chunks with a same chunk index but belonging to a different way in different data array banks.

25. The method of claim 22 , wherein said means for braiding data permutes the ways and chunks over said N banks and rows in those N banks within each set.

26. The method of claim 22 , wherein said means for braiding data is a function of a bank index, a chunk index, a way, and a type of cache operation.

27. The method of claim 22 , wherein said means for unbraiding data is a function of a way hit indication and a chunk index.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME PREVIOUSLY RECORDED AT REEL: 036711 FRAME: 0160. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 6, 2015
From: INTELLECTUAL VENTURES FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036797/0356 →
MERGER Recorded Sep 29, 2015
From: INTELLECTUAL VENTURE FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036711/0160 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2009
From: TRANSMETA LLC
To: INTELLECTUAL VENTURE FUNDING LLC
Reel/Frame 023268/0771 →
MERGER Recorded Mar 26, 2009
From: TRANSMETA CORPORATION
To: TRANSMETA LLC
Reel/Frame 022454/0522 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2006
From: ROZAS, GUILLERMO; KLAIBER, ALEXANDER; MASLEID, ROBERT P.; BANNING, JOHN; VAN ZOEREN, JAMES; SERRIS, PAUL
To: TRANSMETA CORPORATION
Reel/Frame 018446/0542 →