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