Skip to the content.

最終更新日:2026年8月16日

まず結論

5段パイプラインでは、1つの命令を次の5段階に分けて処理します。

IF → ID → EX → MEM → WB

日本語では、次のように対応させると分かりやすいです。

命令を取る
→ 命令を解読する
→ 演算する・アドレスを求める
→ データメモリにアクセスする
→ 結果を書き戻す

基本情報技術者試験では、IF → ID → EX → MEM → WB の順番と、それぞれの役割を対応させられることが重要です。

直感的な説明

5段パイプラインは、仕事を5つの工程に分けて流れ作業にするイメージです。

例えば、工場で製品を作るときに、

材料を受け取る
→ 作業内容を確認する
→ 加工する
→ 必要な部品を出し入れする
→ 完成品を所定の場所へ戻す

という工程に分ければ、前の製品が次の工程へ進んだあと、次の製品を最初の工程に入れられます。

CPUのパイプラインも同じで、命令をいくつかの段階に分け、複数の命令の処理を少しずつ重ねて進めることで、処理効率を高めます。

ただし、FE試験の順序問題では、まず「複数命令を重ねる」という話よりも、1命令の中で各段階がどの順に並ぶかを押さえることを優先します。

定義・仕組み

代表的な5段パイプラインは、次の5ステージで構成されます。

略称 英語 主な役割
IF Instruction Fetch 命令を取り出す
ID Instruction Decode 命令を解読し、レジスタを読み出す
EX Execute 演算やアドレス生成を行う
MEM Memory Access データメモリを読み書きする
WB Write Back 結果をレジスタへ書き戻す

IF:命令フェッチ

次に実行する命令を取り出します。

プログラムカウンタ
↓
次の命令の場所を確認
↓
命令を読み出す

ここで取り出すのは、処理対象のデータではなく命令そのものです。

CPUの一般的な命令実行サイクルは、CPUの命令実行サイクルでも整理しています。

ID:命令デコードとレジスタ読出し

読み出した命令を解読し、どの演算をするのか、どのレジスタを使うのかを判断します。

命令を解読
+
必要なレジスタの値を読み出す

5段パイプラインでは、命令デコードとレジスタファイル読出しを同じステージで扱う形がよく使われます。

EX:実行とアドレス生成

演算を実行します。

例えば、加算命令なら足し算を行います。

また、ロード命令やストア命令では、メモリにアクセスするための実効アドレスを計算します。

ベースアドレス + オフセット
→ アクセス先アドレスを求める

ここで重要なのは、EXでアドレスを求め、MEMでそのアドレスへ実際にアクセスするという順番です。

MEM:メモリアクセス

ロード命令やストア命令などで、データメモリへアクセスします。

ロード
→ メモリからデータを読む

ストア
→ メモリへデータを書く

すべての命令が必ずデータメモリを読み書きするわけではありません。

例えば、レジスタ同士の単純な加算なら、MEMステージでは実質的にメモリ操作を行わない場合があります。

WB:書戻し

演算結果や、ロード命令で読み出した値をレジスタへ書き戻します。

演算結果
または
メモリから読み出した値
↓
レジスタへ書き戻す

ここまでで1命令の処理が完了します。

このテーマは、基本情報技術者試験の「コンピュータ構成要素」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、5つの処理を並べ替える問題や、各ステージの役割を問う問題に注意します。

まずは、次の順番を基準にします。

IF
命令フェッチ
↓
ID
命令デコード・レジスタ読出し
↓
EX
実行・アドレス生成
↓
MEM
メモリアクセス
↓
WB
書戻し

並べ替えは前後関係で切る

順番を忘れた場合は、処理の依存関係から復元できます。

命令を取っていない
→ 解読できない

命令を解読していない
→ 何を実行するか分からない

アドレスを求めていない
→ その場所へメモリアクセスできない

結果が出ていない
→ 書戻しできない

したがって、

フェッチ → デコード → 実行 → メモリアクセス → 書戻し

という流れになります。

EXとMEMを混同しない

特に引っかかりやすいのが、ロード・ストア命令です。

EX
→ アクセス先のアドレスを計算

MEM
→ そのアドレスのメモリを読み書き

アドレス生成が先、実際のメモリアクセスが後です。

IFとMEMを混同しない

どちらもメモリから何かを読むイメージがあるため、混同しやすいです。

IF
→ 命令を取り出す

MEM
→ 命令が扱うデータにアクセスする

「命令なのか、データなのか」で切り分けます。

どんな場面で使う?

パイプラインは、CPUが命令処理の各段階を重ね合わせて実行し、単位時間当たりに処理できる命令数を増やすために使われます。

例えば、1命令ずつ5工程をすべて終えてから次の命令を始めるのではなく、各工程をずらして進めます。

時刻1:命令A IF
時刻2:命令A ID   / 命令B IF
時刻3:命令A EX   / 命令B ID   / 命令C IF

このように、複数の命令が異なるステージに同時に存在できます。

ただし実際には、命令同士の依存関係や分岐などによって、理想どおりに流せないことがあります。

このような問題はパイプラインハザードと呼ばれます。

FE試験では、まず5段階の順番と役割を押さえ、その後に必要に応じてハザードや分岐による影響を学ぶと整理しやすいです。

よくある誤解・混同

命令フェッチとメモリアクセスは同じ?

同じではありません。

IF
→ 命令を取る

MEM
→ データを読み書きする

どちらも「メモリにアクセスする」と見えますが、何を扱っているかが違います。

EXでメモリを読み出す?

5段パイプラインの基本的な整理では、EXは演算やアドレス生成を行う段階です。

ロード命令なら、

EX
→ 読む場所を計算

MEM
→ その場所から読む

と切り分けます。

WBは主記憶への書込み?

基本的な5段パイプラインでWBは、レジスタへの書戻しを表します。

一方、ストア命令で主記憶へデータを書き込む処理はMEMで行います。

MEM
→ メモリへの書込み

WB
→ レジスタへの書戻し

「どこへ書くのか」を確認します。

5段パイプラインなら1命令が5倍速くなる?

そういう意味ではありません。

パイプラインの狙いは、1命令そのものの処理時間を単純に5分の1にすることではなく、複数命令を重ねて処理してスループットを高めることです。

1命令を極端に速くする
→ ではない

複数命令を流れ作業で処理する
→ パイプライン

CPUの命令実行サイクルと5段パイプラインは同じ?

関連は深いですが、学習上は分けて考えると整理しやすいです。

CPUの命令実行サイクルでは、命令を取り出して解読し、必要なデータを用意して実行するという基本の流れを扱います。

5段パイプラインでは、その流れをIF・ID・EX・MEM・WBという段階に分けて並列的に進める構成として捉えます。

まとめ(試験直前用)

  • 5段パイプラインの基本順序は IF → ID → EX → MEM → WB
  • IFは命令フェッチ、IDは命令デコードとレジスタ読出し
  • EXは演算・アドレス生成、MEMはデータメモリアクセス、WBはレジスタへの書戻し
  • ロード・ストアでは EXでアドレス生成 → MEMで実際にアクセス
  • IFは命令、MEMはデータを扱うと切り分ける
  • パイプラインは1命令を5倍速くするのではなく、複数命令を重ねてスループットを高める仕組み

© 2024-2026 stemtazoo. All rights reserved.