マルチコアと同期

ハードウェアトランザクショナルメモリの考え方として正しいものはどれか。

  1. Aクリティカルセクションを投機的に実行し、ほかのスレッドとの衝突がなければまとめて確定し、衝突すれば取り消してやり直す
  2. Bすべてのメモリの読み書きを、銀行の取引のようにディスクへ記録する
  3. Cメモリの書き込みを禁止して、読み出しだけを許す
答えと解説を見る

正解:A. クリティカルセクションを投機的に実行し、ほかのスレッドとの衝突がなければまとめて確定し、衝突すれば取り消してやり直す

トランザクショナルメモリでは、クリティカルセクションをトランザクションとして実行し、その間の書き込みは仮のものとしてほかから見えないようにします。ほかのスレッドが同じデータに触れていなければ、最後にすべての書き込みを一度に確定し、衝突があれば全部取り消してやり直すか、普通のロックに切り替えます。衝突が少なければ、粗いロックのままでも細かいロックに近い並列性が得られます。

  • A. 正しい。ロックを取らずに並列に実行できる場合があります。
  • B. ディスクへの記録とは関係ありません。
  • C. 書き込みも行います。
この分野を解く 分野ページへ

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

  1. 条件変数で「キューが空でなくなるまで待つ」とき、待ちから起きた後に条件をif文ではなくwhile文で確かめ直す理由として正しいものはどれか。
  2. 2つのコアがそれぞれ自分のキャッシュに変数xのコピーを持っている。コア0がxに書き込んだあと、コア1がxを読むときに、キャッシュコヒーレンシの仕組みがなければ起こりうる問題はどれか。
  3. キャッシュコヒーレンシのプロトコルであるMESIの4つの状態の組み合わせとして正しいものはどれか。
  4. MESIプロトコルでキャッシュのラインがModified(M)状態にあるときの意味として正しいものはどれか。
  5. MESIプロトコルで、Exclusive(E)状態のラインにそのコアが書き込むときの動作として正しいものはどれか。