パイプライン処理のアイデア

[] [] []


デジタル回路におけるパイプライン処理とは次のようなアイデアである。

一般に、遅延時間tpd秒の組合せ回路をクロック周期T(T>tpd)で動作させたとき

スループットは1/T

レイテンシはT

(throughputは単位時間あたりの処理量、latencyは処理の開始から完了までの遅延時間のことである)

であるが、組合せ回路の途中にレジスタを入れてn分割すると

スループットはn/T

レイテンシはn*T

とレイテンシは大きくなるがスループットは向上する。

もし遅延時間tpdをちょうどn等分できればクロック周期もT/nに短縮できるから

スループットは(n^2)/T

レイテンシはT

とレイテンシは変えずにスループットを飛躍的に上げることができる。

このように組合せ回路の途中にレジスタを挿入して並列に実行することをパイプライン処理するという。

このパイプライン処理の手法は、組合せ回路に限らず入力してからnLATクロック後に処理結果を出力するといった一般のデジタル回路にも適用できて、

一連の逐次処理の途中にデータを一時的に蓄えておくバッファを挿入することによって、処理を分割して並列に実行することをパイプライン処理という。また分割した各処理をステージとよぶ。(pipelineは石油や天然ガスを送る管のことだが、たぶんデータが次々と押し出されていく様子が似ているからこう呼ぶのではないか)

もし処理時間nLATがどのステージも同じならば、特にステージ間にバッファがなくても滞りなくデータが流れるが、

nLATが各ステージで異なっていたり、処理内容によって可変だったりすると、後段の処理が完了するまでステージ間のデータ転送を待たなければならない。そのために、データを一時的に保持しておくバッファが必要になる。


[] [] []