FPGAベースのNVMe データストレージ はじめに Non-Volatile Memory Express(NVMe)プロトコルは、旧式のSATAソリッドステートドライブ(SSD)を置き換えるために2012年に導入されました。 主な目的は、既存データパスのボトルネックを回避し、現世代のNANDフラッシュメモリで低遅延および高帯域幅のデータ通信のパフォーマンスを向上させることです。 ベースとなるメモリアーキテクチャを考慮すると、NVMeはNANDメモリの並列性、および標準の高速PCIeシリアルバスの両方を活用して、ギガバイト/秒(GBps)のリニアI/Oスループットと、ランダム4Kデータアクセスで数十マイクロ秒のレイテンシを提供します。 ここ数年、FPGAはNVMeが重要な役割を果たすデータセンターおよびクラウドアクセラレーションアプリケーションで確かな実績を示しています。これに関して、アルデックはプロトタイピングとエミュレーション・プラットホームのためにFMC-NVMe拡張カードを生産しました。このボードは、ハイパフォーマンスコンピューティング(HPC)、高頻度取引(HFT)、機械学習、データセンター、高速R/Wおよび高メモリ帯域幅要求するアプリケーションなどで非常に必要とされる高帯域幅、低レイテンシのデータストレージを提供します。FMCボードはスタック可能で、高性能PCIeスイッチを介してM.2フォームファクターのx4 NVMe SSDをサポートします。 最大8枚のドーターボード(最大32個のNVMe SSD)を、キャリアカード上の1つのFMCコネクタにスタックできます。このボードを使用する開発者のために、アルデックはAldec TySOM-3A-ZU19EG、およびTySOM-3-ZU7EV組込み開発ボードを使用したリファレンスデザインを用意しました。 このデザインでは、8枚のFMC-NVMeカードスタックし32個のNVMe SSDを提供します。 Figure.1 ソリューションのハードウェア設定 リファレンスデザインの説明 NVMeプロトコルで使用されるPCIeインターフェイスを介したNANDフラッシュアクセラレーションのアプローチは、データストレージデバイスでPCIe転送速度のメリットを享受しようとする業界初の試みではありません。しかし、NVMeを成功させたのは、不必要なデータプロトコル変換を行わずにNANDコントローラとホストプロセッサを直接接続したことです。NVMeは、x4 gen3(8 Gb/s)PCIeレーン接続にベースに構築しいるため、理論上の最大データ転送速度は32 Gb/sになります。Aldec TySOM-3/3A 組込みプロトタイピングボードは、Xilinx Zynq UltraScale+ MPSoCテクノロジをベースにしており、DDR4システムメモリコントローラとプログラマブルロジック部分に構成可能な強化されたPCIe gen3ブロックを搭載した高性能アプリケーションプロセッサ(APU)を組込んでいます。これらの機能によってり、これらのボードはNVMeプロトコルのベースとなる物理層要件を満たす、PCIeルートコンプレックスソリューションの豊富な機能を備えたルートポートを実装できます。 PCIeルートコンプレックスはx8 gen3 レーン用に構成され、FMC-NVMeドーターカードで利用可能な32-lane Microsemi PM8532 PCIeスイッチにハイピンカウント(HPC)FMCコネクタ(FMC1)経由で接続されます。PM8532スイッチは、 4-lane M.2コネクタに接続されたx4 NVMe SSDとのインターフェースの役割を果たします。 残りの8レーンは、スタック内のアップストリームFMC-NVMeカードと接続するために、上部のFMCコネクタに配線されます。全体的なシステムトポロジーをFigure 2に示します。リファレンスデザインは、組込みLinux OSの制御下で実行されます。これには、PCIeルートコンプレックスサブシステム用のXilinx pcie-xdma-plドライバとNVMeプロトコルサポート用のメインラインnvmeドライバが含まれています。 Figure 2: リファレンスデザインシステム 主な特徴 Zynq UltraScale+ MPSoCベースのTySOM開発ボード 最大8枚のスタックが可能なFMC-NVMeドーターカード M.2 NVMe SSDは、OEMベンダのフォームファクタ(ホストあたり合計最大32台のドライブ) ソリューション内容 TySOM-3-ZU7EVまたはTySOM-3A-ZU19EG組み込みプロトタイピングボード FMC-NVMeドーターカード(シングルスタックで最大8枚) テクニカルドキュメント PM8532 PCIeスイッチ構成ファイルとフラッシュイメージ リファレンスデザインのソースファイルとバイナリ 帯域幅とレイテンシのベンチマーク用のサンプルスクリプト すべてのPCIeスイッチポートの正常なリンクアップは、デバッグUART接続(1つのスイッチのすべてのポートを占有するため、スタックで最低2枚FMC-NVMeカード構成が必要)、およびLinux lspciツールを介してMicrosemi ChipLink環境で検証できます。さらにすべてのポートのリンクアップステータスは、FMC-NVMeで利用可能なユーザーLEDに配線され視覚的に確認できます。前述のテスト構成のLinuxからの観点のPCIeトポロジーをFigure 3に示します。 Figure 3: PCIe トポロジー パフォーマンス統計 リファレンスデザインのパフォーマンスを見積もるために、標準のddコマンドラインユーティリティを使用して、Linuxユーザ空間で一連の低レベルI/Oベンチマークを実行しました。Figure 4~5に示すチャートは、さまざまなサイズのデータ転送に対するI/Oスループットの依存性を示しています。 Linux VFSスタックのオーバーヘッドを回避するために、DIRECT_IOアプローチが使用されていることに注意してください。リード特性は、データ転送速度とデータ転送サイズの間のほぼ線形の依存性を示し、そのピーク値は3.3 GB/sになります。ライト転送の場合で、データストレージの大部分が低速のTLC NANDメモリパーツを使用して作成されている場合、テストを行ったすべてのNVMe SSDはライトキャッシュとして実装された高速SLC NANDメモリのサイズが異なるため、ピークパフォーマンス(1.0~1.5 GB/s)の独自の領域を持ちます。 Figure 4: シングルSSD リード帯域幅 複数のSSD(同じFMC-NVMeドーターカードに接続された4枚のSSD)への同時データ転送の場合の結果は、リニアリードで帯域幅が合計4 GB/s、それに応じてリニアライトはトータルで最大3.4 GB/sに増加しています。 さらに、IOPSメトリックの評価のためLinuxユーザスペースnvme-cli NVMe管理インターフェイスを使用し、4Kランダムブロックアクセス遅延測定を実行した結果、ライトで35~50 us、リードで70~125 usの範囲になりました。スタックにFMC-NVMeカードを追加するたびに、約1~2 usのレイテンシオーバーヘッドが発生することに注意してください。 Figure 5: シングルSSD ライト帯域幅 結論 数年前に導入され最近大々的に承認されたNVMeプロトコルにより、データセンターおよび家電ストレージデバイスの最大NANDフラッシュメモリのレイテンシおよびスループット機能に近づけることができました。NANDテクノロジが今後数年間で進化するという事実を前提として、NVMeプロトコルも進化し続け、さらに優れた速度特性と機能を提供します。アルデックは、FPGAベースのエミュレーションおよびプロトタイピングソリューション用の FMC-NVMe 拡張カードを提供し、データストレージアクセラレーションアプリケーションでNVMeテクノロジを活用しています。プロトタイプ/エンドユーザのプロジェクトでこのソリューションにアクセスする方法の詳細については、sales-jp@aldec.comまでお問い合わせください。