最終更新日:2026年8月24日
fe fe-technology computer-architecture cpu
まず結論
パイプライン制御とは、1つの命令処理を複数のステージに分け、複数の命令を少しずつずらして同時進行させる方式です。
基本情報技術者試験では、次の表現が出たらパイプラインを疑います。
命令処理を複数ステージに分ける
+
複数命令を重ねて実行する
→ パイプライン制御
単に「複数命令を並列に実行する」だけでは、スーパースカラなど別の方式も候補になるので、「ステージに分ける」という表現が重要です。
直感的な説明
工場の流れ作業をイメージすると分かりやすいです。
1人が製品を最初から最後まで全部作るのではなく、
工程1 → 工程2 → 工程3
のように役割を分けます。
例えば命令A・B・Cを処理するとき、次のようにずらして進めます。
時間1 命令A:取出し
時間2 命令A:解読 命令B:取出し
時間3 命令A:実行 命令B:解読 命令C:取出し
命令Aが全部終わるまで命令Bを待たせるのではなく、空いたステージに次の命令を流します。
これによって、単位時間あたりに処理できる命令数を増やすことができます。
定義・仕組み
CPUでは、1つの命令をいくつかの処理段階に分けて実行できます。
代表的には、次のような段階です。
命令取出し
↓
命令解読
↓
実行
↓
結果書込み
パイプライン制御では、これらの各段階を重ねて使います。
パイプライン化しない場合
命令A:取出し → 解読 → 実行 → 書込み
命令B: 取出し → 解読 → 実行 → 書込み
命令Aが完全に終わるまで、命令Bが始まりません。
パイプライン化する場合
命令A:取出し → 解読 → 実行 → 書込み
命令B: 取出し → 解読 → 実行 → 書込み
命令C: 取出し → 解読 → 実行 → 書込み
各ステージを並行して利用できるので、全体として効率よく命令を流せます。
ただし、1つの命令そのものの処理時間が必ず短くなるというより、複数命令を連続して処理するときのスループットを高める仕組みと考えるのが大切です。
科目Aでどう出る?
科目Aでは、パイプライン制御と似たCPU高速化技術を見分ける問題に注意します。
| キーワード | 用語 |
|---|---|
| 命令処理を複数ステージに分割して重ねる | パイプライン制御 |
| 複数の演算器を使い、実行時に複数命令を同時実行 | スーパースカラ |
| コンパイラが複数の演算を1つの長い命令語にまとめる | VLIW |
| マイクロ命令の組合せで機械語命令を実行 | マイクロプログラム制御 |
最短の判断基準は次のとおりです。
ステージに分けて流す
→ パイプライン
複数の演算器で同時実行
→ スーパースカラ
コンパイラ側で並列実行を組み込む
→ VLIW
マイクロ命令で制御
→ マイクロプログラム制御
どんな場面で使う?
パイプライン制御は、CPUの命令処理を高速化するために広く使われる考え方です。
連続して多くの命令を処理するとき、各ステージを遊ばせずに使えるため、処理効率を高められます。
ただし、命令同士に依存関係がある場合や、分岐命令がある場合には、きれいに流れないことがあります。
命令Aの結果が必要
↓
命令Bが待つ
このような状態は、パイプラインの効率を下げる原因になります。
よくある誤解・混同
「複数命令を並列に実行」なら全部パイプライン?
違います。
スーパースカラも複数命令を並列に扱います。
パイプライン
→ 処理段階を分けて、命令をずらして流す
スーパースカラ
→ 複数の演算器を使って、複数命令を同時に実行する
問題文に「複数のステージ」という表現があるかを確認します。
VLIWとの違いは?
VLIWでは、どの処理を同時に実行するかを主にコンパイラ側で決めます。
パイプライン
→ CPU内部の処理段階を重ねる
VLIW
→ コンパイラが並列に実行できる処理をまとめる
マイクロプログラム制御との違いは?
マイクロプログラム制御は、1つの機械語命令をさらに細かなマイクロ命令の組合せで実現する方式です。
パイプライン
→ 複数命令を効率よく流す
マイクロプログラム制御
→ 1つの命令を内部の細かな制御手順で実行する
1命令の実行時間が必ず短くなる?
必ずしもそうではありません。
パイプラインの主な目的は、複数命令を連続して処理するときのスループット向上です。
「1個の命令を速くする」というより、命令の流れ全体を効率化すると考えると理解しやすいです。
まとめ(試験直前用)
- パイプライン制御は、命令処理を複数ステージに分けて重ねて実行する
- 「複数ステージに細分化」が重要キーワード
- スーパースカラは複数演算器、VLIWはコンパイラ側で並列化
- マイクロプログラム制御はマイクロ命令の組合せで命令を実行する
- 段階に分けて、ずらして流す → パイプライン と覚える