キャッシュコヒーレンシ
一貫性を保つには、同じメモリ位置へのリードとライトの振る舞いを定義する。キャッシュコヒーレンシは以下の条件に適合するよう行われる。
プロセッサPが位置Xにライトし、同じプロセッサPがXをリードする。その間、他のプロセッサがリードやライトを行っていない場合、Xは常にPがライトした値を返す。これはプログラムの実行順序の保持とも関係し、単一処理アーキテクチャでも常に成り立つ。
プロセッサP2が位置Xにライトし、その後プロセッサP1がXをリードしたら、その間他のプロセッサがXにライトしていないなら、Xは常にP2がライトした値を返す。これはメモリの一貫性を定義する条件である。P2がライトした後もプロセッサから古い値がリードされる場合、メモリの一貫性が保たれていないと言える。
同じ位置へのライトは逐次化される。つまり、Xという位置に対してAという値のライトとBという値のライトがそれぞれ別のプロセッサから発行されたとき、どのプロセッサから見てもライトの順序は一定でなければならず、最終的な値は後からライトした値でなければならない。
これらの条件はリードやライトが瞬間的に行われると仮定して定義している。しかし、実際のハードウェアではメモリレイテンシもあるし、その他アーキテクチャ上の制約によって瞬間的にリードやライトを実行することはできない。プロセッサXがライトを発行した直後にプロセッサYがリードを発行したとき、その間隔が短いとYにはXがライトした内容が見えない場合がある。メモリ一貫性モデルでは、ライトで書き込んだ値はその後の他のプロセッサからのリードで必ず取得できるようにしなければならない。