広義のパイプライン処理

[] [] []


パイプライン処理の手法は、入力してからnLATクロック後に処理結果を出力するといった一般のデジタル回路にも適用できて、一連の逐次処理の途中にデータを一時的に保持しておくバッファを挿入することにより、処理を分割して並列に実行することをパイプライン処理という。また分割した各処理をステージとよぶ。(pipelineは石油や天然ガスを送る管のことだが、たぶんデータが次々と押し出されていく様子が似ているからこう呼ぶのではないか)

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

nLATが各ステージで異なっていたり、処理内容によって可変だったりすると、後段の処理が完了するまでステージ間のデータ転送を待つためバッファが必要になる。

ステージ間のバッファはダブルバッファかFIFOを使う。

(1) ダブルバッファ

1パケット分がそろわないと次ステージの処理が開始できない場合、少なくとも1パケット分のバッファ容量が必要になる。またシングルバッファだと書き込み終わってから読み出し始めることになりオーバーヘッドが大きいのでダブルバッファにするのが普通である。2つのバッファを交互に使うのでピンポンバッファともいう。

(2) FIFO

1パケット分がそろわなくても次ステージの処理が開始できる場合は、FIFOを使うのが簡単である。バッファリングする長さが伸び縮みするのでelastic bufferともいう。FIFOの深さは、瞬間的なピーク値で決めなければならず、平均レートでは決まらないことに注意


[] [] []