パイプライン処理とは?命令を工程ごとに分けてベルトコンベアのように並行処理し

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

パイプライン処理とは(全体像)

ふつうのCPUは、1つの命令を「読む→解読→実行→書き戻す」と最後まで終えてから、次の命令に取りかかる。これだと、各工程の担当が手すきになる時間が多くてもったいない。

そこで使うのがパイプライン処理工場のベルトコンベアのように、1つ目の命令が「読む」を終えたら、すぐ2つ目の命令の「読む」を始める。こうして複数の命令を、工程をずらしながら同時に流す

身近にいえば、洗濯のイメージ。洗濯機が回っている間に、乾いた服をたたみ、次の洗濯物を入れる——待たずに次々こなすと、全体が速く片づく。これがパイプラインの発想だ。


詳しく:5段の流れと3種のハザードだけ覚えれば戦える

ここが記事の心臓部。まず命令を流す5段の工程を押さえよう。

5段パイプライン

略称やること
IF命令を読む(フェッチ)
ID命令を解読する(デコード)
EX計算する(実行)
MEM必要ならメモリを読み書き
WB結果をレジスタに書き戻す

5つの命令が工程をずらして同時に流れれば、理想的には5倍くらい速くなる。ところが、いつも理想通りとはいかない。流れがつかえる「ハザード(渋滞)」が起きるからだ。

3種のハザードと対策

ハザード渋滞の原因おもな対策
データハザード前の命令の結果を次の命令が使うフォワーディング(途中結果を直接渡す)
制御ハザード分岐で次の命令がまだ決まらない分岐予測(先に進む側を予想する)
構造ハザード同じ部品(メモリなど)の取り合い部品を増やして競合をなくす

つまり、パイプラインは速くなる一方で、ハザードが起きると流れが止まって遅くなる。だから、フォワーディングや分岐予測で渋滞をやわらげるのがカギ、というわけだね。なお、分岐予測は当たれば速いが、外れると予想ぶんをやり直す手間がかかるので、いつもうまくいくわけではない。

わかりやすく言い換えると

要するに、パイプラインは「工程をずらして命令を同時に流す」やり方だ。

考え方 … ベルトコンベアのように、待たずに次々流す(洗濯のイメージ)

5段 … 読む(IF)→解読(ID)→計算(EX)→メモリ(MEM)→書き戻す(WB)

ハザード … データ(フォワーディング)・制御(分岐予測)・構造(部品を増やす)

「速くなるが、渋滞(ハザード)で止まることもある」のがポイント。


試験のツボ

🔴 一番出る:5段の順番

①IF(読む)→ID(解読)→EX(計算)

②MEM(メモリ)→WB(書き戻す)の順

🔴 次に出る:3種のハザード

①データハザードはフォワーディングで軽減

②制御ハザードは分岐予測で軽減

🟡 押さえると安定:理想と現実

①理想は5段で5倍くらい速くなる

②ハザードや分岐予測の外れで、いつも理想通りではない


よくある間違い

「パイプラインは必ず単純に速くなる」→ ✗  ハザード(渋滞)が起きると流れが止まり、速さは落ちる。

「分岐予測は必ず当たる」→ ✗  外れることもあり、その場合は予想ぶんをやり直す手間がかかる。

「データハザードの対策は部品を増やすこと」→ ✗  データハザードはフォワーディングで軽減。部品を増やすのは構造ハザード。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(パイプラインの考え方)

📝 オリジナル問題 1 パイプラインの考え方

パイプライン処理に関する次の記述のうち、正しいものはどれか。

  1. パイプラインは1つの命令を最後まで終えてから次に取りかかる、順番待ちの方式だ
  2. パイプラインは命令をいっさい分けず、すべてを一度に処理してしまう方式とされる
  3. パイプラインは命令を工程ごとに分け、ベルトコンベアのように並行して流す方式だ
  4. パイプラインは命令の処理をわざと遅らせ、なるべく時間をかけるための方式である
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

パイプラインは命令を工程ごとに分け、ベルトコンベアのように並行して流す方式なのだ。洗濯機を回しながら次の準備をするイメージなるぞ。

選択肢1は順番待ちで並行していない。選択肢2の「一度に処理」、選択肢4の「わざと遅らせる」も誤りである。

選択肢判定理由
1並行して流すのがパイプライン
2工程ごとに分ける
3工程をずらして並行処理
4速くするための方式

オリジナル問題2(5段の順番)

📝 オリジナル問題 2 5段パイプラインの順番

5段パイプラインの順番に関する次の記述のうち、正しいものはどれか。

  1. WB(書き戻す)から始まり、最後にIF(読む)で命令を取り出して終わるものだ
  2. IF(読む)→ID(解読)→EX(計算)→MEM(メモリ)→WB(書戻)の順だ
  3. EX(計算)を最初に行い、IF(読む)はいっさい行わずに処理を進めるものとされる
  4. IDとIFはどちらも不要で、EXとWBの2段だけで命令を処理すると決められている
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

5段はIF(読む)→ID(解読)→EX(計算)→MEM(メモリ)→WB(書き戻す)の順なのだ。まず読み、解読し、計算し、メモリを使い、書き戻す——この流れが頻出なるぞ。

選択肢1・3・4はどれも順番や段数が誤りである。最初はかならずIF(読む)なのだ。

選択肢判定理由
1最初はIF
2IF→ID→EX→MEM→WB
3最初はIF
45段ある

オリジナル問題3(ハザードと対策)

📝 オリジナル問題 3 ハザードと対策

パイプラインのハザードに関する次の記述のうち、正しいものはどれか。

  1. データハザードはフォワーディング、制御ハザードは分岐予測で軽減するものだ
  2. データハザードは分岐予測、制御ハザードはフォワーディングで軽減するとされる
  3. ハザードはいっさい起きず、パイプラインはつねに理想どおり速くなるものである
  4. 分岐予測は必ず当たるので、制御ハザードはまったく起きないものとされている
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

データハザードはフォワーディング(途中結果を直接渡す)、制御ハザードは分岐予測(進む側を予想)で軽減するのだ。対策の組み合わせを取り違えないことなるぞ。

選択肢2は対策が逆。選択肢3の「ハザードは起きない」、選択肢4の「分岐予測は必ず当たる」も誤りである。

選択肢判定理由
1データ=フォワーディング・制御=分岐予測
2対策が逆
3ハザードは起きる
4分岐予測は外れることもある

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る