キャッシュメモリとは?よく使うデータをCPUの近くに置いて高速化するしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

キャッシュメモリとは(全体像)

キャッシュメモリは、メインメモリより速いが小さいメモリで、よく使うデータを一時的に置いておく場所。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階層)

📝 オリジナル問題 1 キャッシュの3階層

キャッシュの3階層に関する次の記述のうち、正しいものはどれか。

  1. L3が最も速くて最も小さく、L1が最も遅くて最も大きい階層であるとされている
  2. L1が最も速くて小さく、L3は低速で大容量という、近いほど速い階層になっている
  3. L1もL2もL3もまったく同じ速さと容量で、階層に分かれている意味はないものだ
  4. キャッシュはメインメモリより遅く、わざわざ近くに置く意味はないものとされる
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

L1が最も速くて小さく、L3は低速で大容量なのだ。CPUに近いほど速く、小さくなる——デスク・引き出し・本棚の関係なるぞ。

選択肢1はL1とL3が逆。選択肢3の「同じ」、選択肢4の「メモリより遅い」も誤りである。

選択肢判定理由
1L1が最速・最小
2近いほど速く小さい
3階層で速さが違う
4キャッシュはメモリより速い

オリジナル問題2(書き込み方式)

📝 オリジナル問題 2 書き込み方式

キャッシュの書き込み方式に関する次の記述のうち、正しいものはどれか。

  1. ライトスルーは毎回メモリにも書くため遅く、ライトバックはキャッシュ優先で速い
  2. ライトスルーはキャッシュだけに書くため速く、ライトバックは毎回メモリに書く
  3. ライトスルーもライトバックもまったく同じ動きで、速さに違いはないものとされる
  4. ライトバックはメモリにいっさい書かず、データが消えても直さないものとされている
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

ライトスルーは毎回メモリにも書くので遅い、ライトバックはキャッシュ優先で速いのだ。名前が逆の印象を与えるので注意なるぞ。

選択肢2は速い・遅いが逆。選択肢3の「同じ」、選択肢4の「メモリに書かない」も誤りである。

選択肢判定理由
1ライトスルー=遅い・ライトバック=速い
2速い・遅いが逆
3速さが違う
4追い出すときにメモリへ書く

オリジナル問題3(連想度)

📝 オリジナル問題 3 連想度

キャッシュの連想度に関する次の記述のうち、正しいものはどれか。

  1. ダイレクトマップはどこにでも自由に置けるため、衝突がいっさい起きないものだ
  2. フル連想は探すコストがゼロで、どんな場面でも必ず最適になるものとされている
  3. フル連想はどこにでも置けるが探すコストがとても大きく、主流はセット連想だ
  4. 連想度はキャッシュの置き場所とは無関係で、速さにも影響しないものとされる
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

フル連想はどこにでも置けるが、その分探すコストが大きいのだ。だから常に最適とは限らず、主流はバランスのよいセット連想なるぞ。

選択肢1はダイレクトマップが固定なのに「自由」と誤り。選択肢2の「コストゼロ」、選択肢4の「無関係」も誤りである。

選択肢判定理由
1ダイレクトマップは固定
2探すコストが大きい
3フル連想は高コスト・主流はセット連想
4置き場所のルールで速さに影響

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る