HBM の設定と使用 - 2020.2 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2021-03-22
Version
2020.2 Japanese

アルゴリズムの中にはメモリ限界のあるものもあり、DDR ベースの Alveo カードで使用可能な帯域幅 77 GB/s に制限されます。これらのアプリケーションには、HBM (広帯域幅メモリ) ベースの Alveo カードがあり、最大 460 GB/s のメモリ帯域幅がサポートされます。Alveo のインプリメンテーションでは、2 個の 16 層の HBM (HBM2 仕様) スタックが FPGA パッケージに組み込まれ、インターポーザーを使用して FPGA ファブリックに接続されます。次に、2 つの HBM スタックの概略図を示します。

図 1. 2 つの HBM スタックの概略図

このインプリメンテーションには、次が含まれます。

  • 8 GB の HBM メモリ
  • 32 個の 256 MB の HBM セグメント (擬似チャネル (PC) と呼ばれる)
  • 独立した AXI チャネル (疑似チャネルごとにセグメント分割されたクロスバー スイッチを介して FPGA と通信)
  • 2 つの PC ごとに 2 チャネルのメモリ コントローラー
  • PC 1 つあたり最大 14.375 GB/s の理論上の帯域幅
  • HBM サブシステムの理論上の最大帯域幅 460 GB/s (32 *14.375 GB/s)

各 PC の理論上の最大パフォーマンスは 14.375 GB/s ですが、これは DDR チャネルの理論上の最大パフォーマンスである 19.25 GB/s を下回ります。DDR パフォーマンスよりも優れたパフォーマンスにするには、HBM サブシステムに複数の AXI マスターを効率的に使用する必要があります。プログラマブル ロジックには、32 個の HBM AXI インターフェイスがあり、ビルトイン スイッチを介していずれかの HBM スタックの PC のどのメモリ ロケーションにもアクセスできるので、8 GB メモリ空間全体にアクセス可能です。HBM の詳細は、 『AXI High Bandwidth Controller LogiCORE IP 製品ガイド』 (PG276) を参照してください。

注記: ビルトイン スイッチの複雑性および柔軟性のため、特定のメモリ ロケーションまたはスイッチ自体で密集が発生する組み合わせが多数あります。読み出しトランザクションと書き込みトランザクションをインターリーブすると、メモリ コントローラーのタイミング パラメーター (バス ターンアラウンド) が原因で、読み出しのみまたは書き込みのみと比較して効率が低下します。両方の HBM スタックにまたがる書き込みトランザクションもパフォーマンスが低下するため、回避する必要があります。カーネルが限られたメモリにアクセスするようメモリ アクセスを設計し、異なるカーネルのメモリ アクセスを異なる HBM PC に隔離することが重要です。

HBM への接続は HBM Memory Subsystem (HMSS) IP で管理され、すべての HBM PC がイネーブルにされ、XDMA が自動的に HBM (ホスト アクセス用) からグローバル メモリに接続されます。Vitis コンパイラと使用すると、HMSS は --connectivity.sp オプションで指定した必要なメモリ コントローラーとポートのみをアクティベートするように自動的にカスタマイズされ、ユーザー カーネルと XDMA の両方をメモリ コントローラーに接続して、帯域幅とレイテンシが最適になるようにします。詳細および例については、HBM チュートリアルの使用を参照してください。

次の設定ファイルの例では、カーネル入力ポートの in1in2 がそれぞれ HBM PC 0 と 1 に接続され、出力バッファー outHBM PC 3 ~ 4 に書き込まれています。各 HBM PC は 256 MB で、このカーネルのメモリ アクセスは合計 1 GB です。

[connectivity]
sp=krnl.in1:HBM[0]
sp=krnl.in2:HBM[1]
sp=krnl.out:HBM[3:4]
注記: 設定ファイルでは、HBM 擬似チャネルへのマッピングのみが定義されており、各 AXI インターフェイスは使用可能な 32 個の HBM PC の連続したサブセットにのみアクセスする必要があります。HMSS は、適切な HBM ポートを選択してメモリにアクセスし、帯域幅を最大に、レイテンシを最小にします。

HBM ポートは、デバイスの 1 番下の SLR にあります。SSI テクノロジ デバイスの SLR (Super Logic Region) をまたぐ AXI インターフェイスの配置とタイミングの複雑性は、HMSS により自動的に処理されます。デフォルトでは、v++--connectivity.sp または --connectivity.slr オプションを指定せずに、すべてのカーネル AXI インターフェイスが HBM[0] にアクセスし、すべてのカーネルが SLR0 に割り当てられます。ただし、--connectivity.slr オプションを使用すると、カーネルの SLR 割り当てを指定できます。詳細は、計算ユニットの SLR への割り当て を参照してください。