複数のメモリ バンクにアクセスするカーネルのガイドライン - 2021.1 Japanese

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

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

DDR メモリ リソースは、プラットフォームの SLR (Super Logic Region) をまたいで分配されます。SLR をまたぐ接続の数は制限されるので、カーネルを DDR メモリ リソースとの接続数が最も多い SLR に配置するのが一般的です。これにより、SLR をまたぐ接続の競合が削減し、SLR をまたぐためにロジック リソースが消費されるのを回避できます。

図 1. 同じ SLR 内のカーネルおよびメモリ
注記: 左の図では、1 つの AXI インターフェイスが 1 つのメモリ バンクに接続されています。右の図では、複数の AXI インターフェイスが同じメモリ バンクに接続されています。

上の図に示すように、カーネルに 1 つの AXI インターフェイスがあり、1 つのメモリ バンクにのみマップされる場合、platforminfo ユーティリティ で説明される platforminfo ユーティリティにより、カーネルのメモリ バンクに接続されている SLR がリストされるので、これがカーネルが最適に配置される SLR です。この場合、追加の入力なしでもデザイン ツールによりカーネルが自動的にその SLR に配置される可能性はありますが、次の場合は明示的に SLR を割り当てる必要があります。

  • デザインに同じメモリ バンクにアクセスするカーネルが多数含まれる場合。
  • カーネルにメモリ バンクの SLR に含まれない特殊なロジック リソースが必要な場合。

カーネルに複数の AXI インターフェイスがあり、すべてのインターフェイスが同じメモリ バンクにアクセスする場合、1 つの AXI インターフェイスを含むカーネルと同様に処理でき、カーネルを AXI インターフェイスがマップされているメモリ バンクと同じ SLR に配置する必要があります。

図 2. 隣接する SLR のメモリ バンク
注記: 左の図では、カーネルが SLR0 にあり、SLR をまたぐ接続が 1 つ必要です。右の図では、カーネルがメモリ バンクにアクセスするために、SLR をまたぐ接続が 2 つ必要です。

カーネルに複数の AXI インターフェイスがあり、異なる SLR にある複数のメモリ バンクに接続されている場合は、カーネルがアクセスするメモリ バンクの大部分が含まれる SLR にカーネルを配置することをお勧めします。これにより、このカーネルで必要な SLR をまたぐ接続数が最小限に抑えられ、ユーザー デザイン内のほかのカーネルでメモリ バンクに接続するために使用可能な SLR をまたぐリソースが増えます。

カーネルが別の SLR にあるメモリ バンクに接続される場合は、カーネル SLR および DDR メモリの割り当て のように SLR の割り当てを明示的に指定します。

図 3. 2 つ離れた SLR のメモリ バンク
注記: 左の図では、マップされているすべてのメモリ バンクにアクセスするために SLR をまたぐ接続が 2 つ必要です。右の図では、マップされているすべてのメモリ バンクにアクセスするために SLR をまたぐ接続が 3 つ必要です。

プラットフォームに含まれる SLR が 3 つ以上になると、上の図に示すように、最も多くマップされるメモリ バンクのすぐ隣ではない SLR のメモリ バンクにカーネルがマップされることもあります。このような場合、離れたメモリ バンクにアクセスするために複数の SLR 境界をまたぐ必要があるので、SLR をまたぐリソースの使用量が増加します。このようなリソース使用量の増加を避けるには、カーネルを中間の SLR に配置して、隣接する SLR にまたぐリソースのみが使用されるようにします。