キャッシュメモリの「ヒット」とは?

広告

コンピュータの処理速度を考えるうえで、キャッシュメモリはとても重要です。

基本情報技術者試験でも、次のような言葉がよく出てきます。

  • キャッシュメモリ
  • ヒット
  • ヒット率
  • 実効アクセス時間

特に初学者がつまずきやすいのが、「ヒットする」とは何かです。

今回は、キャッシュメモリにおけるヒットを中心に、初学者向けに整理します。


キャッシュメモリとは何か

キャッシュメモリとは、
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 − ヒット率 = キャッシュメモリにデータがない確率
実効アクセス時間 = 平均して何ナノ秒でアクセスできるか

キャッシュメモリの問題は、難しそうに見えますが、考え方はシンプルです。

速い場所にあればヒット。
なければ遅い場所まで取りに行く。

まずはこのイメージを持つと、実効アクセス時間の計算も理解しやすくなります。

訪問数 8 回, 今日の訪問数 8回

広告

C#

Posted by hidepon