リリース一貫性
一般に分散共有メモリが以下のルールに従う場合、リリース一貫性があるとされている。
共有変数へのアクセスを行う前に、そのプロセッサが以前に行ったすべての取得が完了していなければならない。
リリースを実行する前に、このプロセスによる以前のすべての読み取りと書き込みが完了していなければならない。
アクイジションとリリースのアクセスは、プロセッサの一貫性がなければならない。
上記の条件が満たされ、プログラムが適切に同期されていれば(すなわち、プロセッサがアクワイアとリリースを適切に実装していれば)、どのような実行結果であっても、逐次整合性に従って実行された場合と全く同じになる。共有変数へのアクセスは、アクワイア(取得)とリリース(解放)によってアトミックな操作ブロックに分割され、ブロック間の競合やインターリーブを防ぐことができる。
遅延リリース一貫性は、場合によってはリリース一貫性を上回る性能を発揮する。プロセッサ間のバンド幅が小さいシステムや、小さなデータブロックを頻繁に伝搬するのと大きなデータブロックを頻繁に伝搬しないのとでは、オーバーヘッドが大きくなってしまうため、遅延リリース一貫性(LRC)はパフォーマンスを大きく向上させることができる。
実際のハードウェア実装ではなく、ソフトウェアレベルで共有メモリを抽象化したシステムを考えてみる。このシステムでは、書き込みの伝搬はページ単位で実行されるため、ページ内の1つのブロックだけが変更された場合、ページ全体を伝搬させるのは非常にコストがかかる。そのため、書き込み伝搬はリリース同期ポイントに到達するまで遅延され、この時にページ全体が変更され、ページ全体が伝搬されることになる。