[DRAM Test]CXL Memory的有关知识梳理

CXL: Compute Express Link 

一、背景

CXL(Compute Express Link)是一种高速串行协议,它允许在计算机系统内部的不同组件之间进行快速、可靠的数据传输。CXL在2020年推出,由英特尔、戴尔和惠普等公司共同设计。它旨在解决高性能计算中的瓶颈问题,包括内存容量、内存带宽和I/O延迟等问题。CXL还可以实现内存扩展和内存共享,并且可与计算加速器(如GPU、FPGA)等外设通信,提供更快、更灵活的数据交换和处理方式。

CXL技术不仅提供了高速传输,还支持内存共享和虚拟化,使设备之间的协作更加紧密和高效。这种技术有助于满足现代数据中心对大规模处理和分析的需求,同时也能够为AI、机器学习、区块链等新兴应用提供更好的支持。

CXL的目标:解决CPU和设备、设备和设备之间的内存鸿沟。服务器有巨大的内存池和数量庞大的基于PCIe运算加速器,每个上面都有很大的内存。内存的分割已经造成巨大的浪费、不便和性能下降。CXL就是为解决这个问题而诞生。

CXL技术的背景可以追溯到PCIe (Peripheral Component Interconnect Express) 技术,PCIe是用于连接计算机内部组件的一种标准接口技术。PCIe设备可以发起一个DMA来访问内存,只要知道目标物理地址即可。在CXL之前就有以IBM牵头的OpenCAPI,ARM为代表支持的CCIX,AMD等支持的GenZ和Nvidia自行提出的Nvlink等等多种协议。虽然PCIe已经有了很多改进,但其难以满足现代计算机处理器和加速器之间的高带宽、低延迟通信需求。于是,CXL技术应运而生。

CXL的应用场景


人工智能和机器学习:在AI和ML应用中,CXL可以加速大规模数据集的处理,提高训练和推理的效率。
高性能计算 (HPC):CXL支持大规模HPC系统中的高速数据交换和处理,加速科学计算和工程模拟任务。
数据中心和云计算:在数据中心,CXL可以优化资源利用率,支持动态内存分配和加速器共享,提高云服务的性能和灵活性。
存储扩展和内存池:CXL允许创建大容量内存池,支持内存密集型应用,如大数据分析和实时数据处理。

不同应用场景下的互连需求
高效的资源共享
共享内存池,具备高效的访问机制
提高加速器和目标设备之间操作数和结果的传输效率
大幅减少延迟,以实现分布式内存
行业需要开放的标准,能够全面应对下一代互连挑战


CXL的关键特性
高性能和低延迟:CXL利用PCIe的高带宽物理层,同时通过优化的协议栈减少通信延迟,支持高速数据传输和快速响应时间。
缓存一致性:CXL引入了先进的缓存一致性机制,允许不同处理器和加速器之间共享数据,同时保持数据的一致性和准确性。
内存协议扩展:CXL定义了一套内存协议扩展,支持对共享内存的高效访问和管理。这些扩展包括内存分配、迁移和共享等功能。
兼容性:CXL设计为向下兼容PCIe标准,这意味着它可以在现有的PCIe基础设施上部署,无需进行大规模的硬件升级。
多用途互连:CXL支持多种用途的互连,包括加速器互联、内存扩展和高速网络连接,为多样化的应用需求提供解决方案。

CXL时间线

CXL技术从2019年1.0版的首次发布,到2023年的3.1版规范,标志着CXL技术的不断进步和成熟。

CXL Summary

二、CXL协议(CXL的3种模式)


CXL协议包含三个子协议:

CXL.io:这种模式可以将内存扩展到外部设备,使得数据的传输速度更快。CXL.io通过PCIe总线连接CPU和外部设备,这样CPU就可以与外部设备共享内存,并且可以直接访问外部设备的I/O资源。
CXL.cache:这种模式可以通过将内存缓存到外部设备中来提高性能。CXL.cache模式允许CPU在本地缓存中保留最常用的数据,而将不常用的数据保存在外部设备中。这样可以减少内存访问时间,提高整体系统性能。
CXL.memory:这种模式可以将外部设备作为主内存使用,从而实现更大的内存容量。CXL.memory模式允许CPU将外部设备看作是扩展内存,从而可以存储更多的数据。这种方式可以提高系统的可靠性,因为即使发生了内存故障,CPU仍然可以通过外部设备继续运行。

CXL.io是Compute Express Link(CXL)规范中定义的物理层接口,可以提供比传统PCIe更低的延迟、更高的带宽和更好的可扩展性。

CXL.io通过使用SerDes技术(一种将串行数据转换为并行数据以及反向转换的技术),在单个物理通道上同时传输多个不同的数据流。这些数据流可以包括带宽密集型的数据流、低延迟的命令和控制信息以及配置寄存器和状态信息。CXL.io还支持热插拔和链路训练等高级特性。

CXL.io的物理层规范定义了信号的电气特性、时序要求和连接器接口,以确保高可靠性和高性能。CXL.io采用4x25Gbps或3x32Gbps的信号速率,并支持单向或双向通信。连接器方面,CXL.io采用40个针脚的SMT连接器,其中27个针脚用于数据传输,其余用于电源、地线和时钟信号。

CXL技术的三种类型:

        Type 1:通过 PCIe 插槽安装的加速卡或附加卡。这些卡可以与现有系统集成,并通过 CXL 接口与 CPU 直接通信以提供更快的数据传输速度。用于网卡这类高速缓存设备。
        Type 2:具有所有 Type 1 设备的功能,通常用于具有高密度计算的场景。比如 GPU 加速器。
        Type 3:一种专用的存储设备,与主机处理器直接通信,并且可以使用 CXL 协议来实现低延迟、高吞吐量的数据传输。用作内存缓冲器,用于扩展内存带宽和内存容量。

CXL协议的使用案例


通过 PCIe 插槽安装加速卡或附加卡。这些卡可以与现有系统集成,并通过 CXL 接口与 CPU 直接通信以提供更快的数据传输速度。用于网卡这类高速缓存设备。
具有所有CXL协议的功能,通常用于具有高密度计算的场景,比如 GPU 加速。
连接专用的存储设备,与主机处理器直接通信,并且可以使用 CXL 协议来实现低延迟、高吞吐量的数据传输。用作内存缓冲器,用于扩展内存带宽和内存容量。

CXL缓存一致性
相较于PCIe,CXL的最重要的新特性是支持高速缓存一致性和内存语义操作,以及允许设备共享内存。这意味着CXL可以使多个处理器和加速器共享同一内存空间,同时保持数据一致性。

在现代的CPU缓存中,数据状态遵循M、E、S、I协议/状态模型:

        Modified(修改):数据仅存在于一个缓存中,可以被读取或写入,内存中的数据可能不是最新的。
        Exclusive(独占):数据仅存在于一个缓存中,可以被读取或写入,且内存中的数据是最新的。
        Shared(共享):数据可能存在于多个缓存中,仅可以被读取,且数据保证是最新的。
        Invalid(无效):数据不在任何缓存中。

CXL遵循现代CPU缓存/内存层次结构,其中几个关键概念为:

全局观测点(Global Observation):这是一个系统设计中的概念,指的是当数据被写入时,这些数据对系统中的其他部分是可见的,从而保证了数据的及时性和一致性。
追踪粒度:在CXL技术中,数据的追踪粒度被定义为“缓存线”(cacheline),通常是64字节,这是为了高效地追踪和管理缓存数据。
地址翻译:系统假定所有地址都是宿主物理地址(Host Physical Address,HPA),CXL缓存和内存协议通过现有的地址翻译服务(Address Translation Services,ATS)来进行转换,确保数据的准确定位和高效访问。
例如:在CPU Socket之间,通过CXL技术实现了一种连贯的CPU对CPU对称链接,允许不同处理器之间直接和高效地共享数据。如图所示,每个CPU Socket都有自己的L1、L2和L3缓存,以及直接连接的内存(DDR),并且通过CXL链接与其他设备交互。

CXL还引入了新的对等缓存管理方法,其中所有的对等缓存都由“Home Agent”在缓存级别管理,对CXL设备隐藏。"Snoop"操作是Home Agent检查缓存状态并可能引起缓存状态变化的术语。

数据传输是通过明确定义的通道进行的,以确保高效和有序的通信。具体来说,包含以下几个方面:

通道设置:在CXL架构中,数据传输是通过三个通道在设备(D2H)和主机(H2D)之间双向进行的。这三个通道分别是请求通道、响应通道和数据通道。
通道预分配:为了保证传输的连续性和减少延迟,数据和响应通道是预先分配的。
设备请求(D2H):来自设备的请求是通过D2H(Device to Host)通道发送的,它负责将设备端的数据和命令传输到主机。
主机请求(H2D):主机对设备的请求通常是以Snoop(侦听)的形式出现的。这些Snoop请求通过H2D(Host to Device)通道发出,用于查询或修改设备侧的数据状态。
命令顺序:在CXL通信中,命令的顺序非常关键。H2D请求(Snoop)会推动H2D响应(RSP)的生成,这保证了数据的一致性和准确性。

CXL缓存读/写流程

三、CXL技术的特征

CXL Stack
CXL缓存和内存栈的特点包括:

将事务层和链接层从I/O(输入/输出操作)中分离出来,这有助于减少复杂性和提高效率。
固定的message framing结构,这确保了数据传输的稳定性和可靠性。
此外,CXL I/O流量通过的栈与标准PCIe栈在很大程度上是相同的:

CXL采用动态框架结构,这使得栈可以更加灵活地处理不同类型的数据包。
CXL事务层数据包(TLP)和数据链路层数据包(DLLP)被封装在CXL flits中,这是CXL通信的基本传输单元。

Asymmetric Complexity

CCI模型(左侧)展示了一个对称的缓存一致性接口,其中加速器和CPU共享缓存一致性逻辑。在这个模型中,加速器具有自己的加速器引擎、缓存代理和主机代理。这种设计意味着加速器和CPU在缓存一致性方面具有等价的地位,所有的缓存一致性操作都需要在加速器和CPU之间进行协调。

CXL模型(右侧)呈现了一种非对称的协议,加速器可以直接与内存代理通信,从而减少了缓存一致性操作的复杂性。

其主要优势包括:

避免了协议互操作性的障碍,即不同技术间的兼容问题。
使设备能够拥有内存缓冲区而不承担一致性负担。
使得设备开发更简单,且处理器独立。
Coherence Bias
设备偏置(Device Bias):在这个模式中,加速器被设计为优先使用其本地内存,这样它就可以绕过主存(Host Memory)来访问数据,减少延迟和提高性能。
主机偏置(Host Bias):相反地,这种模式下,加速器被设计为与主存中的数据进行一致性交互,这通常适用于需要与CPU或其他I/O设备共享数据的场景。
两种管理模式或“偏置”确保了:

主机偏置下,页被主机和设备共享使用,保证了即使在软件出现错误或者设备在不预期的情况下访问内存时,也能保持数据的正确和一致。
设备偏置下,页被设备独占使用,这样即使出现预期之外的访问也能保持数据的正确和一致。
“一致性偏置”(Coherence Bias)允许设备引擎直接访问主机内存,而不需要协调处理器,从而保持高效访问而无需处理复杂的一致性协议。

四、CXL技术的应用


CPU Case (Memory Expansion)
CXL使得各个SOC可以共享外部CXL内存,提供在容量、延迟和持久性之间的权衡选择。包括:

DRAM(动态随机存取内存)
DRAM + 缓存
存储级内存
DDR/SCM(静态列存储)+ NVMe(非易失性内存快速接口)

GPU Cases (Memory Pooling)
(左)CXL内存池化允许系统灵活地为每个GPU分配所需的内存,尤其适用于那些对内存容量要求高于带宽需求的工作负载。通过使用CXL技术,可以将大型数据集存储在统一的内存空间内,这些数据可以在不同的加速器之间共享,而不会对主机系统的接口造成额外负担。在这种配置中,多个主机通过CXL开关组织连接到CXL内存池,而每个主机又连接到配备有高带宽内存的GPU,从而实现了数据处理和计算资源的高效分配与使用。

(右)CXL可使主机和GPU之间的扩展内存共享,未来的技术发展可能会允许这些扩展内存同时在多个主机以及主机和加速器之间共享。这种共享提供了在不同需求下的配置灵活性,同时简化了编程模型。CXL开关可以是局部的物理开关,或者是通过其他物理传输层的虚拟开关,从而使远程分散内存成为可能。

4.1、计算机系统中的应用
CXL可以用于计算机系统中的许多应用:

高性能计算:CXL可以提供低延迟、高带宽的协议,可用于连接CPU、GPU、FPGA等处理器,在高性能计算中提供更快的数据传输。
存储加速:CXL可以用于连接存储设备,如SSD和NVMe驱动器,以提供更快的存储访问速度。此外,CXL还可以与内存控制器集成,为存储加速提供更大的带宽。
人工智能:CXL可用于连接AI芯片,以提供更快的数据传输,从而提高AI工作负载的性能和效率。
网络加速:CXL还可以用于连接网络适配器,以提供更快的网络传输速度,从而提高网络应用程序的性能。


4.2、数据中心中的应用
在数据中心中,CXL可以应用于以下方面:

高性能计算:CXL可以提供比传统PCIe更快的数据传输速度和更低的延迟,从而提高高性能计算的效率和吞吐量。
存储加速:CXL可以将存储加速器与主机CPU直接连接,从而实现更快的数据访问和更高的IOPS,提高存储性能。
AI加速:CXL可以将AI加速器与CPU/GPU/FPGA等处理器直接连接,实现更快的模型训练和推理速度,提高人工智能应用的性能。
大规模虚拟化:CXL可以将多个CPU和内存资源组合成一个大规模虚拟化集群,从而提高资源利用率和灵活性,并降低虚拟化管理的复杂性。


4.3、人工智能领域中的应用
在人工智能领域中,CXL可以发挥以下作用:

提高数据传输效率:对于深度学习等任务,需要大量的数据传输和计算,在传统的PCIe互连中,由于数据传输速度慢,往返延迟高,会导致计算效率低下。而使用CXL互连,可以实现低延迟、高速的数据传输,提高计算效率。
加速模型训练:随着深度学习模型变得越来越复杂,需要更多的计算资源来进行训练。使用CXL互连,可以将CPU、GPU和其他加速器设备进行紧密协作,提高模型训练的速度和效率。
实现AI与物联网的集成:CXL技术可以使AI应用程序直接连接到物联网设备,实现更快速的数据处理和响应。这对于需要快速响应的实时应用程序非常重要。
降低能源消耗:CXL技术可以减少传输数据所需的功耗,同时还可以减少系统中的数据缓存,从而实现更高效的能源管理。

五、CXL技术与其他技术的对比

与PCIe、NVMe等技术的对比:

带宽:CXL的带宽比PCIe高得多,CXL 2.0标准最高可以达到32 GT/s,而PCIe 5.0的带宽通常只能达到16 GT/s(有些PCIe 5.x也能达到32 GT/s)。相比之下,NVMe是一种协议而非互连技术,其带宽取决于所使用的互连技术。
延迟:CXL和PCIe都具有低延迟的特点,但CXL在延迟方面稍微优于PCIe。NVMe协议在延迟方面表现良好。
功能:CXL支持内存扩展、缓存一致性和设备直接内存访问等功能,这些功能不是PCIe或NVMe所具备的。
应用场景:PCIe主要用于连接外部设备,如GPU、网卡和存储设备。NVMe主要用于连接固态硬盘。而CXL则更加灵活,可用于连接处理器、存储设备、网络适配器和其他外围设备,适用范围更广。
兼容性:由于CXL是相对较新的技术,许多旧设备可能无法与其兼容。PCIe则已经成为了一种通用的连接标准,并且得到广泛应用。
成本:目前来看,CXL硬件和设备的成本相对较高,而PCIe则更加普及和经济实惠。
CXL和CCIX都是用于连接不同芯片之间的高速互联标准,但它们在一些方面存在差异。以下是CXL与CCIX的主要对比:

性能:CXL标准提供了更高的带宽和更低的延迟,使其在高性能计算、机器学习、人工智能等领域中具有优势。而CCIX标准则专注于低功耗和高可靠性,适用于物联网、移动设备等场景。
兼容性:CXL标准基于PCI Express协议,因此与现有的PCIe接口兼容。而CCIX标准则需要使用新的物理层和控制层,在一定程度上限制了其兼容性。
应用场景:CXL标准适用于需要高性能和更强的内存扩展的场景,例如大型服务器集群和超级计算机。而CCIX标准则适用于需要低功耗和高可靠性的场景,例如数据中心、物联网、移动设备等。
支持的架构:CXL支持x86、Power和ARM等多种处理器架构。而CCIX则专注于ARM和Power架构,对于x86架构的支持有限。

六、实现CXL技术的挑战及解决方案

CXL技术的实现面临以下挑战:

复杂性:CXL技术的实现需要高度复杂的系统设计和集成,这意味着需要适应不同的硬件、软件和工具。
安全性:由于CXL技术涉及到底层硬件操作,并且可能涉及多个设备之间的数据共享,因此安全风险是一个重要考虑因素。需要采取适当的措施确保数据安全和隐私。
性能:CXL技术需要提供高速数据传输和低延迟,以满足对计算能力和存储能力的要求。这需要高效的协议和优化的硬件和软件设计。
兼容性:CXL技术需要与现有的接口和协议兼容,以支持旧设备和系统的升级。这需要适当的转换器和中间件。
为了解决这些挑战,可以采取以下方案:

标准化:制定统一的标准和规范,以确保不同厂商的设备和系统之间的兼容性和互操作性。
优化设计:通过优化硬件和软件设计,提高性能和安全性。例如,增加硬件加速、内存缓存和错误纠正功能。
管理数据共享:采取适当的措施来管理设备之间的数据共享,例如访问控制、认证和加密。
提供中间件:提供转换器和中间件,以支持现有系统的升级和兼容性。

七、结论

更广泛的应用场景:随着数据中心越来越重要,CXL技术将在更多的应用场景中得到应用,比如超级计算机、AI加速器、网络加速器、NVMe SSD等。
更高的带宽和更低的延迟:CXL技术支持更高的带宽和更低的延迟,这使得它在处理大规模数据时具有优势。
更好的内存扩展性:CXL技术允许多个设备共享同一块内存,这极大地提高了内存扩展性和灵活性,在大型计算集群和超级计算机中应用前景广阔。
更好的兼容性:由于CXL技术基于PCIe协议,因此与现有的PCIe接口兼容。这使得CXL技术具有更好的兼容性和可扩展性。
面向不同处理器架构:CXL技术可以支持x86、ARM和Power等不同的处理器架构,这为不同的系统提供了更多的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值