MESI snooping cache coherence protocolについて読んでいましたが、これは現代のマルチコア x86 プロセッサで使用されているプロトコルだと思います (間違っていたら訂正してください)。今、その記事は一箇所でこれを言っています。
Modified 状態のラインを保持するキャッシュは、対応するメイン メモリ ロケーションの (システム内の他のすべてのキャッシュからの) 試行されたすべての読み取りをスヌープ (インターセプト) し、保持しているデータを挿入する必要があります。これは通常、読み取りを強制的にバックオフ (つまり、後で再試行) してから、データをメイン メモリに書き込み、キャッシュ ラインを共有状態に変更することによって行われます。
今私が理解していないのは、データをメインメモリに書き込む必要がある理由です。キャッシュ コヒーレンスは、メモリに移動せずにキャッシュ内のコンテンツを同期したままにできますか (もちろん、キャッシュ ラインが完全に削除されない限り)。つまり、一方のコアが常に読み取り、もう一方のコアが常に書き込みを行っている場合、データをキャッシュ メモリに保持し、キャッシュ内のデータを更新し続けてみませんか。メインメモリへの書き戻しのパフォーマンスが発生するのはなぜですか?
つまり、コアがデータを読み取り、書き込みコアのキャッシュから直接読み取り、それに応じてキャッシュを変更することはできませんか?