メモリ階層と性能

容量2ラインのフルアソシアティブ方式でLRU置き換えのキャッシュが最初は空のとき、ブロックをA、B、A、C、B、Aの順に参照すると、ミスは何回起こるか。

  1. A4回
  2. B5回
  3. C6回
答えと解説を見る

正解:B. 5回

順に追うと、A(ミス、[A])、B(ミス、[A,B])、A(ヒット、Aが最近)、C(ミス、最も古いBを追い出し[A,C])、B(ミス、最も古いAを追い出し[C,B])、A(ミス、最も古いCを追い出し[B,A])となり、ミスは5回です。4回とするのは、Cを入れるときにAを追い出したと誤った場合などの数え方で、LRUではヒットしたAが新しくなっている点が大切です。6回は3回目のAのヒットを見落とした数です。

  • A. 4回は追い出すブロックを誤った数え方です。
  • B. 正しい。ヒットは3回目のAだけで、ミスは5回です。
  • C. 6回は3回目のAのヒットを見落とした数です。
この分野を解く 分野ページへ

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

  1. ハードウェアのプリフェッチが特に効果を発揮しやすいアクセスはどれか。
  2. ソフトウェアのプリフェッチ命令を入れるとき、どれだけ先のデータを読むか(プリフェッチの距離)についての説明として正しいものはどれか。
  3. 上のループでintが4バイト、キャッシュラインが64バイト、配列はキャッシュに入っておらず先頭がラインの境界にそろっているとき、プリフェッチがなければ配列の読み込みのミス率はいくらか。
  4. 行列の積などで使われるループブロッキング(タイリング)の主な目的はどれか。
  5. 上のようにx座標だけを合計する処理を、配列の構造体(各成分を別々の配列にする形)に書き換えると速くなりやすい理由はどれか。