CXL 3.1是一种计算机行业中的新规范,它对横向扩展CXL进行了结构改进、增加了新的可信执行环境功能,并对内存扩展器进行了改进。这个新规范在底层进行了许多重大更改,主要是为了解决团队构建更大的CXL系统和拓扑时发生的问题。
CXL 3.1的一项新功能是支持使用全局集成内存(GIM)通过CXL结构进行主机之间的通信,这可以大大提高系统性能。另一项重要的改进是通过CXL对.mem内存事务的直接P2P支持,这可以增加GPU内存的使用效率,对于处理大规模数据集和AI工作负载非常有帮助。
CXL 3.1还定义了基于端口的路由CXL交换机的Fabric Manager API,这使得结构管理器可能成为CXL生态系统的关键部分,因为它需要跟踪集群中发生的许多事情。此外,CXL 3.1的可信安全协议(TSP)是为了处理平台安全性而设计的,这对于云服务提供商的多租户虚拟机环境尤其重要。
在可扩展性方面,CXL 3.1仍然不足以满足当前的需求。尽管它可以连接数千个CXL设备,但当前的人工智能集群需要连接数万个加速器。因此,需要进一步扩展CXL以适应未来的需求。
总的来说,CXL是一种新的计算机行业标准,旨在提高系统(尤其是具有加速器的系统)的运行效率。它通过改进内存扩展器和增加新的功能来达到这个目标,并且未来还有很大的发展空间。
为什么在PCIe Gen3和Gen4时代没有使用CXL?
有几个原因导致在PCIe Gen3和Gen4时代没有使用CXL。首先,CXL直到2019年才被引入,而PCIe Gen3的过渡在2017年左右就已经开始。这意味着在CXL被引入之前,已经有许多系统开始采用PCIe Gen3。
其次,PCIe Gen5的快速采用是一个关键因素。业界花了大约七年时间从PCIe Gen3过渡到Gen4,而PCIe Gen5的过渡大约在Gen4之后的三年内完成。这种快速过渡使得PCIe Gen5成为CXL的理想基础,因为CXL需要高速链路来支持其功能。
要理解为什么PCIe Gen5的采用速度如此之快,我们需要考虑到它是如何提供足够的带宽来处理新一代用例的。特别是对于那些需要远程内存加载/存储的用例,PCIe Gen5提供了足够的带宽来满足这些需求。这使得PCIe Gen5成为CXL的理想之选,因为CXL旨在解决这些问题。
CXL使用三种主要协议来定义主机和设备之间的交互:
1.CXL.io协议用于初始化、链接、设备发现和枚举,以及寄存器访问。它为I/O设备提供非一致的加载/存储接口,类似于PCIe Gen5。
2.CXL.cache协议定义了主机(通常是CPU)和设备(例如CXL内存模块或加速器)之间的交互。这允许连接的CXL设备以低延迟缓存主机内存。
3.CXL.memory / CXL.mem是一种协议,它为主机处理器(通常是CPU)提供使用加载/存储命令直接访问设备附加内存的功能。
获取CXL上的端点需要使用CXL.io,但此后可以使用CXL.io以及CXL.cache和/或CXL.mem的三种组合中的任何一种。CXL人员使用类型1(CXL.io + CXL.cache)、类型2(全部三种)和类型3(CXL.io + CXL.mem)作为示例。这些不同类型的组合可以用于不同类型的设备和用例,例如加速器、GPU和内存模块等。