この記事には複数の問題があります。改善
やノートページでの議論にご協力ください。「ハザード (コンピュータ)」はこの項目へ転送されています。プロセッサパイプラインにおけるハザードについては「パイプライン処理#パイプラインハザード」をご覧ください。
パイプライン処理(パイプラインしょり、英: pipeline processing)とは、コンピュータ等において、処理要素を直列に連結し、ある要素の出力が次の要素の入力となるようにして、並行(必ずしも並列とは限らない)に処理させるという利用技術である。要素間になんらかのバッファを置くことが多い。レイテンシの向上よりも、単位時間あたりの処理量(スループット)の向上に重点が置かれる方式である。
コンピュータ関連のパイプラインには、次のようなものがある。 ライン生産方式などパイプライン的なものは様々なところに存在する。自動車の組み立てを考えてみよう。流れ作業の一工程として、エンジンのシャーシへの設置、フードの設置、車輪の設置があり、この順番で実施されるとする。ラインの各工程には、1台の組み立て中の自動車だけがある。エンジンを設置し終えた自動車は、次にフードの設置工程に移され、エンジン設置用の機械設備は次の自動車に取り掛かることができる。最初の自動車はさらに車輪設置工程に進み、2台目の自動車はフード設置工程に進み、3台目の自動車がエンジン設置工程に進んでくる。エンジン設置に20分かかり、フード設置に5分、車輪設置に10分かかるとすると、一度に1台ずつ組み立てると3台組み立てるのに105分かかる。しかし、ライン生産方式では75分で3台の組み立てが完了する。その後も20分間隔で自動車が組み立てられていく。
命令パイプライン
プロセッサ内にあり、同じ回路で複数の命令をオーバーラップさせて実行する。回路は一般にステージに分割されており、命令デコード部、演算部、レジスタフェッチ部などがある。各ステージは1度に、ある1つの命令の処理のうち、自分が担当する部分を処理する。
グラフィックスパイプライン
コンピュータグラフィックスのうち、典型的な局所照明ベースの3次元コンピュータグラフィックスにおいて必要とされる計算は、最初の3次元幾何の処理(頂点トランスフォーム)、ラスタライズ、ピクセル単位の陰影計算および最終結果の出力(表示)までが流れ作業となる[1]。描画シーンの複雑度や画面の解像度に応じて必要な計算量が飛躍的に増大していく。特にコンピュータゲームやシミュレーション可視化などを目的としたリアルタイム描画の場合、膨大なデータ処理を短時間で高速に実行する必要があることから、CPUで実現することは難しいため、ほとんどが専用ハードウェア(GPU)によってパイプライン化されており、また一般的なマルチコアCPUを遥かに超える多数のストリームプロセッサコアで並列化されている。パーソナルコンピュータではビデオカードやオンボードグラフィックス、あるいはCPUに内蔵されたGPUが利用されるが、モバイルデバイスではGPUはSoCに統合されている。GPUは、プログラマブルシェーダーの登場によってパイプラインの一部をアプリケーションソフトウェアがカスタマイズできるようになり、のちにはグラフィックスタスクだけでなく汎用計算タスクをこなすGPGPU用のコンピュートパイプラインもサポートするようになった。さらにリアルタイムレイトレーシングのパイプラインをサポートするGPUも登場している[2]。
ソフトウェアパイプライン
スーパースカラやスーパーパイプラインにより、複雑化した命令パイプラインを有効に働かせるためには、命令を並べる順番を工夫し、ハザードによるバブルの発生を回避しなければならない。ループ展開をともなったループの最適化で特に有用で、その手法をソフトウェアパイプラインと言う。
パイプ (コンピュータ)
複数個のプロセスについて、あるプロセスからの出力を別のプロセスの入力につなぐようにし、プロセスを協調して働かせる、というもの。UNIXへの実装により、単純でありながら大いに有用であることが実証された。
概念と背景
コスト、欠点、利点