概要 - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

バーストが推論可能なようにコードを記述します。前提条件に違反がないようにします。バーストは、すべてのデータを一気に取得できるということではなく、結果を 1 つにまとめることです。データは 1 つずつ順番に到着します。

バースト長は 16 が理想的ですが、8 でも十分です。バーストが長いとレイテンシが長くなり、バーストが短いとパイプライン処理できます。バーストとパイプラインを混同しないようにしてください。ただし、バーストはその他のバーストを使用してパイプライン処理可能なことに注意してください。

バーストが固定長の場合は、バーストが推論される内側ループを展開し、外側ループをパイプライン処理できます。これにより、同じバースト長が実現され、バースト間でもパイプライン処理が実行されるので、スループットが増加します。

スループットを向上するには、単にバーストを長くするのではなく、インターフェイスを 1024 ビットまで拡張することに重点を置いてください。

バーストが長いと、AXI インターコネクトを使用した場合に優先度が高くなります。カーネル内ではダイナミック アービトレーションは実行されません。

同じ DDR メモリに 2 つの m_axi ポートを接続してカーネル内で一緒にアクセスしないように記述することはできますが、カーネル内で競争する要求はカーネル外の AXI インターコネクトで調整されます。

順不同アクセスの制限を回避するには、ブロック RAM にバッファーを作成し、このバッファーにバーストを格納してから、このバッファーを使用して順不同アクセスを実行します。これは、通常ライン バッファーと呼ばれ、ビデオ プロセッシングでよく使用される最適化です。

別の方法として、pragma HLS cache で説明されるように CACHE プラグマまたは指示子を追加して、m_axi インターフェイスのパフォーマンスを向上させることもできます。

合成サマリ レポートの [Burst Optimization] セクションを参照し、デザインのバースト最適化およびバーストが適用されなかった場合を確認してください。デザインで自動バーストが発生していない場合は、手動バーストの使用 で説明されるように、手動バースト用に hls::burst_maxi データ型を使用できます。