対象試験と出題頻度
パイプライン処理は、基本情報技術者・応用情報技術者で出題されるテーマです。
CPUの高速化技術として定番化しており、「処理時間の計算」「ステージの実行順序」「パイプラインハザードの種類」を正確に理解しているかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「パイプライン処理って結局どうやってCPUを速くしているの?」と引っかかるポイントです。
パイプライン処理(Pipeline Processing)とは、一言で言うと
「1つの命令を複数のステージに分割し、各ステージをずらしながら並列に実行することでCPUの処理速度を上げる技術」
のことです。
イメージとしては、「工場のベルトコンベアによる流れ作業」です。
1人が「部品の取り付け → 検査 → 梱包」をすべてやると、1つの製品が完成するまで次に取りかかれません。
しかし流れ作業にすれば、1人目が検査に移ったタイミングで2人目が次の製品の取り付けを始められます。
CPUの命令処理でもこれとまったく同じ発想で、各工程を別々の回路が担当して同時に動くことで全体のスループットを向上させています。
📊 パイプライン処理の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Pipeline Processing |
| 分類 | CPUの高速化技術(命令レベル並列処理) |
| 代表的なステージ数 | 5段(命令フェッチ → デコード → 実行 → メモリアクセス → 書込み) |
| 計算公式 | (命令数 + ステージ数 − 1)× ピッチ |
解説
CPUが1つの命令を処理するには、「取り出す → 解読する → 実行する → 結果を書き込む」という複数の工程を経る必要があります。
パイプラインが登場する以前は、1つの命令がすべての工程を終えてから次の命令に取りかかる「逐次実行」が基本でした。
この方式だと、実行ユニットが演算している間にフェッチ回路は遊んでしまいます。各回路の稼働率を最大化し、単位時間あたりの命令処理数(スループット)を引き上げるために考案されたのがパイプライン方式です。
5段パイプラインの動作イメージ
RISCプロセッサで代表的な5段構成を例に、命令がどのように流れるかを図で確認します。
5段パイプラインの動作タイミング
| 命令\サイクル | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| 命令1 | IF | ID | EX | MA | WB | ||||
| 命令2 | IF | ID | EX | MA | WB | ||||
| 命令3 | IF | ID | EX | MA | WB | ||||
| 命令4 | IF | ID | EX | MA | WB | ||||
| 命令5 | IF | ID | EX | MA | WB |
IF=命令フェッチ ID=デコード EX=実行 MA=メモリアクセス WB=書込み
▲ 各命令が1サイクルずつずれて並列に流れる様子。5命令を9サイクルで完了できる
逐次実行だと5命令 × 5サイクル = 25サイクルかかるところが、9サイクルで済みます。
命令数が増えるほどこの差は大きくなります。
処理時間の計算公式
I個の命令を、深さD(ステージ数D)、ピッチP秒のパイプラインで処理するときの所要時間は次の公式で求まります。
パイプライン処理時間の公式
(I + D − 1)× P
I:命令数
D:パイプラインの深さ(ステージ数)
P:パイプラインピッチ(1ステージの実行時間)
例:20命令・5段・1サイクル/ステージ →(20+5−1)×1=24サイクル
ここだけは確実に押さえてください。この公式を覚えていれば、計算問題はほぼ確実に正解できます。
パイプラインハザード
パイプラインは常に理想通りに流れるわけではありません。命令の流れが停止・乱れる現象を「パイプラインハザード」と呼び、3種類に分類されます。
| ハザードの種類 | 原因 | 主な対策 |
|---|---|---|
| 構造ハザード | 複数の命令が同一のハードウェア資源(メモリやALU)を同時に使おうとして競合する | ハードウェア資源の増設(命令用とデータ用のメモリ分離など) |
| データハザード | 前の命令の演算結果を、後続の命令が必要とするのに、まだ書込みが完了していない | フォワーディング(演算結果を書込み前に後続命令へ転送) |
| 制御ハザード (分岐ハザード) |
分岐命令の結果が確定するまで、次に実行すべき命令が不明になる | 分岐予測(過去の分岐結果から次の分岐先を予測して先読みする) |
発展形の比較:スーパーパイプライン・スーパースカラ・VLIW
パイプラインには、さらに性能を高めるための発展形が3種類あります。それぞれのアプローチの違いを整理します。
| 方式 | 高速化のアプローチ | 見分けキーワード |
|---|---|---|
| スーパーパイプライン | 各ステージをさらに細かく分割してピッチを短縮する | ステージ細分化、ピッチ短縮 |
| スーパースカラ | パイプラインを複数本持ち、同時に複数命令を並行実行する | 複数パイプライン、ハードウェア制御 |
| VLIW | コンパイラが依存関係のない命令を1語にまとめ、複数の演算器で同時実行する | コンパイラ制御、長い命令語 |
スーパースカラとVLIWの最大の違いは「命令の並列性をハードウェアが判断するか、コンパイラが判断するか」です。選択肢の入れ替えで問われるので、この1点を押さえてください。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 パイプライン処理の核心を3行で
・命令を複数ステージに分割し、各ステージを別々の回路がずらしながら並列実行する高速化技術
・処理時間 =(命令数 + ステージ数 − 1)× ピッチ
・流れを乱す3つのハザード(構造・データ・制御)と、その対策が問われる
試験ではこう出る!
パイプライン処理は、FE・APの午前問題で繰り返し出題されている定番テーマです。出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R6秋 午前 問8 |
RISCプロセッサの5段パイプラインの命令実行制御の順序を選ぶ問題 | ・IF→ID→EX→MA→WBの正しい順序 ・FE H28春 問10と同一構成の流用問題 |
| AP R5春 午前 問9 |
5ステージ・20命令で必要なサイクル数を計算する問題 | ・公式(I+D−1)×Pの適用 ・正解は24サイクル |
| AP R5秋 午前 問9 |
分岐予測の説明として正しいものを選ぶ問題 | ・分岐ハザードへの対策が主題 ・スーパースカラやVLIWの説明がひっかけ |
| AP H27秋 午前 問8 |
パイプライン処理を有効に機能させるプログラミング方法を選ぶ問題 | ・正解は「分岐命令を少なくする」 ・AP H23秋 問9、FE H15春 問17と同一 |
📝 IPA試験での出題パターン
パターン1:処理サイクル数の計算
「5ステージ・20命令で何サイクル必要か」のように、公式に数値を代入して解く形式。公式を覚えていれば即答できる。
パターン2:ステージの実行順序
IF→ID→EX→MA→WBの順序を選ばせる形式。RISCプロセッサの5段構成がそのまま出る。各ステージの略称と役割を対応付けておけば解ける。
パターン3:ハザードや高速化技法の選択
「分岐命令を少なくする」が正解になるパターンや、スーパースカラ・VLIWの説明文を入れ替えたひっかけが出る。「スーパースカラ=ハードウェア制御」「VLIW=コンパイラ制御」の区別が決め手になる。
試験ではここまででOKです。ハザードの細かい分岐予測アルゴリズム(2ビットカウンタなど)まで深追いする必要はありません。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. パイプライン処理の説明として、最も適切なものはどれでしょうか?
- A. 命令の実行を複数のステージに分割し、各ステージをずらしながら並列に動作させることで、単位時間あたりの命令処理数を向上させる方式。
- B. コンパイラが依存関係のない複数の命令を1つの長い命令語にまとめ、複数の演算器で同時に実行する方式。
- C. CPU内部に複数のパイプラインを設け、同一クロックで複数の命令を同時に発行・実行する方式。
正解と解説を見る
正解:A
解説:
パイプライン処理は、1つの命令を複数のステージに分けて、各ステージを独立した回路で並列に動作させることでスループットを高める技術です。
選択肢BはVLIW(Very Long Instruction Word)の説明です。VLIWはコンパイラが命令の並列性を静的に判断するのに対し、パイプライン処理はハードウェアが動的に命令を流す点が異なります。選択肢Cはスーパースカラの説明です。スーパースカラはパイプラインを「複数本」持つことで同時処理数を増やす方式であり、基本のパイプライン処理とは高速化のアプローチが違います。
よくある質問(FAQ)
Q. パイプラインのステージ数を増やせば増やすほど速くなりますか?
単純には速くなりません。ステージ数を増やすとピッチ(1ステージあたりの時間)は短くなりますが、ステージ間のラッチ遅延が積み重なり、分岐ハザード発生時のペナルティ(無駄になるステージ数)も増加します。実際のCPU設計では、ハザードの影響とのバランスで最適なステージ数が決まります。Intel Pentium 4(Prescottコア)は31段という深いパイプラインを採用しましたが、分岐予測ミスのペナルティが大きく、後継アーキテクチャでは段数を減らす方向に転換しました。
Q. 「パイプラインピッチ」と「クロック周期」は同じ意味ですか?
基本的には同じです。パイプラインピッチは「各ステージが処理に要する時間」であり、通常は1クロック周期に合わせて設計されます。試験問題で「パイプラインピッチ=20ナノ秒」と出たら、「1ステージ=20ナノ秒=1クロック分」と読み替えてください。
Q. フォワーディング(バイパス)はどのハザードへの対策ですか?
データハザードへの対策です。前の命令の演算結果が書込みステージを完了する前に、後続命令がその値を必要とする場面で、演算結果をパイプラインの途中から直接転送して待ち時間を解消します。構造ハザードや制御ハザードにはそれぞれ別の対策(ハードウェア増設、分岐予測など)が有効です。
Q. パイプライン処理はRISCとCISCのどちらに適していますか?
RISCの方が相性が良いです。RISCは命令の長さや実行サイクル数が均一になるよう設計されているため、各ステージの処理時間を揃えやすく、パイプラインが効率的に流れます。一方CISCは命令ごとに実行サイクル数がばらつくため、ステージの処理時間を均一にしにくく、パイプラインの効率が落ちやすい構造です。現代のx86系CPU(CISC系)は内部でCISC命令をRISC風のマイクロ命令に分解してからパイプラインに流す設計になっています。