一貫性モデル (ソフトウェア)
このモデルでも、Read before write、Read after read、Write before writeの順序は守られている。
プロセッサ一貫性モデルは、PRAM一貫性モデルに似ているが、同じメモリ位置へのすべての書き込みが、他のすべてのプロセスから同じ順序で見えるようにしなければならないという、より強い条件を備えている。プロセッサ整合性は、逐次整合性よりは弱いが、PRAM整合性モデルよりは強い。
Stanford DASHマルチプロセッサシステムでは、Goodmanの定義と比較できない(弱くもなく強くもない)プロセッサ一貫性のバリエーションを実装している。すべてのプロセッサは、あるプロセッサによる書き込みを見る順序と、異なるプロセッサによる同じ場所への書き込みを見る方法が一貫している必要がある。しかし、異なるプロセッサによる異なる場所への書き込みについては、一貫性を保つ必要はない。
一貫性モデル(いっかんせいモデル、英: consistency model)または整合性モデル(せいごうせいモデル)は、分散共有メモリシステムや分散データストア(ファイルシステム、データベース、楽観的レプリケーションシステム、ウェブキャッシングなど)のような分散システムで使用される。システムは、メモリ上の操作が特定のルールに従っている場合、あるモデルをサポートしていると言う。データ一貫性モデルは、プログラマーとシステムの間の契約を規定するもので、プログラマーがルールに従えば、メモリは一貫しており、メモリの読み書きや更新の結果は予測可能であることをシステムが保証する。これは、キャッシュやキャッシュレスのシステムで発生するコヒーレンスとは異なり、すべてのプロセッサに対するデータの一貫性を意味する。コヒーレンスは、1つの場所や1つの変数への書き込みをすべてのプロセッサが見ることができるようなグローバルな秩序を維持することを意味する。一貫性とは、複数の場所への操作の順序を、すべてのプロセッサに対して維持することである。
C++ や Java などの高レベル言語では、メモリ操作を低レベルの操作に変換することで、メモリセマンティクスを維持しながら契約を部分的に維持している。契約を守るために、コンパイラは一部のメモリ命令を並べ替えたり、pthread_mutex_lock()などのライブラリコールは必要な同期をカプセル化したりする。
モデル検査による逐次的な整合性の検証は、有限状態のキャッシュコヒーレンスプロトコルであっても、一般的には決定不可能である。
一貫性モデルは、更新の見かけ上の順序と可視性に関するルールを定義しており、トレードオフの連続性を持っている。
書き込み追従型一貫性では,更新は前の読み取り操作を実行した後に伝搬される.Tanenbaum et al., 2007では、Writes-follows-reads consistencyの条件を以下のように定義している。