インテルのみ表示可能 — GUID: mwh1391807498071
Ixiasoft
1.2. パイプライン
マイクロプロセッサー、デジタル信号プロセッサー(DSP)、ハードウェア・アクセラレーター、およびデジタル・ハードウェアの他の高性能実装のデザインは、パイプライン・アーキテクチャを含むことが多いです。
たとえば、以下の図は、多段パイプラインとしての次のコード例を表しています。
for (i = 0; i < 1024; i++) { y[i] = (a[i] + b[i] + c[i] + d[i] + e[i] + f[i] + g[i] + h[i]) >> 3; }
パイプライン・アーキテクチャでは、各算術演算はパイプラインに一度に1つずつ渡されます。したがって、上の図に示すように、飽和パイプラインは、算術演算を同時に並列に計算する8つのステージから構成されています。さらに、多数のループ反復のために、パイプライン・ステージは、後続の各ループ反復に対してこれらの算術命令を同時に実行し続けます。
インテル® FPGA SDK for OpenCL™ のパイプライン・アプローチ
新しいパイプラインがデザインに基づいて構築されます。その結果、高度に構成可能なFPGAの性質に対応することができます。
次のOpenCLコードの断片を検討してください。
C = (A >> 5) + B; F = (D – E) << 3; G = C + F;
FPGA全体を同時に実行する複雑なパイプライン構造をインスタンス化するようにFPGAを設定することができます。この場合、SDKは、下の図に示すように、コードをパイプライン型加算器に入力する2つの独立したパイプライン・エンティティとして実装しています。
Intel® FPGA SDK for OpenCL™オフライン・コンパイラー多数のWork-Item内の動作を並行して実行できるようにすることで、計算を高速化するカスタム・パイプライン構造を提供します。オフライン・コンパイラーは、以下に示すように、クロックサイクルごとに変数C 、 F 、およびGの値を計算するカスタム・パイプラインを作成できます。ランプアップの後、パイプラインは1サイクルあたりSingle Work-Itemのスループットを維持します。
従来のプロセッサーは、共有レジスターのセットが限られています。最終的に、プロセッサーは、記憶されたデータをメモリーに書き出して、より多くのデータがレジスターを占めるようにしなければなりません。オフライン・コンパイラーは、パイプライン内のすべてのアクティブなWork-Itemsのデータを格納するのに十分なレジスターを生成することによって、データをライブ」に保ちます。次のコード例および図は、OpenCLパイプラインのライブ変数Cを示しています。
size_t index = get_global_id(0); C = A[index] + B[index]; E[index] = C – D[index];