IP Library Granted Patent US 7,949,831
Granted Patent B2
US 7,949,831 · App. 11/934,595 · Granted May 24, 2011

Maintaining cache coherence using load-mark metadata to deny invalidation of load-marked cache lines

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,949,831
App. No.
11/934,595
Granted
May 24, 2011
Kind
B2
Abstract

Embodiments of the present invention provide a system that maintains load-marks on cache lines. The system includes: (1) a cache which accommodates a set of cache lines, wherein each cache line includes metadata for load-marking the cache line, and (2) a local cache controller for the cache. Upon determining that a remote cache controller has made a request for a cache line that would cause the local cache controller to invalidate a copy of the cache line in the cache, the local cache controller determines if there is a load-mark in the metadata for the copy of the cache line. If not, the local cache controller invalidates the copy of the cache line. Otherwise, the local cache controller signals a denial of the invalidation of the cache line and retains the copy of the cache line and the load-mark in the metadata for the copy of the cache line.

Claims (51)

1. An apparatus that maintains load-marks on cache lines, comprising:

a cache that accommodates a set of cache lines, wherein each cache line includes metadata for load-marking the cache line;

a local cache controller for the cache;

wherein upon determining that a remote cache controller has made a request for a cache line that would cause the local cache controller to invalidate a copy of the cache line in the cache, the local cache controller determines if there is a load-mark in the metadata for the copy of the cache line;

if not, the local cache controller invalidates the copy of the cache line;

otherwise, the local cache controller sends a signal to the remote cache controller to indicate a denial of the invalidation of the cache line and retains the copy of the cache line and the load-mark in the metadata for the copy of the cache line;

wherein the load-mark is placed for a thread to indicate that no other threads can store to the cache line.

2. The apparatus of claim 1 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting an otherwise unused combination of a set of global cache-control lines to indicate the denial.

3. The apparatus of claim 1 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting a negative acknowledge (NACK) signal on a set of global cache-control lines to indicate the denial.

4. The apparatus of claim 1 , wherein determining that the remote cache controller has made a request for a cache line involves determining that a memory controller has forwarded the request from the remote cache controller to the local cache controller; and

wherein denying the invalidation request involves signaling a NACK to the memory controller to indicate the denial.

5. The apparatus of claim 1 , wherein when denying the invalidation of the load-marked cache line, the local cache controller asserts an indicator in the metadata for the copy of the cache line to prevent subsequent load-marks from being placed on the copy of the cache line.

6. The apparatus of claim 5 , wherein the local cache controller subsequently deasserts the indicator in the metadata for the copy of the cache line after exclusive access to the cache line has been granted.

7. The apparatus of claim 1 , wherein when determining if there is a load-mark in the metadata for the copy of the cache line, the local cache controller determines if a reader count is greater than zero in the metadata for the copy of the cache line.

8. The apparatus of claim 1 , wherein when determining if there is a load-mark in the metadata, the local cache controller determines if there exists a load-mark and a current timestamp in the metadata for the copy of the cache line.

9. The apparatus of claim 1 , wherein upon determining that the remote cache controller has made a non-NACKable request, the local cache controller invalidates the copy of the cache line.

10. The apparatus of claim 9 , wherein invalidating the copy of the cache line involves acknowledging the invalidation of the copy of the cache line.

11. A method for maintaining load-marks on a set of cache lines in a cache, comprising:

determining that a remote cache controller has made a request for a cache line that would cause a copy of the cache line in the cache to be invalidated;

determining if the copy of the cache line in the cache is load-marked;

if not, invalidating the copy of the cache line;

otherwise, sending a signal from the local cache controller to the remote cache controller to indicate a denial of the invalidation of the copy of the cache line and retaining the copy of the cache line and the load-mark in the metadata for the copy of the cache line;

wherein the load-mark is placed for a thread to indicate that no other threads can store to the cache line.

12. The method of claim 11 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting an otherwise unused combination of a set of global cache-control lines to indicate the denial.

13. The method of claim 11 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting a NACK signal on a set of global cache-control lines to indicate the denial.

14. The method of claim 11 , wherein determining that the remote cache controller has made a request for a cache line involves determining that a memory controller has forwarded the request from the remote cache controller to the local cache controller; and

wherein denying the invalidation request involves signaling a NACK to the memory controller to indicate the denial.

15. The method of claim 11 , wherein denying the invalidation of a cache line involves asserting an indicator in the metadata for the cache line to prevent subsequent load-marks from being placed on the cache line.

16. The method of claim 15 , wherein the method further comprises subsequently deasserting the indicator after exclusive access to the cache line has been granted.

17. The method of claim 11 , wherein determining if there is a load-mark in the metadata for the copy of the cache line involves determining if a reader count is greater than zero in the metadata for the copy of the cache line.

18. The method of claim 11 , wherein determining if there is a load-mark in the metadata involves determining if there exists a current timestamp in the metadata for the copy of the cache line.

19. The method of claim 11 , wherein upon determining that the remote cache controller has made a non-NACKable request that would cause the invalidation of the copy of the cache line, the method further comprises invalidating the copy of the cache line.

20. The method of claim 19 , wherein invalidating the copy of the cache line involves acknowledging the invalidation of the copy of the cache line.

21. A computer system for maintaining load-marks on cache lines, comprising:

a processor;

a cache that accommodates a set of cache lines coupled to the processor, wherein each cache line includes metadata for load-marking the cache line, and wherein the cache stores data for the processor;

a local cache controller for the cache;

wherein upon determining that a remote cache controller has made a request for a cache line that would cause the local cache controller to invalidate a copy of the cache line in the cache, the local cache controller determines if there is a load-mark in the metadata for the copy of the cache line;

if not, the local cache controller invalidates the copy of the cache line;

otherwise, the local cache controller sends a signal to the remote cache controller to indicate a denial of the invalidation of the cache line and retains the copy of the cache line and the load-mark in the metadata for the copy of the cache line;

wherein the load-mark is placed for a thread to indicate that no other threads can store to the cache line.

22. The computer system of claim 21 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting an otherwise unused combination of a set of global cache-control lines to indicate the denial.

23. The computer system of claim 21 , wherein determining that the remote cache controller has made a request for a cache line involves determining that the remote cache controller has asserted a combination of global cache-control lines to request exclusive access to the cache line; and

wherein denying the invalidation request involves asserting a NACK signal on a set of global cache-control lines to indicate the denial.

24. The computer system of claim 21 , wherein determining that the remote cache controller has made a request for a cache line involves determining that a memory controller has forwarded the request from the remote cache controller to the local cache controller; and

wherein denying the invalidation request involves signaling a NACK to the memory controller to indicate the denial.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0101 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 8, 2008
From: CYPHER, ROBERT E.; CHAUDHRY, SHAILENDER
To: SUN MICROSYSTEMS, INC.
Reel/Frame 020335/0386 →