【きゃっしゅめもり】

キャッシュメモリ とは?

💡 CPUの「手元のメモ帳」
📌 このページのポイント
キャッシュメモリの階層構造 CPU L1 キャッシュ L2 キャッシュ L3 キャッシュ メインメモリ(RAM) 速い 遅い 小さい 大きい ~1ns ~3ns ~10ns ~100ns ~64KB ~256KB ~8MB ~16GB 速度 容量 上位ほど高速・小容量、下位ほど低速・大容量のトレードオフ
CPUに近いほど高速だが容量が小さい階層構造
ひよこ ひよこ

キャッシュメモリって何?普通のメモリと違うの?

ペンギン先生 ペンギン先生

CPUはすごく速いけど、メモリ(RAM)は相対的に遅い。その速度差を埋めるために、CPUのすぐそばに置く超高速な小さなメモリがキャッシュメモリだよ。よく使うデータをそこに置いておけば、CPUが待たずに済む。

ひよこ ひよこ

L1・L2・L3ってよく聞くけど、何が違うの?

ペンギン先生 ペンギン先生

階層構造になってて、L1が一番CPUに近くて最速・最小。L3が一番大きくて少し遅い。CPUはまずL1を探して、なければL2、それでもなければL3、最後にRAMを見に行く。速い順に探すから効率的なんだ。

ひよこ ひよこ

キャッシュって自動で管理されるの?

ペンギン先生 ペンギン先生

ほとんど自動だよ。OSとCPUハードウェアが協力して、どのデータをキャッシュするか判断する。プログラマーが直接触ることは基本ない。ただ、パフォーマンスを突き詰めるときはキャッシュの使い方を意識したプログラミングをすることもある。

ひよこ ひよこ

「キャッシュコヒーレンシ」って何?難しそう…

ペンギン先生 ペンギン先生

マルチコアCPUだと各コアが独自のL1・L2キャッシュを持つんだけど、複数のコアが同じメモリを読み書きするとき「それぞれのキャッシュの内容が一致しているか」を保証する問題がキャッシュコヒーレンシだよ。例えばコア1がある値を書き換えたのに、コア2のキャッシュには古い値が残ってたらバグになる。これをハードウェアレベルで解決するMESIプロトコルとかがあって、並列プログラミングのバグの原因になったりする結構深い問題なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「キャッシュメモリ」って出てきたら「CPUがよく使うデータを手元に置いておく超高速な小容量メモリだな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cache Memory」 = 隠し場所のメモリ
💬 Cacheはフランス語の「隠す」が語源。データを近くに「こっそり隠し持っておく」イメージ。発音は「キャッシュ」(現金のCashと同じ)
← 用語集にもどる