|
キャッシュコヒーレンシ(英: cache coherency)とは、共有リソースに対する複数のキャッシュの一貫性を意味する。キャッシュコヒーレンシはメモリ一貫性の一種である。 複数のクライアントが共有メモリリソースのキャッシュを保持するとき、キャッシュ間のデータの不一致という問題が生じる。この問題は特にマルチプロセッシングシステムのCPU間で顕著である。右図において、上のクライアントがメモリのある部分を以前に読み込んでいてキャッシュ上にコピーを保持しているとき、下のクライアントが同じメモリ部分を更新すると、更新を何らかの方法で伝えない限り上のクライアントのキャッシュの内容は不正となる。キャッシュコヒーレンシはそのような状況に対処し、キャッシュとメモリの間の一貫性を保つことである。 == 定義 == 一貫性を保つには、同じメモリ位置へのリードとライトの振る舞いを定義する。キャッシュコヒーレンシは以下の条件に適合するよう行われる。 # プロセッサPが位置Xにライトし、同じプロセッサPがXをリードする。その間、他のプロセッサがリードやライトを行っていない場合、Xは常にPがライトした値を返す。これはプログラムの実行順序の保持とも関係し、単一処理アーキテクチャでも常に成り立つ。 # プロセッサP2が位置Xにライトし、その後プロセッサP1がXをリードしたら、その間他のプロセッサがXにライトしていないなら、Xは常にP2がライトした値を返す。これはメモリの一貫性を定義する条件である。P2がライトした後もプロセッサから古い値がリードされる場合、メモリの一貫性が保たれていないと言える。 # 同じ位置へのライトは逐次化される。つまり、Xという位置に対して A という値のライトと B という値のライトがそれぞれ別のプロセッサから発行されたとき、どのプロセッサから見てもライトの順序は一定でなければならず、最終的な値は後からライトした値でなければならない。 これらの条件はリードやライトが瞬間的に行われると仮定して定義している。しかし、実際のハードウェアではメモリレイテンシもあるし、その他アーキテクチャ上の制約によって瞬間的にリードやライトを実行することはできない。プロセッサXがライトを発行した直後にプロセッサYがリードを発行したとき、その間隔が短いとYにはXがライトした内容が見えない場合がある。メモリ一貫性モデルでは、ライトで書き込んだ値はその後の他のプロセッサからのリードで必ず取得できるようにしなければならない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「キャッシュコヒーレンシ」の詳細全文を読む スポンサード リンク
|