Główne pojęcia
CXLは新しい高速コヒーレントインターコネクト規格であり、メモリプーリングとメモリ共有の機会を提供する。本論文では、CXL 2.0およびCXL 3.0プロトコルの各世代を考慮し、デバイスハードウェアとソフトウェアの観点から、メモリ共有を可能にするさまざまなアプローチについて議論する。
Streszczenie
本論文では、CXLを使用したメモリ共有の設計アプローチについて説明している。
- はじめに
- CXLは、CPUとメモリリソースを切り離すことで、柔軟なサーバシステム設計を可能にする新しい相互接続規格である。
- CXL 1.0/1.1はCPUとエンドデバイス間の1対1リンクを可能にし、CXL 2.0ではメモリプーリングをサポートする。
- CXL 3.0ではマルチホップ階層スイッチングを追加し、より複雑なラック規模のサーバ設計を可能にする。
- CXL 3.0ではメモリ共有とハードウェアコヒーレンシ管理をサポートする。
- ソフトウェアによるメモリ共有
- Linuxのシステムコールやライブラリ(System V、POSIX)を使ったメモリ共有は単一ホスト内に限定される。
- CXLマルチホストシステムでメモリ共有を実現するには、カスタムフレームワークやOpenSHMEMなどの拡張が必要。
- カスタムフレームワークでは、アプリケーションやカーネルドライバを再設計し、ホスト間で共有メモリ管理を行う。
- OpenSHMEMは既存の分散共有メモリライブラリを活用できる汎用的な解決策。
- ハードウェアによるメモリ共有
- デュアルヘッドCXLデバイスを使い、ハードウェアアトミック命令によるメモリアクセス制御を実現。
- デバイスドライバがアドレス管理とハードウェア機能の抽象化を担当する。
- アプリケーションがロックを要求すると、ドライバがハードウェアアトミックを呼び出し、ロックを取得する。
- 考察
- 共有粒度の最適化が重要。大規模なメモリ共有は一貫性管理のオーバーヘッドが高い。
- セキュリティ面でも課題があり、メモリ領域の適切な隔離と消去が必要。
- 結論
- CXL 3.0の機能を活用し、ラック規模でのメモリ共有とデータ近接処理の新しいユースケースが期待される。
Statystyki
CXLは50-100nsの遅延でリモートNUMAアクセスを提供する。
CXL 3.0はPCIe 6.0(最大256GB/s)をサポートし、複雑な構成可能なラック規模サーバ設計を可能にする。