パイプライン処理(ぱいぷらいんしょり)

プロセッサが1つの命令を実行する工程を複数の独立した段階(ステージ)に細分化し、複数の命令の異なるステージを少しずつずらして並行に動作させる制御方式。個々の命令の実行開始から完了までの時間は短縮されないが、単位時間あたりに完了する命令数(スループット)を向上させる。

詳細解説

ステージは、命令の取出し(フェッチ)から解読、演算、メモリアクセス、結果の書戻しまでに分けるのが基本的な構成です。前の命令の完了を待たずに1ステージ分の時間(ピッチ)ごとに次の命令を投入するので、ハザードが起きなければ、k段のパイプラインでn個の命令を処理する時間は「(k + n - 1)× ピッチ」になります。先頭の命令が全段を通り抜けるまでにkピッチかかり、その後は1ピッチごとに1命令ずつ完了していくためで、段数と命令数を単純に足すと1ピッチ分多く見積もることになります。

また、直前の演算結果を使うデータ依存や条件分岐などにより、後続の命令が待ち状態になる現象をパイプラインハザードと呼びます。これを緩和するため、データがそろった後続命令を先に処理するアウトオブオーダー実行や、条件判定の前に分岐先を予測して先行実行する投機実行などの技法が組み合わせて用いられます。さらに、パイプラインそのものを複数設けて同一ステージで複数命令を同時に流す方式はスーパースカラと呼ばれ、単一パイプラインによる時間的な重なりとは区別されます。

パイプライン処理が登場する過去問

関連する分野

ハードウェア プロセッサ・性能計算

用語集の一覧へ