キャッシュメモリ

読み:きゃっしゅめもり / 英語表記:cache memory

CPUと主記憶装置の間に置く、小容量で高速なメモリ。よく使うデータを置いておくことで、CPUが遅い主記憶にアクセスする回数を減らす。

イマシルちゃんの解説

CPUはものすごく速いのに、主記憶(メインメモリ)はそれに比べるとずっとのんびりなんだ。
CPUがいちいち主記憶まで取りに行っていたら、待ち時間ばかりになっちゃう。

そこで、よく使うデータを手元の小さな棚に置いておくのがキャッシュメモリ!
机の上に教科書を出しておけば、本棚まで取りに行かなくていいのと同じだね。

より深い解説

定義

キャッシュメモリは、CPUと主記憶装置(DRAM)の間に置かれる、高速で小容量のメモリ(SRAM)である。主記憶のデータの一部の写しを持ち、CPUが必要なデータがキャッシュにあれば、主記憶より速く読み書きできる。

局所性

キャッシュが効果を発揮するのは、プログラムのメモリアクセスに次の性質(局所性)があるためである。

局所性内容
時間的局所性一度アクセスしたデータは、近いうちに再びアクセスされやすい(ループの中の変数など)
空間的局所性アクセスしたデータの近くのデータも、近いうちにアクセスされやすい(配列を順に読むなど)

ヒット率と実効アクセス時間

必要なデータがキャッシュにある割合をヒット率という。ないことをキャッシュミスといい、その場合は主記憶から読み込む。

実効アクセス時間 = ヒット率 × キャッシュのアクセス時間
                 + (1 − ヒット率)× 主記憶のアクセス時間

例:ヒット率90%、キャッシュのアクセス時間10ナノ秒、主記憶のアクセス時間100ナノ秒の場合
0.9 × 10 + 0.1 × 100 = 19ナノ秒

階層構造

階層容量速さ
レジスタ最も小さい最も速い
1次キャッシュ(L1)数十KB速い
2次キャッシュ(L2)数百KB〜数MB
3次キャッシュ(L3)数MB〜数十MB
主記憶数GB〜遅い

CPUに近いほど小さく速く、遠いほど大きく遅い。

書込みの方式

CPUがデータを書き込むとき、主記憶にいつ反映するかで2つの方式がある。

方式書き込む先特徴
ライトスルー方式キャッシュと主記憶の両方に同時に主記憶の内容が常に最新。書込みは遅い
ライトバック方式キャッシュだけ。主記憶へは、キャッシュから追い出すときに書き戻す書込みが速い。一時的に主記憶の内容が古くなる

置換えのアルゴリズム

キャッシュがいっぱいのときに新しいデータを入れるには、どれかを追い出す必要がある。代表的な方法は、最も長い間使われていないものを追い出すLRU(Least Recently Used)である。

ネットワークでも同じ考え方

「よく使うものを手前に置いて、遠くまで取りに行く回数を減らす」という考え方は、DNSのキャッシュ、Webのプロキシキャッシュ、CDNなど、ネットワークの世界でも広く使われている。

実際の試験ではここに出る!

この用語が出てくる記事

↑