MACC の拡張

Versal ACAP DSP エンジン アーキテクチャ マニュアル (AM004)

Document ID
AM004
Release Date
2022-09-11
Revision
1.2.1 日本語

27 x 24 ビットの乗算で生成される結果は、最大 51 ビットで表現できます。MACC 演算では、DSP がオーバーフロー/アンダーフロー条件に達し、出力が DSP 出力 (P) の利用可能な 58 ビットを超えることがあります。

MACC 演算は P = P + (a × b) として表すことができるため、出力結果を表現するのに必要なビット数は累算の回数によって変化し、次のように定義できます。

C ≥ log2 ( ( 2N-1 × 2M-1 × K) + 1) + 1

説明
  • N = 「a」オペランドのビット数 (2 の補数で表現)
  • M = 「b」オペランドのビット数 (2 の補数で表現)
  • K = 累算の回数
  • C = 結果「P」のビット数 (2 の補数で表現)

DSP の OVERFLOW/UNDERFLOW 出力を使用して、P[56] より後の潜在的なオーバーフロー/アンダーフローを検出できます。詳細は、オーバーフロー/アンダーフロー/飽和 を参照してください。

MACC アプリケーションにのみ有効なもう 1 つのアプローチでは、次の図に示すように 2 つの DSP を使用する必要があります。
図 1. MACC アプリケーション

下位 DSP は PLOWER = PLOWER + (A × B)を実行し、その出力が最終結果の下位 58 ビットとなります。上位 DSP は最終 MACC 演算の上位 58 ビットを提供しますが、このとき、CARRYINSEL ポートは 3'b010 に設定して CARRYCASCIN パスを選択します。OPMODE はこのユース ケースでは OPMODEUPPER = 9'b00_100_10_00 とする必要があります。この OPMODE によって MULTSIGNIN 信号が内部 ALU へ送られ、正しい最終結果が得られます。また、これはリセットがディアサートされた後に選択する必要があります。このため、OPMODEREG = 1 です。(リセットがアサートされている間、DSP の内部レジスタはすべて 0 に強制されます。)

入力と上位 DSP インスタンスの間にあるフリップフロップは、下位 DSP インスタンスに対してパイプラインのバランスをとる必要があり、リセットがアサートされている間は 0 を出力するように設計されています。上の図に示したデザインには、デザイン自体を正しく動作させるために必要な最小限のレジスタを示していますが、タイミングを満たすなどのために追加のレジスタが必要な場合は、次の構成とすることで正しい結果が得られます。
  AREG BREG OPMODEREG CARRYINSELREG
DSP 下位インスタンス 2 2 1 1
DSP 上位インスタンス 0 0 1+1FF (ロジック内) 1+1FF (ロジック内)