メモリおよびデータ移動 - 2023.2 日本語

Versal アダプティブ SoC システムおよびソリューション プランニング設計手法ガイド (UG1504)

Document ID
UG1504
Release Date
2023-11-15
Version
2023.2 日本語

次の事項を決定するには、Versal アダプティブ SoC 内のメモリ階層を理解することが重要です。

  • どの範囲の問題を解決する必要があるか。
  • 各種エンジン間でデータがどのように通信されるか、そしてどれだけの帯域幅を利用できるか。
  • AI エンジンを使用する場合、各 AI エンジンで利用できる生の演算性能をどのように活用して、アプリケーションの 1 ワットあたりの性能を最大に高めるか。

アプリケーションの種類によって実際に運用される環境が異なるため、メモリ階層も異なってきます。たとえば、外部 DDR メモリを必要とするアプリケーションもあれば、JESD などのインターフェイスを使用してディスクリート A/D コンバーター (ADC) からデータを取り込むアプリケーションもあります。データをどこから取得するにせよ、システム要件を満たすためには適切なメモリ階層を構築することが重要です。

たとえば、外部 DDR メモリを必要とするシステムでは、DDR メモリからデータを取得できるレートは仕様で決まっています。これによって、システムの最大帯域幅が固定されます。たとえば Versal アダプティブ SoC で LPDDR を使用する場合、各メモリ コントローラーから NoC への最大メモリ帯域幅は約 34 Gb/s です。

DDR メモリからのデータは、NoC を経由してアダプティブ SoC 全体に移動できます。AI エンジンの場合、AI エンジン アレイ インターフェイス内の NoC インターフェイス タイルを経由して AI エンジン アレイに直接アクセスできます。ただしこの帯域幅はあまり広くないため、AI エンジン タイルへデータを移動する方法として最適ではないことがあります。

Versal デバイスでは大量のオンチップ メモリを利用できるため、ほとんどの場合、データを NoC 経由で PL 内のステージング メモリ (UltraRAM やブロック RAM など) に取り込むのが一般的です。この場合、PL と AI エンジン アレイ間の帯域幅の方が双方向とも非常に広いため、PL インターフェイス アレイ タイルを使用して AI エンジンとの間でデータを転送します。

アプリケーションによっては、DDR メモリ - NoC - AI エンジンの間で直接の通信が必要となることがあります。このような通信も可能ですが、全体的な帯域幅は狭くなります。したがって、ほとんどのアプリケーションではデバッグ、トレース、および制御通信には PS または任意のマスターを介して NoC を使用することを推奨します。

AI エンジン アレイを内蔵したデバイスの場合、各 AI エンジン タイルにローカル データ メモリがあります。各タイルには 4 KB のデータ メモリ バンクが 8 個あります (1 タイルに合計 32 KB)。各 AI エンジン コアは、同じ AI エンジン タイル上のデータ メモリ、および隣接する 3 つのタイル (たとえば、上、下、および右/左) のデータ メモリに対して直接のローカル アクセスが可能です。これにより、各タイルは 128 KB のローカル メモリを共有します。

AI エンジン ML アレイを搭載したデバイスには追加の 512 KB メモリ タイル行があり、低レイテンシのローカル メモリ ストレージを提供します。

次の図に、VC1902 全体で使用可能なメモリを示します。Versal AI コア デバイスについては、 『Versal AI コア シリーズ製品セレクション ガイド』 (XMP452) を参照してください。

図 1. Versal アダプティブ SoC AI コア シリーズ ファミリのオンチップ メモリ階層
注記: AI エンジン アレイの全メモリ容量は、32 KB x (デバイスの AI エンジン タイル数) で求まります。たとえば、VC1902 には 400 個のタイルがあります。したがって、AI エンジン アレイの全メモリ容量は (32 KB x 400) = 12.8 MB です。

特に AI エンジン アレイを使用する場合、効率的なデザインとするためにはデータ通信が重要になります。このため、デザインを効率よく分割するには、AI エンジンと外部とのデータ帯域幅、および AI エンジン間の内部データ帯域幅を理解する必要があります。詳細は、 『Versal アダプティブ SoC AI エンジン アーキテクチャ マニュアル』 (AM009)このセクションを参照してください。

図 2. Versal アダプティブ SoC 全体の通信帯域幅

対称型 FIR、たたみ込みニューラル ネットワーク (CNN)、ビームフォーミングなどの機能では、一部のデータが再利用されます (係数や重みの共有など)。これらの機能では、ストリーミング ブロードキャスト機能を使用して同じ重みまたは係数を複数の AI エンジン タイルへ送信することにより、メモリ帯域幅を抑えることができます。大量のデータを再利用するアプリケーションは、AI エンジンへの実装が適しています。大規模なフィルターを 1 つのタイルに実装した場合、データ再利用にはウィンドウ インターフェイスの方が適しています。

次の図に、AI エンジン アレイまでの Versal アダプティブ SoC 全体のデータフローの例を示します。デバイス全体でのデータ マップを検討する際は、ここに示した帯域幅の値を参考にしてください。

図 3. AI エンジンへのデータフロー例

このデータフローの例を使用する場合、個々のアプリケーションに固有の値を検討するする必要があります。DDR メモリから PL 内のステージング メモリ (UltraRAM など) にデータを取り込むかどうかは、転送するデータ量、メモリ コントローラーのスループット、NoC の帯域幅、およびメモリ容量によって判断します。

UltraRAM にデータをロードした後、PL でデータの並べ替えまたはプリプロセス ステージが必要になることがあります。それ以外の場合は、データを AI エンジンに送信して処理する必要があります。データフローのこのフェーズでは、AI エンジン アレイ インターフェイスの帯域幅、およびデータを必要なタイルへ転送する際の AI エンジン アレイ内の帯域幅を考慮することが重要です。

AI エンジンで解決する問題の範囲は、AXI4-Stream の帯域幅、および AI エンジン タイルおよびアレイ内のデータ メモリ容量の両方によって決まります。