性能評価・プロファイリング
性能カウンタで測ったところ、あるプログラムのIPC(1サイクルあたりの命令数)が0.3と非常に低く、最後の段のキャッシュのミスが多かった。最も考えられる状況と対策の組み合わせはどれか。
- Aメモリの待ちでCPUが止まっている時間が長い。データの並べ方を変えたりブロッキングを行ったりして、キャッシュを有効に使う
- B計算が速すぎる。周波数を上げる
- C分岐が少なすぎる。分岐を増やす
答えと解説を見る
正解:A. メモリの待ちでCPUが止まっている時間が長い。データの並べ方を変えたりブロッキングを行ったりして、キャッシュを有効に使う
現在のCPUは1サイクルに数命令を実行できるので、IPCが0.3というのは、ほとんどの時間何かを待っていることを示します。最後の段のキャッシュのミスが多ければ、主記憶からのデータを待っている時間が長いと考えられます。データを続いた番地に並べる、ループの順番を変える、ブロッキングで同じデータを何度も使う、などでキャッシュのミスを減らすのが効果的です。
- A. 正しい。メモリ律速の典型的な症状です。
- B. 周波数を上げても、メモリの待ちは短くなりません。
- C. 分岐を増やしても改善しません。