AI エンジンのメモリ モジュール

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

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

AI エンジンのメモリ モジュールは、8 つのメモリ バンク、2 つの S2MM 入力 (Stream to Memory Map) DMA、2 つの MM2S 出力 (Memory-Map to Stream) DMA、および 1 つのハードウェア同期 (ロック) モジュールで構成されます (下図参照)。上下左右の 4 方向それぞれに、偶数番号と奇数番号ごとに独立したポート、3 つのアドレス ジェネレーター、2 つのロード、1 つのストアがあります。

図 1. AI エンジンのメモリ モジュール

メモリ バンク
AI エンジンのメモリ モジュールには 8 つのメモリ バンクがあります。1 メモリ バンクは 256 ワード x 128 ビットのシングル ポート メモリです。各メモリ バンクには、各 32 ビット ワードに対するライト イネーブルがあります。バンク [0-1] には ECC 保護があり、バンク [2-7] にはパリティ チェックがあります。バンク [0] はメモリ モジュールのアドレス 0 から開始します。ECC 保護は、32 ビット ワードに対して 1 ビットのエラーを検出および訂正し、2 ビットのエラーを検出します。
メモリ アービトレーション
各メモリ バンクには、すべてのリクエスターに対してアービトレーションを実行する専用のアービタがあります。メモリ バンクのアービトレーションをラウンド ロビン方式で実行することにより、リクエスターがアイドルになるのを防ぎます。1 クロック サイクルで 1 つの新しい要求が処理されます。同じサイクルで同じメモリ バンクに対して複数の要求がある場合、メモリへのアクセスを許可されるのは 1 サイクルあたり 1 つの要求のみです。それ以外のリクエスターは 1 サイクルの間ストールし、次のサイクルでハードウェアがメモリ要求を再送します。
タイル DMA コントローラー
タイル DMA には、AI エンジン タイル内のストリーム スイッチに対して 2 つの受信ストリームと 2 つの送信ストリームがあります。タイル DMA コントローラーは、ストリーム データをメモリへ格納する S2MM (32 ビット データ) とメモリの内容をストリームに書き込む MM2S (32 ビット データ) の 2 つのモジュールで構成されます。各 DMA 転送は DMA バッファー ディスクリプターで定義し、DMA コントローラーは 16 個のバッファー ディスクリプターにアクセスします。これらのバッファー ディスクリプターには、コンフィギュレーション用のメモリ マップド AXI4 インターコネクトを使用してアクセスすることもできます。各バッファー ディスクリプターには、DMA 転送に必要なすべての情報に加え、現在の DMA 転送が完了した後に DMA コントローラーが実行する次の DMA 転送へのポインターも含めることができます。DMA コントローラーは、AI エンジンと DMA または AI エンジン アレイ外部の任意のメモリ マップド AXI4 マスターと DMA 間の同期メカニズムである 16 個のロックにもアクセスできます。各バッファー ディスクリプターにはロックを関連付けることができます。これは、メモリ マップド AXI4 インターコネクトを使用してバッファー ディスクリプターで設定します。
ロック モジュール
AI エンジンのメモリ モジュールには、AI エンジン、タイル DMA、および外部メモリ マップド AXI4 インターフェイス マスター (PS など) の間で同期をとるためのロック モジュールが含まれます。ハードウェア ロックは 16 あり、AI エンジンの各メモリ モジュール ロック ユニットに対して 1 ビットのデータ値を設定します。各ロックには、同時要求を管理するためのアービタがあります。ロック モジュールは、4 方向すべての AI エンジン、ローカル DMA コントローラー、およびメモリ マップド AXI4 からのロック要求を処理します。