メモリ階層と性能

一度書いたあと当分読み返さない大きなデータを書き出すとき、キャッシュを通さないストア(ノンテンポラルストア)を使う主な利点はどれか。

  1. A書いたデータがキャッシュに長く残り、あとで読むときに速くなる
  2. B再利用しないデータでキャッシュを埋めずに済む
  3. C書き込みの順番が保証されなくなるので、プログラムの誤りが見つけやすくなる
答えと解説を見る

正解:B. 再利用しないデータでキャッシュを埋めずに済む

通常の書き込みでは、ライトアロケートによりラインを主記憶から読み込んでから書くため、書くだけのデータでも読み込みの通信が発生し、再利用するほかのデータを追い出してしまいます。ノンテンポラルストアは書き込みをまとめて直接主記憶へ送り、キャッシュを汚さず、不要な読み込みも省けます。書いたデータはキャッシュに残らないので、すぐ読み返す場合はかえって遅くなります。順番の扱いが変わるのは副作用で、利点ではありません。

  • A. 書いたデータはキャッシュに残らず、すぐ読むならかえって遅くなります。
  • B. 正しい。再利用しないデータでキャッシュを埋めず、不要な読み込みも省けます。
  • C. 順番の扱いの変化は注意点で、利点ではありません。
この分野を解く 分野ページへ

メモリ階層と性能のほかの問題

  1. キャッシュのヒット率が95%のとき、ミス率はいくらか。
  2. ミスしたラインを主記憶から読み込むとき、CPUが必要としている語(ワード)を先に送って、残りを後から送る手法はどれか。
  3. 上の2つのループを1つにまとめる(ループ融合)と、Nが大きいときに速くなりやすい理由はどれか。
  4. 大きな行列を転置する処理(b[j][i] = a[i][j])で、キャッシュのミスが多くなりやすい理由と、代表的な対策の組み合わせとして正しいものはどれか。
  5. 一般的なコンピュータの記憶階層で、上の階層(CPUに近い側)ほど成り立つ性質として正しいものはどれか。