キャッシュコヒーレンス
複数のCPUコアがそれぞれ持つキャッシュが、同じメモリアドレスの値について食い違わないようにする問題と、その解決法。あるコアが、他のコアにキャッシュされているデータを書き換えたとき、古い値を誰も読まないよう保証する必要がある。
難しい理由はこうだ。各コアは速度のために自前のL1/L2を持つ。コアAがアドレスXに書き込んだとき、コアBのキャッシュに古いコピーがあれば、それを無効化するか更新しなければならない。コヒーレンスプロトコル(多くはMESI系)が各キャッシュラインの状態を追跡し、「スヌーピング」またはディレクトリで調整する。利点は、プログラマが意識しなくてもメモリが一貫して見えること。代償は、コア数が増えるとコア間のコヒーレンス通信がボトルネックになることと、「フォールスシェアリング」(二つのコアが同じキャッシュライン上の別の変数を書く)で性能が大きく落ちることだ。マルチコア/SMP設計すべての基礎である。MESIやInfinity Fabric/リングバスとも関係が深い。