浮動小数点ベクトル ユニット

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

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

AI エンジンには 8 レーンの単精度浮動小数点積和演算があります。このユニットは、固定小数点データパスと同じベクトル レジスタ ファイルおよび並べ替えネットワークを使用します。通常は、固定小数点または浮動小数点全体で、1 サイクルあたり 1 ベクトル 命令のみを実行できます。

次の図に、単精度浮動小数点データフローのパイプラインを示します。固定小数点ベクトル ユニットとは異なり、PMXL および PMC ユニットのみを使用します (PMXR ユニットはなし)。FPYMX は YMX のスタイルで、FPYMX と PMXL の結果が単精度乗算器ユニット (FPMPY) に渡され、8 つの積が並列に計算されます。FPMPY の演算はレイテンシが 3 サイクル、スループットが 1 サイクルです。次に、レーンごとの結果に負の符号を加える FPSGN ユニットがあります。

FPSGN ユニットの次には、FPACC と呼ばれる 2 段のアキュムレータ ユニットがあります。このユニットは、乗算結果を 0 やその他のベクトル レジスタから直接取得した値など、さまざまなソースからの値と累算します。ただし、同じベクトル内のレーンは直接加算できません。このアキュムレータは FPSGN ユニットによって処理されるため、減算はサポートしません。

図 1. AI エンジンの浮動小数点ベクトル ユニット単精度浮動小数点データパスのパイプライン

AI エンジンは、浮動小数点フォーマットのベクトル初等関数をいくつかサポートしています。これには、ベクトル比較、最小値、および最大値が含まれます。これらは、エレメント単位で動作し、2 つのベクトルを比較します。必要なハードウェアは、固定小数点のベクトル比較と非常に類似しています。固定小数点ユニットの PRA は、浮動小数点の比較に対応できるように拡張されており、FPYMX ブロックと同時に実行されます。浮動小数点データパスは、ベクトル固定小数点から単精度浮動小数点への変換および反対方向の浮動小数点から固定小数点への変換をサポートしていますが、スカラー ユニットを経由するため性能は低くなります。この場合、ベクトルから抽出されたエレメントを抽出し、スカラー変換を実行し、その結果をベクトルに戻すようにします。これを効率よくパイプライン ループに実装すると、1 サイクルあたりほぼ 1 サンプルの性能を達成できます。

浮動小数点ユニットは、標準的な浮動小数点例外に対応するイベントを発行でき、ステータス レジスタ MC がイベントを追跡します。浮動小数点の機能ユニットごとに 8 つの例外ビットがあります。これらの例外 (ビット 0 から 7 まで) は、Zero、Infinity、Tiny (アンダーフロー)、Huge (オーバーフロー)、Inexact、Huge Int、および Divide by Zero です。8 つの例外のうち、Tiny、Huge、Invalid、および Divide by Zero はイベントに変換でき、AI エンジン アレイ インターフェイスにブロードキャストして、PS/PMC に割り込みとして送信できます。

次の機能は、AI エンジンの浮動小数点データパスではサポートされません。

  • 倍精度演算
  • 半精度演算
  • カスタム浮動小数点フォーマット (指数部 2 ビット、仮数部 14 ビットの E2:M14 など)
  • 乗算前の前置加算
  • 乗算とアキュムレータ間の後置加算
  • 乗算器とアキュムレータ間での精度向上
  • 非正規化した浮動小数点数