---
title: "キャッシュメモリとは？レジスタ・主記憶・補助記憶との違い【基本情報技術者試験】"
description: "キャッシュメモリを、CPUと主記憶の速度差を埋める高速な記憶装置として整理します。レジスタ、主記憶、補助記憶、命令キャッシュ、データキャッシュ、ヒット率、実効アクセス時間との違いをFE試験向けに解説します。"
last_modified_at: "2026-07-20"
canonical_url: "https://stemtazoo.github.io/fe/cache-memory/"
section: "fe"
---

## まず結論

**キャッシュメモリは、CPUと主記憶の速度差を埋めるための、高速で小容量な記憶装置です。**

基本情報技術者試験では、記憶装置を「どこにあり、何のために使うか」で切り分けます。

| 記憶装置 | 主な役割 |
|---|---|
| レジスタ | CPUが演算や命令処理で直接使う |
| キャッシュメモリ | よく使う命令やデータを高速に取り出す |
| 主記憶 | 実行中のプログラムやデータを置く |
| 補助記憶 | プログラムやデータを長期保存する |

試験では、次の一文を判断軸にします。

> **CPUと主記憶の速度差を埋めるのがキャッシュメモリ。**

## 直感的な説明

キャッシュメモリは、机の上に置いた「よく使う資料」のようなものです。

必要な資料を毎回書庫まで取りに行くと時間がかかります。

そこで、よく使う資料だけを机の上に置いておけば、すぐに取り出せます。

```text
机の上
→ キャッシュメモリ

書庫
→ 主記憶
```

CPUも同じです。

主記憶はレジスタやキャッシュより遅いため、よく使う命令やデータをキャッシュメモリへ置いておきます。

```text
CPU
↓
キャッシュメモリ
↓
主記憶
```

必要な情報がキャッシュにあれば、主記憶まで読みに行かずに済みます。

## 定義・仕組み

### 記憶階層

一般的な記憶階層は次のように整理できます。

```text
高速・小容量・高価

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

低速・大容量・安価
```

上にあるほど高速ですが、容量は小さくなります。

| 種類 | 速度 | 容量 | 主な用途 |
|---|---|---|---|
| レジスタ | 最も速い | 非常に小さい | 命令、アドレス、演算データ |
| キャッシュメモリ | 速い | 小さい | よく使う命令やデータ |
| 主記憶 | 中程度 | 大きい | 実行中のプログラムやデータ |
| 補助記憶 | 遅い | 非常に大きい | 長期保存 |

### キャッシュヒットとキャッシュミス

CPUが必要とする情報がキャッシュ内にある場合を、**キャッシュヒット**といいます。

```text
必要なデータがキャッシュにある
→ キャッシュヒット
→ すぐに読み出せる
```

キャッシュ内にない場合を、**キャッシュミス**といいます。

```text
必要なデータがキャッシュにない
→ キャッシュミス
→ 主記憶から読み出す
```

### ヒット率

キャッシュヒットした割合を、ヒット率といいます。

```text
ヒット率
＝ キャッシュヒット回数 ÷ 全アクセス回数
```

ヒット率が高いほど、平均アクセス時間は短くなります。

### 実効アクセス時間

キャッシュと主記憶を組み合わせた平均的なアクセス時間を、実効アクセス時間といいます。

FE試験では、次の考え方を使います。

```text
実効アクセス時間
＝ ヒットしたときの時間 × ヒット率
＋ ミスしたときの時間 × ミス率
```

例えば、キャッシュアクセスが10ナノ秒、主記憶アクセスが100ナノ秒、ヒット率が90%なら、概算は次のようになります。

```text
10 × 0.9 ＋ 100 × 0.1
＝ 9 ＋ 10
＝ 19ナノ秒
```

問題文によっては、ミス時に「キャッシュ確認時間＋主記憶アクセス時間」とする場合があります。

そのため、式を暗記するより、**ヒット時とミス時に実際に何ナノ秒かかるか**を読み取ることが大切です。

### 命令キャッシュとデータキャッシュ

キャッシュメモリには、命令とデータを分けて扱うものがあります。

| 種類 | 格納するもの |
|---|---|
| 命令キャッシュ | 実行する命令 |
| データキャッシュ | 演算に使うデータ |

```text
命令を高速に読む
→ 命令キャッシュ

データを高速に読む
→ データキャッシュ
```

## 科目Aでどう出る？

科目Aでは、キャッシュメモリの役割や、他の記憶装置との違いを問われます。

### 用語の切り分け

| 問題文・選択肢の表現 | 選びたい用語 |
|---|---|
| CPUと主記憶の速度差を埋める | キャッシュメモリ |
| 次に実行する命令のアドレスを保持 | プログラムカウンタ |
| 現在の命令を保持 | 命令レジスタ |
| 演算結果を保持 | アキュムレータ |
| 実行中のプログラムを置く | 主記憶 |
| 長期保存する | 補助記憶 |

### 図での判断

次のような位置関係なら、キャッシュメモリを疑います。

```text
CPU
↓
キャッシュメモリ
↓
主記憶
```

一方、命令デコーダの直前にあり、主記憶から取り出した命令を保持するなら命令レジスタです。

```text
主記憶
↓
命令レジスタ
↓
命令デコーダ
```

### 実効アクセス時間の計算

問題では、次の順で整理します。

```text
1. ヒット率を確認する
2. ミス率を求める
3. ヒット時の時間を確認する
4. ミス時の時間を確認する
5. 加重平均を計算する
```

## どんな場面で使う？

### CPUの待ち時間を減らす

CPUは非常に高速です。

主記憶から毎回データを読むと、CPUが待たされます。

キャッシュメモリは、よく使う情報を近くに置くことで待ち時間を減らします。

### 繰り返し使うデータを高速化する

同じ命令やデータを繰り返し使う場合、キャッシュが有効です。

```text
繰り返しアクセスする
↓
キャッシュに残りやすい
↓
高速に読み出せる
```

### 局所性を利用する

キャッシュメモリは、プログラムに次の性質があることを利用します。

| 局所性 | 意味 |
|---|---|
| 時間的局所性 | 最近使ったものを、また使いやすい |
| 空間的局所性 | 近くのアドレスも続けて使いやすい |

## よくある誤解・混同

### キャッシュメモリとレジスタは同じ

同じではありません。

```text
レジスタ
→ CPUが命令処理や演算で直接使う

キャッシュメモリ
→ 主記憶へのアクセスを減らす
```

レジスタの方が一般に高速で、容量はさらに小さいです。

### キャッシュメモリは主記憶より大容量

誤りです。

キャッシュメモリは高速ですが、小容量です。

```text
キャッシュ
→ 高速・小容量

主記憶
→ キャッシュより低速・大容量
```

### データキャッシュは命令を格納する

データキャッシュは主にデータを格納します。

命令を格納するのは命令キャッシュです。

### ヒット率が高いほど遅くなる

逆です。

ヒット率が高いほど、主記憶へアクセスする回数が減り、平均アクセス時間は短くなります。

### キャッシュミスなら処理できない

誤りです。

キャッシュにない場合は、主記憶から読み出します。

ただし、キャッシュヒット時より時間がかかります。

### キャッシュは長期保存に使う

誤りです。

長期保存にはSSDやHDDなどの補助記憶を使います。

キャッシュは高速化のための一時的な記憶です。

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

- キャッシュメモリは、CPUと主記憶の速度差を埋める
- レジスタより遅く、主記憶より速い
- キャッシュヒットなら高速に読み出せる
- キャッシュミスなら主記憶から読み出す
- ヒット率が高いほど、実効アクセス時間は短くなる
- 命令キャッシュは命令、データキャッシュはデータを格納する

試験直前には、次の一文を思い出してください。

> **レジスタはCPUが直接使う場所、キャッシュは主記憶を待たないための高速な控え。**
