メモリ階層と性能

ハードウェアのプリフェッチが特に効果を発揮しやすいアクセスはどれか。

  1. A配列を一定の間隔(ストライド)で順に読んでいくアクセス
  2. B連結リストを先頭から1要素ずつたどっていくアクセス
  3. Cハッシュ表をランダムなキーで引いていくアクセス
答えと解説を見る

正解:A. 配列を一定の間隔(ストライド)で順に読んでいくアクセス

ハードウェアのプリフェッチャは、直前のアクセスのアドレスの規則性(連続や一定の間隔)を見つけ、次に来るアドレスを予測して先に読み込みます。配列を一定のストライドで読むアクセスは予測しやすく、効果が大きくなります。連結リストは次の要素のアドレスが今の要素を読むまで分からないため、規則性がなく予測できません。ランダムなキーでのハッシュ表の参照も、アドレスに規則性がないため効果は小さくなります。

  • A. 正しい。規則的な間隔のアクセスは予測しやすく、効果が大きくなります。
  • B. 次のアドレスが今の要素を読むまで分からないため、予測できません。
  • C. アドレスに規則性がないため、効果は小さくなります。
この分野を解く 分野ページへ

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

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