システム演算 - 2023.2 日本語

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

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

DSP エンジンと AI エンジンは、いずれも同じような種類の演算を実行できます。いずれのエンジンも、FIR フィルターなどの積和演算 (MAC) 関数を効率よく実装できるように設計されています。デザインを分割する際は、これら 2 つのブロックの機能の違い、およびこれらと PL との連携について理解することが重要です。このセクションでは、各ブロックの演算機能に着目し、さまざまなデータ型をどちらのエンジンにマップすべきかについて説明します。

Versal AI コア シリーズ、AI エッジ シリーズ、および Versal プレミアム VP2502 および VP2802 デバイスには、AI エンジン タイル アレイまたは AI エンジン ML (AIE-ML) タイル アレイがあります。AIE-ML アレイを搭載したデバイスには追加の 512 KB メモリ タイル行があり、演算負荷の高い各種アプリケーション (たとえば、機械学習推論の高速化) に最適化されています。

次に、DSP エンジンにマップすべきファンクション、およびベクトル化が可能で AI エンジンにマップすべきファンクションの例を示します。

  • 乗算
  • 積和
  • 高速フーリエ変換 (FFT)
  • 有限インパルス応答 (FIR) フィルター
  • 行列 - 行列乗算

DSP と PL の演算はサンプル ベースです。PL はビット操作関数および高速データ並べ替えを得意とし、システムのデータ管理で重要な役割を果たします。

AI エンジンは SIMD ベクトル プロセッサであるため、ベクトル化が容易な関数が AI エンジンへの実装に適しています。たとえば、線形代数関数はベクトル化に向いています。

AI エンジンはサンプル ベースとブロック ベースのいずれの処理も実行できます。サンプル ベース処理の場合、AI エンジンはストリーミング インターフェイスを使用し、ブロックはベクトル処理およびレジスタ メモリにアライメントして動作します。これによって低レイテンシで動作でき、高サンプル レートで動作する高スループット デザインが可能になります (例: スーパー サンプル レート処理)。

ウィンドウ インターフェイスを使用する場合、AI エンジンはブロック ベース処理 (ベクトル化処理) 用に構成されます。レイテンシとスループットはウィンドウ サイズおよびサンプル レートの影響を受け、これは特にウィンドウ (ブロック) サイズが小さい場合に顕著です。256 ビット メモリ読み出しポートと 256 ビット書き込みポートの両方を使用すると、帯域幅が拡大します。

AI エンジンはベクトル プロセッサであるため、1 クロック サイクルで DSP エンジンより多くの命令を実行できます。たとえば INT8 の場合、DSP エンジンは 1 クロックで 6 個の命令しか実行できませんが、AI エンジンは 256 個を実行できます。次の表に、AI エンジンでネイティブにサポートされるデータ型を AI エンジンと DSP エンジンでそれぞれ実行した場合の性能を示します。このような性能の優位性があるため、これらのデータ型をターゲットとする線形代数演算を大量に実行するようなシステムでは、AI エンジンの使用が適していることがあります。ただしこの後で説明するように、これ以外にもいくつかの事項を検討する必要があります。

表 1. Versal アダプティブ SoC の各インテリジェント エンジンで 1 クロック サイクルあたりに実行可能な命令の数
データ型 DSP エンジン AI エンジン
INT8 6 256
INT16 2 64
INT24 2 16
INT32 N/A 1 16
FP32 2 16
Complex 16 2 2 16
Complex 32 N/A 1 2
  1. 単独の DSP エンジンには実装できず、PL リソースを追加する必要があります。
  2. 実装には 2 個の DSP エンジンが必要です (最大 18 ビット複素乗算または MACC まで)。

これらのタイプの関数をどちらのエンジンを使用して実装するかを決める前に、必要な演算量を評価する必要があります。次の表の例に示すように、小規模な 11 タップ FIR フィルターでは、大規模な 131 タップ FIR フィルターほどの演算性能は要求されません。したがって、11 タップ FIR フィルターは DSP エンジンと PL に実装した方がよいと考えられます。これに対し、131 タップ FIR フィルターは AI エンジンに実装した方が効率よく実行できます。

表 2. 各種 FIR フィルターの実装に必要な演算量の例
11 タップ FIR フィルター 131 タップ FIR フィルター

16 ビット実数データと 16 ビット実数係数

AI エンジンで利用可能な 16 ビット演算量 = 32 MACs

必要な演算量 = 11 MACs

AI エンジンの数 = 0.35 (1)

リソース使用率 = 0.35

低使用率

必要な演算量 = 131 MACs

AI エンジンの数 = 4.09 (5)

リソース使用率 = 0.82/タイル

高使用率

これ以外にも、デザイン分割の意思決定にはいくつかの要因が影響します。たとえば、この 11 タップ フィルターがアプリケーション データフローのどの部分で使用されるかを考えます。より大規模なフィルター チェーンの一部として使用されるのでしょうか。その場合は、たとえ小規模な FIR フィルターであっても、フィルター チェーンのその他の部分と同じ AI エンジンに実装した方がシステム デザイン全体の効率が向上し、アーキテクチャの観点からは理にかなっています。

AI エンジンでネイティブにサポートされない関数 (例: INT4 または 24 ビット複素数) の場合、これらの関数は DSP58 と PL に実装する方がシンプルです。ただし、これらのネイティブでないオペランドを AI エンジンでサポートすることも可能です。このアプローチをとる場合、ベクトル レーン内でのデータ管理に注意が必要で、通常は PL 内に追加のデータ管理機能が必要となります。

AI エンジンのベクトル プロセッサは、多数の演算を同時に効率よく実行できるように設計されています。ただし、アプリケーションによっては非線形代数関数も AI エンジンのスカラー プロセッサに実装した方がよいこともあります。このアプローチの長所は、AI エンジン アレイから PL へデータを移動してこれらのファンクションを実行する必要がなくなることです。PL と AI エンジン アレイ間の往復遅延が生じるため、前処理/後処理は PL で DSP58 を使用して実行することが推奨されます。