|
|
|
|
|
|
|
Figure 8.29
Centralized directory structure. |
|
|
|
|
|
|
|
|
Figure 8.30
Singly linked distributed directory structure. Nc = number of caches. |
|
|
|
|
|
|
|
|
the directory is associated with memory and contains information for each line in memory. Each line has a bit vector which contains a bit for each processor-cache in the system (Figure 8.29). The bit identifies a particular cache as having a copy of the line. These directories are known as fully mapped directories. The directory size itself consists of: |
|
|
|
|
|
|
|
|
Directory size (bits) = Number of caches ´ Number of memory lines. |
|
|
|
|
|
|
|
|
Clearly, if line ownership is low, fully mapped directories are spatially inefficient. Other list-based approaches are possible for CD [10], and are spatially more efficient, although slower. To simplify the discussion, we present only fully mapped central directories. |
|
|
|
|
|
|
|
|
The CD approach has been attractive because of its relatively straightforward implementation. Clearly, its directory size and accessibility provide an ultimate limit on the usefulness of this protocol in large shared memory systems. |
|
|
|
|
|
|
|
|
In a distributed directory (DD), the memory has only one pointer which identifies the cache that last requested it. Coherency is then based upon the use of a linked list. A subsequent request to that line is referred to the cache that received it last. The requestor then receives an updated copy of the line from that cache and the requestor's id is placed at the head of the linked list. |
|
|
|
|
|
|
|
|
There are singly and doubly linked versions of the linked list called scalable distributed directory (SDD) [280] and scalable coherent interface (SCI) |
|
|
|
|
|