キャッシュ
プログラムについて(ノイマン型コンピュータ)
プログラムの記憶参照は2つの性質を持つ。
- 時間的局所性 参照されたアドレスは、近い将来に再度参照されやすい。
- 空間的局所性 参照された近辺のアドレスは参照されやすい。
ループ文などがこの性質を生み出す。
配列や構造体がこの性質を生み出す。
つまりは、
一度参照されたアドレスをより高速な記憶装置にコピーしておく
ある程度の大きさを持ったブロックとしてコピーしておく
ことにより高速化が望める。
キャッシュの基本構成
空間的局所性に基づき、キャッシュは主記憶からある一定の大きさを単位としてデータがコピーされる。これをキャッシュブロックと呼ぶ。
マッピング方式
主記憶へのアクセス要求があると、まずキャッシュにデータがないかを検索する。このキャッシュと主記憶との対応づけのことをマッピングという。
- ダイレクトマップ
- フルアソシアティブ
- セットアソシアティブ
キャッシュブロックの置換え
マッピングにてデータが既に存在した場合の対処法として、最も古いデータを追い出す方式(LRU)がある。他にもいくつかのアルゴリズムが存在する。
ユニット分割
キャッシュは複数のユニットに分割して構成することにより、より性能を向上させることができる。
- マルチレベルキャッシュ 記憶階層の一つであるキャッシュ自体を多段構造にすること。より高速、小容量なものを1次キャッシュといい、段階がひとつ落ちるにつれてn+1次キャッシュと呼ばれる。
- ハーバードアーキテクチャ 主記憶上に保存される情報としては命令及びデータがある。これらはアクセスの特徴が異なる。命令に対しては基本的に読み出しのみが行われ、書き込みを行わない。データに対しては読み出し書き込みともに行う。よって命令用及びデータ用でキャッシュメモリを分割し、並列にアクセス可能とした方式をハーバードアーキテクチャと呼ぶ。
- ヴィクティムキャッシュ ヒット率が著しく低いところ(つまりはよくキャッシュブロックの置換えが起こっているところ)の追い出したデータを一時的に取っておくという場所をヴィクティムキャッシュと呼ぶ。これによりヒット率を向上させる。
メモ
上位レベルの記憶階層にアクセスする時間をヒット時間、ミスした場合にプロセッサがそのデータを得るまでにかかる時間をミスペナルティという。