---
title: "キャッシュメモリのヒット率とは？平均アクセス時間の計算をわかりやすく解説【基本情報技術者試験】"
description: "キャッシュメモリのヒット率を「キャッシュに目的のデータが存在する割合」として整理し、平均アクセス時間、ミス率、2種類のCPUを比較する計算問題の考え方をFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/cache-hit-rate-average-access-time/"
section: "fe"
---

## まず結論

キャッシュメモリのヒット率とは、**CPUが必要なデータを取りに行ったときに、キャッシュメモリに目的のデータがある割合**です。

基本情報技術者試験では、平均アクセス時間は次の形で考えます。

```text
平均アクセス時間
= キャッシュメモリのアクセス時間 × ヒット率
+ 主記憶のアクセス時間 × ミス率
```

ヒット率を `P` と置くと、ミス率は `1 - P` です。

```text
平均アクセス時間
= キャッシュ時間 × P
+ 主記憶時間 × (1 - P)
```

この形を作れれば、キャッシュの計算問題はかなり解きやすくなります。

## 直感的な説明

キャッシュメモリは、CPUの近くにある **よく使うデータの一時置き場** です。

CPUがデータを必要としたとき、まずキャッシュメモリを見ます。

```text
キャッシュにある
→ 速く取り出せる

キャッシュにない
→ 主記憶まで取りに行くので遅い
```

つまり、平均アクセス時間は、速い場合と遅い場合の平均です。

ただし、単純に2つの時間を足して2で割るわけではありません。

キャッシュに当たることが多いなら、平均はキャッシュ時間に近づきます。  
キャッシュに外れることが多いなら、平均は主記憶時間に近づきます。

英語では、このような平均を `weighted average` といいます。  
日本語では **重み付き平均** と考えると分かりやすいです。

## 定義・仕組み

キャッシュメモリは、CPUと主記憶の間にある高速な記憶装置です。

CPUから見ると、キャッシュメモリに目的のデータがあるかどうかで、アクセス時間が変わります。

| 用語 | 意味 |
|---|---|
| キャッシュヒット | 目的のデータがキャッシュにある |
| キャッシュミス | 目的のデータがキャッシュになく、主記憶へ行く |
| ヒット率 | キャッシュヒットする割合 |
| ミス率 | キャッシュミスする割合 |
| 平均アクセス時間 | ヒット時とミス時を考えた平均のアクセス時間 |

ヒット率を `P` とすると、ミス率は `1 - P` になります。

例えば、ヒット率が `0.8` なら、ミス率は `0.2` です。

```text
ヒット率：0.8
ミス率：1 - 0.8 = 0.2
```

平均アクセス時間は、次のように求めます。

```text
平均アクセス時間
= キャッシュ時間 × ヒット率
+ 主記憶時間 × ミス率
```

このテーマは、基本情報技術者試験の「コンピュータシステム」や「コンピュータ構成要素」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、キャッシュメモリのヒット率や平均アクセス時間を求める計算問題として出題されやすいです。

判断するときは、まず次の3つを整理します。

| 確認する値 | 例 |
|---|---|
| キャッシュのアクセス時間 | 20ナノ秒、40ナノ秒など |
| 主記憶のアクセス時間 | 300ナノ秒、500ナノ秒など |
| ヒット率 | `P`、`0.8`、`90%` など |

問題文にヒット率が与えられている場合は、そのまま平均アクセス時間を計算します。

```text
平均アクセス時間
= キャッシュ時間 × ヒット率
+ 主記憶時間 × (1 - ヒット率)
```

一方で、今回のように「2つのCPUの処理時間が等しい」と書かれている場合は、次のように式を作ります。

```text
CPU A の平均アクセス時間 = CPU B の平均アクセス時間
```

この形にすると、未知のヒット率を求められます。

## どんな場面で使う？

問題文では、キャッシュメモリの計算そのものよりも、問題文の条件を式に変換する力が大切です。

次のような例で考えます。

|  | CPU A | CPU B |
|---|---:|---:|
| キャッシュメモリのアクセス時間 | 60ナノ秒 | 20ナノ秒 |
| 主記憶のアクセス時間 | 300ナノ秒 | 420ナノ秒 |

CPU A と CPU B で同じプログラムを実行したところ、処理時間が同じだったとします。

このとき、キャッシュメモリのヒット率を `P` と置きます。

CPU A の平均アクセス時間は、次のようになります。

```text
60P + 300(1 - P)
```

CPU B の平均アクセス時間は、次のようになります。

```text
20P + 420(1 - P)
```

処理時間が同じなので、2つの式を等しくします。

```text
60P + 300(1 - P) = 20P + 420(1 - P)
```

展開します。

```text
60P + 300 - 300P = 20P + 420 - 420P
300 - 240P = 420 - 400P
160P = 120
P = 0.75
```

したがって、この例ではヒット率は `0.75` です。

ポイントは、キャッシュに当たる割合を `P`、外れる割合を `1 - P` と置くことです。

## よくある誤解・混同

キャッシュメモリのヒット率計算でよくある誤解は、**キャッシュ時間と主記憶時間を単純に足してしまうこと** です。

| 誤解 | 正しい理解 |
|---|---|
| キャッシュ時間と主記憶時間を足す | ヒット率とミス率で重み付けする |
| ヒット率が `P` ならミス率も `P` | ミス率は `1 - P` |
| 主記憶には必ずアクセスする | ヒットした場合は、主記憶まで行かない前提で計算することが多い |
| キャッシュが速いCPUが必ず全体でも速い | ミスしたときの主記憶アクセス時間も効く |
| `90%` を `90` として計算する | 計算では `0.90` として扱う |

特に、2つのCPUを比較する問題では、次のような見方が大切です。

```text
キャッシュは速いが、主記憶が遅いCPU
→ ヒット率が高いほど有利

キャッシュは少し遅いが、主記憶が速いCPU
→ ミスしても不利になりにくい
```

そのため、キャッシュ時間だけを見て判断せず、**ヒット時とミス時の両方** を式に入れます。

## まとめ（試験直前用）

- ヒット率は、目的のデータがキャッシュにある割合
- ミス率は `1 - ヒット率`
- 平均アクセス時間は、キャッシュ時間と主記憶時間の重み付き平均
- 基本式は `キャッシュ時間 × P + 主記憶時間 × (1 - P)`
- 2つのCPUの処理時間が同じなら、平均アクセス時間の式を等号で結ぶ
- `90%` は計算では `0.90` として扱う
