Jump to content

Directory-based coherence protocols

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Sanskritkanji (talk | contribs) at 21:58, 12 April 2007 (Small Expansion of Content). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Directory-based coherence protocols are a set of cache coherence protocols, that is, protocols which ensure cache coherence or memory coherence between multiple nodes of multiprocessor or distributed shared memory systems, such as ccNUMA.

In such a protocol, directories usually track data at the granularity of a cache block and where they are located in a multiprocessor. Every request for data (i.e., every "read miss") is sent to the directory, which in turn forwards information to the nodes that have cached that data. In some protocols, these nodes then respond with data (these are called 3-hop-miss or cache-to-cache transfer protocols). In home-based protocols, each page has its own home node, and its corresponding directory is located on that node, containing only traces of pages from this node.

A Quick Introduction: Directory-based protocols are an alternative to the snooping approach, (where processors monitor the bus for transactions that affect memory in their cache). Directory-based protocols are especially useful in distributed memory machines.

Very generally, a directory holds the state of every memory block that may be cached. Typically, the directory associates an entry with every memory block in the system, and contains information such as which caches have copies of the memory block, whether it has been modified, and other useful information.

Thus, instead of snooping the bus, processors can access the directory whenever they need to know the status of a particular memory block. Memory operations write to the directory instead of broadcasting a snoop message.

The directory itself can also be distributed, which helps reduce chokepoint problems.