一貫性モデル (ソフトウェア)
キャッシュ整合性 (一貫性) は、同じメモリ位置へのすべての書き込み操作が、ある順序で実行されることを必要とする。キャッシュの整合性は、プロセッサの整合性よりも弱く、PRAMの整合性とは比較にならない。
リリース一貫性モデルは、入口の同期操作と出口の同期操作を区別することで、弱一貫性モデルを緩和する。弱い順序では、同期操作を見ようとするとき、同期操作が完了してプロセッサが進む前に、すべてのプロセッサのすべての操作が見える必要がある。しかし、リリース一貫性モデルでは、「アクワイア(取得)」と呼ばれるクリティカルセクションへの入り口では、ローカルメモリ変数に関するすべての操作が完了している必要があります。また、「リリース(解放)」と呼ばれる終了時には、ローカルプロセッサで行われたすべての変更が他のすべてのプロセッサに伝搬される必要がある。コヒーレンスは維持される。
アクワイア(取得)操作は、クリティカルセクションにアクセスするために実行されるロード/リード(読み込み)である。リリース(解放)操作は、他のプロセッサに共有変数を使用させるために実行されるストア/ライト(書き込み)である。
同期変数の中でも、逐次(シーケンシャル)一貫性やプロセッサ一貫性を保つことができる。逐次一貫性では、競合するすべての同期変数を順番に処理する必要がある。しかし、プロセッサ一貫性では、競合する変数のペアは、この順序に従うだけでよい。新しい取得者(アクワイアする者)が古いリリース(解放)の前に起こることを許容することができる。
同期モデルとは、メモリアクセスを2つのグループに分け、それぞれのグループに異なる一貫性制約を割り当てることで定義される。これは、一方のグループには弱い一貫性モデルが必要であり、他方のグループにはより厳しい一貫性モデルが必要であることを考慮したものである。一方、非同期型モデルでは、メモリアクセスタイプに同じ一貫性モデルを割り当てる。
例えば、単一のグローバル共有バスを利用したシステムでは、バスラインに情報がポストされると、すべてのプロセッサが同じ瞬間にその情報を見ることが保証される。そのため、バスラインに情報を渡すことで、すべてのプロセッサに対して実行が完了し、実行されたように見える。キャッシュレス・アーキテクチャや、インターコネクト・ネットワークが瞬間的ではないキャッシュ・アーキテクチャでは、プロセッサとメモリの間にスロー・パスが含まれることがある。このような遅い経路では、あるメモリが他のメモリよりも早くブロードキャストデータを受け取るため、シーケンシャルな不整合が生じる可能性がある。
逐次一貫性は、非決定的な結果をもたらすことがある。これは、プロセッサ間の逐次操作の順序が、プログラムの異なる実行時に異なる可能性があるためである。すべてのメモリ操作は、プログラムの順番通りに行われる必要がある。
線形化可能性(不可分整合性とも呼ばれる)は、逐次一貫性にリアルタイム制約を加えたものと定義できる。