AI エンジンは、1 GHz (スピード グレードによってはそれ以上) で動作し、各インターフェイス チャネルは 1 サイクルごとに 64 ビットのデータ幅で読み出しまたは書き込むことができます。PL カーネルは、500 MHz (AI エンジンの 1/2 の周波数) で動作でき、より広いビット幅を使用します。レート マッチングでは、プロデューサー側からコンシューマー側へのスループットのバランスを取り、いずれのプロセスも全体的なパフォーマンスのボトルネックにならないようにします。次の式に、各チャネルのレート マッチングを示します。
次の表に、-1L スピード グレード デバイスで 1 GHz で動作する AI エンジンにより、各サイクルで 32 ビット チャネルが書き込まれる PL のレート マッチングの例を示します。この表に示すように、PL IP は、AI エンジンの 1/2 の周波数で 2 倍のデータを消費するか、1/4 の周波数で 4 倍のデータを消費する必要があります。
AI エンジン | PL | ||
---|---|---|---|
周波数 | 1 サイクルごとのデータ | 周波数 | 1 サイクルごとのデータ |
1 GHz | 32 ビット | 500 MHz | 64 ビット |
250 MHz | 128 ビット |
Vitis コンパイラ (v++
) は、周波数を一致させてデータパス幅を調整する必要があることを理解しているので、PL カーネルからポート幅、クロック仕様から周波数を自動的に抽出し、AI エンジンと PL 領域の間でやりとりされるデータを一時的に格納してレート マッチングを管理するアップサイザー/ダウンサイザーを作成します。
デッドロックを回避するには、AI エンジンと PL の間で複数のチャネルが読み出されたり書き込まれたりした場合に、すべてのチャネルで同時に 1 サイクルごとのデータ レートが達成されることを確認することが重要です。たとえば、1 つのチャネルに 32 ビットが必要で、2 つ目のチャネルに 64 ビットが必要な場合、AI エンジン コードで両方のチャネルが正しく記述され、チャネルでバック プレッシャーやデータ不足が発生しないようにする必要があります。さらに、デッドロックを回避するには、AI エンジンからの書き込みと読み出し、および PL コードでの読み出しと書き込みが同じ順序で実行される必要があります。
PL のグラフ関数定義で使用されるインターフェイスの数によって、AXI4-Stream インターフェイスの数が定義されます。各引数から個別のストリームが生成されます。