分享

让英特尔傲腾凉凉的CXL 3.0,究竟是什么?

 爱极物 2022-08-03 发布于上海

在上周,英特尔正式确认了充满黑科技意味的傲腾业务和3D Xpoint走向终结,取而代之的是向CXL架构发展。事实上Compute Express Link(CXL)标准在提出之后,迅速成为服务器市场热捧的发展趋势之一,它的特点是能在PCIe标准基础上建立丰富的I/O功能集,改善设备之间的缓存一致性,更好的将服务器中的设备与CPU链接在一起,无论是DRAM这样的易失性存储,还是SSD这样的非易失性存储。

是的,CXL在设定之初就有着一条雄心勃勃的规划,极具战略的眼光让其在三年内成为服务器中被看好先进互联标准,甚至让Gen-Z、CCIX、OpenCAPI都退出了竞争,傲腾时代结束也变得顺利成章。

那么让傲腾业务彻底凉凉的CXL,究竟实现了一个什么样的互联想法?趁着2022闪存峰会CXL 3.0标准发布之际,不妨让我们花点时间聊聊CXL。

脱胎于PCIe 6.0

CXL联盟于2019年启动,英特尔作为发起人,联合了阿里巴巴、戴尔EMC、Facebook(Meta)、谷歌、HPE、华为和微软共同建立,随后AMD、Arm均加入其中。随着联盟的扩大化,Gen-Z联盟也确认将所有技术规格和资产转让给CXL,确保CXL作为行业标准向前推进。

虽然在标准制定上CXL具备了领先优势,但CXL联盟成员还有许多工作要做。特别是在产品方面,第一批原生支持CXL的x86 CPU几乎没有出货,大部分产品布局需要围绕英特尔即将发布的Sapphire Ridge至强处理器进行。

与此同时,CXL 3.0响应了设备供应商的需求,将比CXL 1.X版本提升了带宽,并将一些原本复杂的标准设计简单化,确保易用性。这是2020年CXL 2.0标准引入内存池和CXL开关功能之后较大的改动,CXL 3.0将侧重于物理和逻辑层面的升级,在物理层面,CXL将每通道吞吐量提升了一倍,达到64GT/s。在逻辑层面,CXL 3.0扩招了标准逻辑能力,允许更复杂的连接拓扑,以及一组CXL设备内可以灵活实现内存共享和内存访问。

相对于CXL 1.X和CXL 2.0建立在PCIe 5.0之上,CXL 3.0与PCIe 6.0规范进行合并,这也使得CXL 3.0成为标准建立以来第一次物理层更新。PCIe 6.0标准变化很大,它将总线上的可用带宽提升了一倍,也就是64GT/s,这意味着PCIe 6.0 x16的带宽可以达到128GB/s,PCIe的信号也由原来的二进制NRZ信号变成了四态的PAM4信号,并结合固定数据包FLIT接口实现传输,以避免速率翻倍之后不提升频率的情况。

顺带一提,在NVIDIA Ampere架构GeForce RTX 3080和3090高性能GPU的推广后,GDDR6X中所使用的PAM4信号在消费领域也已经获得了不少的认知。

CXL 3.0则正是基于PCIe 6.0标准进行的。它属于PCIe 6.0全带宽改进版,在提升总带宽的同时,也加入了向前纠错FEC等内容,根据CXL联盟的说法,CXL 3.0能够在不增加延迟的情况下完成所有工作,这是PCIe 6.0所面临的挑战之一,因为一旦进行纠错,就一定会增加进程的延迟,为此PCI-SIG特意增加了FEC方式来解决问题。从整体上来看,CXL 3.0与CXL 2.0延迟保持相同。

除了获得PCIe 6.0的基础更新,CXL联盟还调整了固定数据包FLIT的大小,原本的CXL 1.X和CXL 2.0使用了68 bytes数据包,在CXL 3.0直接升级到了256 bytes,给CXL 3.0引入的复杂拓扑提供了基础,另外CXL 3.0还引入了一种低延迟FLIT模式,通过将CRC分解成128 bytes的FLIT颗粒进行和传输,以减轻物理层中存储和转发的开销。

除此之外,CXL 3.0还支持32、16、8GT/s的低速率传输模式,以兼容早期CXL版本。

CXL 3.0特性:内存共享、多级拓扑

除了进一步提升整体I/O带宽,CXL 3.0还需要考虑到不同设备之间的高级互联协议。比如CXL 3.0中更新了具有缓存的一致性协议,当主机缓存数据无效的时候,设备还能正常运行。这意味着CXL 3.0取代了早起版本基于偏差一致性的方式。为了设计简单化,保持一致性不是通过共享内存空间实现,而是通过主机或者设备控制访问实现的。

相比之下,反向失效更接近真正的共享对称方式,在CXL设备发生更改的时候可以及时通知到主机。

在CXL 3.0中,设备可以直接访问彼此的内存,无需通过主机CPU,通过增强的一致性语义来通知彼此的状态。从延迟角度来看,双链接速度更快,并且也不会占用宝贵的主机带宽。

除了调整缓存功能,CXL 3.0也对主机与设备之间的内存共享进行了更新,CXL 2.0提供了内存池设计,多个主机可以对设备内存进行访问,但是每个主机都需要分配自己专属内存段。在CXL 3.0中国,内存共享变得更开放,多个主机可以拥有一个共享内存段的一致性副本,如果设备级别发生变化,可以使用反向失效来保持所有主机同步。

但这样的设计并不能完全取代CXL 2.0上的内存池设计,因为某些方案中,内存池设计往往更为奏效,因此CXL 3.0会同时支持这两种模式,进行混合匹配。

另外CXL 3.0消除了单个CXL端口下游的Type-1、Type-2设备数量限制,CXL 2.0只允许这些设备中出现一个根端口,而CXL 3.0没有类似的限制。这意味着现在CXL根端口无论是Type-1、Type-2还是Type-3都可以进行完全混合匹配设置,具体取决于系统构建者的目的。这意味着CXL 3.0能够将多个加速器连接到单个交换机,以提升密度,使得点对点传输功能更加有用。

CXL 3.0另一个特性是支持多级切换,允许单个交换机驻留在主机和设备之间,并允许多级交换机实现多层级交换,对网络拓扑种类和复杂性有更好的支持。即便只有两层交换机,CXL 3.0也能够实现非树状拓扑,比如环形、网状或者其他结构,对节点中的主机或设备没有任何限制。

新的内存和拓扑结构功能都可以在CXL联盟推行的全局结构连接内存(Global Fabric Attached Memory,GFAM)一起使用,GFAM通过进一步分解给主机的内存,将CXL内存扩展版Type-3理念提升到了一个新水平,因此GFAM设备在功能就是自己的共享内存池,主机和设备可以根据需求进行访问,其中GFAM可以同时拥有易失性存储和非易失性存储,也就是DRAM和SSD都装在一个模块内,最终实现类似傲腾的功能。

GFAM将使得CXL能够有效支持大型多节点设置,在范例列举中,CXL列举了在时下流行的MapReduce模型中如何提供了必要的性能和效率,尽管这套算法模糊了CXL本地互联和InfiniBand网络互联之间位置的界限。

鉴于CXL标准诞生并不久,CXL 1.X和CXL 2.0设备才刚开始交付,CXL 3.0距离实际的应用部署还有几年的时间,因此现在也没有实际的指导案例。但我们已经可以从中一窥整个业界正在向更为便宜、有效的方向前进,而非傲腾这种造价高昂的独占硬件解决问题。在IT硬件一轮又一轮的升级经验中,已经变成了永恒的道理。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多