1

OpenCL プログラミングについて質問したいことがあります。ウェーブフロントの 4 分の 1 が各サイクル クロックに対して命令を発行でき、ウェーブフロントを呼び出すには 4 サイクル クロックが必要であることを理解しています。VLIW アーキテクチャで命令を完了するには、8 サイクル クロックが必要です。したがって、別の波面を呼び出すことが解決策です。2 つの波面を呼び出すと、8 サイクル クロックになります。したがって、ウェーブフロント A が実行された後 (4 サイクル クロック)、ウェーブフロント B が実行されます (別の 4 サイクル クロック)。ウェーブフロント B が実行された後 (合計サイクル クロックは 8)、ウェーブフロント A は別の命令で再度実行されます。

質問は:

処理要素ごとに 4 つの ALU が別の命令を実行するために既に使用されている場合、どのように ALU は別の命令を実行しますか??

例: サイクル 1 で、作業項目 0 ~ 15 が命令「ADD」の実行を開始します。各プロセッシング エレメントの最初の ALU (SIMD/計算ユニットの合計 16 PE) は、「ADD」命令を計算します。
これは、ウェーブフロントのサイクル 2、3、および 4 で発生します (各 PE には、「ADD」命令を実行するためにビジー状態を維持する 4 つの ALU があります)。サイクル 5 では、ウェーブフロント 2 の 4 分の 1 が命令「SUBTRACT」の実行を開始します。最初のウェーブフロントから「ADD」命令を計算するためにビジーであるため、処理要素の ALU はどのように命令を計算するか (8 サイクル クロックかかるため、最初のサイクルのウェーブフロントの 4 分の 1 に対する命令「ADD」の実行は未完了であることを思い出してください)??

更新: 8 サイクル クロックは、書き込み後の読み取りのレイテンシを意味します。

4

1 に答える 1

1

あなたが述べたように、波面が処理されるのに4クロックサイクルかかります。その命令の結果はレジスタに送信されますが、書き込み後の読み取りレイテンシのため、これらの結果は 8 クロック サイクル後にのみ利用可能になります。ここでの重要な違いは、ALU が 4 サイクルで作業を終了したため、他の命令の処理を続行できることです。レジスタ メモリは、新しいデータを保存して再度表示するというジョブを実行するのに 8 サイクルかかります。

レジスタを含むすべての種類のメモリ アクセスに関する一般的な注意事項: メモリ アクセスは、通常の演算とは異なる方法で処理されます。ALU は、メモリ アクセスが終了するのを待っている間、メモリ アクセスの結果に依存しない命令を実行し続けることができます。

于 2013-12-28T11:48:15.777 に答える