メモリ階層と性能

ラインサイズ64バイト、セット数64のキャッシュで、アドレス0x1234のデータが入るセットの番号はどれか。

  1. A4
  2. B52
  3. C8
答えと解説を見る

正解:C. 8

オフセットは 64 = 2⁶ で下位6ビット、インデックスはセット数 64 = 2⁶ でその上の6ビットです。0x1234 = 4660 を64で割ると 4660 ÷ 64 = 72 余り52なので、ライン番号は72です。セット番号はライン番号をセット数で割った余りで、72 mod 64 = 8 になります。52は64で割った余りで、ライン内の位置(オフセット)を表す値です。4はアドレスの16進数の下1桁を取り出しただけの値で、セットとは関係ありません。

  • A. 4は16進数の下1桁で、セットとは関係ありません。
  • B. 52はライン内の位置(オフセット)です。
  • C. 正しい。ライン番号72を64で割った余りの8です。
この分野を解く 分野ページへ

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

  1. 同じラインに何度も書き込む処理で、ライトスルー方式よりライトバック方式の方が有利になる主な理由はどれか。
  2. 最も長い間使われていないものを追い出すLRUに対して、今後最も長い間使われないものを追い出す方式(最適置き換え、OPT)についての説明として正しいものはどれか。
  3. キャッシュの容量を大きくすると一般にヒット時間がどうなるか。その理由とあわせて正しいものはどれか。
  4. 上の連結リストをたどる処理が、同じ数の要素をもつ配列を順に読むより大幅に遅くなりやすい理由はどれか。
  5. 1回のミスで64バイトのラインを読み、主記憶の待ち時間が100 nsのとき、同時に処理できるミスが1つだけなら読み出しの帯域は約0.64 GB/sにとどまる。同時に10個のミスを処理できれば、帯域はおよそいくらになるか。(ほかの制約はないものとする)