キャッシュコヒーレンシ【cache coherency】
概要

現代のコンピュータは処理を高速化するため、メインメモリから読み込んだデータを一時的に保管する「キャッシュメモリ」がCPU内部に備えられている。マルチコアプロセッサやマルチプロセッサ構成のシステムでは、各コアが独自のキャッシュを持ち、同じメインメモリ領域のデータを複数のコアがそれぞれのキャッシュに保持することがある。
あるコアがキャッシュ上のデータを書き換えても、他方のコアが保持するキャッシュの内容は古い値のままとなり、コアごとに異なる値を参照してしまう事態が生じることがある。この不整合をそのままにすると、プログラムが誤った値を読み取り、計算結果の誤りや動作不良につながる。
この問題を防ぐため、システムにはキャッシュコヒーレンシを維持する制御が組み込まれている。あるコアがデータを書き換えたことを他のすべてのコアに通知し、古いキャッシュデータを無効化するか最新の値に更新する。この処理はハードウェアに組み込まれた通信規約に基づいて自動的に行われ、各キャッシュラインの状態を複数の段階に分けて管理するMESIプロトコルなどが用いられる。
コヒーレンシを維持する方式はいくつかあり、各コアが共有バス上の通信を監視して他のキャッシュの状態を把握するスヌーピング方式や、専用の管理情報によって各キャッシュラインの所在や状態を一括管理するディレクトリ方式などが知られる。コア数が少ないシステムではスヌーピング方式が用いられることが多く、コア数が多い大規模なシステムではディレクトリ方式が採用される傾向がある。
(2026.6.19更新)