CXL(Compute Express Link)
1. 概要
CXL(Compute Express Link)とは、CPU・GPU・アクセラレータ・メモリ拡張装置などの異種(heterogeneous)コンピューティング要素を、PCIe物理層の上でキャッシュ一貫性(cache coherency)を維持しつつ低遅延で接続するオープンな相互接続標準である。
AI・HPC(高性能コンピューティング)ワークロードが急増するにつれ、データセンターのボトルネックはもはや演算能力そのものではなく、メモリ帯域・容量・共有効率へと移りつつある。従来のサーバ構造でDRAMは各CPUソケットのDDRチャネルに物理的に従属するため、あるノードでメモリが余っても他のノードがそれを借りて使えない固着メモリ(stranded memory)問題が構造的に発生する。実際にハイパースケール事業者の分析によれば、サーバメモリの相当な割合(研究により1025%水準)がこのように遊休状態に置かれると報告され、メモリがサーバ原価に占める比率が4050%に達する現実において、これは膨大な資本の浪費につながる。
この問題の根本原因は「メモリがCPUに縛られている」という前提にある。PCIeは汎用I/O接続として帯域は拡張されてきたが、キャッシュ一貫性を保証できず、アクセラレータがCPUメモリを直接共有するには煩雑なDMAコピーとソフトウェア同期が必要であった。CXLはまさにこの点を狙い、PCIeの物理・電気層をそのまま再利用しつつキャッシュ一貫性プロトコルを追加し、「アクセラレータとCPUが同じメモリを一つのアドレス空間のように見る」構造を可能にする。すなわちCXLの登場背景は、①異種アクセラレーションの普遍化に伴う一貫性要求、②メモリ容量・帯域の拡張要求、③メモリプーリングによる資源分離(disaggregation)とTCO(総所有コスト)削減という三つの軸に要約される。
もう少し具体的に見ると、従来構造の限界は両方向に現れる。第一は容量・帯域の硬直性である。DDRチャネル数はCPUソケットが物理的に固定するため、メモリを増やしたくてもソケットあたりのチャネル・スロット上限を超えられず、帯域も一緒に縛られて比例的にしか増えない。第二は共有の不可能性である。Aサーバの余るメモリをBサーバが使うにはネットワーク経由のRDMAなど別の経路が必要で、これはメモリアクセス遅延を数マイクロ秒単位に引き上げ、事実上「メモリ」ではなく「ストレージ」に近づく。CXLはこの二つの限界を、ロード/ストア水準のメモリセマンティクスを維持したまま突破するという点で、単なる接続規格ではなくデータセンターのメモリアーキテクチャのパラダイム転換と評価される。
CXLの特徴はオープン性と下位互換性である。2019年にインテル主導で発足したCXLコンソーシアムは、その後Gen-Z、OpenCAPIなどの競合標準を吸収し事実上の業界標準となり、すべての上位版は下位版と完全な互換性を保証する。これによりデータセンターは既存のPCIe生態系投資を保存しつつ、漸進的にCXLへ移行できる。このオープン性は、単一ベンダ依存を避けたいハイパースケール事業者や通信・金融系データセンターの要求とも噛み合い、CXLが特定のCPU・GPU製造社の垣根を越えた共通インフラ言語として受け入れられる背景となった。
2. CXL全体構造とプロトコル
CXLは一つの物理リンクの上で三つのサブプロトコルを動的に多重化(multiplexing)して伝送する。下図はCXLの全体スタック構造を表す。
graph TD
subgraph Host["ホスト(CPU)"]
CPU["CPUコア + キャッシュ"]
HA["ホームエージェント(Home Agent)"]
CTRL["CXLコントローラ"]
end
subgraph Protocol["CXLプロトコル(多重化)"]
IO["CXL.io(検索・設定・DMA)"]
CACHE["CXL.cache(アクセラレータからホストメモリ一貫性)"]
MEM["CXL.mem(ホストからデバイスメモリアクセス)"]
end
subgraph PHY["物理層"]
FLIT["Flitベース伝送"]
PCIE["PCIe PHY(電気・物理の再利用)"]
end
subgraph Device["CXLデバイス"]
ACC["アクセラレータ(GPU/NPU)"]
MEMEXP["メモリ拡張装置(DRAM/CXL)"]
end
CPU --> HA --> CTRL
CTRL --> IO
CTRL --> CACHE
CTRL --> MEM
IO --> FLIT
CACHE --> FLIT
MEM --> FLIT
FLIT --> PCIE
PCIE --> ACC
PCIE --> MEMEXP
A. CXL.io — PCIeのトランザクション層と機能的に同等なプロトコルで、デバイス検索(discovery)・列挙(enumeration)・レジスタアクセス・割込み・DMAなど基本I/Oを担う。CXL.ioはすべてのCXLデバイスが義務的に支援すべき「骨格」であり、起動時の初期化と設定は全面的にこのプロトコルの上で行われる。すなわちCXL.ioのみ使えば事実上PCIeデバイスと変わりなく、キャッシュ一貫性の利点は次の二つのプロトコルで初めて発現する。
B. CXL.cache — デバイス(アクセラレータ)がホスト(CPU)のメモリを一貫性を維持しながらキャッシュできるようにするプロトコルである。GPU・NPUがCPUメモリの特定領域を自らのキャッシュに取り込んで演算し、その変更事項がMESI系一貫性プロトコルを通じてCPUキャッシュと自動同期される。おかげで開発者は明示的なコピー・同期コードなしにポインタを共有するようにデータを扱え、異種並列プログラミングの生産性が大きく向上する。例えば推薦システムの大規模埋め込みテーブルをCPUメモリに置きNPUがCXL.cacheで参照すれば、反復的なPCIe DMAコピーのオーバーヘッドを除去できる。
C. CXL.mem — 逆にホスト(CPU)がデバイスに付いたメモリを自らの物理アドレス空間の一部として直接アクセス(load/store)するプロトコルである。これがメモリ拡張・プーリングの核心である。CPUの立場でCXL.memで接続されたDRAMは少し遅いNUMAノードのように見え、オペレーティングシステムはこれを別のメモリ階層(tier)として認識しページを配置する。CXLメモリのアクセス遅延はローカルDDR比でおよそ2倍内外(数十~100ns台の追加)と知られており、帯域・容量が重要で遅延に敏感でないワークロードに適する。
三つのプロトコルが一つのリンクで共存するという点は設計上きわめて重要である。例えばAIアクセラレータ(Type 2)は起動・設定時にはCXL.ioで列挙され、ホストメモリの入力テンソルを読むときはCXL.cacheで一貫性を保ってキャッシュし、自らのHBM/DRAMをホストに露出するときはCXL.memを使う。このように同一物理経路で時点・用途に応じてプロトコルが転換されるため、別のリンクを複数置かずとも複合的なデータ移動パターンを一つの接続で収容できるという点が、CXLの構造的な優雅さである。
CXLがPCIeを物理層で再利用する方式も押さえておく必要がある。CXLはPCIeの電気的信号・コネクタ・フォームファクタをそのまま使いつつ、リンク初期化時点で代替プロトコル交渉(alternate protocol negotiation)を経て、そのスロットをPCIeモードで使うかCXLモードで使うかを決定する。また遅延を減らすためにPCIeの可変長パケット(TLP)の代わりに固定サイズのFlit(flow control unit)単位で伝送し、CXL.cache/memは遅延に敏感なので68バイトの小型Flit経路を、帯域が重要なCXL.ioは大きなFlitを使う形で経路を最適化する。このように「検証済みのPCIe資産の上に一貫性層を載せる」設計哲学のおかげで、CXLは別の専用配線なしに既存サーバボード設計をほぼそのまま活用でき、これは生態系拡散速度を大きく早めた決定的要因である。
これら三つのプロトコルの組み合わせに応じて、CXLデバイスは三つの類型に分類される。下表はその違いを整理したものだが、核心は「どの方向の一貫性が必要か」にある。Type 1はホストメモリを使う演算アクセラレータ(NIC・smartNICなど)でCXL.cacheが必須であり、Type 2は自前のメモリを持ちつつホストと双方向に共有するGPU・FPGAで三つのプロトコルをすべて使い、Type 3は純粋なメモリ拡張装置でCXL.memが中心となる。
| 類型 | 使用プロトコル | 代表デバイス | メモリ特性 |
|---|---|---|---|
| Type 1 | CXL.io + CXL.cache | smartNIC、演算NIC | ホストメモリをキャッシュ |
| Type 2 | CXL.io + CXL.cache + CXL.mem | GPU、FPGA、AIアクセラレータ | ホスト・デバイスメモリの双方向共有 |
| Type 3 | CXL.io + CXL.mem | メモリ拡張・プーリング装置 | デバイスメモリをホストに提供 |
3. バージョン別進化とメモリプーリングアーキテクチャ
CXLは短い期間に急速に進化し、各バージョンはPCIe世代の帯域向上と歩調を合わせてきた。1.0/1.1(2019)は単一ノード内のアクセラレータ・メモリ拡張に焦点を置き、2.0(2020)はスイッチを導入して複数のホストが一つのメモリプールを分け合うプーリング(pooling)を可能にした。3.0(2022)はPCIe 6.0ベースの64GT/sで帯域を2倍に引き上げ、多段スイッチング(multi-level switching)とメモリ共有(sharing)、ファブリック(fabric)概念を追加し、3.1(2023年11月発表)はPBR(Port Based Routing)スイッチ、デバイス間の直接P2P通信、信頼実行環境(TEE)セキュリティなどを補強し、ラック(rack)を越える分離アーキテクチャへ拡張した。
ここでプーリング(pooling)と共有(sharing)を区別することが重要である。プーリングは一つのメモリ資源を時点に応じて複数のホストに排他的に割り当てること(同時には一つのホストのみが所有)であり、共有は複数のホストが同一領域を同時に一貫性をもってアクセスすることである。共有はCXL 3.0でDynamic Capacity Device(DCD)およびGlobal Fabric Attached Memory概念とともに本格化した。下図はCXLスイッチベースのメモリプーリングの資源分離構造を示す。
flowchart LR
H1["ホストA(CPU)"]
H2["ホストB(CPU)"]
H3["ホストC(CPU)"]
SW["CXLスイッチ(Fabric Manager)"]
M1["メモリモジュール1(DRAM)"]
M2["メモリモジュール2(DRAM)"]
M3["メモリモジュール3(CXL/拡張)"]
H1 -->|CXL.mem| SW
H2 -->|CXL.mem| SW
H3 -->|CXL.mem| SW
SW -->|動的割当| M1
SW -->|動的割当| M2
SW -->|動的割当| M3
FM["管理ソフトウェア: 容量再配置"]
FM -.制御.-> SW
バージョン別の帯域進化も実務設計の重要な変数である。CXL 1.1/2.0はPCIe 5.0ベースの32GT/sでx16レーンにおよそ64GB/s(片方向)を提供し、3.0/3.1はPCIe 6.0ベースの64GT/sでこれをおよそ128GB/sに2倍引き上げる。ただしPCIe 6.0はPAM4変調とFEC(前方誤り訂正)を導入するため、誤り訂正に伴う遅延増加をFlit設計で相殺する均衡が重要である。容量の面でも2.0の単一階層スイッチが数十台規模のプールを扱うなら、3.0の多段スイッチングは数百~数千ノード規模のファブリックへ拡張されるので、導入規模と目標稼働率に合わせてバージョン・トポロジを選定すべきである。
この構造でファブリックマネージャ(Fabric Manager)は、各ホストの需要に応じてメモリモジュールの容量を動的に切り離し・付け替えるオーケストレータの役割を担う。例えば夜間バッチ作業でホストAが大容量メモリを要求すれば、ファブリックマネージャが遊休モジュールをAに割り当て、作業終了後に回収して他のホストに再配置する。これがメモリ分離(memory disaggregation)の核心価値で、固着メモリを減らして全体のメモリ設置量を下げ稼働率を引き上げる。マイクロソフトAzureの研究プロトタイプ「Pond」はCXLプーリングでDRAM需要のおよそ9~10%を削減できることを示し、これはハイパースケール規模では数億ドル単位の削減に換算される。
4. 比較: CXL vs. 従来のPCIe・NVLink・NUMA
CXLの位置を理解するには隣接技術との比較が必要である。単に「速い接続」という表面的な特徴だけ見ると混同しやすいが、各技術が解決しようとする問題と一貫性モデルが根本的に異なる。
| 区分 | PCIe | CXL | NVLink | 従来NUMA(QPI/UPI) |
|---|---|---|---|---|
| キャッシュ一貫性 | なし | あり(非対称) | あり | あり(対称) |
| 物理層 | PCIe | PCIe再利用 | 専用 | 専用ソケット間 |
| オープン性 | オープン | オープン | 独占(NVIDIA) | 独占(CPUベンダ) |
| 主用途 | 汎用I/O | メモリ拡張・プーリング・アクセラレータ | GPU間高速接続 | CPUソケット間 |
| 拡張範囲 | ノード内 | ノード~ラックファブリック | ノード内GPUクラスタ | ソケット間 |
PCIeとの違いは一貫性の有無が決定的である。PCIeのみでアクセラレータがCPUメモリを使うにはソフトウェアがキャッシュフラッシュ・DMAを手動管理せねばならないが、CXLはこれをハードウェアが自動保証する。ただしCXLの一貫性は非対称(asymmetric)であるという点に実務的含意がある。ホストが一貫性の「主人(home)」の役割をしデバイスがこれに従う構造なので、デバイス設計の複雑度を下げ多様なベンダの相互運用を容易にする。一方NVIDIAのNVLinkはGPU間の対称的な高帯域接続に特化しAI学習クラスタ内部で圧倒的な帯域を提供するが、独占生態系という限界がある。したがって実際のAIデータセンターではGPU間はNVLink、メモリ拡張・プーリングはCXLという相互補完的な組み合わせが現実的に定着している。
もう一つ留意すべき点は、CXLとPCIeが競争ではなく包含関係に近いという事実である。CXLはPCIeを代替せずその上に一貫性層を選択的に載せたものなので、同じスロットが状況に応じてPCIeデバイス(NVMe SSD、汎用NIC)とCXLデバイス(メモリ拡張)の両方を収容する。これはデータセンター運営者がスロット資源を柔軟に再配置できるようにし投資リスクを下げる。逆にNVLinkや私有ソケットインターコネクトは専用配線と特定ベンダシリコンを要求するので、柔軟性の面でCXLのオープン標準が長期的に有利と評価される。
NUMAとの比較も重要である。従来のUPI/QPIベースの多ソケットNUMAはソケット数が2~8個に制限されCPUベンダに従属するが、CXLはスイッチ・ファブリックを通じてはるかに柔軟にメモリ階層を拡張する。実際にLinuxカーネルはCXLメモリを追加のNUMAノードとして露出し、tieringメカニズムで熱い(hot)ページはローカルDDRに、冷たい(cold)ページはCXLメモリへ自動移動させ遅延損失を最小化する。
5. 深化: AIデータセンターにおける実務適用と最新動向
CXLが最も注目される領域は大規模AIインフラである。LLM(大規模言語モデル)の推論・学習は数百GB数TBのパラメータとKVキャッシュを要求するが、HBM(高帯域超高速メモリ)は帯域は卓越するが容量と価格の限界が明確である。ここでCXLはHBMを代替するのではなくメモリ階層の下段を拡張する役割を担う。すなわちGPUのHBM(1階層)→CPUのローカルDDR(2階層)→CXL拡張メモリ(3階層)へと続く階層構造で、あまり使わないパラメータや長いコンテキストのKVキャッシュをCXLメモリにオフロード(offload)することで、高価なHBM容量不足を補完する。実際にサムスン電子・SKハイニックスはCXLベースのメモリ拡張モジュール(CMM-Dなど)を発売し、数百GBTB級の容量をPCIeスロットフォームファクタで提供している。
データベース・分析領域でも適用事例が拡散している。インメモリデータベースや大規模OLAP(オンライン分析処理)エンジンは作業セットがローカルDRAMを超えるとディスクへスピル(spill)しながら性能が急落するが、CXL拡張メモリをバッファプールの2次階層に置けばディスクスピルを遅らせ処理量を安定的に維持できる。数マイクロ秒台のディスク・ネットワークアクセスと比較すれば数百ナノ秒台のCXLメモリは二桁以上速いので、容量と遅延の間の「中間階層」を効果的に埋める。
メモリ半導体産業の観点でCXLは戦略的な転換点である。メモリベンダはこれまでDDR規格という汎用部品競争に留まっていたが、CXLはコントローラ・ファームウェア・セキュリティ機能が結合した高付加価値メモリソリューションへ事業領域を広げる機会を提供する。2024~2026年現在CXLはまだ初期商用化段階で、インテルSapphire Rapids/Emerald Rapids、AMD GenoaなどCXL 1.1/2.0を支援するサーバCPUが普及しつつ、Type 3メモリ拡張中心に導入が始まっている。プーリング・共有を本格的に活用するにはCXL 2.0/3.0スイッチ生態系とファブリックマネージャソフトウェアの成熟が前提となるので、完全な資源分離データセンターの実現は漸進的に展開する見通しである。
具体的な数値で見ればその効果はより明確になる。700億1750億パラメータ級のLLMをFP16でサービスすると重みだけで140350GBに達し、多ユーザ推論時にはKVキャッシュが数十数百GBを追加で占有する。GPU1枚のHBMが80192GB水準である現実において、CXLでCPU側に数TBの拡張メモリを付けてモデルシャーディング・キャッシュオフロードに活用すれば、GPU増設なしにより長いコンテキストとより多い同時ユーザを収容できる。これは「GPUは演算、CXLは容量」という分業を通じて高価なアクセラレータの稼働率を引き上げる典型的な設計パターンである。
セキュリティの面の進化も注目に値する。メモリが複数のホストに共有・移動されると、あるテナントのデータが他のテナントに露出する危険が高まる。これに対しCXL 3.1はCXL IDE(Integrity and Data Encryption)とTEE(信頼実行環境)連携を強化し、リンク上のデータ暗号化・完全性保証とテナント隔離を支援する。これはマルチテナントクラウドでCXLプーリングを安全に使うための必須前提であり、ゼロトラスト原則をメモリファブリック階層まで拡張した事例と見ることができる。
6. 考慮事項および示唆点
技術士の観点でCXL導入を検討する際には、次の事項を総合的に判断せねばならない。
遅延-容量トレードオフの設計: CXLメモリはローカルDDRよりアクセス遅延がおよそ2倍高いので、遅延に敏感なワークロード(OLTP、リアルタイム取引)には不適であり、帯域・容量中心のインメモリ分析、AI推論KVキャッシュ、データベースバッファプール拡張などに選別適用すべきである。メモリ階層化(tiering)ポリシーとホット/コールドページ分類アルゴリズムの品質が実効性能を左右する。
生態系成熟度と漸進的転換戦略: CXL 2.0/3.0スイッチ・ファブリックマネージャがまだ初期段階なので、当面はType 3メモリ拡張で容量ボトルネックを解消し、プーリング・共有はPoC(概念検証)を経て段階的に拡大するロードマップが現実的である。特定ベンダ依存を避けるにはオープン標準の遵守と相互運用性検証を調達基準に含めるべきである。
TCO・持続可能性の観点の経済性分析: メモリプーリングは固着メモリを減らし設置量と電力を同時に削減するので、資本費用(CapEx)だけでなく運営費用(OpEx)と炭素排出(ESG)の観点で投資妥当性を定量化すべきである。ただしスイッチ・コントローラの追加費用とソフトウェア運営の複雑度を併せて反映した総費用分析が必要である。
セキュリティ・隔離と運営ガバナンス: マルチテナント環境でメモリ共有はサイドチャネル・データ残存の危険を伴うので、CXL IDE・TEEベースの暗号化とメモリ消去(sanitization)ポリシーを義務化し、ファブリックマネージャの権限・アクセス統制をゼロトラスト原則で設計すべきである。障害時に共有メモリが多数のホストに及ぼす影響範囲(blast radius)を評価した可用性設計も並行されるべきである。
連携技術との統合: CXLは単独で価値を出すよりHBM・NVLink・RDMA・Kubernetes資源スケジューリングなどと結合されるとき効果が極大化する。特にAIインフラではHBM(帯域)–CXL(容量)–NVLink(GPU間)の役割分担を明確にしたメモリ・接続アーキテクチャの青写真を先制的に樹立するのが望ましい。
オペレーティングシステム・ソフトウェアスタックの準備: CXLの価値はハードウェアだけでは実現されず、メモリ階層化・ホットページ昇格(promotion)・NUMAバランシングを支援するカーネルバージョンと、ファブリックマネージャ・オーケストレーションソフトウェアが共に備わらねばならない。したがって導入ロードマップにはハードウェア調達だけでなく、オペレーティングシステムのアップグレード、観測(observability)体系の確保、運営人材の力量確保まで含めた総合計画が必要である。
参考資料
- CXL Consortium, "Compute Express Link 3.1 Specification Release" (2023.11), https://jotup.co/node/2659156
- Design & Reuse, "CXL 3.1: What's Next for CXL-based Memory in the Data Center", https://www.design-reuse.com/blog/55790-cxl-3-1-what-s-next-for-cxl-based-memory-in-the-data-center/
- SNIA, "CXL Expanded Capabilities" (CMSS23), https://www.snia.org/sites/default/files/cmss/2023/SNIA-CMSS23-Rudoff-CXL-Expanded-Capabilities.pdf
一言まとめ: CXLはPCIe物理層の上にキャッシュ一貫性を加えCPU・アクセラレータ・メモリを一つのアドレス空間のように接続するオープン標準で、CXL.io・cache・memの三つのプロトコルとType 1~3デバイスを通じてメモリ拡張・プーリング・共有を実現し、AIデータセンターの固着メモリ問題と容量ボトルネックを解消する中核インフラ技術である。