Maintaining order of write operations in a multiprocessor for memory consistency
First Claim
1. In a multiprocessor system having a number of interconnected processor nodes each containing one or more caches, a method of invalidating cache lines on different nodes linked in a sharing list, the method comprising:
- from a node at the head of the list, sending an invalidate request to a succeeding node on the list, the invalidate request for invalidating a cache line on the succeeding node; and
in response to the invalidate request, issuing on the succeeding node an invalidate acknowledgement before actually invalidating the cache line.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of invalidating shared cache lines such as on a sharing list by issuing an invalidate acknowledgement before actually invalidating a cache line. The method is useful in multiprocessor systems such as a distributed shared memory (DSM) or non-uniform memory access (NUMA) machines that include a number of interconnected processor nodes each having local memory and caches that store copies of the same data. In such a multiprocessor system using the Scalable Content Interface (SCI) protocol, an invalidate request is sent from the head node on the sharing list to a succeeding node on the list. In response to the invalidate request, the succeeding node issues an invalidate acknowledgement before the cache line is actually invalidated. After issuing the invalidate acknowledgement, the succeeding node initiates invalidation of the cache line. The invalidate acknowledgement can take the form of a response to the head node or a forwarding of the invalidate request to the next succeeding node on the list. To maintain processor consistency, a flag is set each time an invalidate acknowledgement is sent. The flag is cleared after the invalidation of the cache line is completed. Cacheable transactions received at the succeeding node while a flag is set are delayed until the flag is cleared.
-
Citations
24 Claims
-
1. In a multiprocessor system having a number of interconnected processor nodes each containing one or more caches, a method of invalidating cache lines on different nodes linked in a sharing list, the method comprising:
-
from a node at the head of the list, sending an invalidate request to a succeeding node on the list, the invalidate request for invalidating a cache line on the succeeding node; and
in response to the invalidate request, issuing on the succeeding node an invalidate acknowledgement before actually invalidating the cache line. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
receiving at the succeeding node a cacheable transaction;
in response, determining whether an invalidation is pending at the succeeding node; and
if so, delaying the cacheable transaction until after the cache line is actually invalidated.
-
-
9. The method of claim 8 wherein a cacheable transaction includes an issuance of a read response to a node bus, an issuance of a write request to a node bus, or an issuance of an interrupt.
-
10. The method of claim 1 wherein actually invalidating the cache line includes:
-
issuing a bus invalidate request;
invalidating the cache line in response to the bus invalidate request; and
issuing a bus invalidate acknowledgement that the invalidation of the cache line is completed.
-
-
11. The method of claim 1 including initiating an invalidation of the cache line on the succeeding node after issuing the invalidate acknowledgement.
-
12. A computer-readable medium on which is stored computer instructions that perform the steps of claim 1.
-
13. The method of claim 1 wherein each step is performed by a cache controller.
-
14. A multiprocessor system having a number of interconnected processor nodes each containing one or more caches, apparatus for invalidating cache lines on different nodes linked in a sharing list, the system further comprising:
-
a first cache controller on node at the head of the list, the first cache controller adapted to send an invalidate request to a succeeding node on the list to invalidate a cache line on the succeeding node;
a second cache controller on a succeeding node on the list, the second cache controller adapted to receive the invalidate request and respond by issuing an invalidate acknowledgement before the cache line is actually invalidated. - View Dependent Claims (15, 16, 17, 18)
-
-
19. In a multiprocessor system having a number of interconnected processor nodes each containing one or more caches, a method of invalidating cache lines on different nodes, the method comprising:
-
from a first node, sending an invalidate request to a second node, the invalidate request for invalidating a cache line on the second node; and
in response to the invalidate request, issuing on the second node an invalidate acknowledgement before actually invalidating the cache line. - View Dependent Claims (20, 21, 22, 23, 24)
receiving at the second node a cacheable transaction;
in response, determining whether an invalidation is pending at the second node; and
if so, delaying the cacheable transaction until after the cache line is actually invalidated.
-
Specification