インテルのみ表示可能 — GUID: flb1489716579362
Ixiasoft
1.7.3. ループ・イニシエーション・インターバル (II)
反復インターバル、または II は、連続するループ反復を開始する間のクロックサイクル数です。II 値が高いほど、次のループ反復までの待機時間が長くなります。
コンポーネントのいくつかのループでは、コンパイラーが選択するよりもより高い II をiiプラグマで指定すると、スループットを損なうことなく componentの最大動作周波数 (fmax) を上げることができます。
- ループが コンポーネントのスループットにとって重大ではない場合
- ループの実行時間が含まれる可能性のある他のループと比較して短時間の場合
#pragma ii <desired_initiation_interval><desired_initiation_interval> パラメーターは必須であり、連続するループ・インターバルの間に待機するクロックサイクル数を指定する整数です。
例
コンポーネントに 2 つの異なるパイプライン可能なループがある場合、すなわち、ループ伝搬依存性を持つショートラニング初期化ループと処理の大半を実行するロングラニング・ループの場合を考慮します。この場合、コンパイラーは初期化ループがデザインの全体的なスループットに及ぼす影響がはるかに小さいことを認識しません。コンパイラーは可能であれば II の値が 1 の両方のループをパイプライン化しようとします。
初期化ループはループ伝搬依存性があるため、生成されたハードウェアにはフィードバック・パスがあります。このようなフィードバック・パスのある II を達成するには、いくつかのクロック周波数を犠牲にする能性があります。メインループのフィードバック・パスに応じて、残りのデザインがより高い周波数で動作する可能性があります。
初期化ループで#pragma ii 2プラグマを指定すると、このループで II を最適化するアグレッシブが少ないことがコンパイラーに通知されます。少ないアグレッシブの最適化は、コンパイラーがパスをパイプライン化して最大動作周波数 (fmax) を制限できるようにし、 コンポーネントデザイン全体でより高い fmaxが達成できます。
初期化ループは、新しい II で実行するのに長時間を要します。しかしながら、fmaxが高いため、ロングランニング・ループの実行時間が短くなると、初期化ループの実行時間の長さは増加します。