マルチコアと同期
ハードウェアトランザクショナルメモリの考え方として正しいものはどれか。
- Aクリティカルセクションを投機的に実行し、ほかのスレッドとの衝突がなければまとめて確定し、衝突すれば取り消してやり直す
- Bすべてのメモリの読み書きを、銀行の取引のようにディスクへ記録する
- Cメモリの書き込みを禁止して、読み出しだけを許す
答えと解説を見る
正解:A. クリティカルセクションを投機的に実行し、ほかのスレッドとの衝突がなければまとめて確定し、衝突すれば取り消してやり直す
トランザクショナルメモリでは、クリティカルセクションをトランザクションとして実行し、その間の書き込みは仮のものとしてほかから見えないようにします。ほかのスレッドが同じデータに触れていなければ、最後にすべての書き込みを一度に確定し、衝突があれば全部取り消してやり直すか、普通のロックに切り替えます。衝突が少なければ、粗いロックのままでも細かいロックに近い並列性が得られます。
- A. 正しい。ロックを取らずに並列に実行できる場合があります。
- B. ディスクへの記録とは関係ありません。
- C. 書き込みも行います。