ライン(ブロック): データ転送の単位
- 16~128バイトくらいのサイズ
- サイズはCPUで固定
- 空間的局所性から同ライン内のデータはキャッシュヒットしやすい
- 大きすぎても小さすぎてもキャッシュヒット率が下がる
- L2キャッシュ意味ある
キャッシュを加味したCPI計算が試験に出るらしい
キャッシュメモリをどう構築するのか
- ライン番号はラインサイズがバイトであればアドレスの上位ビットから判定できる
- アドレスはタグ+ライン番号+オフセットとも捉えられる
主記憶のラインとキャッシュのライン対応付け
-
ダイレクトマップ方式
- ライン番号の下位ビットとキャッシュのライン番号が対応
- キャッシュの各ラインに対して使用済みかどうかを示す有効ビットを置く
- これだとメモリのどこがキャッシュされたかわからない
- 上位ビット部分をタグとして利用、有効ビットと同じ用にキャッシュに入れる
- キャッシュが空いていても使えないケースがあるため非効率的
- ハードウェア構成が単純、高速
-
フルアソシアティブ方式
- タグにライン番号すべてを格納する
- キャッシュの稼働率は上げられるが、メモリからの探索が大変
- 連想度が高くなりすぎる
-
セットアソシアティブ方式
- 同じ番号のラインを複数本持たせて、ライン番号の代わりにセット番号を使う
- 連想度は同一番号のライン数になる
- ダイレクトマップもフルアソシアティブもセットアソシアティブの特別な場合と捉えることが可能