IP Library › Granted Patent US 7,840,759
Granted Patent B2
US 7,840,759 · App. 11/689,265 · Granted Nov 23, 2010

Shared cache eviction

Assignee: International Business Machines Corporation
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,840,759
App. No.
11/689,265
Granted
Nov 23, 2010
Kind
B2
Abstract

Methods and systems for shared cache eviction in a multi-core processing environment having a cache shared by a plurality of processor cores are provided. Embodiments include receiving from a processor core a request to load a cache line in the shared cache; determining whether the shared cache is full; determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache if the shared cache is full; and evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache.

Claims (38)

1. A method for shared cache eviction, the method implemented in a multi-core processing environment having a cache shared by a plurality of processor cores, the method comprising:

receiving from a processor core a request to load a cache line in the shared cache;

determining whether the shared cache is full;

determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache if the shared cache is full; and

evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache.

2. The method of claim 1 wherein evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises evicting a cache line accessed by the fewest number of processor cores.

3. The method of claim 1 wherein evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises:

selecting a least recently used cache line that that has been accessed by fewer than all the processor cores; and

evicting the selected cache line.

4. The method of claim 1 wherein evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises:

selecting a least frequency used cache line that that has been accessed by fewer than all the processor cores; and

evicting the selected cache line.

5. The method of claim 1 wherein determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises searching in a cache reference directory for cache lines identified as having been accessed by fewer than all the processor cores.

6. The method of claim 1 further comprising writing, to a core ID field in the cache reference directory in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor accessing the cache line.

7. The method of claim 1 further comprising writing, to a core ID bit field in a cache line in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor core accessing the cache line.

8. The method of claim 7 wherein determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises reading a core ID bit field from a cache line in the shared cache and determining in dependence upon the contents of the core ID bit field whether the cache line was accessed by fewer than all the processor cores sharing the cache.

9. A system or shared cache eviction, the system including a multi-core processing environment having a cache shared by a plurality of processor cores, the system comprising:

means for receiving from a processor core a request to load a cache line in the shared cache;

means for determining whether the shared cache is full;

means for determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache if the shared cache is full; and

means for evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache if a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache.

10. The system of claim 9 wherein means for evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache further comprises means for evicting a cache line accessed by the fewest number of processor cores.

11. The system of claim 9 wherein means for evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache further comprises:

means for selecting a least recently used cache line that that has been accessed by fewer than all the processor cores; and

means for evicting the selected cache line.

12. The system of claim 9 wherein means for evicting a cache line that has been accessed by fewer than all the processor cores sharing the cache further comprises:

means for selecting a least frequency used cache line that that has been accessed by fewer than all the processor cores; and

means for evicting the selected cache line.

13. The system of claim 9 wherein means for determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises means for searching in a cache reference directory for cache lines identified as having been accessed by fewer than all the processor cores.

14. The system of claim 9 further comprising means for writing, to a core ID field in the cache reference directory in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor accessing the cache line.

15. The system of claim 9 further comprising means for writing, to a core ID bit field in a cache line in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor core accessing the cache line.

16. The system of claim 15 wherein means for determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache further comprises means for reading a core ID bit field from a cache line in the shared cache and means for determining in dependence upon the contents of the core ID bit field whether the cache line was accessed by fewer than all the processor cores sharing the cache.

17. A multi-core processing system having a cache shared by a plurality of processor cores, the system comprising:

control logic coupled to the plurality of processor cores and the shared cache; and

a cache reference tracker coupled to the control logic capable of determining whether a cache line is stored in the shared cache that has been accessed by fewer than all the processor cores sharing the cache if the shared cache is full,

wherein the control logic is further capable of evicting a cache line if the cache is full and if the cache line has been accessed by fewer than all the processor cores sharing the cache.

18. The multi-core processing system of claim 17 wherein the cache reference tracker is capable of writing, to a core ID field in a cache reference directory in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor accessing the cache line.

19. The multi-core processing system of claim 17 wherein the cache reference tracker is capable of writing, to a core ID bit field in a cache line in response to a processor core accessing a cache line in the shared cache, a core ID for the core processor accessing the cache line.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2007
From: KORNEGAY, MARCUS L.; PHAM, NGAN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 019165/0227 →
Continuity (1)
Related Publication 20080235456A1 · Sep 25, 2008