インテルのみ表示可能 — GUID: uny1508901514896
Ixiasoft
4.2.1. ループのパイプライン処理


このループのパイプライン処理では、ループの開始間隔 (II) の値は1です。II の値が1ということは、1クロックサイクルの遅延が、連続した各ループのイタレーションが開始する間に存在するという意味です。
The インテル®HLSコンパイラー プロ・エディションでは、デフォルトでループのパイプライン処理を試みます。ループのパイプライン処理は、ループの展開と同じ一定のイタレーション回数の制約は受けません。
すべてのループが、図 7 で示されるループと同じ様にパイプライン処理できるわけではありません。特に、各イタレーションの依存する値が、前のイタレーションで計算された値である場合はそうです。
例えば、Stage 1のループが、前のループ・イタレーションのStage 3の処理中に計算された値に依存するとします。このような場合、2回目 (オレンジ色) のイタレーションによる実行は、1回目 (青色) のイタレーションがステージ Stage 3に到達するまでは開始できません。このような依存関係は、ループ搬送依存関係と呼ばれます。
この例では、ループのパイプライン処理は、II = 3で行われます。IIはループ・イタレーションのレイテンシーと同じであるため、ループは、実際にはパイプライン処理されません。ループの合計レイテンシーの見積もりは、次の数式ですることができます。
ここでは、 は、ループの実行にかかるサイクル数です。また、 iは、1回のループ・イタレーションの実行にかかるサイクル数です。
インテル®HLSコンパイラー プロ・エディションでは、ネストされたループのパイプライン処理をサポートします。このとき内部ループは展開しません。ネストされたループのレイテンシーを計算するとき、この式を再帰的に適用します。この再帰が意味するのは、II>1を持つことによる問題は、外側のループに対してよりも内側のループに対することです。したがって、アルゴリズムは、ほとんどの作業をII=1の内側のループで行う場合は、外側のループがII>1であっても、引き続き良好に機能します。