キャッシュコヒーレンシとMESIプロトコルとは?きゃっしゅこひーれんしとめしぷろとこる
キャッシュコヒーレンシは、複数のコアが同じ番地の写しをそれぞれのキャッシュに持っていても、どのコアから見ても値が1つに見えるように保つ性質を指す。MESIはこれをハードウェアで実現する代表的な方式で、キャッシュの1ブロックごとにModified(自分だけが書き換え済み)・Exclusive(自分だけが持つ未変更)・Shared(複数が持つ)・Invalid(無効)の4状態を持たせる。
最終更新:2026-10-07
高度試験の午前Iを最短で暗記する →背景
キャッシュをコアごとに分けるのは、共有すると取り合いの待ち時間で遅くなるからである。分けた瞬間に同じ番地の写しが複数できるが、整合をソフトウェア側の責任にすると既存のプログラムがそのままでは動かなくなる。そこで各コアがバス上の他コアの動きを見張り(スヌープ)、書き込みを検出したら自分の写しを無効にするという、ソフトウェアから見えない仕掛けが採られた。
具体例
インテルのCoreシリーズはコアごとにL1・L2キャッシュを持ち、共有のL3とスヌープで整合をとる。別々の変数でも同じキャッシュライン(一般に64バイト)に同居していると無効化の通知が飛び交い、フォルスシェアリングとして性能が落ちる。
試験での引っ掛け
コヒーレンシ(1つの番地の値が1つに見えること)と、メモリコンシステンシ(複数の番地への書き込みが他コアにどの順で見えるか)は別の話である。前者はハードウェアが保証するが、後者は保証されないため、排他制御やメモリバリアが不要になるわけではない。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。