ビームフォーミングの数式化

AI エンジンへのビームフォーミングの実装 (XAPP1352)

Document ID
XAPP1352
Release Date
2021-01-11
Revision
1.0 日本語

図 1 に示したように、ビームフォーミングは線形演算として記述できます。ダウンリンクでは、各アンテナの送信信号は複数レイヤーの加重和です。アップリンクでは、各レイヤーの等化信号は複数アンテナで受信した信号の線形結合です。

サブキャリア k のレイヤーのベクターを Xk = [xk,0, xk,1, xk,2, …, xk,M-1]T と表します (M はストリーム数)。また、アンテナに対する周波数領域の送信信号のベクターを Yk = [yk,0, yk,1, yk,2, …, yk,N-1] T と表します (N はアンテナ数)。[]T はベクトルの転置演算です。ビームフォーミングは、次の行列乗算として数式化できます。

ここで、H はビームフォーミング係数とも呼ばれる複素行列 N x M で、L は同じ係数行列 H を共有するサブキャリアの数です。同様に、アップリンクのビームフォーミング機能は次式で表すことができます。

上の 2 つの式から、ダウンリンクとアップリンクのビームフォーミングはいずれも行列乗算として数式化できることがわかります。ダウンリンクでは、行列の次元は (N x M) x (M x L) であり、N x M x L 回の複素積和演算 (CMAC) が必要です。アップリンクでは、行列の次元は (M x N) x (N x L) となりますが、必要な CMAC 演算の数は同じく (N x M x L) 回です。

OFDM の定義によると、占有帯域幅 B における 1 OFDM シンボル期間長はサブキャリア間隔の逆数に等しく、K/B で表されます (K はサブキャリア数)。ダウンリンクのビームフォーミングでは、式 1 の行列乗算を (K/B) の時間内に (K/L) 回実行する必要があるため、1 秒あたりの CMAC の回数は次式で求めることができます。

サイクリック プレフィックス (CP) を使用し、サブキャリアにビームフォーミングを必要としない 3GPP OFDM システムでは、上の式で表される CMAC の回数は最小要件よりも多くなりますが、システム容量にはこの値を使用することを推奨します。

64 アンテナ 32 レイヤーの 100MHz 5G システムでは、ダウンリンク ビームフォーミングに毎秒 (64 x 32 x 100e6) = 204.8G CMAC が必要です。400MHz クロックでは、2 個の DSP58 で毎秒 400M CMAC を実行可能なため、この機能を実装するには (204.8G / 400M x 2) = 1024 個の DSP58 が必要となります。

Versal™ AI コア デバイスでは、1 個の AI エンジンで毎秒 8G CMAC を実行できます。上に挙げた例で、AI エンジンの動作時間比を 80% とした場合、この行列乗算は (204.8G / 8G / 80%) = 32 個の AI エンジンで実装できます。つまり、1 個の AI エンジンは 32 個の DSP58 ブロックに相当します。

M 個のレイヤーと N 本のアンテナを使用する MIMO システムでは、式 1 の行列乗算は (N/u) 個の部分行列乗算チェーンに分割できます。この場合、各チェーンは (u-by-v) x (v-by-L) の行列乗算を実行する (M/v) 個の部分行列乗算ユニットで構成されます。すなわち、式 1 は次のように書き換えることができます。

ここで、Yk は (u-by-L) の複素行列、Xm は (v-by-L) の複素行列、Hk,m は (u-by-v) の複素行列です。これらは次の関係を満たしている必要があります。

上の式は部分行列乗算の次元が (u-by-v) x (v-by-L) で共通しているため、1 個の AI エンジンに実装できます。(M/v) 個の AI エンジンで構成されるチェーンをカスケード接続し、部分的な CMAC の結果を累算することにより最終出力を得ることができます。

図 1. AI エンジン アレイを使用した行列乗算

上の図は、式 4AI エンジン アレイに実装する 1 つの方法を示したものです。各 AI エンジンが (u-by-v) x (v-by-L) の行列乗算を実行し、カスケード接続バスが 1 つの AI エンジンの累算レジスタをもう 1 つの AI エンジンの累算レジスタに接続し、これによって全精度の累算チェーンを形成します。AI エンジンの各行は、個々の k に対する 式 5 を実装します。そして出力行列 Yk が行の最後の AI エンジン タイルのメモリに書き込まれます。各 AI エンジンへの入力はプログラマブル ロジックによって供給され、(u-by-v) 行列 Hk,m と (v-by-L) データ行列 Xm で構成されます。これらはいずれも、AI エンジンがダブル バッファーに格納された直前の H と X の積を計算するのと同時に、DMA によってローカル メモリに保存されます。アレイの同じ列にある AI エンジンはすべて同じデータ行列 Xm を共有するため、1 つの入力データ ストリームを AI エンジン アレイに内蔵された AXI スイッチ経由でこれらすべての AI エンジンへマルチキャストできます。なお、DMA と AXI スイッチは、ユーザーが定義したデータフローに従ってコンパイル時にザイリンクス ツールによって自動的に設定されます。

図 2. 1 個の AI エンジンにおけるパイプライン処理のタイミング図

スループットを高めるため、1 個の AI エンジン内ではデータ転送と演算がパイプライン処理されます。上の図に示したように、データ転送および演算に必要な時間はデザイン パラメーター u、v、および L によります。AI エンジン内の MAC の効率を 100% にするには、データ転送に必要な時間が演算に必要な時間を超えないようにする必要があります。このため、次の式が成り立ちます。

これを解くと、次のようになります。

3GPP LTE および 5G NR システムでは L の最小値は 12 で、データ転送帯域幅によって全体的なスループットが制限されないようにするには (u = v = 8) と設定することを推奨します。

さらに、入力および出力 AXI バスは v および u チャネルの時分割多重データを伝送します。各 AXI バスのスループットは 1Gs/s であるため、最大信号帯域幅の上限値は次式で表されるように各データ チャネルのサンプル レートによって決まります。

FR1 周波数バンド (~ 7.125GHz) で送信されるすべての 5G NR キャリアは 100MHz 以内であり、上に示した帯域幅の範囲に収まります。複数のキャリアが存在し、全体的な帯域幅が 100MHz を超える場合、ビームフォーミング モジュールのインスタンスを複数使用することでスループット要件を満たします。

u と v の値を大きくすると AI エンジンの数が少なくなりますが、式 3 で示される全体的な演算量は満たす必要があります。すなわち、次の式が成り立ちます。

この式を簡単にすると、次のようになります。

式 10 によって u と v の積の上限値が決まると、AI エンジンの数または各 AI エンジンの全体的な MAC 演算効率の下限値も決まります。B=100MHz の 100MHz 5G NR キャリアの場合、上限値は u v ≤ (8000/100) = 80 です。(u = v = 8) と設定すると、1 個の AI エンジンのベクター プロセッサの MAC 演算効率は (8 × 8/80) = 80% となり、アンテナとレイヤーの数がいずれも 8 の整数倍である多くの無線システムに最適です。