CXL(Compute Express Link)入門——メモリを「共有資源」に変えるインターコネクトは何を変えるのか
はじめに——AI時代のデータセンターで「メモリの壁」が再来した
生成AIや大規模言語モデル(LLM)の普及により、データセンターの設計思想が大きく変わりつつあります。かつてはCPUの計算能力がボトルネックとされていましたが、今や壁となっているのは「メモリ」です。LLMの推論や学習では、モデルのパラメータをそのまま搭載できるだけのメモリ容量と、そこへデータを流し込む十分な帯域幅が求められます。GPUがどれほど高速でも、メモリ容量が足りなければモデルを動かせず、帯域が細ければ性能を発揮できません。
従来の対策には限界があります。CPU側でソケットを増やしてメモリチャネルを広げる方法は、コストと消費電力が急増し、スケーラビリティにも限界があります。GPU側でHBM(High Bandwidth Memory)を積む方法も、搭載量が製造上の制約に縛られ、価格が高騰しています。さらに、サーバーごとにメモリを「持ち持ち」で管理する従来方式では、最大負荷に備えた遊びのメモリが増えがちで、データセンター全体で見たメモリ稼働率が低くなりやすいという課題が指摘されています(稼働率の水準は環境により異なります)。
この「メモリの壁」への現実的な解として注目されているのが、CXL(Compute Express Link)です。CXLはPCIeをベースに、CPU・アクセラレータ・メモリをキャッシュコヒーレントに——つまりプロトコル定義の手順でキャッシュの整合性を保ちながら——接続するインターコネクト規格です。これにより、対応する構成においてメモリをサーバー単位の持ち物から、プーリングして共有できる資源へと変えることが目指されています。
本記事では、CXLの基本的な仕組み(3つのプロトコルとデバイスタイプ)、世代ごとの進化、メモリプーリングがもたらす変化、そして課題やホームサーバー視点での将来性まで、初心者にもわかるように解説します。
CXLとは何か——PCIeの上に作られた「キャッシュコヒーレント」な高速道路
CXL(Compute Express Link)は、PCIeの物理層をそのまま流用しながら、その上に「キャッシュコヒーレント」な通信路を追加したオープンなインターコネクト規格です。キャッシュコヒーレントとは、CPUとアクセラレータ・デバイスがキャッシュするメモリの内容の整合性を、プロトコルが定義した手順で保てるという意味です。従来のPCIeではGPUがホストメモリを読むにはデータをコピーする必要がありましたが、CXLでは対応する構成(後述するプロトコルとデバイスタイプの組み合わせ、およびプラットフォーム・ソフトウェアのサポート)において、コピーなしに相手側のメモリを参照できます。この「プロトコルで一貫性を保証したアクセスができる」性質こそが、メモリを個々のサーバーの持ち物から共有資源へ変える鍵です。
CXLは3つのプロトコルの組み合わせで構成されます。CXL.ioはPCIeそのものの拡張で、デバイスの検出・初期化・割り込み・DMAといった従来通りの入出力を担います。CXL.cacheはアクセラレータ側がホストCPUのメモリをコヒーレントにキャッシュするためのプロトコル、CXL.memは逆にホストCPU側がデバイスのメモリへロード/ストアでアクセスするためのプロトコルです。cacheとmemは共通のリンク層で多重化され、PCIeの物理層上を流れます。
graph TD
CPU["ホストCPU(メモリコントローラ内蔵)"]
T1["Type 1デバイス\n(スマートNIC等)"]
T2["Type 2デバイス\n(GPU/FPGA+HBM)"]
T3["Type 3デバイス\n(メモリ拡張ボード)"]
CPU -- "CXL.io + CXL.cache" --> T1
CPU -- "CXL.io + CXL.cache + CXL.mem" --> T2
CPU -- "CXL.io + CXL.mem" --> T3
接続されるデバイスは、使うプロトコルの組み合わせで3種類に分類されます。
| タイプ | プロトコル | ローカルメモリ | 代表例 |
|---|---|---|---|
| Type 1 | CXL.io + CXL.cache | なし | スマートNIC、特定機能アクセラレータ |
| Type 2 | CXL.io + CXL.cache + CXL.mem | HBM/GDDR搭載 | GPU、FPGA、AI ASIC |
| Type 3 | CXL.io + CXL.mem | 大容量DRAM | メモリ拡張ボード、メモリプーリング用モジュール |
Type 2では「バイアスモード」という仕組みが働きます。4KBページごとに、そのページの一貫性管理をデバイス側に任せるデバイスバイアスか、ホストCPU側に任せるホストバイアスかを切り替えられます。デバイスが主に使うデータはデバイスバイアスに、ホストが頻繁に触るデータはホストバイアスにすれば、コヒーレンス維持のオーバーヘッドを最小化できます。この非対称な設計により、CPU側の実装がシンプルになりレイテンシも抑えられるのがCXLの実用上の利点です。
世代比較と技術の系譜——CXL 1.0から4.0まで、そして競合規格の統合
CXLは2019年の登場以来、ほぼ2年ごとに進化を続けています。各世代の違いを表に整理しましょう。
| 世代 | 公開年 | PCIeベース | 速度 | 主な追加機能 |
|---|---|---|---|---|
| CXL 1.0/1.1 | 2019年 | PCIe 5.0 | 32GT/s(×16で63GB/s) | キャッシュコヒーレントなアクセラレータ接続 |
| CXL 2.0 | 2020年11月 | PCIe 5.0 | 32GT/s(帯域増なし) | スイッチング、メモリプーリング、データ暗号化 |
| CXL 3.0 | 2022年8月 | PCIe 6.0 | 64GT/s(×16で121GB/s) | マルチレイヤファブリック、複数ホストでのメモリ共有 |
| CXL 3.1/3.2 | 2023年11月/2024年12月 | PCIe 6.0 | 64GT/s | ファブリック拡張、セキュリティ強化 |
| CXL 4.0 | 2025年11月 | (公式発表では帯域64GT/s→128GT/sへ倍増) | 128GT/s | 帯域2倍化と機能強化 |
※帯域値はリンク幅・方向・符号化条件により変わる目安(Wikipedia等の公开資料に基づく換算値。×16の値は片方向フルデュプレクス換算の目安です)。CXL 4.0のPCIe世代との対応は公式仕様書の確認をおすすめめします。
注目すべき流れが2つあります。第一に、帯域の向上です。1.x/2.x時代は32GT/sのままでしたが、3.0でPCIe 6.0を下敷きに64GT/sへ倍増、4.0ではさらに128GT/sへと倍増し、AIワークロードが求めるメモリ帯域に迫っています。
第二に、機能面では「1対1の接続」から「ファブリック」への進化です。CXL 1.0は単純にCPUとアクセラレータを直接つなぐ規格でした。2.0でスイッチングとメモリプーリングが加わり、1台のメモリプールを複数サーバーで共有できるようになりました。3.0ではマルチレイヤファブリックにより多対多の接続が可能になり、計算・メモリ・ストレージを独立にスケールさせる「リソースディスアグリゲーション」への道が開けました。
そしてCXLの歴史は「競合規格の統合」の歴史でもあります。かつてメモリコヒーレントなインターコネクトとしては、Gen-Z、OpenCAPI(IBM)、CCIX(Xilinx)が乱立していました。しかし2020年にCXLとGen-Zの連携が発表され、2021年11月にはGen-Zの仕様と資産がCXLコンソーシアムへ移管。OpenCAPIやCCIXもCXLへ収斂し、業界標準は事実上一本化されました。結果として、競合相手はNVLink(NVIDIA)やInfinity Fabric(AMD)といったプロプライエタリな技術に絞られています。
複数規格の分裂はエコシステムの分断を招きますが、CXLへの一本化により、CPUメーカー、メモリベンダー、スイッチベンダーが同じ土俵で開発を進められるようになった点は、普及を考えるうえで大きな意味を持ちます。
メモリプーリングとリソースディスアグリゲーション——何が変わるのか
CXLがもたらすメモリ活用は、大きく二段階に分けて考えるとわかりやすい。
第一段階が「メモリ拡張(エクスパンション)」だ。CXL Type 3デバイスと呼ばれるメモリ拡張ボードをPCIeスロットに挿すことで、CPUのDRAMチャネル数という従来の上限を超えて、安価なDDR5メモリを追加できる。CPUソケットあたりのメモリチャネルは8〜12本程度が一般的で、それ以上増やすにはソケットを追加するしかなかった。CXLメモリなら、ローカルDRAMよりレイテンシは大きいものの、容量を柔軟に足せる。大規模なインメモリデータベースや、モデルをRAMに載せきれないLLM推論などで威力を発揮する可能性があります(効果はワークロードと配置設計に依存します)。
第二段階が「メモリプーリング」だ。CXL 2.0で導入されたスイッチング機能により、複数のメモリモジュールをCXLスイッチ配下に集約し、そこに複数のサーバーを接続できる。ここで重要なのは、CXL 2.0レベルで実現するのは主に「プールされたメモリの各ホストへの割り当て(および再割り当て)」であり、複数ホストが同一メモリ領域を同時に共有する機能は後続の仕様(3.x系のファブリック機能)で拡張された点だ。また、動的な再割り当てやVMリサイズといった運用は、対応するスイッチ機器・ホスト構成・ファームウェア・OS・管理ソフトウェアのサポートに依存し、仕様があるだけですぐに実現するわけではない。その前提を踏まえると、従来のようにサーバーごとにメモリを「持ち物」として固定せず、必要なサーバーに必要な分だけ割り当て直せることで、最大負荷に備えた遊びのメモリを削減し、データセンター全体のメモリ稼働率向上が期待できる——というのがプーリングの狙いである(効果の程度はワークロード特性と運用設計による)。
この先にあるのが「リソースディスアグリゲーション」の構想だ。計算(CPU/GPU)、メモリ、ストレージを独立したプールとして構成し、ワークロードに応じて自由に組み合わせる設計思想で、サーバー一体型のハードウェア構成を解体する。メモリだけを先にスケールさせる、アクセラレータだけ増やす、といった運用が実現すれば、ハードウェアの調達・運用のあり方自体が変わる。
製品動向も進んでいる。Samsungは2021年に128GB、2022年に512GBのCXLメモリ拡張モジュールを発表(Wikipedia掲載の公表情報に基づく。上市状況は公式発表をご確認ください)、Micronも2023年にサンプル出荷を開始したと報じられています。CPU側ではIntelの第4世代Xeon「Sapphire Rapids」とAMDのEPYC「Genoa」がCXL 1.1対応を果たしたと公表されており、サーバープラットフォームでの実用環境が整いつつあります。
課題と現実——レイテンシ、ソフトウェア、コストの壁
CXLは理想の技術像を描きますが、現実にはいくつかの壁があります。
第一にレイテンシです。CXLメモリはPCIeリンクとスイッチを経由するため、ローカルDRAMよりアクセス遅延が大きく、帯域も狭くなります。そのためOSやアプリケーションは、CXLメモリを「速い階層」としてではなく、NUMAアーキテクチャにおける「遠いノード」として扱い、ホットデータはローカルDRAMに、コールドデータやページキャッシュをCXL側に配置するといった最適化が求められます。LinuxカーネルのNUMAバランシングやtiered-memory管理は対応を進めていますが、アプリ側でのチューニングが性能を大きく左右するのは当分変わりません。
第二にソフトウェアスタックの成熟度です。メモリプーリングやファブリック共有を実際に活用するには、OS、ミドルウェア、アプリケーションが「メモリが動的に差し込み・差し引きされる世界」を前提に設計されている必要があります。熱によるメモリのマイグレーション、障害時の切り離し、マルチテナントでの隔離など、解決すべき課題はまだ多く、エコシステム全体の成熟には時間がかかります。
第三にコストです。CXL対応はXeonやEPYCといったサーバー向けプラットフォームが中心で、拡張モジュール自体もDDR5を単純に増設するより高コストです。普及が進み、量産効果が出るまで価格は下がりません。
ホームサーバー視点では、残念ながら今すぐ使える技術ではありません。ただし、ローカルLLMの最大の悩みである「モデルがRAMに載せきれない」問題に対して、CXLメモリ拡張の低価格化は長期的な解の一つになり得ます。PCIeベースのオープン規格であるがゆえに、将来コンシューマー・プロセッサへも波及する可能性があり、動向を注視する価値は十分にあります。
よくある質問(FAQ)
CXLとPCIeの違いは何ですか?
CXLはPCIeの物理層(配線やコネクタ)をそのまま利用する「上位互換的な」規格ですが、決定的に違うのはキャッシュコヒーレンスの有無です。PCIeだけでは、CPUとアクセラレータがそれぞれメモリをキャッシュすると、どちらかが書き換えたデータが他方のキャッシュに反映されず、不整合が起こります。このため従来はデータ転移のたびに明示的なコピーと同期が必要でした。
CXLはその上に「CXL.cache」と「CXL.mem」という2つのプロトコルを重ね、対応する構成においてCPUとデバイスが互いのメモリをプロトコル定義の手順で一貫性を保ちつつ参照できるようにします。結果として、条件が揃った構成ではデータをコピーせずにCPUとデバイスがメモリを共有でき、ソフトウェアの構成が単純になります(対応範囲はプロトコル・デバイスタイプ・プラットフォーム構成に依存します)。PCIeを「道路」、CXLを「その上を走るコヒーレントな高速バス」と捉えるとわかりやすいでしょう。
CXLメモリは通常のDRAMより速いのですか?
いいえ、速くはありません。これはCXLについて最も誤解されやすい点です。CXLメモリ(Type 3デバイス)のレイテンシはローカルDRAMより大きく、帯域もPCIeリンクの上限に律速されます(例:CXL 3.0の×16で約121GB/s)。
CXLメモリの価値は「速さ」ではなく容量と運用効率にあります。CPUソケットあたりのDRAMチャネル数という物理的制限を超えて、安価なDDR5でメモリを追加できる(エクスパンション)、あるいは複数サーバー間でメモリを共有・再配分できる(プーリング)点が本質です。実運用では、レイテンシ差を意識したNUMA的な配置最適化——ホットなデータはローカルDRAMに、コールドなデータをCXLメモリに置く——が重要になります。
メモリプーリングとは具体的に何ができるようになるのですか?
メモリプーリングは、複数のサーバーからCXLスイッチ経由で接続されたメモリプール(Type 3デバイスの集合体)を、サーバー間で割り当て直せるようにする仕組みです(CXL 2.0以降でサポート。割当管理と同一領域の同時共有は区別され、後者は3.x系のファブリック機能で拡張されます)。
具体的には、次のような運用が指向されています(実現には対応機器・ファームウェア・OS・管理ソフトウェアのサポートが前提となります)。
- サーバーAで夜間バッチ処理が始まるとき、他サーバーに割り当てていたメモリを再割当する
- メモリを大量に必要とするVMを、物理的な増設なしで別ノードへ再配置・リサイズする
- データセンター全体で見たメモリ稼働率を引き上げ、過剰なDRAM搭載を削減する(効果はワークロードと運用設計に依存)
つまりメモリが「各サーバーに内蔵された個人の持ち物」から「必要なときに必要なだけ引き出せる共有インフラ」へと変わることが狙いです。
CXLは自作PCやホームサーバーでも使えますか?
現時点ではほぼ使えません。CXL対応はIntel Xeon(Sapphire Rapids以降)やAMD EPYC(Zen 4世代以降)といったサーバー向けプラットフォームが中心で、コンシューマー向けCPU・マザーボードには実質的に展開されていません。CXLメモリモジュール自体もSamsung、Micronなどがサーバー向けに供給している段階です。
ただし将来に向けて注目する価値はあります。ローカルLLMの「モデルがRAMに載りきらない」問題は、個人利用者にとっても切実なメモリの壁です。CXLはPCIeベースのオープン規格なので、メモリ拡張モジュールの低価格化とコンシューマー向け展開が進めば、自作環境でメモリ容量を柔軟に積み増す選択肢になる可能性があります。
CXLとNVLinkは競合する技術ですか?
部分的に競合しますが、棲み分けが進んでいるのが実態です。NVLink/NVSwitchはNVIDIAのプロプライエタリな規格で、GPU間の超高速・低遅延接続に最適化されています。一方CXLはオープン標準で、CPU・アクセラレータ・メモリを横断する汎用的なコヒーレント接続を狙います。
注目すべきは、NVIDIA自身がCXLコンソーシアムの取締役会に参加している点です。GPU間の密結合はNVLink、CPU-GPU間やメモリプーリングのような緩い接続はCXL、という使い分けが現実的な落とし所と見られています。かつて存在した競合オープン規格(Gen-Z、OpenCAPI、CCIX)は2021年までにCXLへ統合されており、オープン標準同士の争いは事実上決着しました。
まとめ——メモリは「個人の持ち物」から「共有インフラ」へ
CXLが目指す世界を一言でいえば、メモリを「サーバーに内蔵された部品」から「データセンター全体で共有される資源」へと再定義することです。PCIeの土台の上にキャッシュコヒーレンスを実現する3つのプロトコルを載せ、Type 3デバイスによるメモリ拡張・プーリング、CXL 3.0以降のマルチレイヤファブリックによるリソースディスアグリゲーションへと進化していく——それがAI時代の「メモリの壁」に対する業界の現実解の一つとなりつつあります。
今日から確認すべき3つのポイント:
- キャッシュコヒーレンスが本質:CXLの価値は「速いインターコネクト」ではなく、対応構成においてCPU・デバイスがデータをコピーせず一貫性を保ってメモリにアクセスできる点。技術評価の際はまずここを見る
- レイテンシと運用設計が成否を分ける:CXLメモリはローカルDRAMより遅い。NUMA的な配置最適化とソフトウェアスタックの成熟度が、実利を出せるかどうかの分水嶺になる
- エコシステムの拡大を追う:Intel/AMD対応CPU、Samsung/Micronのメモリモジュール、CXLスイッチという構成要素が揃いつつある。コンシューマー展開はまだ先だが、ローカルAIのメモリ不足問題への長期的な解として注目に値する
参考文献
- CXL Consortium(公式): https://computeexpresslink.org/
- Compute Express Link - Wikipedia: https://ja.wikipedia.org/wiki/Compute_Express_Link
- CXLメモリ完全解説2026(semi-connect.net): https://semi-connect.net/cxl-memory-compute-express-link-complete-guide/
- CXL(Compute Express Link)とは?(note/semicontimes): https://note.com/semicontimes/n/n0b5766d9e815
- CXLインターコネクトとは?(techshift.jp): https://techshift.jp/glossary/cxl%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%bc%e3%82%b3%e3%83%8d%e3%82%af%e3%83%88/