マルチコアと同期

アトミック命令(不可分命令)の説明として正しいものはどれか。

  1. Aメモリの読み出しと書き込みを、途中でほかのコアに割り込まれない1つの操作として行う命令
  2. B原子の数を数えるための、物理の計算用の命令
  3. C必ず1クロックで終わる、最も速い命令
答えと解説を見る

正解:A. メモリの読み出しと書き込みを、途中でほかのコアに割り込まれない1つの操作として行う命令

アトミック命令は、読んで、計算して、書き込むという一連の処理を、ほかのコアの読み書きが間に入らない形で行います。ほかのコアからは、操作の前か後の状態しか見えません。CAS(コンペア・アンド・スワップ)やフェッチ・アンド・アッド、RISC-VのLR/SCやAMO命令などがあり、ロックやロックフリーのデータ構造を作る土台になります。

  • A. 正しい。ほかのコアからは一瞬で起きたように見えます。
  • B. アトミックは「分けられない」という意味です。
  • C. 速さではなく、分けられないことが特徴です。
この分野を解く 分野ページへ

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

  1. アトミック命令CAS(コンペア・アンド・スワップ)の動作として正しいものはどれか。
  2. 上のコードは、CAS(&p, 期待値, 新しい値)を使って共有の変数counterを2倍にしている。CASが失敗してループをやり直すのはどのようなときか。
  3. RISC-VのLR/SC(ロード予約/条件付きストア)のような命令の組で、SC(条件付きストア)が失敗するのはどのようなときか。
  4. CASを使ったロックフリーのデータ構造で問題になるABA問題の説明として正しいものはどれか。
  5. RISC-Vのamoadd.w命令やx86のlock xadd命令のような、フェッチ・アンド・アッド(fetch-and-add)命令の動作として正しいものはどれか。