研發背景
CXL.io協定的研發背景源於數據中心對記憶體擴展和性能提升的迫切需求,旨在解決處理器與加速器、記憶體擴展設備之間更高效、一致的通信問題。其技術基礎建立在成熟的PCIe(Peripheral Component Interconnect Express)物理和電氣接口之上,CXL.io可視為PCIe協定的增強或改進版本,在協定層引入了新的特性和最佳化。
2019年3月,由英特爾牽頭的CXL聯盟正式成立,並推出了CXL 1.0規範,其中便定義了CXL.io協定。CXL.io協定作為設備發現、枚舉、配置等基礎通信的必需協定。
發展歷程
CXL 1.0/1.1規範引入了CXL.io、CXL.cache和CXL.mem三個子協定。CXL.io基於PCIe協定,用於設備發現、枚舉和配置等基礎功能。
2020年10月發布的CXL 2.0協定標準增加了對記憶體池等功能的支持。作為基礎通信協定,CXL.io在CXL 2.0中持續演進。
2022年8月發布的CXL 3.0協定標準引入了交換網路(Fabric)概念,CXL.io協定的作用也隨之得到擴展。CXL 3.1標準是對CXL 3.0的漸進性更新。
主要處理器廠商推動了CXL.io的產業化落地,
AMD的Genoa和Intel的
Sapphire Rapids平台在2022年末/2023年初開始支持CXL 1.1。2024年,英特爾和AMD進一步發布了支持CXL 2.0的處理器。
核心技術
CXL.io是Compute Express Link(CXL)規範中定義的物理層接口,運行在PCIe匯流排的物理層上。CXL.io協定本質上是經過一定改進的PCIe 5.0協定,用於初始化、連結、設備發現和枚舉以及配置和管理。CXL設備連線到CXL主機時,必須通過CXL.io協定進行發現和配置。
CXL.io使用與PCIe相同的事務層數據包(TLP)和數據鏈路層數據包(DLLP),TLP/DLLP覆蓋在CXL flit的有效負載部分上。CXL標準定義了3個協定,這些協定在通過標準PCIe 5.0 PHY以32 GT/s傳輸之前一起動態復用。CXL.io通過使用SerDes技術(一種將串列數據轉換為並行數據以及反向轉換的技術),在單個物理通道上同時傳輸多個不同的數據流。
CXL.io的物理層規範定義了信號的電氣特性、時序要求和連線器接口。CXL.io採用4x25Gbps或3x32Gbps的信號速率,並支持單向或雙向通信。連線器方面,CXL.io採用40個針腳的SMT連線器,其中27個針腳用於數據傳輸,其餘用於電源、地線和時鐘信號。CXL.io還支持熱插拔和鏈路訓練等高級特性。
CXL.io可以提供比傳統PCIe更低的延遲、更高的頻寬和更好的可擴展性。CXL.io和PCIe的通信會帶來一定的開銷,特別是在延遲和處理器使用方面,延遲主要來自於協定棧的處理時間以及作業系統進行上下文切換時產生的軟體開銷。為了檢查任務狀態而進行的輪詢操作本身需要耗費時間,頻繁的輪詢會增加處理器的負擔。
運營模式
CXL.io是Compute Express Link(CXL)協定棧中的基礎性子協定,是所有CXL設備必須支持的協定。它在CXL系統中負責CXL設備的發現、枚舉、配置、暫存器訪問等初始化與管理功能。在物理實現上,CXL.io與CXL.cache、CXL.mem協定在事務層動態多路復用,匯總到單個鏈路上進行傳輸。
根據CXL標準定義的三種設備類型,CXL.io是所有類型設備的必備協定,並與其他協定組合使用。Type 1設備(如加速器)使用CXL.io + CXL.cache;Type 2設備(帶記憶體的加速器,如GPU、
FPGA)使用CXL.io + CXL.cache + CXL.mem;Type 3設備(記憶體擴展設備)使用CXL.io + CXL.mem。
在控制器層面,CXL.io為上層套用提供標準的側接口。CXL.io的接口與CXL.cache/mem的接口通過仲裁器/復用器(ARB/Mux)協同工作,以實現不同協定數據流的調度與管理。
重要事件
2019年3月,英特爾牽頭成立CXL聯盟並發布CXL 1.0規範,首次定義了CXL.io協定。2020年10月,CXL 2.0規範發布,引入了記憶體池等功能。2022年8月,CXL 3.0規範發布,增加了Fabric概念。2022年末至2023年初,AMD的Genoa和Intel的Sapphire Rapids處理器開始支持CXL 1.1標準。2024年,英特爾和AMD相繼發布支持CXL 2.0的處理器,同時三星、SK海力士等存儲廠商加速布局並計畫量產CXL 2.0記憶體模組。