キャッシュコヒーレンシとは?きゃっしゅこひーれんし
キャッシュコヒーレンシとは、複数のプロセッサがそれぞれキャッシュを持ちながら主記憶を共有するとき、同じアドレスについて各キャッシュが食い違った値を持たないように保つこと。MESIなどのプロトコルが、他のコアにある同じキャッシュラインを無効化するか更新することで整合をとる。ソフトウェアからは見えないハードウェア側の働きである。
最終更新:2026-10-06
ネットワークSPを最短で暗記・合格する →背景
主記憶はプロセッサの速度に追いつかないので、各コアが手元にキャッシュを持つほかない。ところが写しを置いた瞬間、同じアドレスの値がコアの数だけ存在することになり、片方が書き換えても他方は古い値を持ち続ける。プログラムから見て1つの変数が1つの値であるという当たり前を保つために、写しの状態をハードウェアで管理する仕組みが要る。複数コアでパケット処理を分担する機器でも同じ前提が働く。
具体例
あるコアが共有カウンタを書き換えると、他コアのキャッシュ上の同じラインが無効化され、次のアクセスで読み直しになる。複数コアでパケット処理を分担する構成では、コアをまたいで頻繁に更新される統計カウンタがこの無効化の往復を招き、性能の頭打ちになることがある。コアごとに数えて後で合算する設計が採られるのはこのためである。
試験での引っ掛け
DMA転送も一貫性を崩す要因になる。DMAで書き換えられた領域はキャッシュを無効化し、DMAで読み出させる前はキャッシュをフラッシュしておく必要がある。NICが直接メモリへ書き込む構成でこの手当てが抜けると、古い内容を読むことになる。値の整合が保たれることと、書込みの順序が保たれることも別の話である。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。