CXL的全稱是Compute Express Link,是一種在PCIe物理層上構建的緩存一致性系統。
2019年3月,英特爾牽頭頒布了CXL開放互連技術和CXL 1.0規(guī)范,旨在解決數據中心內存擴展和性能瓶頸問題。CXL現在已經有幾十家的會員,目前CXL協議的版本有1.0/1.1、2.0和3.0/3.1,CXL官網為https://www.computeexpresslink.org/ 。
1. CXL介紹
CXL是基于PCIe 5.0的物理層發(fā)展而來的,CXL支持三種類型的協議,分別為CXL.io,CXL.cache和CXL.memory。
CXL.io用來發(fā)現、配置、寄存器訪問、錯誤報告、主機物理地址(Host Physical Address,HPA)查找、中斷等。
CXL.cache用來擴展系統緩存。
CXL.memory用來擴展系統存儲。
其中,CXL.io是必須要支持的,而CXL.cache和CXL.memory是可選支持的。如下圖,CXL設備(例如加速器)可以通過CXL連接到主機處理器。
CXL 2.0協議支持熱插拔、安全增強、持久內存支持、內存錯誤報告和遙測。CXL 2.0還支持單級switch的多扇出(Fan-out),以及跨多個虛擬層次結構共享設備的能力,包括對內存設備的multi-domain支持。
如下圖,每種顏色標識一個虛擬層次結構。其中的MLD是多邏輯設備(Multi-Logic Device),是一個Type 3的設備。
2. Flex Bus介紹
Flex Bus允許在PCIe協議和CXL協議之間進行選擇。這個選擇發(fā)生在鏈路訓練的協議協商期間,并取決于插槽中的設備。
下圖是Flex Bus的示意圖。在CPU和設備之間可以插入一個或兩個可選的Retimer,以延長通道長度。
下圖中,通過flex bus可將coherent加速器或Smart I/O設備連接到Host處理器。
下圖中,通過Flex Bus.CXL來擴展內存系統。
下圖顯示了CXL下游端口(Downstream Port)支持的連接。
Flex Bus Link Features
Flex Bus提供了一種點對點互連,可以傳輸PCIe協議或CXL動態(tài)多協議,以支持I/O、緩存和內存協議。主要的Link屬性支持以下特性:
原始的PCIe模式,支持PCIe協議的全部功能。
CXL模式,如CXL協議里所定義的。
PCIe或CXL模式的配置。
在PAM4模式下,信號速率為64GT/s,CXL模式下的降級速率為32GT/s、16GT/s、8GT/s。否則,CXL模式下信令速率為32GT/s,降級速率為16GT/s或8GT/s。
CXL模式下的鏈路寬度x16,x8,x4,x2(降級模式)和x1(降級模式)。
CXL模式下對x4的分叉(Bifurcation)支持。
Flex Bus分層介紹
CXL事務(協議)層分為兩個部分:處理CXL.io的邏輯和處理CXL.cache/CXL.mem的邏輯。CXL鏈路層以相同的方式細分。
如下圖所示,CXL.io近似PCIe協議的事務層和鏈路層,但是CXL.cache和CXL.mem走的是單獨的事務層與鏈路層(這是CXL延遲低的原因之一)。CXL ARB/MUX接口將來自兩個通路的流量交織。
此外,CXL可以選擇是否實現PCIe事務層和數據鏈路層,如果實現,則允許分別與CXL.io事務層和鏈路層聚合。作為鏈路訓練過程的結果,事務層和鏈路層可以配置為在PCIe模式或CXL模式下運行。Flex Bus物理層的邏輯子塊是一個融合的邏輯物理層,它可以在PCIe模式或CXL模式下運行,這取決于鏈路訓練期間的模式協商的結果。
3. CXL系統架構
CXL支持三種設備類型,如下圖。
Type 1支持CXL.cache和CXL.io;
Type 2支持CXL.cache,CXL.mem和CXL.io;
Type 3支持CXL.mem和CXL.io。
CXL.io是必須要支持的,因為設備的發(fā)現,枚舉,配置等都是由CXL.io來負責的。
不需要使用CXL的場景:傳統的非一致I/O設備主要依賴標準的生產者-消費者順序模型,并依賴主機連接的內存。這類設備除了工作提交和工作完成指示以外,很少與主機進行交互。這類加速器傾向于處理大量的數據流,通常不需要使用CXL功能,使用傳統的PCIe足以。
CXL Type1設備通常用于網卡這類高速緩存設備;Type2設備通常用于GPGPU;Type3設備通常用于內存緩沖、內存擴展。后續(xù)再詳細介紹CXL的設備類型和具體協議內容。
參考:
CXL Specification
PCI Express Base Specification Revision 6.0
CXL學習(一)