I/O の競合を削減 - 2021.1 Japanese

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

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

I/O の競合は、ループ反復ごとに内部メモリ リソースの I/O ポートに複数回アクセスする必要がある場合に発生します。II がループ反復ごとに I/O リソースにアクセスする回数よりも小さい場合、ループをパイプライン処理することはできません。シングル ポート RAM では、1 回のループ反復でポート A に 4 回アクセスする必要がある場合、可能な最小 II は 4 です。

これらの I/O アクセスが必要かどうか、削除可能かどうかは、開発者が判断する必要があります。I/O の競合を削減するのに最もよく使用される方法は、次のとおりです。

  • 内部キャッシュ構造の作成

    問題のある I/O アクセスの中に以前のループ反復で既にアクセス済みのデータへのアクセスが含まれる場合は、以前の反復でアクセスされた値のローカル コピーを作成するようにコードを変更します。ローカル データ キャッシュを使用すると、外部 I/O にアクセスする回数が減るので、ループの II を改善できます。

    Vitis Accel Examples GitHub リポジトリのこの例は、シフト レジスタをローカルで使用し、前に読み込んだ値をキャッシュして、フィルターのスループットを改善する方法を示しています。

  • I/O およびメモリの再構成

    このセクションの前の方のレイテンシ改善方法で説明したように、HLS コンパイラでは配列がメモリにマップされ、デフォルトのメモリ構成で必要なスループットを達成するのに十分な帯域幅がありません。配列分割およびプラグマの再形成を使用して帯域幅を増加したメモリ構造を作成することもでき、ループの II を改善できます。