IP Library Granted Patent US 8,990,506
Granted Patent B2
US 8,990,506 · App. 12/639,191 · Granted Mar 24, 2015

Replacing cache lines in a cache memory based at least in part on cache coherency state information

Inventors: Naveen Cherukuri (San Jose, CA); Dennis W. Brzezinski (Sunnyvale, CA); Ioannis T. Schoinas (Portland, OR); Anahita Shayesteh (San Jose, CA); Akhilesh Kumar (Sunnyvale, CA); Mani Azimi (Menlo Park, CA)
Assignee: Intel Corporation
G06F12/121G06F12/084G06F12/126
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 8,990,506
App. No.
12/639,191
Granted
Mar 24, 2015
Kind
B2
Abstract

In one embodiment, the present invention includes a cache memory including cache lines that each have a tag field including a state portion to store a cache coherency state of data stored in the line and a weight portion to store a weight corresponding to a relative importance of the data. In various implementations, the weight can be based on the cache coherency state and a recency of usage of the data. Other embodiments are described and claimed.

Claims (25)

1. A processor comprising:

a cache memory comprising an adaptive shared cache memory comprising a plurality of banks each to be associated with a corresponding core and to provide private cache storage and shared cache storage, the cache memory including a plurality of cache lines each having a data field to store data and a tag field including a state portion to store a cache coherency state of the corresponding data and a weight portion to store a weight corresponding to a relative importance of the corresponding data, wherein the weight is based at least in part on the cache coherency state and is reflective of a relative cost of acquisition of a cache line including the corresponding data, the relative cost comprising a cost ratio according to a miss latency for acquisition of the cache line, and wherein a first cache line in a shared state is to be given a higher weight than a second cache line in the shared state based at least in part on a number of copies of the first cache line in the cache memory and a number of copies of the second cache line in the cache memory.

2. The processor of claim 1 , wherein the weight is further based on recency of usage of the corresponding data.

3. The processor of claim 2 , wherein the weight is further based on attribute information associated with the corresponding data.

4. The processor of claim 3 , wherein the tag field further includes a weight field to store the weight and an attribute field to store the attribute information.

5. The processor of claim 3 , wherein the attribute information comprises a priority of an application to access the corresponding data, wherein the application is to execute in a virtual machine architecture.

6. The processor of claim 1 , further comprising a cache controller to select a cache line of the plurality of cache lines for replacement based on the corresponding weights of the cache lines.

7. The processor of claim 6 , wherein the cache controller is to update a weight for a cache line when the corresponding data is accessed, wherein the update is to increment the weight to a value corresponding to the cache coherency state of the cache line and to decrement a weight of at least one other cache line.

8. The processor of claim 7 , wherein if at least one cache line of the plurality of cache lines has a weight corresponding to a minimum weight no decrement of the weight of the at least one other cache line occurs.

9. The processor of claim 6 , wherein the cache controller is to access the weight using a weight table based on the attribute information or a cache coherency state of the cache line, the weight table including a plurality of entries each associating a weight with attribute/cache coherency state information, to provide the weight for a cache line inserted into the cache memory.

10. The processor of claim 1 , wherein the first cache line in the shared state is to be given the higher weight than the second cache line in the shared state when a single copy of the first cache line is present in the adaptive shared cache memory and a plurality of copies of the second cache line is present in the adaptive shared cache memory, and a third cache line in a modified state is to be given a higher weight than the second cache line and a lower weight than the first cache line.

11. A method comprising:

selecting a line of a plurality of lines of a set of a cache memory having a lowest weight as a victim, wherein each line has a weight corresponding to a criticality of the line, the criticality based at least in part on of a cache coherency state of data stored in the line and an access recency of the line, and wherein the weight is reflective of a relative cost of acquisition of the line according to a miss latency for acquisition of the line, the relative cost of acquisition comprising a cost ratio and wherein a second line in a shared state is to be given a higher weight than the selected line in the shared state when a single copy of the second line is present in the cache memory and a plurality of copies of the selected line is present in the cache memory;

fetching data responsive to a request and storing the data in the selected line; and

determining a weight for the selected line based on the cache coherency state of the data stored in the line, and storing the weight in a weight field of the line.

12. The method of claim 11 , further comprising upon a cache hit to the line, restoring the weight if a cache coherency state of the line does not change.

13. The method of claim 12 , further comprising determining if any lines of the set have a weight of zero.

14. The method of claim 13 , further comprising decrementing non-accessed lines of the set if none of the lines have a zero weight, and not decrementing non-accessed lines of the set if at least one of the lines has a zero weight.

15. The method of claim 11 , further comprising receiving attribute information with the request, the attribute information indicating importance of the data.

16. The method of claim 15 , further comprising determining the weight using a weight table based on the attribute information and a cache coherency state of the line, the weight table including a plurality of entries each associating a weight with an attribute and cache coherency state combination.

17. The method of claim 15 , wherein the attribute information is obtained from a user-level instruction of an instruction set architecture associated with the request.

18. A system comprising:

a multicore processor including a plurality of processor cores and a shared cache memory having a plurality of banks each associated with one of the processor cores, wherein each bank is to provide private cache storage and shared cache storage, and includes a plurality of cache lines each having a data field to store data and a tag field including a state portion to store a cache coherency state of the corresponding data, and a weight field to store a weight based on the cache coherency state of the corresponding data and a recency of access to the cache line, wherein a first weight is to be assigned to a first cache coherency state, a second weight is to be assigned to a second cache coherency state, and a third weight is to be assigned to a third cache coherency state, wherein the first cache coherency state is a shared state in which a first cache line includes data shared by at least some of the plurality of processor cores, the second cache coherency state is a modified state, and the third cache coherency state is a shared state in which the first cache line includes data duplicated in multiple cache lines.

19. The system of claim 18 , wherein the tag field further comprises an attribute field to store attribute information associated with the data, wherein the weight is further based on the attribute information.

20. The system of claim 18 , wherein a first cache line in a shared state is to be given a higher weight than a second cache line in the shared state when a single copy of the first cache line is present in the shared cache memory and a plurality of copies of the second cache line is present in the shared cache memory, and a third cache line in a modified state is to be given a higher weight than the second cache line and a lower weight than the first cache line.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2009
From: CHERUKURI, NAVEEN; BRZEZINSKI, DENNIS W.; SCHOINAS, IONNIS T.; SHAYESTEH, ANAHITA; KUMAR, AKHILESH; AZIMI, MANI
To: INTEL CORPORATION
Reel/Frame 023661/0709 →
Continuity (1)
Related Publication 20110145506A1 · Jun 16, 2011