メモリ階層と性能
2つのプログラムを同じコアで交互に実行すると、それぞれを単独で実行するより遅くなることがある。キャッシュの観点から最も適切な説明はどれか。
- A交互に実行すると、それぞれが実行する命令の数そのものが2倍に増えるから
- B交互に実行すると、キャッシュの容量が半分に設定し直されるから
- C相手のデータに自分のデータが追い出され、読み直しが増えるから
答えと解説を見る
正解:C. 相手のデータに自分のデータが追い出され、読み直しが増えるから
プログラムを切り替えると、相手のプログラムが使ったデータでキャッシュやTLBが埋まり、自分の番が戻ってきたときには必要なデータが追い出されています。そのため、単独なら当たっていたアクセスでミスが起こり、データを主記憶から読み直す時間がかかります。切り替えの間隔が短いほど、この影響は大きくなります。実行する命令の数は変わらず、キャッシュの容量が設定し直されるわけでもありません。キャッシュを分け合う影響によるものです。
- A. それぞれの命令の数は変わりません。
- B. キャッシュの容量が変わるわけではありません。
- C. 正しい。相手のデータに追い出され、読み直しのミスが増えます。