IP Library Granted Patent US 8,516,199
Granted Patent B2
US 8,516,199 · App. 12/405,483 · Granted Aug 20, 2013

Bandwidth-efficient directory-based coherence protocol

Inventors: Robert E. Cypher (Saratoga, CA); Haakan E. Zeffer (Santa Clara, CA); Brian J. McGee (San Jose, CA); Bharat K. Daga (Fremont, CA)
Assignee: Oracle America, Inc.
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,516,199
App. No.
12/405,483
Granted
Aug 20, 2013
Kind
B2
Abstract

Some embodiments of the present invention provide a system that processes a request for a cache line in a multiprocessor system that supports a directory-based cache-coherence scheme. During operation, the system receives the request for the cache line from a requesting node at a home node, wherein the home node maintains directory information for all or a subset of the address space which includes the cache line. Next, the system performs an action at the home node, which causes a valid copy of the cache line to be sent to the requesting node. The system then completes processing of the request at the home node without waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line.

Claims (31)

1. A method for processing a request for a cache line in a multiprocessor system that supports a directory-based cache-coherence scheme, comprising:

receiving the request for the cache line from a requesting node at a home node, wherein the home node maintains directory information for all or a subset of the address space which includes the cache line;

performing an action at the home node that causes a valid copy of the cache line to be sent to the requesting node; and

when causing the valid copy of the cache line to be sent to the requesting node involves sending the valid copy of the cache line from the home node to the requesting node, completing processing of the request at the home node without waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line, wherein the requesting node does not send an acknowledgment indicating that the requesting node received the valid copy of the cache line when receiving the copy of the cache line from the home node.

2. The method of claim 1 , further comprising, when causing the valid copy of the cache line to be sent to the requesting node involves sending a forward message from the home node to a slave node, wherein the slave node has a valid copy of the cache line, and wherein the forward message causes the slave node to send the valid copy of the cache line to the requesting node, waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line before completing processing of the request.

3. The method of claim 1 , wherein if the requesting node receives an invalidation for a requested cache line, and then receives a copy of the requested cache line from the home node, the requesting node ignores the copy of the requested cache line and resends the request.

4. The method of claim 3 , wherein if one or more unsuccessful requests have been sent for the cache line, resending the request involves sending a special request to the home node that guarantees forward progress for the request.

5. The method of claim 4 , wherein while processing the special request, the home node causes a valid copy of the cache line to be sent to the requesting node, and then waits to receive an acknowledgment that the requesting node received the valid copy of the cache line before completing processing of the request.

6. The method of claim 1 , wherein completing processing of the request involves removing an entry for request from a content-addressable memory (CAM) at the home node, wherein the entry contains state information for the request.

7. The method of claim 1 , wherein prior to receiving the request for the cache line at the home node, the method further comprises:

performing a memory access which is directed to the cache line at the requesting node, wherein the memory access generates a cache miss; and

in response to the cache miss, sending the request for the cache line to the home node.

8. A multiprocessor system that supports a directory-based cache-coherence scheme, comprising:

a plurality of processor nodes;

wherein a given node in the plurality of processor nodes is configured to act as a home node for all of the cache lines or a subset of the cache lines which fall in a specific subset of addresses; and

wherein the given node is configured to:

receive a request for a cache line from a requesting node;

perform an action which causes a valid copy of the cache line to be sent to the requesting node; and

when causing the valid copy of the cache line to be sent to the requesting node involves sending the valid copy of the cache line to the requesting node from the given node, complete processing of the request without waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line, wherein the requesting node does not send an acknowledgment indicating that the requesting node received the valid copy of the cache line when receiving the copy of the cache line from the given node.

9. The multiprocessor system of claim 8 , wherein, when causing the valid copy of the cache line to be sent to the requesting node involves the given node sending a forward message to a slave node, wherein the slave node has a valid copy of the cache line, and wherein the forward message causes the slave node to send the valid copy of the cache line to the requesting node, the given node is configured to wait for an acknowledgment indicating that the requesting node received the valid copy of the cache line before completing processing of the request.

10. The multiprocessor system of claim 8 , wherein if the requesting node receives an invalidation for a requested cache line, and then receives a copy of the requested cache line from the home node, the requesting node is configured to ignore the copy of the requested cache line and resend the request.

11. The multiprocessor system of claim 10 , wherein if one or more unsuccessful requests have been sent for the cache line, while resending the request, the requesting node is configured to send a special request to the home node that guarantees forward progress for the request.

12. The multiprocessor system of claim 11 , wherein while processing the special request, the given node causes a valid copy of the cache line to be sent to the requesting node, and then waits to receive an acknowledgment that the requesting node received the valid copy of the cache line before completing processing of the request.

13. The multiprocessor system of claim 8 , wherein while completing processing of the request, the given node is configured to remove an entry for request from a content-addressable memory (CAM), wherein the entry contains state information for the request.

14. The multiprocessor system of claim 8 , wherein if a memory access which is directed to a cache line generates a cache miss, the requesting node is configured to send a request for the cache line to a home node for the cache line.

15. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for processing a request for a cache line in a multiprocessor system that supports a directory-based cache-coherence scheme, the method comprising:

receiving the request for the cache line from a requesting node at a home node, wherein the home node maintains directory information for all or a subset of the address space which includes the cache line;

performing an action at the home node that causes a valid copy of the cache line to be sent to the requesting node; and

when causing the valid copy of the cache line to be sent to the requesting node involves sending the valid copy of the cache line from the home node to the requesting node, completing processing of the request at the home node without waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line, wherein the requesting node does not send an acknowledgment indicating that the requesting node received the valid copy of the cache line when receiving the copy of the cache line from the home node.

16. The non-transitory computer-readable storage medium of claim 15 , further comprising, when causing the valid copy of the cache line to be sent to the requesting node involves sending a forward message from the home node to a slave node, wherein the slave node has a valid copy of the cache line, and wherein the forward message causes the slave node to send the valid copy of the cache line to the requesting node, waiting for an acknowledgment indicating that the requesting node received the valid copy of the cache line before completing processing of the request.

17. The non-transitory computer-readable storage medium of claim 15 , wherein if the requesting node receives an invalidation for a requested cache line, and then receives a copy of the requested cache line from the home node, the requesting node ignores the copy of the requested cache line and resends the request.

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/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2009
From: CYPHER, ROBERT E.; ZEFFER, HAAKAN E.; MCGEE, BRIAN J.; DAGA, BHARAT K.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 022534/0876 →
Continuity (1)
Related Publication 20100241814A1 · Sep 23, 2010