マルチコアと同期

キャッシュコヒーレンシのスヌーピング方式の説明として正しいものはどれか。

  1. AOSが一定時間ごとにすべてのキャッシュを調べて、食い違いを直す
  2. B各コアのキャッシュが共有のバスなどに流れる他のコアの読み書きを監視し、自分のラインの状態を変える
  3. Cプログラマが書き込みのたびに、ほかのコアへ値を手で送る
答えと解説を見る

正解:B. 各コアのキャッシュが共有のバスなどに流れる他のコアの読み書きを監視し、自分のラインの状態を変える

スヌーピング方式では、コアの読み書きの要求がすべてのキャッシュに届き、各キャッシュは自分が同じラインを持っているかを調べて、無効にしたりデータを渡したりします。仕組みが単純で、コアの数が少ないときに向いています。しかしコアの数が増えると、すべての要求をすべてのキャッシュに届ける通信が多くなりすぎるため、大規模なシステムではディレクトリ方式が使われます。

  • A. ハードウェアが自動で行います。
  • B. 正しい。のぞき見(snoop)する方式です。
  • C. プログラマが意識する必要はありません。
この分野を解く 分野ページへ

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

  1. コアの数が多いシステムで、スヌーピング方式の代わりにディレクトリ方式のコヒーレンシが使われる理由として正しいものはどれか。
  2. コヒーレンシのプロトコルには無効化型と更新型がある。多くのCPUが無効化型を採用している理由として最も適切なものはどれか。
  3. マルチスレッドのプログラムで起こる偽共有(フォールスシェアリング)の説明として正しいものはどれか。
  4. スレッドごとのカウンタを「long cnt[8];」のように並べた配列で偽共有が起きている。対策として最も適切なものはどれか。
  5. データ競合(データレース)の説明として正しいものはどれか。