マルチコアと同期

x86のメモリ一貫性モデル(TSO、トータルストアオーダー)の特徴として正しいものはどれか。

  1. A読み書きのあらゆる組み合わせの入れ替えを許す、最も弱いモデルである
  2. B入れ替えを一切許さない逐次一貫性そのものである
  3. C書き込みの後の別の番地からの読み出しが、その書き込みより先に見えることだけを許す、比較的強いモデルである
答えと解説を見る

正解:C. 書き込みの後の別の番地からの読み出しが、その書き込みより先に見えることだけを許す、比較的強いモデルである

TSOでは、書き込みどうしの順番、読み出しどうしの順番、読み出しの後の書き込みの順番は保たれ、書き込みの後の別の番地への読み出しだけが追い越せます。これはストアバッファがあることをそのまま表したモデルです。多くのプログラムはこの範囲なら直感どおりに動くので、x86ではバリアが必要な場面が比較的少なくなります。

  • A. それはARMやRISC-Vのような弱いモデルに近い説明です。
  • B. 書き込みと読み出しの入れ替えは起こります。
  • C. 正しい。ストアバッファによる入れ替えだけが見えます。
この分野を解く 分野ページへ

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

  1. ARMやRISC-V(RVWMO)のような弱いメモリ一貫性モデルについて正しいものはどれか。
  2. メモリバリア(フェンス)命令の役割として正しいものはどれか。
  3. 上のコードで、スレッド1がdataを用意してからflagで知らせ、スレッド2がflagを見てからdataを読む。弱いメモリ一貫性モデルのCPUで、スレッド2が確実に42を読むために必要なこととして正しいものはどれか。
  4. 取得(acquire)と解放(release)の意味を持つメモリ操作について正しいものはどれか。
  5. C言語で、スレッド間で受け渡すフラグ変数にvolatileを付けるだけでは、同期として不十分である理由として正しいものはどれか。