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

概要

キャッシュコヒーレンシとは、複数のCPUCPUコアが個別にキャッシュメモリを持つシステムにおいて、同一のメインメモリ領域に対する各キャッシュの内容に一貫性が保たれている状態のこと。あるコアが自身のキャッシュデータを書き換えても、他のコアから同じ結果が得られるように制御される。
キャッシュコヒーレンシのイメージ画像

現代のコンピュータは処理を高速化するため、メインメモリから読み込んだデータを一時的に保管する「キャッシュメモリ」がCPU内部に備えられている。マルチコアプロセッサマルチプロセッサ構成のシステムでは、各コアが独自のキャッシュを持ち、同じメインメモリ領域のデータを複数のコアがそれぞれのキャッシュに保持することがある。

あるコアがキャッシュ上のデータを書き換えても、他方のコアが保持するキャッシュの内容は古い値のままとなり、コアごとに異なる値を参照してしまう事態が生じることがある。この不整合をそのままにすると、プログラムが誤った値を読み取り、計算結果の誤りや動作不良につながる。

この問題を防ぐため、システムにはキャッシュコヒーレンシを維持する制御が組み込まれている。あるコアがデータを書き換えたことを他のすべてのコアに通知し、古いキャッシュデータを無効化するか最新の値に更新する。この処理はハードウェアに組み込まれた通信規約に基づいて自動的に行われ、各キャッシュラインの状態を複数の段階に分けて管理するMESIプロトコルなどが用いられる。

コヒーレンシを維持する方式はいくつかあり、各コアが共有バス上の通信を監視して他のキャッシュの状態を把握するスヌーピング方式や、専用の管理情報によって各キャッシュラインの所在や状態を一括管理するディレクトリ方式などが知られる。コア数が少ないシステムではスヌーピング方式が用いられることが多く、コア数が多い大規模なシステムではディレクトリ方式が採用される傾向がある。

(2026.6.19更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。