---
title: "CPUの命令実行サイクルとは？フェッチ・解読・オペランド読出し・実行の順番【基本情報技術者試験】"
description: "CPUが1命令を実行する流れを、命令フェッチ、命令の解読、オペランド読出し、命令の実行の順に整理し、プログラムカウンタや命令レジスタとの関係、FE試験で順序問題を切る判断軸を解説します。"
last_modified_at: "2026-08-09"
canonical_url: "https://stemtazoo.github.io/fe/cpu-instruction-cycle/"
section: "fe"
---

## まず結論

CPUが命令を実行するときは、基本的に次の順で考えます。

```text
命令フェッチ
↓
命令の解読
↓
オペランド読出し
↓
命令の実行
```

基本情報技術者試験では、順番だけを丸暗記するより、**前の処理が終わらないと次の処理ができない**と考えると判断しやすくなります。

```text
命令をまだ取っていない
→ 解読できない

命令をまだ解読していない
→ 必要なデータが分からない

必要なデータがそろっていない
→ 実行できない
```

迷ったら、**「指示を取る → 意味を理解する → 材料を用意する → 作業する」**の順で思い出します。

## 直感的な説明

CPUの命令実行は、料理の手順に置き換えると分かりやすいです。

```text
レシピを取ってくる
→ 命令フェッチ

レシピを読む
→ 命令の解読

必要な材料を用意する
→ オペランド読出し

実際に料理する
→ 命令の実行
```

例えば、「AとBを加算する」という命令をCPUが処理するとします。

CPUは、いきなり加算を始めるわけではありません。

まず命令を読み出し、その命令が「加算」だと解読し、次にAとBという演算対象のデータを読み出してから、加算を実行します。

この流れを理解しておけば、選択肢の順序が入れ替わっていても判断できます。

## 定義・仕組み

CPUは、主記憶に格納された命令を1つずつ取り出して実行します。

FE試験では、次の4段階を基本として整理すると分かりやすいです。

| 段階 | 何をする？ | 初心者向けの言い換え |
|---|---|---|
| 命令フェッチ | 主記憶から命令を読み出す | 指示を取ってくる |
| 命令の解読 | 命令の意味を調べる | 何をする指示か読む |
| オペランド読出し | 演算に必要なデータを読み出す | 必要な材料を用意する |
| 命令の実行 | 演算や処理を実行する | 実際に作業する |

### 1. 命令フェッチ

まず、次に実行する命令を主記憶から読み出します。

```text
次の命令の場所を確認
↓
主記憶から命令を読み出す
```

このとき、次の命令の場所を示すのが**プログラムカウンタ**です。

読み出された命令は、**命令レジスタ**に保持されます。

```text
プログラムカウンタ
→ 次の命令のアドレス

命令レジスタ
→ 読み出した命令そのもの
```

レジスタの役割は、[プログラムカウンタとは？CPUレジスタの役割と割込み時の退避](https://stemtazoo.github.io/fe/cpu-registers/)で詳しく整理しています。

### 2. 命令の解読

次に、読み出した命令が何をする命令なのかを解読します。

例えば、

```text
加算する
比較する
データを移動する
分岐する
```

など、CPUが実行すべき処理を判断します。

この段階を**デコード**と呼ぶこともあります。

### 3. オペランド読出し

命令を実行するために必要なデータを読み出します。

**オペランド**とは、演算や処理の対象になるデータのことです。

例えば、

```text
3 + 5
```

という加算なら、`3` と `5` がオペランドです。

初心者のうちは、

```text
オペランド
→ 計算や処理に使うデータ
```

と理解すれば十分です。

### 4. 命令の実行

必要なデータがそろったら、演算装置などが実際の処理を行います。

```text
命令を理解した
＋
必要なデータがそろった
↓
命令を実行する
```

処理によっては、このあと結果をレジスタや主記憶へ書き込みます。

この一連の流れを繰り返すことで、CPUはプログラムを実行します。

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

## 科目Aでどう出る？

科目Aでは、命令実行の各段階を並べ替える問題が出ます。

試験中は、次の順序をそのまま思い出す方法もあります。

```text
フェッチ
↓
解読
↓
オペランド読出し
↓
実行
```

ただし、順番を忘れたときは**因果関係**で復元できます。

### まず「命令フェッチ」を探す

CPUは、命令を読み出さなければその内容を解読できません。

したがって、基本的には命令フェッチが先です。

```text
命令を取得
↓
命令を理解
```

「解読 → フェッチ」の順になっている選択肢は切りやすくなります。

### 「解読」と「オペランド読出し」を切り分ける

何の命令か分からなければ、どのデータが必要なのか判断できません。

```text
命令を解読
↓
必要なデータが分かる
↓
オペランドを読み出す
```

したがって、基本の整理では**解読が先、オペランド読出しが後**です。

### 最後は「実行」

命令を理解し、必要なデータを用意してから処理を実行します。

```text
指示を取得
→ 指示を理解
→ データを用意
→ 実行
```

この流れで、順序が不自然な選択肢を消していきます。

## どんな場面で使う？

CPUの命令実行サイクルは、CPU内部の各装置やレジスタの役割をつなげて理解するときに役立ちます。

例えば、次の用語がばらばらに見えていても、命令実行の流れに並べると関係が見えます。

```text
プログラムカウンタ
↓ 次の命令の場所を示す

主記憶
↓ 命令フェッチ

命令レジスタ
↓ 読み出した命令を保持

命令デコーダ
↓ 命令を解読

レジスタ・主記憶
↓ オペランドを読み出す

演算装置
↓ 命令を実行
```

そのため、命令実行サイクルを理解した後に[CPUレジスタの記事](https://stemtazoo.github.io/fe/cpu-registers/)を読むと、プログラムカウンタや命令レジスタの役割を流れの中で理解しやすくなります。

## よくある誤解・混同

### オペランドは命令そのもの？

違います。

```text
命令
→ CPUに何をするか指示するもの

オペランド
→ その処理で使うデータ
```

例えば、概念的に

```text
ADD 3, 5
```

と考えるなら、`ADD` が加算を指示する部分で、`3` と `5` が演算対象のオペランドです。

### 命令フェッチとオペランド読出しは同じ？

どちらも「読み出す」ため混同しやすいですが、読み出すものが違います。

```text
命令フェッチ
→ 命令を読み出す

オペランド読出し
→ 命令の実行に必要なデータを読み出す
```

**何を読み出しているか**で切り分けます。

### 命令フェッチの前に解読できる？

基本的にはできません。

まだ命令を読み出していないため、何の命令なのか解読できないからです。

```text
取ってくる
→ 読む
```

の順と考えます。

### オペランドを読み出してから命令を解読する？

FE試験の基本的な整理では、命令を解読してから必要なオペランドを読み出します。

```text
何をする命令か分かる
↓
何のデータが必要か分かる
```

順序問題では、この因果関係を判断軸にします。

### CPUは4段階だけで動く？

実際のCPU内部では、より細かな処理や並列化が行われることがあります。

ただしFE試験の基本問題では、まず

```text
命令フェッチ
→ 命令の解読
→ オペランド読出し
→ 命令の実行
```

という基本の流れを押さえることを優先します。

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

- CPUの基本的な命令実行順序は、**フェッチ → 解読 → オペランド読出し → 実行**
- 命令フェッチは「命令を取ってくる」処理
- オペランドは「計算や処理に使うデータ」
- 順番を忘れたら、**指示を取る → 理解する → 材料を用意する → 作業する**で復元する
- CPUレジスタは、この命令実行の流れとつなげて理解する
