AN 881: 外部およびHBM2メモリーを備えた PCI Express Gen3x16 Avalon -MM DMAのリファレンス・デザイン
1. 概要
このドキュメントでは、メモリーIPインターフェイスを備えた PCI Express* Avalon® Memory-Mapped ( Avalon® -MM) ダイレクト・メモリー・アクセス (DMA) について説明しています。このリファレンス・デザインでは、2種類のメモリー・ソリューションである外部 (DDR4) メモリーおよびHBM2メモリーを備えた高性能DMAコントローラー、 Avalon® -MM インテル® Stratix® 10 Hard IP+ for PCI Express* のパフォーマンスを紹介します。
リファレンス・デザインには、DMAサポート用のハイスループット・データムーバーを使用して、DMA転送をセットアップするLinux* ソフトウェア・ドライバーが含まれています。読み出しデータムーバーは、システムメモリーから Avalon® -MMスペース内の外部メモリーまたはHBM2メモリーに、データを移動させます。書き込みデータムーバーは、アプリケーションのロジック内の外部メモリーまたはHBM2メモリーから PCIe* スペース内のシステムメモリーに、データを移動させます。このリファレンス・デザインを使用すると、 Avalon® -MM インテル® Stratix® 10 Hard IP+ for PCI Express* のパフォーマンスの評価が可能となり、それには高性能DMAで異なるメモリーIPを備えたAvalon-MMインターフェイスを使用します。
リファレンス・デザイン | ハードウェア | スループット (GB/s) | ゲート数 | デザインリンク | |
読み出し | 書き込み | ||||
HBM2およびDDR4を搭載した Avalon® -MM インテル® Stratix® 10 MX Hard IP+ DMA | インテル® Stratix® 10 MX FPGA開発キット | 13.95 | 13.01 |
77K ALM 85K ALUT 713 M20K |
PCI Express Gen3 x16 AVMM DMA with HBM2 and DDR4 Reference Design |
1.1. 外部およびHBM2メモリーを備えたPCI Express Gen3 x16 Avalon-MM DMAのハードウェア並びにソフトウェアの要件
ハードウェアの要件
- インテル® Stratix® 10 FPGA MX開発キット (UDIMM DDR4およびHBM2メモリーを使用)。この開発キットで使用するのは、1SM21BHU2F53E2VG インテル® Stratix® 10のデバイスです。
- Linuxを実行する PCIe* Gen3 x16スロットを搭載したコンピューター。このコンピューターはコンピューター番号1です。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアバージョン19.1がインストールされた2つ目のコンピューター。このコンピューターは、FPGA SRAM オブジェクト・ファイル (.sof) を開発キット上のFPGAにダウンロードします。このコンピューターがコンピューター番号2です。
ソフトウェアの要件
- リファレンス・デザイン・ソフトウェアは、コンピューター番号1にインストールされます。リファレンス・デザインは、Intel FPGA Design Storeで入手可能です。この インテル® Quartus® Primeプロ・エディション・プラットフォーム・アーカイブ・ファイル (.par) には、リファレンス・デザインで指定されたパラメーターに対する推奨される合成、フィッター、およびタイミング解析設定が含まれています。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアは、コンピューター番号2にインストールされます。このソフトウェアは、Intel Quartus Prime Pro Edition Software Features/Downloadのウェブページから、ダウンロードできます。
- Linuxドライバーは、このリファレンス・デザイン専用にコンフィグレーションされています。
関連情報
- Intel Stratix 10 PCI Express Gen3 x16 Avalon-MM DMA with External and HBM2 Memories Reference Design
- Intel Quartus Prime Pro Edition Download Center: http://fpgasoftware.intel.com/?edition=pro
1.2. DMAモジュールを備えたAvalon-MMブリッジの説明
Avalon-MM Intel Stratix 10 Hard IP+ for PCI Express Solutions User Guideを参照してください。
1.3. DMA手順のステップ
ホストで実行中のソフトウェアにより、次に示すステップが完了すると、DMAの開始および結果の確認が行われます。
DMA手順については、AN 829: PCI Express* Avalon® -MM DMA Reference Designを参照してください。
1.4. ハードウェアのセットアップ
- コンピューター番号1の電源を切断します。
- FPGA MX開発キットカードをGen3 x16をサポートする PCIe* スロットに差し込みます。
- インテル® Stratix® 10 FPGA MX開発キット、コネクターJ26およびJ27用に、カードの電力供給を行います。使用可能な PCIe* スロットにカードを挿入した後、2x4および2x3ピン PCIe* 電源ケーブルを、コンピューター番号1の電源供給から、 PCIe* カードのJ26およびJ27のコネクターにそれぞれ接続します。
- USBケーブルをコンピューター番号2からFPGA MX開発キットに接続します。開発キットには、FPGAプログラミング用のオンボード・インテルFPGAダウンロード・ケーブルが含まれています。
- PCIe* スロットを介してFPGA MX開発キットの電源を投入するには、コンピューター番号1の電源を入れます。また、FPGA MX開発キットの電源の投入には、キットに付属の外部電源アダプターを使用することもできます。
- コンピューター番号2で、
インテル®
Quartus® Primeプログラマーを立ち上げ、インテルFPGAダウンロード・ケーブルを介してFPGAをコンフィグレーションします。注: FPGA開発キットの電源が失われるたびに、FPGAをリコンフィグレーションする必要があります。
- システムの列挙を強制して PCIe* デバイスを検出するには、コンピューター番号1を再起動します。
1.5. DMAテストドライバーのインストールおよびLinux DMAソフトウェアの実行
DMAテストドライバーをインストールしてLinux DMAアプリケーションを実行する手順については、User Guide for the Avalon-MM Intel Stratix 10 Hard IP+ for PCI Express (Avalon-MM Stratix 10 Hard IP+ for PCI Express Solutions User Guide) 内の項2.6および2.7を参照してください。



2. リファレンス・デザインの説明
このアプリケーション・ノートを構成しているリファレンス・デザインでは、外部DDR4およびHBM2メモリーを備えた Avalon® -MM インテル® Stratix® 10 MX Hard IP+ DMAを使用しています。
- PCIe Hard IPおよびHBMCのクロック・ドメイン・クロッシング
- PCIe Hard IPおよびDDR4のクロック・ドメイン・クロッシング
- バースト長の適応
- AXI Masterインターフェイスのエクスポート
- Read/Write Response FIFO深度の制御
PCIe Hard IPおよびメモリーのクロック・ドメイン・クロッシング
Gen3 x16 IPユーザー・インターフェイスは、250 MHzで512ビットです。250 MHzは、PCIe Hard IPによって生成される coreclkout_hip の周波数です。デザイン内のHBMコントローラーAXIインターフェイスは、300 MHzで256ビットです。HBMコントローラーのコアクロックはIOPLLによって生成されます。2つの Avalon® -MMクロッククロッシング・ブリッジを使用して、クロック・クロッシングを処理します。
このデザイン内のDDR4 Controllerインターフェイスは、266.67 MHzで512ビットを使用します。2つの Avalon® -MMクロッククロッシング・ブリッジは、クロック・クロッシングを処理するために使用されます。
バースト長の適応
Gen3 x16 IP書き込みデータムーバー (WRDM) および読み出しデータムーバー (RDDM) Avalon® -MMインターフェイスは、バーストモードで読み出し/書き込みトランザクションを発行するバーストマスターです (サポートされる最大バーストカウントは8です)。しかし、HBM Controller AXI4スレーブでサポートするのは、シングル・バースト・トランスファー (バースト長1) のみです。これを解決するには、 Avalon® -MMクロッククロッシング・ブリッジ内の最大バーストサイズを1に設定します。
AXI Masterインターフェイスのエクスポート
このデザインでは、AXIブリッジを使用して、Platform DesignerシステムからAXI Masterインターフェイスをエクスポートします。エクスポートしたAXI Masterインターフェイスは、HBMC AXIスレーブ・インターフェイスに外部接続します。
AXIブリッジの読み出し/書き込みアドレスにより、両方のHBMC AXIスレーブが駆動します。
AXIブリッジの読み出し/書き込み512ビットデータバスは、256ビットデータバス2つに分割されます。
AXIブリッジのリファレンス・デザインへの組み込み方法の図は、図 5を参照してください。
Read/Write Response FIFO深度の制御
AXI Bridge Read/Write Acceptance Capabilityパラメーターの設定により、altera_merlin_axi_slave_ni モジュール内のPlatform Designerで生成されたInterconnect Read/Write Response FIFO深度が決定します。Response FIFO深度は、 Avalon® -MMトランザクション・パフォーマンスに影響します。
Read/Write Response FIFO深度が十分ではなく、FIFOが一杯になると、バックプレッシャーが発生し、スループットに影響します。
デフォルトのRead/Write Acceptance Capabilityパラメーター値は16に設定されています。 インテル® Quartus® Prime 19.1では、32までの設定が可能です。 このデザインの場合、Platform Designerによって生成されたRead/Write Response FIFO深度は、altera_merlin_axi_slave_ni モジュール内で、手動で64に設定されており、Gen3 x16のスループットをサポートします。
19.3 インテル® Quartus® Primeのリリースでは、AXIブリッジによってサポートされる最大値はより高いものになります。
2.1. プロジェクト階層

- pcie_to_hbm2_ddr4_top.v: トップレベル・モジュール
2.2. PCI Express Hard IPバリエーション用のパラメーター設定
このリファレンス・デザインは、512バイトの最大ペイロードサイズをサポートしています。次の表は、すべてのパラメーターの値の一覧です。
パラメーター | 値 |
---|---|
レーン数 | インテル® Stratix® 10 MX: 16 |
レーンレート | インテル® Stratix® 10 Gen3:8 Gbps |
Hard IPモード | デフォルトでは、Hard IPモードの設定はGen3 x16です。また、250 MHzで実行するアプリケーション・レイヤーに対する512ビット・インターフェイスを備えています。 |
パラメーター | 値 | BARサイズ |
---|---|---|
BAR0 | 64ビットのプリフェッチ可能なメモリー | DMA: 16ビット |
BAR1 | ディセーブル | |
BAR2 | 64ビットのプリフェッチ可能なメモリー | HBM2: 28ビット |
BAR3 | ディセーブル | |
BAR4 | 64ビットのプリフェッチ可能なメモリー | DDR4: 30ビット |
BAR5 | ディセーブル |
パラメーター | 値 |
---|---|
Vendor ID | 0x00001172 |
Device ID | 0x0000E003 |
Revision ID | 0x00000001 |
Class Code | 0x00000000 |
Subsystem Vendor ID | 0x00000000 |
Subsystem Device ID | 0x00000000 |
パラメーター | 値 |
---|---|
最大ペイロードサイズ | 512バイト |
完了タイムアウト範囲 | なし |
実装完了タイムアウト | ディセーブル |
パラメーター | 値 |
---|---|
高度なエラーの報告 (AER) | イネーブル |
ECRCチェック | ディセーブル |
ECRC生成 | ディセーブル |
パラメーター | 値 |
---|---|
リンクポート番号 | 1 |
スロット・クロック・コンフィグレーション | イネーブル |
パラメーター | 値 |
---|---|
要求されたMSIメッセージの数 | 4 |
MSI-Xの実装 | ディセーブル |
テーブルサイズ | 0 |
テーブルオフセット | 0x0000000000000000 |
テーブルBARインジケーター | 0 |
ペンディング・ビット・アレイ (PBA) オフセット | 0x0000000000000000 |
PBA BARインジケーター | 0 |
パラメーター | 値 |
---|---|
エンドポイントL0sの受け入れ可能なレイテンシー | 最大64 ns |
エンドポイントL1の受け入れ可能なレイテンシー | 最大1 us |
パラメーター | 値 |
---|---|
アクセス可能なPCIeメモリースペースのアドレス幅 | 40 |
パラメーター | 値 |
---|---|
メモリー・フォーマット | UDIM |
2.3. 外部およびHBM2メモリーを備えたPCIe Avalon-MM DMAリファレンス・デザインのプラットフォーム・デザイナー・システム
次の画像は、このリファレンス・デザイン用のPlatform Designerシステム内のモジュールを示しています。

インターフェイス | ベースおよびエンドアドレス | バーストAvalon Master (BAM) BAR |
---|---|---|
インテルDMAコントローラー | 0x0000_0000 - 0x0000_0fff | BAR0 |
HBM2メモリー・コントローラー | 0x8000_0000 - 0x8fff_ffff | BAR2 |
インテル® DDR4コントローラー | 0x1_0000_0000 - 0x1_3fff_ffff | BAR4 |
ポート | 機能 | 説明 |
---|---|---|
RDDM | 読み出しデータムーバー | このインターフェイスは、DMAデータを PCIe* システムメモリーから Avalon® -MMアドレス空間内のメモリーに転送します。 |
WRDM | 書き込みデータムーバー |
このインターフェイスは、DMAデータを Avalon® -MMアドレス空間内のメモリーから PCIe* システムメモリーに転送します。 |
BAM | バースト Avalon® -MM Master | このインターフェイスでは、 Avalon® -MMアドレス空間内のレジスターおよびメモリーに対するホストアクセスが提供されます。バースト Avalon® -MM Masterモジュールによって、 PCIe* メモリー読み出しおよび書き込みが変換され、 Avalon® -MM読み出しおよび書き込みになります。 |
インテル® DDR4コントローラー | DDR4コントローラー | これは、DQSグループごとに64DQ幅および8DQが備わったシングルポートDDR4コントローラーです。 |
HBM2メモリー・コントローラー | HBMコントローラー | これは、2つの疑似チャネルHBMコントローラーを備えた単一チャネルです。 HBM2コントローラーへのユーザー・インターフェイスはAXI4プロトコルを使用します。各コントローラーには、擬似チャネルごとに1つのAXI4インターフェイス、またはチャネルごとに2つのAXI4インターフェイスがあります。 |
2.4. DMAテストドライバーのインストールおよびLinux DMAソフトウェアの実行
DMAテストドライバーをインストールしてLinux DMAアプリケーションを実行する手順については、 Avalon® -MM インテル® Stratix® 10 Hard IP+ for PCI Express* ユーザーガイド (Avalon-MM Stratix 10 Hard IP+ for PCI Express Solutions User Guide) 内の項2.6および2.7を参照してください。



2.5. インテル® Stratix 10 MX DMAメモリーのスループット

3. PCI Express スループットの理解
3.1. ポステッド書き込みスループット
理論上の最大スループットの計算では、次の式を使用します。
Throughput = payload size / (payload size + overhead) * link data rate
3.1.1. 最大ペイロードサイズの指定
Device Control レジスターのビット [7:5] では、現在のシステムの最大TLPペイロードサイズを指定します。Device Capabilities レジスターのビット [2:0] の Maximum Payload Size フィールドでは、ペイロードの最大許容値を指定します。Maximum Payload Size と呼ばれるこの読み出し専用パラメーターの指定には、パラメーター・エディターを使用します。現在のシステムの最大TLPペイロードを決定した後、ソフトウェアではその値を Device Control レジスターに記録します。この値は、Device Capabilities レジスターの Maximum Payload Size フィールドで指定された最大ペイロードよりも小さくする必要があります。
PCI Expressのフロー制御の理解
フロー制御は、レシーバーのTLP受け入れに十分なバッファースペースがない限り、TLPが送信されないことを保証します。ヘッダーとペイロードデータには個別のクレジットがあります。デバイスには、TLPを送信する前に十分なヘッダーとペイロードのクレジットが必要です。コンプリーター内のApplication LayerがTLPを受け入れると、コンプリーターのTransaction Layer内のRXバッファースペースが解放されます。コンプリーターは、フロー制御更新パケット (FC Update DLLP) を送信して、消費されたクレジットをイニシエーターに補充します。デバイスがすべてのクレジットを消費した場合、ヘッダーとペイロードのクレジットを補充するFC Update DLLPの割合によりスループットが制限されます。フロー制御の更新は、最大ペイロードサイズと、接続されている2つのデバイスのレイテンシーに依存します。
3.2. 読み出しスループット
PCI Expressの読み出しに使用するのは、分割トランザクション・モデルです。読み出しトランザクションに含まれる手順は次の通りです。
- リクエスターは、Memory Read Requestを送信します。
- コンプリーターは、ACK DLLPを送信して、Memory Read Requestを確認します。
- コンプリーターは、Completion with Dataを返します。コンプリーターは、そのCompletionを複数のコンプリーション・パケットに分割できます。
読み出しスループットは通常、書き込みスループットよりも低くなります。これは、読み出しではトランザクションが2回必要なためです。これに対して書き込みでは、データ量が同じ場合、1回です。読み出しスループットは、Application LayerがMemory Read Requestを発行してから、要求されたデータが返されるまでの往復遅延にも依存します。スループットを最大化するには、アプリケーションによって十分な未処理の読み出しリクエストを発行し、この遅延をカバーする必要があります。
コンプリーション・データ・パケットの最大スループットを維持するには、リクエスターは次の設定を最適化する必要があります。
- RXバッファー内のコンプリーションの数
- Application Layerによる読み出しリクエストの発行および完了データの処理の割合
読み出しリクエストのサイズ
スループットに影響するもう1つの要因は、読み出しリクエストのサイズです。リクエスターが4 KBのデータを必要とする場合、リクエスターは、1 KB読み出しリクエストを4つ、または4 KB読み出しリクエストを1つ発行できます。この4 KBのリクエストのスループットは、1 KB読み出し4つよりも高くなります。Device Control レジスターのビット [14:12] の Maximum Read Request Size の値は、読み出しリクエスト・サイズを指定します。
未処理の読み出しリクエスト
スループットに影響する可能性のある最後の要因は、未処理の読み出しリクエストの数です。リクエスターがスループットを向上させるために複数の読み出しリクエストを送信する場合、使用可能なヘッダータグの数により、未処理の読み出しリクエストの数が制限されます。より高いパフォーマンスを実現するには、 インテル® Arria® 10および インテル® Cyclone® 10 GX読み出しDMAで、最大16個のヘッダータグを使用します。 インテル® Stratix® 10読み出しDMAでは、最大32個のヘッダータグを使用できます。
3.2.1. スループット測定の理解
スループットの測定には、ソフトウェア・ドライバーは2つのタイムスタンプを取得します。./run コマンドを入力するとすぐに、ソフトウェアが最初のタイムスタンプを取得します。ソフトウェアは、DMAが完了すると、2番目のタイムスタンプを取得し、必要な完了ステータスである EPLAST を返します。読み出しDMA、書き込みDMA、および同時読み書きDMAがすべて有効な場合、ドライバーは6つのタイムスタンプを使用して測定を3回行います。
4. AN 881:外部およびHBM2メモリーを備えた PCI Express Gen3 x16 Avalon -MM DMAのリファレンス・デザインの文書改訂履歴
ドキュメント・バージョン | インテル® Quartus® Primeバージョン | 変更内容 |
---|---|---|
2019.07.19 | 19.1 | 本アプリケーション・ノートを更新して、外部およびHBM2メモリーを備えた PCI Express* Gen3 x16 Avalon® -MM DMA用シングル・リファレンス・デザインを含めました。 |
2018.12.27 | 18.1 | 図1のタイプミスを修正しました。 |
2018.12.10 | 18.1 | 初版 |