機能の概要

Versal アダプティブ SoC AI エンジン アーキテクチャ マニュアル (AM009)

Document ID
AM009
Release Date
2023-08-18
Revision
1.3 日本語

AI エンジンは SIMD (Single-Instruction Multiple-Data) および VLIW (Very-Long Instruction Word) プロセッサを内蔵した、高度に最適化されたプロセッサで、固定小数点精度と浮動小数点精度の両方をサポートしています。次の図に示すように、AI エンジンはメモリ インターフェイス、スカラー ユニット、ベクトル ユニット、2 つのロード ユニット、1 つのストア ユニット、および命令フェッチ/デコード ユニットで構成されます。

図 1. AI エンジン

AI エンジンの主な特長は次のとおりです。

  • 32 ビット スカラー RISC プロセッサ
    • 汎用ポインターおよびコンフィギュレーション レジスタ ファイル
    • 非線形関数 (sqrt、Sin/Cos、InvSqrt など) をサポート
    • スカラー ALU (32 x 32 ビット スカラー乗算器を含む)
    • スカラー固定小数点とスカラー浮動小数点の間でデータ型変換をサポート
  • 3 つのアドレス生成ユニット (AGU)
    • 複数のアドレッシング モードをサポート: 固定、間接、ポスト インクリメント、または循環
    • 高速フーリエ変換 (FFT) アドレス生成をサポート
    • 2 つのロード ユニット専用の 2 つの AGU
    • ストア ユニットに専用の 1 つの AGU
  • ベクトル固定小数点/整数ユニット
    • 複数のベクトル レーンで同時に演算を実行
    • 複素数および実数オペランドに対して複数の精度をサポート (表 1 参照)。
      注記: cfloat はベクトル データ型ですが、AI エンジンのベクトル プロセッサでは直接サポートされていません。2 つの命令を発行する必要があります。
      表 1. ベクトル データパスでサポートされる精度
      X オペランド Z オペランド 出力 MAC 演算回数
      8 実数 8 実数 48 実数 128
      16 実数 8 実数 48 実数 64
      16 実数 16 実数 48 実数 32
      16 実数 16 複素数 48 複素数 16
      16 複素数 16 実数 48 複素数 16
      16 複素数 16 複素数 48 複素数 8
      16 実数 32 実数 48/80 実数 16
      16 実数 32 複素数 48/80 複素数 8
      16 複素数 32 実数 48/80 複素数 8
      16 複素数 32 複素数 48/80 複素数 4
      32 実数 16 実数 48/80 実数 16
      32 実数 16 複素数 48/80 複素数 8
      32 複素数 16 実数 48/80 複素数 8
      32 複素数 16 複素数 48/80 複素数 4
      32 実数 32 実数 80 実数 8
      32 実数 32 複素数 80 複素数 4
      32 複素数 32 実数 80 複素数 4
      32 複素数 32 複素数 80 複素数 2
      32 単精度浮動小数点 32 単精度浮動小数点 32 単精度浮動小数点 8
    • 8 つの 16 ビット複素数乗算を実行するように構成可能
    • 32 ビット粒度の完全な並べ替えユニット
    • シフト、丸め、および飽和 (丸めと飽和は複数のモードを利用可能)
    • 2 段階の後置加算 (768 ビットの中間結果)
    • X オペランドは 1024 ビット幅で、Z オペランドは 256 ビット幅です。コンポーネントの使用に関しては、表 1 の最初の行を考慮に入れてください。乗算器オペランドは同じ 1024 ビットおよび 256 ビット入力レジスタから得られますが、一部の値は複数の乗算器にブロードキャストされます。128 個の 8 ビット シングル乗算器があり、結果は後置加算された後で累算されて、16 個または 8 個のアキュムレータ レーン (各 48 ビット) に入ります。
  • 単精度浮動小数点 (SPFP) ベクトル ユニット
    • 固定小数点数ベクトル ユニットと同じ並べ替えを使用
    • 複数のベクトル レーンで同時に演算を実行
    • 1 サイクルで 8 回の単精度 MAC (積和演算)
  • バランスのとれたパイプライン
    • ファンクション ユニットごとに種類の異なるパイプライン (最大 8 段)
    • ロードおよびストア ユニットがデータ メモリの 5 サイクル レイテンシを管理
  • 3 つのデータ メモリ ポート
    • 2 つのロード ポートと 1 つのストア ポート
    • 各ポートは 256 ビット/128 ビット ベクトル レジスタ モードまたは 32 ビット/16 ビット/8 ビット スカラー レジスタ モードで動作。8 ビットおよび 16 ビットのストアは Read-Modify-Write 命令として実行
    • 3 つすべてのポートで同時に演算を実行
    • いずれかのポートでバンクが競合するとデータパス全体がストール
  • VLIW (Very-Long Instruction Word) ファンクション
    • すべてのファンクション ユニットへ命令を同時発行
    • 複数の命令フォーマットおよび可変長命令をサポート
    • 1 つの VLIW ワードを使用して最大 7 つの演算を並列に発行可能
  • ダイレクト ストリーム インターフェイス
    • 2 つの入力ストリームと 2 つの出力ストリーム
    • いずれのストリームも 32 ビットまたは 128 ビット幅に構成可能
    • 1 つのカスケード ストリーム入力、1 つのカスケード ストリーム出力 (384 ビット)
  • 次のモジュールへのインターフェイス
    • ロック モジュール
    • ストール モジュール
    • デバッグ/トレース モジュール
  • イベント インターフェイスは AI エンジンからの 16 ビット幅出力インターフェイス