キャッシュメモリとは(全体像)
キャッシュメモリは、メインメモリより速いが小さいメモリで、よく使うデータを一時的に置いておく場所。CPUがメインメモリまで取りに行くと時間がかかるので、近くに置いて待ち時間を減らす。
身近な例が机の上。倉庫(メインメモリ)まで取りに行くと遅いので、よく使う物は手元(キャッシュ)に置く。手元にあれば一瞬で取れる——これがキャッシュの発想だ。
このキャッシュは速さと容量で3階層に分かれる。求めるデータがキャッシュにあることを「ヒット」といい、ヒット率が高いほど全体が速くなる。
詳しく:3階層・書き込み方式・連想度だけ覚えれば戦える
ここが記事の心臓部。まずは3階層から。近いほど速く、小さい。
キャッシュの3階層
| 階層 | 速さ・容量 | 図書館のたとえ |
|---|---|---|
| L1 | 最速・最小(コア専用) | デスクの上 |
| L2 | 中速・中容量 | 引き出し |
| L3 | 低速・大容量(全コア共有) | 部屋の本棚 |
| (メインメモリ) | さらに遅い・大容量 | 倉庫 |
次に、データを書きかえるときの書き込み方式。ここは名前にだまされやすいので注意。
書き込み方式2種
| 方式 | 動き | 速さ | メモ |
|---|---|---|---|
| ライトスルー | キャッシュとメモリの両方へ同時に書く | 遅い | 毎回メモリに書くので時間がかかる |
| ライトバック | まずキャッシュだけに書き、追い出すときにメモリへ | 速い | 一貫性の管理はやや複雑 |
「ライトスルー」は名前が速そうに見えるが、毎回メモリにも書くので実は遅い。逆にライトバックの方が速い。ここが頻出の引っかけだ。
最後に、データをキャッシュのどこに置けるかを決める連想度。
連想度3種
| 連想度 | 置き場所 | 特徴 |
|---|---|---|
| ダイレクトマップ | 1か所に固定 | 単純だが衝突しやすい |
| セット連想(n-way) | いくつかの場所から選ぶ | バランス型・現代の主流 |
| フル連想 | どこにでも置ける | 柔軟だが探すのに手間と回路が必要 |
つまり、フル連想は自由だが、探すコストが大きい。だから「フル連想が常に最適」とは限らず、実際はバランスのよいセット連想がよく使われる、というわけだね。
わかりやすく言い換えると
要するに、キャッシュは「よく使う物を手元に置いて速くする」しくみだ。
①3階層 … デスクの上(L1)→引き出し(L2)→本棚(L3)→倉庫(メインメモリ)
②書き込み方式 … ライトスルーは毎回倉庫にも記録(遅い)/ライトバックは手元だけメモして後でまとめて反映(速い)
③連想度 … 置き場所のルール。固定(ダイレクト)/いくつかから選ぶ(セット連想・主流)/どこにでも(フル連想)
「ライトスルーは名前と違って遅い」だけは取り違えやすいので押さえておこう。
試験のツボ
🔴 一番出る:書き込み方式(名前の引っかけ)
①ライトスルーは毎回メモリにも書くので遅い
②ライトバックはキャッシュ優先で速い
🔴 次に出る:3階層
①L1が最速・最小、L3が低速・大容量
②近いほど速く小さい。ヒット率が高いほど速い
🟡 押さえると安定:連想度3種
①ダイレクトマップ・セット連想・フル連想
②主流はセット連想。フル連想は探すコストが大きい
よくある間違い
①「ライトスルーは名前のとおり速い」→ ✗ 毎回メモリにも書くので遅い。速いのはライトバック。
②「フル連想はいつも最適」→ ✗ どこにでも置けるが、探すための回路と手間が大きい。主流はセット連想。
③「L3が最速で最小」→ ✗ 最速で最小はL1。L3は低速で大容量、全コアで共有する。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(3階層)
キャッシュの3階層に関する次の記述のうち、正しいものはどれか。
- L3が最も速くて最も小さく、L1が最も遅くて最も大きい階層であるとされている
- L1が最も速くて小さく、L3は低速で大容量という、近いほど速い階層になっている
- L1もL2もL3もまったく同じ速さと容量で、階層に分かれている意味はないものだ
- キャッシュはメインメモリより遅く、わざわざ近くに置く意味はないものとされる
解答は 2 である。
L1が最も速くて小さく、L3は低速で大容量なのだ。CPUに近いほど速く、小さくなる——デスク・引き出し・本棚の関係なるぞ。
選択肢1はL1とL3が逆。選択肢3の「同じ」、選択肢4の「メモリより遅い」も誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | L1が最速・最小 |
| 2 | ✓ | 近いほど速く小さい |
| 3 | ✗ | 階層で速さが違う |
| 4 | ✗ | キャッシュはメモリより速い |
オリジナル問題2(書き込み方式)
キャッシュの書き込み方式に関する次の記述のうち、正しいものはどれか。
- ライトスルーは毎回メモリにも書くため遅く、ライトバックはキャッシュ優先で速い
- ライトスルーはキャッシュだけに書くため速く、ライトバックは毎回メモリに書く
- ライトスルーもライトバックもまったく同じ動きで、速さに違いはないものとされる
- ライトバックはメモリにいっさい書かず、データが消えても直さないものとされている
解答は 1 である。
ライトスルーは毎回メモリにも書くので遅い、ライトバックはキャッシュ優先で速いのだ。名前が逆の印象を与えるので注意なるぞ。
選択肢2は速い・遅いが逆。選択肢3の「同じ」、選択肢4の「メモリに書かない」も誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | ライトスルー=遅い・ライトバック=速い |
| 2 | ✗ | 速い・遅いが逆 |
| 3 | ✗ | 速さが違う |
| 4 | ✗ | 追い出すときにメモリへ書く |
オリジナル問題3(連想度)
キャッシュの連想度に関する次の記述のうち、正しいものはどれか。
- ダイレクトマップはどこにでも自由に置けるため、衝突がいっさい起きないものだ
- フル連想は探すコストがゼロで、どんな場面でも必ず最適になるものとされている
- フル連想はどこにでも置けるが探すコストがとても大きく、主流はセット連想だ
- 連想度はキャッシュの置き場所とは無関係で、速さにも影響しないものとされる
解答は 3 である。
フル連想はどこにでも置けるが、その分探すコストが大きいのだ。だから常に最適とは限らず、主流はバランスのよいセット連想なるぞ。
選択肢1はダイレクトマップが固定なのに「自由」と誤り。選択肢2の「コストゼロ」、選択肢4の「無関係」も誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | ダイレクトマップは固定 |
| 2 | ✗ | 探すコストが大きい |
| 3 | ✓ | フル連想は高コスト・主流はセット連想 |
| 4 | ✗ | 置き場所のルールで速さに影響 |
まとめ
押さえどころ
- 🔴 書き込み方式 = ライトスルーは毎回メモリにも書いて遅い、ライトバックはキャッシュ優先で速い(名前の引っかけ)。
- 🔴 3階層 = L1最速・最小、L3低速・大容量。近いほど速い。ヒット率が高いほど速い。
- 🟡 連想度 = ダイレクトマップ・セット連想(主流)・フル連想。フル連想は探すコストが大きい。
次に学ぶ
- CPUアーキテクチャ ── キャッシュを含むCPUの部品全体の構成。あわせて押さえると位置づけが分かる。
- 時空間トレードオフ ── キャッシュは「メモリを使って速くする」典型例。速さとメモリの引っぱり合いがつかめる。
執筆: SikakuQuest編集部