Section 2 - データ移動(Object FIFO)
このセクションでは、AIE配列内のデータ移動を記述するために使用される高レベル通信プリミティブ「Object FIFO」を紹介します。このガイドの最後には、以下ができるようになります:
- 通信プリミティブAPIの高レベルな理解を得る
- 意味のある設計例を通じてObject FIFOの初期化とアクセス方法を学ぶ
- Object FIFO設計における現在の制限や制約につながった設計上の決定を理解する
- Object FIFOの実装とより低レベルの変換に関するより詳細な資料がどこにあるかを知る
データ移動抽象化の必要性を理解するには、まず扱っているハードウェアアーキテクチャを理解する必要があります。AIE配列は、明示的なデータ移動要件を持つ空間演算アーキテクチャです。配列の各コンピュートユニットは、そのL1メモリモジュール内に格納されているデータを処理します。そのデータは、AIE配列のグローバルデータ移動設定の一部として、そこに明示的に移動される必要があります。この設定には、データが損失なく目的地に到着するように配列全体でデータ移動を処理するいくつかの特殊なハードウェアリソースが含まれます。Object FIFOは、ハードウェアが提供するより高度な制御可能性を犠牲にすることなく、より人間が理解しやすくアクセスしやすい方法でデータ移動を指定する方法をユーザーに提供します。
注意: MLIRでのObject FIFOプログラミングに関するより詳細で低レベルな資料については、MLIR-AIEチュートリアルを参照してください。
このガイドは5つのセクションに分かれており、各セクションは前のセクションの上に構築されます:
注意: Section 2fには、Object FIFOを使用した一般的な設計パターンを含む実践的なコード例が多数含まれており、すぐに取得して目的の用途に合わせて調整できます。
-
- Object FIFOの初期化
- Object FIFOのオブジェクトへのアクセス
- 同じプロデューサ/コンシューマを持つObject FIFO
-
Section 2b - 主要なObject FIFOパターン
- Object FIFOがサポートするデータ移動パターンの紹介
- 再利用(Reuse)
- ブロードキャスト(Broadcast)
- 分散(Distribute)
- 結合(Join)
- Object FIFOがサポートするデータ移動パターンの紹介
-
- データレイアウト変換機能の紹介
-
- ホストメモリとAIE配列間のランタイムデータ移動を管理するプロセスのウォークスルー
-
- 複数コアを持つ設計への効率的なアップグレードプロセスのウォークスルー
-
- Object FIFOを使用した実践的な例
- シングル/ダブルバッファ
- 外部メモリからコアへ
- L2を使用した外部メモリからコアへ
- L2での分散
- L2での結合
- Object FIFOを使用した実践的な例
-
Section 2g - Object FIFOを使用しないデータ移動
- DMAリージョンをプログラミングするプロセスのウォークスルー