IP Library › Granted Patent US 11,681,620
Granted Patent B2
US 11,681,620 · App. 17/384,420 · Granted Jun 20, 2023

Using error correction code (ECC) bits for retaining victim cache lines in a cache block in a cache memory

Inventors: Marko Scrbak (Austin, TX); Jagadish Kotra (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F12/0808G06F11/1064G06F2212/1044
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 11,681,620
App. No.
17/384,420
Granted
Jun 20, 2023
Kind
B2
Abstract

An electronic device includes a cache memory and a controller. The cache memory includes a set of cache blocks, each cache block having a number of locations usable for storing cache lines. The cache memory also includes a separate set of error correction code (ECC) bits for each of the locations. The controller stores a victim cache line, evicted from a first location in the cache block, in a second location in the cache block. The controller next stores victim reference information in a portion of the plurality of ECC bits for the first location, the victim reference information indicating that the victim cache line is stored in the second location.

Claims (62)

1. A cache memory, comprising:

a plurality of cache blocks, each cache block including a plurality of locations usable for storing cache lines and a plurality of error correction code (ECC) bits for each location; and

a controller configured to:

store a victim cache line, evicted from a first location in the cache block, in a second location in the cache block; and

store victim reference information in a portion of a plurality of ECC bits for the first location, the victim reference information indicating that the victim cache line is stored in the second location.

2. The cache memory of claim 1 , wherein the controller is further configured to:

perform a lookup for the victim cache line in the cache memory, the lookup including acquiring the victim reference information from the portion of the plurality of ECC bits for the first location; and

using the victim reference information, access the victim cache line in the second location.

3. The cache memory of claim 1 , wherein the controller is further configured to:

store origin information in a portion of a plurality of ECC bits for the second location, the origin information including:

a victim bit that identifies the victim cache line as having been evicted;

an origin pointer that identifies the first location; and

a tag that identifies the victim cache line.

4. The cache memory of claim 3 , wherein the controller is further configured to, when evicting the victim cache line from the second location in the cache block;

using the origin information, clear the victim reference information in the portion of the plurality of ECC bits for the first location; and

clear the origin information in the portion of the plurality of ECC bits for the second location.

5. The cache memory of claim 1 , wherein victim reference information includes:

a tag that identifies the victim cache line; and

a victim pointer that identifies the second location.

6. The cache memory of claim 5 , wherein the victim pointer includes an offset from a specified location in the cache block to the second location.

7. The cache memory of claim 1 , wherein the controller is further configured to:

store an other cache line in the first location; and

store a tag that identifies the other cache line and any ECC information for the other cache line into respective other portions of the plurality of ECC bits for the first location, the other portions being different than the portion of the plurality of ECC bits for the first location.

8. The cache memory of claim 1 , wherein the controller is configured to:

select the second location, the second location being selected:

from among all of the plurality of locations;

from among locations in the plurality of locations based on prior accesses of cache lines currently stored in the plurality of locations; or

from among locations in the plurality of locations that do not presently store cache lines.

9. The cache memory of claim 1 , wherein the controller is configured to:

before evicting the victim cache line from the first location, check a victim bit in the plurality of ECC bits for the first location to determine whether the victim cache line was stored in the first location after having been previously evicted from a third location in the cache block; and

when the victim bit is set, evict the victim cache line from the cache block without retaining the victim cache line in the cache block.

10. The cache memory of claim 1 , wherein the cache memory is fabricated using dynamic random access (DRAM) memory circuitry and the cache block includes a row of the DRAM memory circuitry.

11. A method for retaining victim cache lines in a cache memory that includes a plurality of cache blocks, each cache block including a plurality of locations usable for storing cache lines and a plurality of error correction code (ECC) bits for each location, the method comprising:

storing a victim cache line, evicted from a first location in the cache block, in a second location in the cache block; and

storing victim reference information in a portion of a plurality of ECC bits for the first location, the victim reference information indicating that the victim cache line is stored in the second location.

12. The method of claim 11 , further comprising:

performing a lookup for the victim cache line in the cache memory, the lookup including acquiring the victim reference information from the portion of the plurality of ECC bits for the first location; and

using the victim reference information, accessing the victim cache line in the second location.

13. The method of claim 11 , further comprising:

storing origin information in a portion of a plurality of ECC bits for the second location, the origin information including:

a victim bit that identifies the victim cache line as having been evicted;

an origin pointer that identifies the first location; and

a tag that identifies the victim cache line.

14. The method of claim 13 , further comprising, when evicting the victim cache line from the second location in the cache block:

using the origin information, clearing the victim reference information in the portion of the plurality of ECC bits for the first location; and

clearing the origin information in the portion of the plurality of ECC bits for the second location.

15. The method of claim 11 , wherein victim reference information includes:

a tag that identifies the victim cache line; and

a victim pointer that identifies the second location.

16. The method of claim 15 , wherein the victim pointer includes an offset from a specified location in the cache block to the second location.

17. The method of claim 11 , further comprising:

storing an other cache line in the first location; and

storing a tag that identifies the other cache line and any ECC information for the other cache line into respective other portions of the plurality of ECC bits for the first location, the other portions being different than the portion of the plurality of ECC bits for the first location.

18. The method of claim 11 , further comprising:

selecting the second location, the second location being selected:

from among all of the plurality of locations;

from among locations in the plurality of locations based on prior accesses of cache lines currently stored in the plurality of locations; or

from among locations in the plurality of locations that do not presently store cache lines.

19. The method of claim 11 , further comprising:

before evicting the victim cache line from the first location, checking a victim bit in the plurality of ECC bits for the first location to determine whether the victim cache line was stored in the first location after having been previously evicted from a third location in the cache block; and

when the victim bit is set, evicting the victim cache line from the cache block without retaining the victim cache line in the cache block.

20. The method of claim 11 , wherein the cache memory is fabricated using dynamic random access (DRAM) memory circuitry and the cache block includes a row of the DRAM memory circuitry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2021
From: SCRBAK, MARKO; KOTRA, JAGADISH
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 056967/0086 →
Continuity (1)
Related Publication 20230022320A1 · Jan 26, 2023
Cited By (1)
US 12,373,207