Scalable Coherent Interface: Difference between revisions
Line 15: | Line 15: | ||
*Tail - The last member, but not only member of the list. | *Tail - The last member, but not only member of the list. | ||
*Only - The only member of the list. | *Only - The only member of the list. | ||
*Clean - The data is unmodified, and only I have it. | *Clean - The data is unmodified, and only I have it. | ||
*Modified - The data is modified. | *Modified - The data is modified. | ||
Line 21: | Line 21: | ||
*Valid - My copy of the data is valid, but others have it as well. | *Valid - My copy of the data is valid, but others have it as well. | ||
*Invalid - I do not have a valid copy of the data. | *Invalid - I do not have a valid copy of the data. | ||
The possible combinations of these two attributes are shown in the state diagram below. | The possible combinations of these two attributes are shown in the state diagram below. | ||
Revision as of 18:55, 15 April 2011
SCI is an IEEE standard for shared-memory multiprocessing. The standard was approved in 1992. View the SCI Wikipedia article for more information on the interface's history. The article covers the cache-coherence portions of the IEEE standard.
General Operation
SCI operates by using directories in every processor's memory. When a memory block has not been cached, the directory holds this block in the Home state, signifying that the block is at home. After a read request, the memory holds this block in the Fresh state and will supply the data immediately to any requesting cache. After a write request, the memory holds the block in the Gone state. The memory does not supply the data to further requesting caches, but instead supplies the cache with an identifier for a cache that holds this data.
This cache is called the Head cache. Other caches that hold the data are stored in a distributed linked list, with each cache pointing to the previous and next caches in the list.
Cache State Machine
The caches states cover two different dimensions: the cache's position in a linked list, and the modified state of a block.
- Head - The first, but not only member of the list.
- Mid - Neither the first nor last member of the list.
- Tail - The last member, but not only member of the list.
- Only - The only member of the list.
- Clean - The data is unmodified, and only I have it.
- Modified - The data is modified.
- Fresh - The data is unmodified, and I and and others have it.
- Valid - My copy of the data is valid, but others have it as well.
- Invalid - I do not have a valid copy of the data.
The possible combinations of these two attributes are shown in the state diagram below.
Directory State Machine
Each cache block's directory can be in one of three states. These states designate whether the block is cached, and whether the cached block is dirty.
- Home - The block is not cached. It is at "home".
- Gone
- The block is cached by at least one cache, and the cached value is probably dirty.
- When a cache requests the block, the memory will supply an identifier for the first cache in the list.
- Fresh
- The block is cached by at least one cache, but the cached value is not dirty.
- The memory will supply the data upon cache requests.
Race Conditions
References
- Wikipedia, Scalable Coherent Interface
- SCI