キャッシュメモリの「ヒット」とは?
コンピュータの処理速度を考えるうえで、キャッシュメモリはとても重要です。
基本情報技術者試験でも、次のような言葉がよく出てきます。
- キャッシュメモリ
- ヒット
- ヒット率
- 実効アクセス時間
特に初学者がつまずきやすいのが、「ヒットする」とは何かです。
今回は、キャッシュメモリにおけるヒットを中心に、初学者向けに整理します。
キャッシュメモリとは何か
キャッシュメモリとは、
CPUと主記憶装置の間に置かれる、高速な小容量メモリです。
CPUは非常に高速に動きます。
一方、主記憶装置、つまりメインメモリはCPUより遅いです。
そのため、CPUが毎回メインメモリまでデータを取りに行くと、待ち時間が発生します。
そこで登場するのがキャッシュメモリです。
キャッシュメモリには、CPUがよく使いそうなデータを一時的に置いておきます。
イメージとしては、次のような関係です。

CPU
↓
キャッシュメモリ ← 速い・小さい
↓
主記憶装置 ← 遅い・大きい
キャッシュメモリは、
CPUの近くにある高速な作業台
のようなものです。
ヒットとは何か
キャッシュメモリでいうヒットとは、
CPUが必要とするデータが、すでにキャッシュメモリ上にあることです。
つまり、CPUが
「このデータが欲しい」
と思ったときに、キャッシュメモリを見に行きます。
そこで必要なデータが見つかれば、ヒットです。

CPU「データAが欲しい」
↓
キャッシュメモリを見る
↓
データAがあった!
↓
ヒット
ヒットした場合、CPUは主記憶装置まで取りに行かなくて済みます。
そのため、処理が速くなります。
ミスとは何か
反対に、キャッシュメモリに必要なデータがない場合を、
ミスまたはキャッシュミスといいます。
CPU「データBが欲しい」
↓
キャッシュメモリを見る
↓
データBがない
↓
主記憶装置まで取りに行く
↓
ミス
ミスした場合、主記憶装置までデータを取りに行く必要があります。
主記憶装置はキャッシュメモリより遅いため、処理時間が長くなります。
ヒット率とは何か
ヒット率とは、
CPUが必要としたデータが、キャッシュメモリ上に見つかる確率です。
たとえば、100回データを読みに行って、そのうち90回キャッシュメモリ上にデータがあったとします。
この場合、ヒット率は90%です。

100回中90回ヒット
↓
ヒット率 = 90% = 0.9
試験では、計算しやすいように
90%ではなく0.9
として使うことが多いです。
1 − ヒット率とは何か

ヒット率が「キャッシュにある確率」なら、
1 − ヒット率は「キャッシュにない確率」です。
つまり、主記憶装置まで取りに行く確率です。
たとえば、ヒット率が0.9なら、
1 − 0.9 = 0.1
です。
これは、10%の確率でキャッシュミスするという意味です。
ヒット率 = キャッシュメモリにある確率
1 − ヒット率 = 主記憶装置に取りに行く確率
ここが、実効アクセス時間の計算でとても重要です。
実効アクセス時間とは何か
実効アクセス時間とは、
キャッシュメモリを使った場合に、平均してどれくらいの時間でデータを読めるかを表す時間です。
毎回ヒットするわけではありません。
毎回ミスするわけでもありません。
そのため、平均時間を計算します。
基本情報技術者試験では、次の式で考えることが多いです。

実効アクセス時間
= キャッシュメモリへのアクセス時間 × ヒット率
+ 主記憶装置へのアクセス時間 × (1 − ヒット率)
これは、次のように考えると分かりやすいです。
ヒットした場合の時間 × ヒットする割合
+
ミスした場合の時間 × ミスする割合
例題で確認してみよう

次の条件で、実効アクセス時間を求めます。
キャッシュメモリへのアクセス時間:20ナノ秒
主記憶装置へのアクセス時間 :580ナノ秒
ヒット率 :0.9
公式に当てはめます。
実効アクセス時間
= 20 × 0.9 + 580 × (1 − 0.9)
まず、ヒットした場合の部分です。
20 × 0.9 = 18
次に、ミスした場合の部分です。
1 − 0.9 = 0.1
580 × 0.1 = 58
最後に足します。
18 + 58 = 76
したがって、答えは次のようになります。
実効アクセス時間 = 76ナノ秒
なぜヒット率が高いと速くなるのか
ヒット率が高いということは、
CPUが必要なデータをキャッシュメモリから取れる回数が多いということです。
キャッシュメモリは高速です。
そのため、ヒット率が高いほど、主記憶装置まで取りに行く回数が減ります。

ヒット率が高い
↓
キャッシュメモリで見つかる
↓
主記憶装置まで行かなくてよい
↓
平均アクセス時間が短くなる
↓
処理が速くなる
逆に、ヒット率が低いと、主記憶装置まで取りに行く回数が増えます。
そのため、平均アクセス時間は長くなります。
初学者が間違えやすいポイント
一番多い間違いは、
ヒット率をそのままパーセントで計算してしまうことです。
たとえば、ヒット率90%なら、計算では通常
90
ではなく、
0.9
を使います。
また、ミス率は
1 − ヒット率
で求めます。
ヒット率が0.9なら、ミス率は0.1です。
ヒット率 0.9
ミス率 0.1
この2つをセットで考えると、計算ミスが減ります。
試験での覚え方
試験では、次の形で覚えるとよいです。
ヒット = キャッシュメモリにあった
ミス = キャッシュメモリになかった
そして、実効アクセス時間は次のように覚えます。
平均時間
= 速い時間 × ヒット率
+ 遅い時間 × ミス率
もう少し試験用に書くと、次の形です。
実効アクセス時間
= キャッシュメモリへのアクセス時間 × ヒット率
+ 主記憶装置へのアクセス時間 × (1 − ヒット率)
まとめ
キャッシュメモリのヒットとは、
CPUが必要とするデータがキャッシュメモリ上にあることです。
ヒットすれば、CPUは主記憶装置までデータを取りに行かなくて済みます。
そのため、処理が速くなります。
重要ポイントは次の通りです。
ヒット率 = キャッシュメモリにデータがある確率
1 − ヒット率 = キャッシュメモリにデータがない確率
実効アクセス時間 = 平均して何ナノ秒でアクセスできるか
キャッシュメモリの問題は、難しそうに見えますが、考え方はシンプルです。
速い場所にあればヒット。
なければ遅い場所まで取りに行く。
まずはこのイメージを持つと、実効アクセス時間の計算も理解しやすくなります。










ディスカッション
コメント一覧
まだ、コメントがありません