マルチコアと同期

2つのコアがそれぞれ自分のキャッシュに変数xのコピーを持っている。コア0がxに書き込んだあと、コア1がxを読むときに、キャッシュコヒーレンシの仕組みがなければ起こりうる問題はどれか。

  1. Aコア1が自分のキャッシュに残っている古い値を読んでしまう
  2. Bコア1の読み出しが、コア0の書き込みより必ず速くなる
  3. Cxの値が2倍になって読める
答えと解説を見る

正解:A. コア1が自分のキャッシュに残っている古い値を読んでしまう

マルチコアのCPUでは、コアごとのキャッシュに同じ番地のデータのコピーができます。コア0が自分のキャッシュの中だけでxを書き換えると、コア1のキャッシュには古い値が残り、コア1はそれを読んでしまいます。キャッシュコヒーレンシの仕組みは、書き込みのときに他のコアのコピーを無効にするなどして、どのコアから読んでも最新の値が見えるようにします。

  • A. 正しい。コピーの内容がずれてしまいます。
  • B. 速さの問題ではなく、値の正しさの問題です。
  • C. 値が勝手に変わることはありません。
この分野を解く 分野ページへ

マルチコアと同期のほかの問題

  1. キャッシュコヒーレンシのプロトコルであるMESIの4つの状態の組み合わせとして正しいものはどれか。
  2. MESIプロトコルでキャッシュのラインがModified(M)状態にあるときの意味として正しいものはどれか。
  3. MESIプロトコルで、Exclusive(E)状態のラインにそのコアが書き込むときの動作として正しいものはどれか。
  4. 無効化型のコヒーレンシプロトコルで、あるコアがShared(S)状態のラインに書き込むときに行われることはどれか。
  5. MESIプロトコルで、コア0がModified(M)状態で持っているラインを、コア1が読もうとしたときの一般的な動作はどれか。