キャッシュメモリ(cache memory)
- テクノロジ系
- コンピュータ構成要素
- 基本情報
- 応用情報
- 重要度 ★★★★☆
よく使うデータをCPUの近くに置き、主記憶へ読みに行く回数を減らす小さくて速いメモリ。
もう少し詳しい説明
キャッシュメモリは、よく使うデータを手元に置いておくための、小さくて速い入れ物です。
机で作業するときを思い浮かべてください。よく使う文房具は机の引き出しに入れておき、めったに使わないものは別の部屋の棚にしまいます。引き出しなら手を伸ばすだけ、別の部屋なら歩いて往復です。
コンピュータの中でも同じことが起きています。
CPUは計算をするだけで、データそのものを持っていません。必要になるたび主記憶へ取りに行きますが、これが遅い。そこで、よく使うデータだけをCPUのすぐ隣にコピーしておきます。これがキャッシュメモリです。
ヒット率と実効アクセス時間
探したデータがキャッシュにあることをヒット、無くて主記憶まで取りに行くことをミスと呼びます。ヒットする割合がヒット率です。
探していたデータが見つかるまでに平均で何秒かかるかを実効アクセス時間と言い、こう計算します。
実効アクセス時間 = ヒット率 × キャッシュの時間 + ミス率 × 主記憶の時間
ミス率は 1 − ヒット率 です。
この式で一番間違えやすいのは、ヒット率とミス率をどちらの時間に掛けるかです。入れ替えても計算は最後まで通ってしまうので、答えが出た時点では気づけません。
覚え方は、言葉どうしを結びつけるのが確実です。「キャッシュに当たる」ことをヒットと呼ぶのだから、ヒット率はキャッシュの時間とセット。残りのミス率が主記憶の時間とセットになります。
(どちらの割合が大きいかで覚えようとすると失敗します。ヒット率が 0.3 なら、大きいのはミス率のほうです。)
記憶装置の並び
キャッシュがなぜ置かれているのかは、記憶装置全体の並びを見ると分かります。
上へ行くほど速いかわりに、同じ容量あたりの値段が高くなり、大きな容量を積めません。全部を一番速い部品にできれば話は早いのですが、値段が現実的ではない。だから、よく使うものだけを上に置きます。
キャッシュに使われている SRAM は速くて高く、主記憶の DRAM は遅くて安い、という関係です。
書き込みのしかた
データを読むだけなら、キャッシュを見るか主記憶を見るかの違いしかありません。ですが書き換えるときは、キャッシュと主記憶の両方をどう扱うかを決めておく必要があります。書き込み方式は2つあります。
- ライトスルー:キャッシュと主記憶の両方に同時に書く。食い違わないが、書き込みが遅い
- ライトバック:キャッシュにだけ書き、追い出されるときにまとめて書き戻す。速いが、主記憶が一時的に古いまま
2段階になっている場合
1次キャッシュ・2次キャッシュと階層になっていることがあります。このとき**2次のヒット率は「1次で外したもののうち何割が当たるか」**であって、全体に対する割合ではありません。ここも取り違えやすい点です。
覚え方:速い順は「レ・キャ・主・補」
記憶装置の並びは、速い順に頭文字で覚えられます。
レジスタ → キャッシュメモリ → 主記憶 → 補助記憶
CPUに近いほうから外側へ、という並びです。そして速いものほど、同じ容量あたりの値段が高く、容量は小さくなります。 順番を思い出せたら、速さ・値段・容量の3つが同じ向きに並ぶ(上が速い=高い=小さい)ことまでセットで確認してください。
試験ではこう出る
科目A(旧・午前)では計算問題として出ます。ヒット率とキャッシュ・主記憶それぞれのアクセス時間を与えて実効アクセス時間を求めさせるのが定番で、逆にヒット率や主記憶のアクセス時間を逆算させる形もあります。応用情報では1次・2次の2階層で問われることがあり、ライトスルーとライトバックの違いを説明として選ばせる問題も出ます。式そのものは短いので、手を動かして形を覚えてしまうのが早い単元です。
選択肢にはヒット率とミス率を入れ替えた値がほぼ必ず混ざっています。ヒット率ではなくミス率のほうを与えて、頭の中で1から引かせるひねりも定番です。
関連する用語
- 主記憶
- プログラムとデータを置く場所。容量は大きいが、キャッシュより遅い
- 仮想記憶
- 主記憶より大きい容量があるように見せかける仕組み。速度差を埋めるのとは目的が違う
- バッファ
- 速度差を吸収する一時置き場。装置どうしのデータの受け渡しに使うことが多い
- 割込み
- 作業中のCPUに別の用事を割り込ませる仕組み。どちらもCPUを待たせない工夫
ミニクイズ
キャッシュメモリのアクセス時間が10ナノ秒、主記憶のアクセス時間が70ナノ秒、ヒット率が0.9のとき、実効アクセス時間は何ナノ秒か。
正解は 1番:16ナノ秒
0.9 × 10 + 0.1 × 70 = 9 + 7 = 16 です。64ナノ秒はヒット率とミス率を入れ替えて計算した値、40ナノ秒は2つの時間を単純に平均した値、10ナノ秒はキャッシュだけを見てミスした分を足し忘れた値です。速いほうに大きい重みが付くので、答えは必ずキャッシュ寄りになります。
最終更新:2026-09-14