Compute Express Link

Compute Express Link（CXL）は、高性能なデータセンターコンピューター向けに設計された、CPU-デバイス間およびCPU-メモリ間を高速に接続するためのオープンスタンダードである。 CXLは、PCI Express（PCIe）の物理的・電気的インターフェイス上に構築されており、PCIeベースのブロック入出力プロトコル（CXL.io）、システムメモリ（CXL.cache）およびデバイスメモリ（英語版）（CXL.mem）にアクセスするための新しいキャッシュコヒーレントプロトコルから構成される。 この標準は、主にIntelによって開発された。CXL Consortiumは、2019年3月にAlibaba Group、Cisco、Dell EMC、Facebook、Google、HewlettPackard Enterprise（HPE）、Huawei、Intel、Microsoftからなる創設メンバーによって立ち上げられ、2019年9月に正式に設立された。2022年1月の時点で、取締役会の創設者にAMD、NVidia、Samsung、Xilinxが加わり、contributing memberとしてARM、Broadcom、Ericsson、IBM、Keysight、Kioxia、Marvell、Mellanox（英語版）、Microchip、Micron、Oracle、Qualcomm、Rambus、Renesas、Seagate、SK Hynix、Synopsys、WesternDigitalなどが参加した。業界パートナーには、PCI-SIG（英語版）、Gen-Z（英語版）、SNIA、DMTFが参加している。 2020年4月2日、Compute Express LinkとGen-Zコンソーシアムは、両者のテクノロジー間の相互運用性を実装する計画を発表し、最初の成果が2021年1月に発表された。2021年11月10日、単一の業界標準の開発に注力するため、Gen-Zの仕様と資産がCXLに移管された。この発表の時点で、Gen-Zメンバーの70％はすでにCXLコンソーシアムに参加していた。このコンソーシアムに参加していた企業には、OpenCAPI（英語版）（IBM）、CCIX（英語版）（Xilinx）、Gen-Z（HPE）オープンスタンダードなどのメモリコヒーレント相互接続テクノロジー、プロプライエタリのInfiniBand/RoCE（英語版）（Mellanox）、Infinity Fabric（AMD）、Omni-Path（英語版）およびQuickPath/Ultra Path（英語版）（Intel）、NVLink/NVSwitch（Nvidia）プロトコルの背後にある企業がある。 2019年3月11日、PCIe 5.0をベースにしたCXL Specification 1.0が公開された。この仕様により、ホストCPUは、キャッシュコヒーレントプロトコルを使用して、アクセラレータデバイス上の共有メモリにアクセスできるようになった。 CXL Specification 1.1は、2019年6月に公開された。 2020年11月10日、CXL Specification 2.0が公開された。新しいバージョンでは、CXLスイッチングのサポートが追加され、分散共有メモリおよびdisaggregated storage（英語版）構成で、複数のCXL1.xおよび2.0デバイスをCXL2.0ホストプロセッサに接続したり、各デバイスを複数のホストプロセッサにプールしたりできるようになった。また、デバイス整合性とデータ暗号化も実装している。CXL 2.0は引き続きPCIe 5.0 PHYを使用するため、CXL 1.xからの帯域幅の増加はない。 次のバージョンのCXL仕様は2022年上半期に予定されており、PCIe 6.0 PHYをベースとしたものになる予定である。 2019年4月2日、IntelはCXLを搭載したAgilex FPGAファミリを発表した。 2021年5月11日、Samsungは128 GByte DDR5ベースのメモリ拡張モジュールを発表した。これを利用すると、データセンターや潜在的な次世代のPCに適した、テラバイトレベルのメモリ拡張が可能になる。2022年5月10日には、プロプライエタリなメモリコントローラーを利用した、更新版の512 GByteバージョンがリリースされた。 2021年には、IntelのSapphire Rapidsプロセッサ、AMDのZen 4 EPYC「Genoa」および「Bergamo」プロセッサでのCXL1.1のサポートが発表された。 CXLデバイスは、Intel、Astera、Rambus、Synopsys、Samsung、Teledyne LeCroyなどにより、SC21 Conferenceで展示された。 CXLの標準では、3種類の独立したプロトコルが定義されている。 CXL.io - いくつかの拡張機能を備えたPCIe 5.0に基づいており、コンフィギュレーション、リンクの初期化と管理、デバイスの検出と列挙、割り込み、DMA、非コヒーレントなロード/ストアを使用したレジスタI/Oアクセスを提供する。 CXL.cache - 周辺機器が低遅延のリクエスト/レスポンスインターフェイスでホストCPUメモリにコヒーレントにアクセス・キャッシュできるようにする。 CXL.mem - ホストCPUが、揮発性（RAM）ストレージと永続的な不揮発性（フラッシュメモリ）ストレージ両方のロード/ストアコマンドを使用して、キャッシュされたデバイスメモリにコヒーレントにアクセスできるようにする。 CXL.cacheとCXL.memプロトコルは、CXL.ioプロトコルリンクとトランザクションレイヤーとは別の共通のリンク/トランザクションレイヤーで動作する。これらのプロトコル/レイヤーは、Arbitration and Multiplexing（ARB/MUX）ブロックによって多重化されてから、4つの16バイトデータslotsと2バイトの巡回冗長検査（CRC）値からなる固定幅528ビット（66バイト）のフロー制御ユニット（英語版）（Flow Control Unit、FLIT）ブロックを使用して標準のPCIe 5.0 PHYで転送される。CXL FLITは、PCIe標準のトランザクション層パケット（TLP）とデータリンク層パケット（DLLP）データを可変フレームサイズ形式でカプセル化する。 CXLは、次の3種類の主要なデバイスタイプをサポートするように設計されている。 Type 1（CXL.io、CXL.cache）- ローカルメモリのない特殊なアクセラレータ（スマートNICなど）。このタイプのデバイスは、ホストCPUメモリへのコヒーレントアクセスに依存している。 Type 2（CXL.io、CXL.cache、CXL.mem）- 高性能GDDRやHBMローカルメモリを備えた汎用アクセラレータ（GPU、ASIC、FPGA）。このタイプのデバイスは、ホストCPUのメモリにコヒーレントにアクセスしたり、ホストCPUからデバイスのローカルメモリへのコヒーレントまたは非コヒーレントアクセスを提供できる。 Type 3（CXL.io、CXL.mem）- メモリ拡張ボードやストレージクラスメモリ。このタイプのデバイスは、ホストCPUにローカルのDRAMや不揮発性ストレージへの低遅延アクセスを提供する。 Type 2のデバイスは、デバイスドライバーが管理する2つのメモリコヒーレンスモードを実装する。デバイスバイアスモードでは、デバイスはローカルメモリに直接アクセスし、CPUによるキャッシュは実行されない。ホストバイアスモードでは、ホストCPUのキャッシュコントローラーがデバイスメモリへのすべてのアクセスを処理する。コヒーレンスモードは、4 KBページごとに個別に設定でき、Type 2のデバイスのローカルメモリの変換テーブルに保存される。他のCPU間メモリコヒーレンシプロトコルとは異なり、この配置では、ホストCPUメモリコントローラがキャッシュエージェントを実装するだけで済む。このような非対称的なアプローチにより、実装の複雑さが軽減され、待ち時間が短縮される。 Cache coherent interconnect for accelerators（英語版） (CCIX) Coherent Accelerator Processor Interface（英語版） (CAPI) Gen-Z（英語版） Omni-Path（英語版） UCIe（英語版）