To improve performance, DSM systems rely on replicating shared data items and allowing concurrent access at many nodes. However, if the concurrent accesses are not carefully controlled, memory accesses may be executed in an order different from that which the programmer expected. Informally, a memory is coherent if the value returned by a read operation is always the value that the programmer expected. For example, it is quite natural for a programmer to expect a read operation to return a value stored by the most recent write operation. Thus, to maintain the coherence of shared data items, a mechanism that controls or synchronizes the accesses is necessary.
The word consistency is used to refer to a specific kind of coherence. The most intuitive semantics for memory coherence is strict consistency, defined as follows :
Strict consistency requires the ability to determine the latest write, which in turn implies a total ordering of requests. The total ordering of requests leads to inefficiency due to more data movement and synchronization requirements than what a program may really call for. To counter this problem, some DSM systems attempt to improve the performance by providing relaxed coherence semantics. Following are several forms of memory coherence
PRAM Consistency and Processor Consistency
DSM Home Subway Algorithms Coherence Page Map Protocols