キャッシュメモリ(cache memory)

分類
テクノロジ系 コンピュータ構成要素
出る試験
基本情報応用情報
重要度
★★★★☆

よく使うデータをCPUの近くに置き、主記憶へ読みに行く回数を減らす小さくて速いメモリ。

もう少し詳しい説明

キャッシュメモリは、よく使うデータを手元に置いておくための、小さくて速い入れ物です。

机で作業するときを思い浮かべてください。よく使う文房具は机の引き出しに入れておき、めったに使わないものは別の部屋の棚にしまいます。引き出しなら手を伸ばすだけ、別の部屋なら歩いて往復です。

引き出しがキャッシュメモリ、別の部屋の棚が主記憶(いま使うプログラムとデータを置いておく記憶装置)にあたります。

とても速い速いCPU計算するキャッシュSRAM主記憶DRAM
CPUは計算をするだけで、データそのものは持っていません。すぐ隣に置いてある小さくて速い入れ物がキャッシュメモリ、その先にある大きくて少し遅い入れ物が主記憶です。パソコンの「メモリ8GB」はこの主記憶のことを指しています。

CPU(Central Processing Unit。中央処理装置。計算と、命令を実行する仕事を受け持つ部品)は計算をするだけで、データそのものを持っていません。必要になるたび主記憶(プログラムとデータを置いておく記憶装置)へ取りに行きますが、これが遅い。そこで、よく使うデータだけをCPUのすぐ隣にコピーしておきます。これがキャッシュメモリです。

どれくらい遅いのか。 主記憶へ1回取りに行くあいだに、キャッシュなら5回から10回ぶん読めます。CPUはそのあいだ、何もせずに待つことになります。

ヒット率と実効アクセス時間

探したデータがキャッシュにあることをヒット、無くて主記憶まで取りに行くことをミスと呼びます。ヒットする割合がヒット率です。

探していたデータが見つかるまでに平均で何秒かかるかを実効アクセス時間と言い、こう計算します。

実効アクセス時間 = ヒット率 × キャッシュの時間 + ミス率 × 主記憶の時間

ミス率は 1 − ヒット率 です。

ヒット率 0.9、キャッシュ 10ナノ秒、主記憶 100ナノ秒で計算してみます。ミス率は 1 − 0.9 = 0.1 です。

実効アクセス時間 = 0.9 × 10ナノ秒 + 0.1 × 100ナノ秒 = 9 + 10 = 19ナノ秒

この計算、足す前の 9 と 10 を見てください。 10回に9回はキャッシュで済んでいるのに、残り1回のミスのほうが、9回ぶんより時間を食っています。キャッシュの効果が、ヒット率の最後の数%でなぜ大きく変わるのかが、この2つの数字に出ています。

この式で一番間違えやすいのは、ヒット率とミス率をどちらの時間に掛けるかです。入れ替えても計算は最後まで通ってしまうので、答えが出た時点では気づけません。

ヒット(90%)キャッシュ 10ナノ秒 × 0.9 = 9ミス(10%)主記憶 100ナノ秒 × 0.1 = 10実効アクセス時間9 + 10 = 19ナノ秒取り違えると10 × 0.1 + 100 × 0.9 = 91ナノ秒 … 主記憶並みで、おかしい
掛ける相手を入れ替えても、計算そのものは最後まで通ってしまいます。だから答えが出た時点では気づけません。気づく手がかりは答えの形のほうで、10回に9回はキャッシュで済むのに主記憶(100ナノ秒)に近い値が出たら、掛ける相手を取り違えています。

(取り違えた場合)0.1 × 10ナノ秒 + 0.9 × 100ナノ秒 = 1 + 90 = 91ナノ秒

検算のしかた。 答えは必ずキャッシュの時間と主記憶の時間のあいだに入り(この例なら10〜100ナノ秒)、ヒット率が高いほどキャッシュ側に寄ります。ヒット率0.9で19ナノ秒なら10のすぐ近くなので、形として正しい。91ナノ秒は100のほうに寄っていて、「ヒット率が高いのに主記憶並みに遅い」という、ありえない答えになっています。

覚え方は、言葉どうしを結びつけるのが確実です。「キャッシュに当たる」ことをヒットと呼ぶのだから、ヒット率はキャッシュの時間とセット。残りのミス率が主記憶の時間とセットになります。

(どちらの割合が大きいかで覚えようとすると失敗します。ヒット率が 0.3 なら、大きいのはミス率のほうです。)

記憶装置の並び

キャッシュがなぜ置かれているのかは、記憶装置全体の並びを見ると分かります。

レジスタCPUの中キャッシュメモリSRAM主記憶DRAM補助記憶SSD・HDD速い・値段が高い・容量が小さい遅い・値段が安い・容量が大きい
上から下へ、CPUに近い順に並んでいます。右の矢印が、上下で何が入れ替わるかを示しています。主記憶がまん中あたりにいることを確かめてください。

上へ行くほど速いかわりに、同じ容量あたりの値段が高くなり、大きな容量を積めません。全部を一番速い部品にできれば話は早いのですが、値段が現実的ではない。そのため、よく使うものだけを上に置きます。

キャッシュに使われている SRAM(Static Random Access Memory、エスラム。フリップフロップ回路(1ビット(0か1のどちらかを入れる1けた)の値を保ちつづける回路)で記憶する、速いほうの部品)は速くて高く、主記憶の DRAM(Dynamic Random Access Memory、ディーラム。コンデンサ(電気を一時的に蓄えておく部品)に電気を蓄えて記憶する、安くて大容量にしやすいほうの部品)は遅くて安い、という関係です。

書き込みのしかた

データを読むだけなら、キャッシュを見るか主記憶を見るかの違いしかありません。ですが書き換えるときは、キャッシュと主記憶の両方をどう扱うかを決めておく必要があります。書き込み方式は2つあります。

2段階になっている場合

キャッシュが1つではなく、1次キャッシュ(CPUのいちばん近くにある、小さくて速いほう)と2次キャッシュ(その外側にある、少し大きくて少し遅いほう)の2段になっていることがあります。

このとき2次のヒット率は「1次で見つからなかったもののうち、何割が当たるか」であって、全体に対する割合ではありません。ここも取り違えやすい点です。

→ キャッシュの練習問題を解く

覚え方:速い順は「レ・キャ・主・補」

記憶装置の並びは、速い順に頭文字で覚えられます。

レジスタ → キャッシュメモリ → 主記憶 → 補助記憶

レジスタは、CPU(計算と命令の実行を受け持つ部品)の中にある、計算中の値を置いておくごく小さな入れ物です。補助記憶は、電源を切っても消えない置き場所で、SSDやハードディスクがこれにあたります。

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ナノ秒はキャッシュだけを見てミスした分を足し忘れた値です。速いほうに大きい重みが付くので、答えは必ずキャッシュ寄りになります。

間違えた用語の復習リストを見る →

この分野をまとめて解く → コンピュータ構成要素とハードウェアのミニテスト(全33問)

最終更新:2026-09-14