SPONSORED

キャッシュコヒーレンシ(きゃっしゅこおへれんし)

最終更新:2026/4/27

キャッシュコヒーレンシは、複数のキャッシュが同一のメモリブロックのコピーを保持する際に、それらの間でデータの整合性が保たれている状態のことである。

別名・同義語 キャッシュ整合性データコヒーレンシ

ポイント

キャッシュコヒーレンシは、マルチプロセッサシステムやマルチコアプロセッサにおいて、性能を最大限に引き出すために不可欠な要素である。不整合が発生すると、誤ったデータに基づく処理が行われる可能性がある。

キャッシュコヒーレンシとは

キャッシュコヒーレンシは、複数のキャッシュが同一のメモリブロックのコピーを保持している状況において、あるキャッシュがそのデータを変更した場合に、他のキャッシュにその変更を反映させるための仕組みです。これにより、すべてのキャッシュが常に最新のデータを保持し、データの不整合を防ぎます。

キャッシュコヒーレンシの必要性

マルチプロセッサシステムやマルチコアプロセッサでは、複数のプロセッサが同時にメモリにアクセスすることがあります。各プロセッサは、高速なアクセスを実現するためにキャッシュを搭載しています。もしキャッシュコヒーレンシがなければ、あるプロセッサがキャッシュ内のデータを変更しても、他のプロセッサのキャッシュには古いデータが残ってしまうため、データの不整合が発生し、プログラムの誤動作を引き起こす可能性があります。

キャッシュコヒーレンシの実現方式

キャッシュコヒーレンシを実現するための主な方式として、以下のものがあります。

  • スヌーピングプロトコル: 各キャッシュが他のキャッシュのメモリアクセスを監視し、データの変更を検知して自身のキャッシュを更新します。
  • ディレクトリプロトコル: システム全体でキャッシュの状態を管理するディレクトリを設け、データの変更があった場合に、ディレクトリを通じて関連するキャッシュに通知します。

スヌーピングプロトコルは、比較的単純な構成で実現できますが、キャッシュ数が増えると監視の負荷が大きくなります。一方、ディレクトリプロトコルは、キャッシュ数が増えてもスケーラビリティに優れますが、ディレクトリの管理が複雑になります。

キャッシュコヒーレンシの課題

キャッシュコヒーレンシの実現には、いくつかの課題があります。

  • オーバーヘッド: キャッシュ間のデータの整合性を維持するために、通信や処理のオーバーヘッドが発生します。
  • 複雑性: キャッシュコヒーレンシのプロトコルは複雑であり、設計や検証が困難です。
  • スケーラビリティ: キャッシュ数が増えると、キャッシュコヒーレンシの維持が難しくなります。

これらの課題を解決するために、様々な研究開発が行われています。

SPONSORED