マルチコアと同期
2つのコアがそれぞれ自分のキャッシュに変数xのコピーを持っている。コア0がxに書き込んだあと、コア1がxを読むときに、キャッシュコヒーレンシの仕組みがなければ起こりうる問題はどれか。
- Aコア1が自分のキャッシュに残っている古い値を読んでしまう
- Bコア1の読み出しが、コア0の書き込みより必ず速くなる
- Cxの値が2倍になって読める
答えと解説を見る
正解:A. コア1が自分のキャッシュに残っている古い値を読んでしまう
マルチコアのCPUでは、コアごとのキャッシュに同じ番地のデータのコピーができます。コア0が自分のキャッシュの中だけでxを書き換えると、コア1のキャッシュには古い値が残り、コア1はそれを読んでしまいます。キャッシュコヒーレンシの仕組みは、書き込みのときに他のコアのコピーを無効にするなどして、どのコアから読んでも最新の値が見えるようにします。
- A. 正しい。コピーの内容がずれてしまいます。
- B. 速さの問題ではなく、値の正しさの問題です。
- C. 値が勝手に変わることはありません。