< previous page page_560 next page >

Page 560
0560-01.gif
Figure 8.32
Centralized directory invalidations.
0560-02.gif
Figure 8.33
SDD actions in a distributed directoryinvalidate prefetched. (T
indicates tail of the list.)
central directory, the invalidate signals can be sent concurrently to other caches (Figure 8.32). This protocol is similar to that one used in DASH [184].
In the distributed directory protocols, the directory has a pointer to a linked list of caches. In the SDD protocol, or singly linked list protocol, the directory has a pointer to the last cache that has written this line. Invalidate requests are then sent to this cache, which invalidates its copy and forwards an invalidate signal to the next cache. The writing cache determines the head of the list by accessing the directory in memory. The directory then establishes the writing cache as the owner of the line and subsequent references to the line are referred to this cache.
In the singly linked list (as in Figure 8.33), processor 1 writes to the directory, which notifies the head of the list (processor 3) that this line has been made invalid by processor 1. The directory is then updated, pointing to processor 1. This information is then forwarded down the list until the last user of the list, in this case processor 2, invalidates its entry. At that point, processor 2 sends an invalidate acknowledgement to processor 1 and processor 1 then has the sole correct version of the line.
In the SCI or doubly linked list protocol, the directory also has a single pointer to the cache at the head of the list. The directory then sends the invalidate request down the list, purging the line and all current caches (Figure 8.34).
For example, assume the cache for processor 1 writes a particular line. If

 
< previous page page_560 next page >