マルチコアと同期
無効化型のコヒーレンシプロトコルで、あるコアがShared(S)状態のラインに書き込むときに行われることはどれか。
- Aほかのコアのコピーはそのままにして、自分のラインだけを書き換える
- Bほかのコアが持つ同じラインのコピーを無効にしてから、自分のラインをM状態にして書き込む
- Cすべてのコアのキャッシュを空にしてから書き込む
答えと解説を見る
正解:B. ほかのコアが持つ同じラインのコピーを無効にしてから、自分のラインをM状態にして書き込む
S状態はほかのコアも同じラインを持っている可能性がある状態なので、そのまま書き込むと他のコピーが古くなります。そこで無効化の要求を送り、ほかのコアのコピーをI状態にしてから、自分のラインをM状態にして書き込みます。ほかのコアが次にそのデータを読むときはミスになり、最新の値を取り直します。多くのCPUがこの無効化型を採用しています。
- A. それでは他のコアが古い値を読んでしまいます。
- B. 正しい。古いコピーが残らないようにします。
- C. 関係のないラインまで消す必要はありません。