データセンターとアクセラレーション
SmartNICや超低レイテンシ取引からデータベースや圧縮のオフロードまで、データセンターでFPGAがどこに位置するか、関係するホストインターフェースとプログラミングフロー、そして経済的に成り立つ条件を解説します。
概要
データセンターのFPGAとは、大型デバイスを載せたPCIeカードまたはネットワークカードであり、サーバーのプロセッサより速く、または安く1つの仕事をするようにプログラムされたものです。成功事例には共通の形があります。ラインレートで処理しなければならないデータストリーム、めったに変わらない機能、そしてGPUが合わない理由(レイテンシ、電力、あるいはデータがそもそもメモリに届く必要がないこと)です。このハブは、そうしたアクセラレータを評価または構築するエンジニアと、それにお金を払うかどうかを決めなければならない人のためのページです。
2015年からAzureの全サーバーにFPGAを載せたMicrosoftのCatapultプロジェクトが、この考えを市民権のあるものにしました。それからの10年で、長続きした3つのニッチと、続かなかったいくつかに整理されました。長続きしたのは、ネットワーク処理(SmartNIC、ファイアウォール、テレメトリ)、超低レイテンシの金融、そして圧縮、暗号化、検索、一部のデータベース演算子といった特化型ストリーミングオフロードです。続かなかったのは、GPUと競合する汎用計算オフロードで、ソフトウェアの面でGPUが勝ちました。
重要な考え方
データパス、そしてなぜホストがボトルネックなのか
PCIe Gen4 x16リンクは片方向およそ32 GB/sを運び、Gen5はその2倍で、400 Gb/sのEthernetポートには50 GB/sが必要です。リンクを越えるすべてのバイトには、ホストメモリ帯域幅、DMAディスクリプタ、そして多くの場合割り込みのコストがかかります。したがって最良のアクセラレータはデータをカード上にとどめます。パケットはネットワークポートから入り、ファブリック内でフィルタ、パース、暗号化され、もう一方のポートから出るか、すでに縮約された形でホストメモリへ向かいます。ホストとFPGA間のDMAエンジン(AMD XDMAとQDMA、AlteraのPCIe multi-channel DMA、Corundumのようなオープンな設計)がディスクリプタリングとスキャッタギャザーリストを管理するので、プロセッサからはPCIe BARではなくブロックデバイスやNICに見えます。RDMAとRoCE v2はどちらのプロセッサも介さずにホスト間でデータを移動し、FPGAはRoCEをハードウェアで終端できます。PCIe物理層上で動くCXLは、本稿執筆時点でAgilex 7とVersalの部品においてFPGAがホストとコヒーレントなメモリを共有することを可能にし、メモリ拡張やニアメモリ計算の用途でコピーを不要にします。
レイテンシ: 金融のケース
高頻度取引(HFT)は最も純粋なFPGAアプリケーションです。マーケットデータのフィードがEthernetで届き、FPGAがそれをデコードし、価格ルールを適用して注文を送ります。最良の設計では、ワイヤからワイヤまでの経路全体が1マイクロ秒未満で、ジッタは数十ナノ秒です。FPGAにはキャッシュもスケジューラも割り込みもないので、どんなプロセッサもカーネルもこれには及びません。工学の要点は、カットスルー処理(パケットの到着前にヘッダから処理を始める)、あらゆる直列化の回避、そしてEthernet PHYそのものにあります。ベンダーのハードMACが取引ロジック全体より大きなレイテンシを加えることがあるからです。同じスキルは、通信のフロントホール、産業制御、試験装置にも転用できます。
経済性
大型のデータセンター用FPGAカードは数千米ドルで、75 Wから225 Wを消費し、カードより高くつくエンジニアを必要とします。採算が合うのは、複数のサーバーを置き換える場合、他では達成できないレイテンシやラインレートの目標を可能にする場合、あるいは機能(暗号化、圧縮、RAIDパリティ)をプロセッサから外してそのプロセッサを計算資源として売れる場合です。採算が合わないのは、成熟したライブラリをもつGPUで機能が動く場合、ハードウェアチームが追従できる以上の速さでワークロードが変わる場合、あるいはASIC(またはNVIDIA、AMD Pensando、Marvellの汎用DPU。これら自体がFPGAでプロトタイプされたASICです)のほうが安くなるほど数量が多い場合です。FPGAを使うハイパースケーラーがそうするのは、エンジニアリングを10万台のサーバーで償却できるからです。より小規模な事業者の大半は、その作業を済ませたベンダーから完成品のカードを買うほうが得策です。
どこから始めるか
構成要素は高いクロックレートでのFIFO、パイプライン、クロックドメイン間の乗り換えなので、/learn/beginner/09-memories-block-ram-and-fifos/と/learn/beginner/04-registers-clocks-and-state/が基礎で、続いてトランシーバーについては/topics/high-speed-io/、VitisとoneAPIのカーネルフローについては/topics/high-level-synthesis/です。最初の実践ステップは、AlveoカードまたはクラウドのFPGAインスタンスでVitisのベクトル加算サンプルを動かし、次に手元のボードでCorundum NICを動かすことです。ネットワーキングとアクセラレーションに関する上級トラックは準備中です。
ツールとベンダー
| ベンダー | カードとデバイス | ホスト側フロー | 備考 |
|---|---|---|---|
| AMD | Alveo U50、U55C、U200、U250、V70、V80、Versal HBM | Vitis(HLS、OpenCL、RTLカーネル)、XRTランタイム、XDMAとQDMA | 最大のエコシステム、AWS F2でクラウド利用可(RTLシェルフロー。本稿執筆時点でF2ではVitisカーネルは非対応) |
| Altera | Agilex 7(HBMとCXLを備えたIおよびMシリーズ)、Stratix 10 | oneAPI(SYCL)とQuartus Prime Pro、OFSオープンシェル | Agilex 7 I-SeriesはCXLとPCIe Gen5のハードIPを搭載 |
| Achronix | VectorPathカード上のSpeedster7t | ACEツール、RTL | 2Dネットワークオンチップ、GDDR6、ネットワーキングとML向け |
| Napatech、Silicom、BittWare、AMD(Solarflareの系譜)、Exablaze(Cisco) | 完成品のSmartNICおよびHFTカード | ベンダーSDK、多くはカスタムロジック用にFPGAへアクセス可 | FPGAが製品そのものでないならカードを買う |
AMD VitisとAltera oneAPIのフローは、ソフトウェアエンジニアがC++とSYCLでカーネルを書けるようにし、PCIe、DMA、メモリはプリビルトのシェルが処理します。動くアクセラレータへの最速の道です。一方でファストパスではRTLより数倍効率が落ちるので、量産カードの大半はC++の制御プレーンとワイヤ側の手書きRTLを組み合わせています。
よくある間違い
- PCIeリンクの帯域幅で律速される機能のアクセラレータを作り、ホストがその場で処理するよりカードのほうが遅くなる。
- カーネル時間だけを測り、DMAのセットアップ、ドライバのオーバーヘッド、ピン留めメモリへのコピーを無視する。
- 成熟したGPUライブラリがありレイテンシ要件のないワークロードにFPGAを選ぶ。
- シェルを無視する。ベンダーの静的領域はデバイスの3分の1と最良のトランシーバーすべてを占めることがあります。
- ドライバと展開の作業を過小評価する。ほとんどのプロジェクトでRTLより大きな作業です。
- 熱の制限を忘れる。1Uシャーシ内の225 Wカードには、それ向けに設計されたシャーシのエアフローが必要です。
さらに深く
- Putnam et al., A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, ISCA 2014。Catapultの論文とプロジェクトページです。
- AMD PG195, DMA/Bridge Subsystem for PCI Express (XDMA)。今も大半のカードが使うホストとFPGA間のDMAリファレンスです。
- AMD AlveoアダプタブルアクセラレータカードとVitis統合ソフトウェアプラットフォーム。
- Intel oneAPI for FPGA。Alteraデバイス向けのSYCLフローです。Intelのページでは2025.1コンパイラリリースからFPGAサポートパッケージは非推奨と記されており、AlteraはFPGAサポートを自社ツールで継続するとしているので、新規作業を始める前に確認してください。
- Compute Express Linkコンソーシアム。CXL仕様があります。
- Corundum。完全なドライバとDMAエンジンを備えたオープンソースの100G NIC設計です。