【きゃっしゅめもり】

キャッシュメモリ とは?

最終更新:
💡 必要なデータを、CPUの手元の棚へ

CPUが使うデータや命令の一部を、メインメモリより短い待ち時間で取り出せる場所に置くメモリ。必要なものが見つかると、より遠い階層から読む回数を減らせる。

📌 このページのポイント
キャッシュ:手元の棚から取り出すCPUがデータを使うキャッシュ見つかる=ヒット近い棚から読む下位の階層なければミスさらに先を調べる必要なものが手元にあると、待つ時間を減らせるL1・L2・L3などの構成はCPUによる
読み取りのイメージ。実際の階層・待ち時間・共有の範囲はCPUによって異なります。
ひよこ ひよこ
普通のメモリがあるのに、なぜキャッシュも使うの?
ペンギン先生 ペンギン先生
CPUの処理に対して、メインメモリからデータを読む待ち時間が問題になることがあるよ。そこで、使うデータや命令の一部を小さな近いメモリに置くんだ。手元の棚から取れれば、遠い棚へ行く回数を減らせる、という例えだね。
ひよこ ひよこ
ペンギン先生 ペンギン先生
必要なデータが、そのキャッシュに見つかること。なければミスで、ほかの階層から取り出す必要があるよ。容量には限りがあり、データを入れ替える。使うデータの並び方や再利用のされ方によって、ヒットのしやすさが変わるんだ。
ひよこ ひよこ
L1・L2・L3は、どれもあるの?
ペンギン先生 ペンギン先生
構成はCPUによるよ。複数の階層がある場合、一般にCPUに近い階層ほど小さく、短い待ち時間で使える。大きな下位の階層も組み合わせるんだ。容量・共有の範囲・待ち時間を、どのCPUでも同じ値として覚える必要はないよ。
ひよこ ひよこ
誰が中身を管理するの?
ペンギン先生 ペンギン先生
通常のCPUキャッシュの取り込みや入れ替えは、主にハードウェアが行うよ。データはキャッシュラインというまとまりで扱う。先読みの機能もあるけれど、使うものを全部予測できるわけではない。性能を改善するときは、まず測定してデータの使い方を見直すんだ。
ひよこ ひよこ
複数のCPUコアが同じ値を扱うときは?
ペンギン先生 ペンギン先生
対応するハードウェアには、同じメモリの値を扱うキャッシュどうしの整合性を保つ仕組みがあるよ。ただし、それだけで複数スレッドの処理が安全になるわけではない。読み書きの順序や同時変更には、ロックやアトミック操作など、言語と環境に合う同期も必要なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「キャッシュメモリ」って出てきたら「CPUが使うデータを手元に置き、メモリを待つ時間を減らすメモリ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cache Memory」 = 一部のデータを近くに置くメモリ
💬 cacheは、使うものを取っておく場所というイメージ。CPUのメモリでは、必要なデータや命令の一部を近い階層に置くんだ。

参考資料

← 用語集にもどる