パイプライン処理

データ処理要素の直列連結

: pipeline processing





11



33[1]CPUGPUCPUCPUGPUGPUSoCGPUGPGPUGPU[2]





 ()

調UNIX

概念と背景

編集

ライン生産方式などパイプライン的なものは様々なところに存在する。自動車の組み立てを考えてみよう。流れ作業の一工程として、エンジンのシャーシへの設置、フードの設置、車輪の設置があり、この順番で実施されるとする。ラインの各工程には、1台の組み立て中の自動車だけがある。エンジンを設置し終えた自動車は、次にフードの設置工程に移され、エンジン設置用の機械設備は次の自動車に取り掛かることができる。最初の自動車はさらに車輪設置工程に進み、2台目の自動車はフード設置工程に進み、3台目の自動車がエンジン設置工程に進んでくる。エンジン設置に20分かかり、フード設置に5分、車輪設置に10分かかるとすると、一度に1台ずつ組み立てると3台組み立てるのに105分かかる。しかし、ライン生産方式では75分で3台の組み立てが完了する。その後も20分間隔で自動車が組み立てられていく。

コスト、欠点、利点

編集



1

11

設計上の考慮

編集

1535151


実装

編集

バッファのある同期パイプライン

編集

使

バッファのある非同期パイプライン

編集

使

使AMULET

バッファのないパイプライン

編集

 (wave pipeline)


命令パイプライン

編集

以下、CPUの内部処理を説明するため、以下の略語を用いる。

IF (Instruction Fetch)
命令を命令キャッシュから読み出す
ID (Instruction Decode/register read)
制御信号を生成し、レジスタ・ファイルをレジスタ指定子で参照する
EX (EXecution/address calculation)
数値の計算やロード・ストアのデータやアドレス・分岐先の計算を行う
MA (Memory Access)
ロード(メモリの読み出し)・ストア(メモリへの書き込み)を行う
WB (Write Back)
レジスタにデータを書き込む

概要

編集

プロセッサが命令を実行するためには、命令解釈・演算メモリアクセス等を行う必要があり、各々の処理をこなす回路のユニットが存在するが、1つの命令がこれら全てのステップを終えてから次の命令を実行する方式(逐次実行方式)では命令が現在いるステップ以外のユニットは仕事をしない。

時間 1 2 3 4 5 6 7 8 9 10
命令1 IF ID EX MA WB
命令2 IF ID EX MA WB

これらのユニットを有効利用するために、ユニット間にフリップフロップを挿入して分割し、クロック毎に各ユニットが独立して動作できるようにした上で次々に命令を投入・並列実行する方式をパイプライン処理と言う。これにより各ユニットのハードウェア資源を有効に活用することができ、処理速度が向上する。

時間 1 2 3 4 5 6 7 8 9 10
命令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
命令6 IF ID EX MA WB

(一)

(二)12

(三)1123

(四)34

(五)5

1 - 5

5CPU15

1

パイプラインハザード

編集

パイプライン処理を行う場合にも、複数の命令同士が持つ依存関係から命令の投入を中断せざるを得ない状況が生じうるが、これをパイプラインハザードと呼ぶ。ハザードが発生すると処理速度の低下に繋がる。

パイプラインハザードの種類

編集
データ・ハザード
編集

処理するデータの依存関係に起因するハザードである。

時間 1 2 3 4 5 6 7 8 9 10
sub $2, $1, $3 IF ID EX MA WB
and $4, $2, $5 IF ID ID ID ID EX MA WB
and $6, $7, $8 IF IF IF IF ID EX MA WB

2$211WBIDMAMA

CPU調
構造ハザード
編集

ハードウェア的な資源の競合に起因するハザードである。

時間 1 2 3 4 5 6 7 8
命令1 IF ID EX MA WB
命令2 IF ID EX MA WB
命令3 IF ID EX MA WB
命令4 IF ID EX MA WB

WBIDWBIDWBID2WBID
制御ハザード(分岐ハザード)
編集

制御の依存に起因するハザードである。

時間 1 2 3 4 5 6 7 8 9
beq $1, $2, label IF ID EX MA WB
and $4, $2, $5 IF ID EX MA WB

MAIF

CPU

CPUYES22

CPUMPUMIPS

その他の応用例

編集

imaginationMetaMeta44

ソフトウェアのアーキテクチャ

編集

使

Observer 使Observer 

Lock-free使

脚注

編集

関連項目

編集

参考文献

編集
  • "Parallel Programming in C with MPI and OpenMP" by Michael J. Quinn,McGraw-Hill Professional, 2004