【ぱいぷらいんしょり】
パイプライン処理(CPU) とは?
最終更新:
💡 工場のベルトコンベアのように命令を流れ作業で処理する仕組み。
CPUの命令実行を段階に分け、異なる命令を別々の段階で同時に処理する仕組み。命令1個の処理時間を短くすることとは別に、一定時間で処理できる命令数を増やすことを狙う。
📌 このページのポイント
- 取得・解読・実行・書き戻しなどに命令の処理を分ける
- 異なる命令の段階を重ね、単位時間あたりの処理量を高める
- 前の命令の結果待ちや分岐先の未確定などがハザードの原因になる
- 待機・結果の転送・分岐予測などでハザードに対処する
CPUで命令を流れ作業にするってどういうこと?
命令の処理を、取得・解読・実行・書き戻しなどに分けるんだ。命令Aの解読中に命令Bを取得するように、異なる命令を別の段階で同時に処理するよ。段階の数や役割はCPUによって違うんだ。
命令1個がすぐ終わるようになる?
狙いは、一定時間に処理できる命令数を増やすことだよ。1個の命令は各段階を通る必要があるので、最初から最後までの時間が必ず短くなるわけではないんだ。
ずっと詰まらずに流せる?
前の命令の計算結果を次の命令が必要とすると、データハザードが起こり得るよ。分岐先がまだ決まらない制御ハザードもあるんだ。ハザードは分岐予測の失敗だけを指す言葉ではないよ。
詰まりにはどう対処するの?
必要な結果を待って一部を止めるストールや、書き戻し前の結果を必要な場所へ渡すフォワーディングがあるよ。分岐先を予測して進める方法もあるけれど、外れたら不要な処理を破棄して正しい経路へ戻す必要があるね。
まとめ:ざっくりこれだけ覚えればOK!
「パイプライン処理」って出てきたら「命令の段階を重ねて流れ作業にし、処理量を増やす仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pipeline Processing」 = パイプライン処理
💬 Pipelineは管路という意味。命令がいくつかの処理段階を順に通る様子を、流れ作業にたとえるとイメージしやすいよ。