キャッシュメモリ

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

CPUと主記憶装置の間に置く、小容量で高速なメモリ。よく使うデータを置いておくことで、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など、ネットワークの世界でも広く使われている。

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

ネットワークスペシャリスト

午前Ⅱ

この用語が出てくる記事

↑