性能評価・プロファイリング

性能カウンタで測ったところ、あるプログラムのIPC(1サイクルあたりの命令数)が0.3と非常に低く、最後の段のキャッシュのミスが多かった。最も考えられる状況と対策の組み合わせはどれか。

  1. Aメモリの待ちでCPUが止まっている時間が長い。データの並べ方を変えたりブロッキングを行ったりして、キャッシュを有効に使う
  2. B計算が速すぎる。周波数を上げる
  3. C分岐が少なすぎる。分岐を増やす
答えと解説を見る

正解:A. メモリの待ちでCPUが止まっている時間が長い。データの並べ方を変えたりブロッキングを行ったりして、キャッシュを有効に使う

現在のCPUは1サイクルに数命令を実行できるので、IPCが0.3というのは、ほとんどの時間何かを待っていることを示します。最後の段のキャッシュのミスが多ければ、主記憶からのデータを待っている時間が長いと考えられます。データを続いた番地に並べる、ループの順番を変える、ブロッキングで同じデータを何度も使う、などでキャッシュのミスを減らすのが効果的です。

  • A. 正しい。メモリ律速の典型的な症状です。
  • B. 周波数を上げても、メモリの待ちは短くなりません。
  • C. 分岐を増やしても改善しません。
この分野を解く 分野ページへ

性能評価・プロファイリングのほかの問題

  1. 性能カウンタで、分岐の予測ミスが非常に多いことが分かった。改善の方法として当てはまるものはどれか。
  2. 性能カウンタを使ったトップダウン分析(Top-down Microarchitecture Analysis)で、CPUの命令を処理する枠の使われ方を分ける大きな分類として正しいものはどれか。
  3. プログラムが遅いのに、CPUの使用率が20%程度と低かった。最も考えられる原因はどれか。
  4. あるプログラムが計算律速かメモリ律速かを確かめる方法として、CPUの周波数を変えて実行時間を測った。メモリ律速なら一般にどのような結果になるか。
  5. Rooflineモデルで、ある処理がメモリ帯域で制限される領域にあると分かったとき、性能を上げる方向として正しいものはどれか。