PE のストリーミング ネットワーク - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

compute() スコープ内の関数間でストリーム変数を使用すると、PE 間でデータをストリーミングする PE の任意ネットワークを設計できます。compute() メソッドの本体では、PE の構造的構成をセマンティクスで記述します。C 言語での手続き的なセマンティクスとは異なり、VSC では、ソフトウェア エミュレーションに基づいて、compute() 本文のセマンティクスを検証できます。このようなネットワークを使用する例としては、暗号通貨マイニングで使用される一般的なアルゴリズムである Etherium ハッシング用に開発されたデザインがあります。

図 1. ストリーミング ネットワーク

図は、このデザインのシステム アーキテクチャを示しています。これは、AXI4-Stream で接続される PE のパイプライン処理されたネットワークです。4 つの PE、グローバル メモリから読み出される nodeLookUp-1 to 4、これらそれぞれが PE prefnv で生成された入力ストリームからも読み出されたものが含まれます。これらの 4 つの PE から生成された AXI4-Stream は、PE postfnv に消費されます。

fsk_passbackpostfnv から prefnv に戻る AXI4-Stream フィードバック ループがあることに注意してください。このループは、データが AXI4-Stream を数回繰り返し通過した後に収束するようになっています。PE のシステム全体が、compute() 呼び出しそれぞれを決定的に開始および停止します。

このようなストリーミング アーキテクチャは、通常 FPGA リソースを使用するのに効率的で、AXI4 M_AXI インターフェイスを使用する場合に比べて配線リソースが特に少なくなります。そのため、このようなアーキテクチャは、クロック周波数とアクセラレータのパフォーマンスの向上を実現できる可能性があります。

この VSC モデルは完全に C++ で記述され、compute() スコープ内で関数呼び出しを使用してネットワークをキャプチャします。C++ モデルは、ハードウェアをコンパイルしなくても、ソフトウェア エミュレーションを使用して VSC で機能を検証できます。これにより、Vitis ツール内で元の設計意図を早期に検証できます。

ヒント: 効率の悪いシステム構成方法は、複数のアクセラレータ (VPP_ACC とは異なる派生クラス) を作成し、アプリケーション層でパイプラインを構成する方法です (複数アクセラレータのパイプライン構成 を参照)。