处理器互联:Gen-Z 终“认输”,并入CXL

据报道,Gen-Z 互连背后的推动者正在认输。资料显示,制造商 AMD、架构设计公司ARM、两家服务器供应商戴尔和 HPE、内存制造商美光和 FPGA 专家赛灵思自 2016 年以来一直在开发 Gen-Z,以便通过协议处理器、PCI- Express 内存和加速器进行通信。

Gen-Z vs CXL

然而,Gen-Z 联盟缺少两个重要的名字:英特尔和英伟达。虽然英伟达最终在 2020 年 8 月加入该联盟。但英特尔推出了相互竞争的互连 Compute Express Link (CXL),改联盟的支持者有阿里巴巴、思科、戴尔 EMC、Facebook、谷歌、HPE、华为和微软。

当 AMD、 ARM 、IBM、Nvidia 和 Xilinx 于 2019 年夏末加入Gen-Z联盟时,我们能明显察觉到它们将面临困难时期。两个财团随后相互合作——但自 2020 年 5 月以来没有发布任何新闻稿,Gen-Z也沉默了。现在,Gen-Z 想要完全停止自己的开发,将这个领域留给 CXL。

Gen-Z 并入 CXL

从CXL支持者提供的消息可以看到,GenZ的做法是希望将所有规格和资产转移到CXL联盟,但这仍需要各方的同意。值得一提的是,行业内仍有 CCIX 和 OpenCAPI与之竞争,但行业正在朝着 CXL 方向发展。

AMD 的 Infinity Fabric 专门用于将其自己的 Eypc 处理器与 Instinct 加速器耦合,就像 Nvidia 的 NV-Link 与 IBM 的 Power CPU 及其自己的 GPU 加速器(如 A100)一样。

英特尔即将推出的用于服务器的处理器系列 Sapphire Rapids 是第一代能够处理 CXL,它在第一次迭代中基于 PCI Express 5.0,但希望快速切换到 PCIe 6.0 以获得更高的传输速率。AMD 紧随其后的是 CPU 系列 Epyc 7004,别名 Genoa。三星已经宣布 CXL 内存扩展器为 PCIe DRAM。

前情提要:CXL与GEN-Z联手

从某种角度看,再现上世纪80年代末和90年代初的总线大战会很有趣。供应商之间为争夺他们所控制的标准而进行的斗争最终导致了PCI-X和PCI-Express总线的创建,这些总线以及分支InfiniBand interconnect在服务器领域占据了20年的主导地位,以及分支InfiniBand interconnect,它最初是作为一个通用的交换结构来连接高带宽和低延迟的所有东西。这可能要比其他情况下花费更长的时间——改写历史是很困难的。

但我们可以告诉你的是,我们在过去几个月里讨论过,那些经历过总线战争的勇士们已经从他们创造的历史中吸取了教训,他们不愿意在运输和协议方面进行旷日持久的战斗,这些协议为混合计算引擎提供了内存一致性。原因是我们没有时间听这些废话,而且随着全球经济很可能陷入衰退,我们更没有时间听这些鬼话和自我膨胀。

这就是为什么我们在同一周于去年9月在圣何塞举办了下一次I/O平台活动,这是一个愉快的巧合,而不是计划,所有关键一致性工作的成员——英特尔的Compute Express Link(CXL)、IBM的Concordent Accelerator Interface(CAPI)和OpenCAPI superset,Xilinx的Accelerators缓存一致性互连(CCIX)和AMD的Infinity Fabric、Nvidia的NVLink互连和Hewlett-Packard Enterprise的Gen-Z互连,以及戴尔早期大力支持的,所有这些都支持Intel的CXL协议互连,它本身就是PCI Express 5.0的超集,用于连接处理器和加速器并共享它们的内存。我们同时在这里做了一个非常深入的研究,这又是一个巧合。称之为调和收敛。

CXL和它的连贯内存互连被设计成将处理器与它们的加速器和系统内的内存类存储连接起来,Gen-Z最初被设计成一个内存结构,可以有许多不同的计算引擎挂在它上面,共享各种各样的内存。没有规定说CXL不能扩展到服务器的金属外壳之外,以在一个、两个或三个机架上的多个服务器节点上提供一致的内存访问(例如,就像GigaIO正在进行的PCI-Express交换互连一样)。同样,也没有规定Gen-Z不能用作服务器节点中的协议。嗯,根据经济学原理,CXL可能比Gen-Z更便宜,这主要是由于硅光子学涉及到长距离的相干性。(我们还深入研究了HPE在2019年9月编写的Gen-Z交换芯片,并且还审查了Gen-Z联盟正在原型化以创建池主内存的Gen-Z内存服务器。)

不过,根据Gen-Z联盟主席、戴尔服务器架构和技术主管Kurtis Bowman与CXL联盟主席、英特尔技术项目主管Jim Pappas签署的一份谅解备忘录,这两个可能交战的阵营已经埋下了仇恨。他们已经决定完全不使用任何hatchets,并努力使CXL和Gen-Z能够在适当的地方互操作和互连。具体来说,他们已经成立了一个联合工作组来解决这些分歧,努力使这些技术保持一致。(仔细想想,这似乎是合理的。)

Bowman和Pappas在过去的几个月里都和我们讨论过使用CXL作为服务器内部Gen-Z织物的潜在安装点,我们怀疑这就是他们如何分割Gen-Z硅的方法,直到Gen-Z硅大量生产出来。HPE Gen-Z芯片组的高带宽硅光子学将是Cadillac版本的连接服务器到内存(要么是原始的、聚合的内存,要么是加速器或协处理器内部的内存),而CXL端口将是Chevy版本,具有更短的距离和更低的带宽。

Pappas解释说:“两种方案的DNA中都有记忆。“使用CXL,你触及的范围有限,因为它基本上是PCI-Express。但有了Gen-Z,您就有了更大的距离——机架、行甚至数据中心。但归根结底,你有一个连贯的CPU接口,即CXL,然后Gen-Z让你把所有的接口都带到更远的地方,让它工作。”

目前还没有尝试合并传输或协议的说法,但从长远来看,如果CXL最终成为运行在各种硅光子学传输(包括但不限于Gen-Z)上的协议,我们不会感到惊讶。在某种程度上,PCI Express将不是系统总线,因此CXL不能无限期地绑定到该总线。但是,这是很多很多年以后的事了。

在CXL和Gen-Z的工作方式上存在一些差异,需要协调,以便它们能够正确地相互交谈。

Bowman解释说:“CXL是一个真正的硬件一致性设计,应用软件根本不需要意识到这一点。”“Gen-Z没有内置的硬件一致性,因此它正在寻找一个软件一致性模型,并使用原子等技术来实现这一点。如果您的应用程序想要跨越一个大的内存空间并共享特定的区域,则必须编写软件才能利用这一点。我们无法在硬件中实现Gen-Z一致性的原因是,连接到内存的机器之间的snoop循环将消耗大部分结构带宽。你可以两全其美。如果您需要硬件一致性互连,CXL是一种方法,如果您需要一种结构来共享机架内或跨行的资源,那么Gen-Z是一种方法。但这种一致性将在软件中实现。”

我们面临的问题是,谁将成为CXL和Gen-Z的开路先锋。当然,答案之一是微软及其庞大的Azure公共云。微软公司Azure云的杰出工程师Leendert van Doorn是CXL和Gen-Z联合体的董事会成员,他分享了一些他对这将如何工作的想法。

“我把CXL看作是一个本地的节点互连,”van Doorn说。“一旦你开始考虑分解(disaggregation)——特别是在机架级别上——你就需要去做别的事情,因为PCI Express 5.0没有扩展到那么远。是的,您可以构建重定时器,而且有些人过去曾经构建过基于PCI Express的结构,但他们遇到了一些挑战。这些都是Gen-Z已经解决和解决的挑战,我们现在讨论的实际上是CXL和Gen-Z之间的接口。现在,我们是否会看到在一个具有CXL的节点内以较小的规模进行分解?是的,当然。我们期待看到。但是,当您可以将其扩展到机架上或希望跨整个机器行进行扩展时,真正的分解收益就会发挥作用。那就是您需要研究另一种结构(fabric)技术的时候了。”

那么,微软如何在其基础设施中利用CXL和Gen-Z呢?van Doorn给出了一些提示,这些提示与我们一直以来的想法是一致的。例如,我们有基于机架的flash模块在NVM-Express上共享数据到一个服务器机架,我们可以有基于机架的主内存(持久的或动态的,我们不关心)在Gen-Z上共享数据。

“我的服务器大约50%的成本是内存,”van Doorn说。因此,如果我能更有效地使用这些内存,并在系统之间共享它们,就会有巨大的好处。所以你可以想象系统在节点上有一定量的内存,然后在服务器之间共享另一块内存,根据需要从池中取出。”

一切都会归结为延迟。van Doorn说,DRAM内存访问在节点内部大约80纳秒,而通过快速NUMA互连,对远程存储器的典型访问大约为135纳秒。虽然操作系统内核可以在一定程度上屏蔽这种影响,但它们是显而易见的。这就是为什么机架外的主内存池(即使使用Gen-Z)将更具挑战性,因为它们将增加额外的延迟-根据范围的不同,从数百纳秒到毫秒不等。但是,对于其他持久性介质(其固有速度比主存储器慢),由于该介质增加了设备延迟,使用Gen-Z这样的协议跨越许多机架、行甚至更远,因为Gen-Z结构互连将比设备快得多。而且Gen-Z的延迟比以太网或InfiniBand要低得多,从长远来看,这应该是row和数据中心级存储互连的首选结构。不管怎样,这就是理论。

最后,延迟和可替换性的相互作用将发挥出来,我们认为,一旦这些协议得到强化,设备出现,人们将试图在服务器节点中放置尽可能少的内存和存储,以摆脱并创建可组合池来扩展它。这将是最好的经济和技术意义。

另一个问题是,CXL和Gen-Z何时会成为数据中心基础设施的常规部分?Gen-Z开发工具现在已经可供联盟成员使用,Bowman说早期的采用者将在2022年上线,到2023年到2024年将成为主流。根据Pappas的说法,对于CXL,硅即将投入使用,它将在2020年进行调试,通常在那之后的一年才会投入系统。

Compute Express Link (CXL) 是一种开放式互连新标准,面向 CPU 和专用加速器的密集型工作负载,这些负载都需要在主机和设备之间实现高效稳定的存储器访问。最近宣布成立了一个支持该新标准的联盟,同时发布了 CXL 1.0 规范。本文介绍了片上系统 (SoC) 设计人员需要了解的一些 CXL 关键特性,以确定这种新的互连技术在其 AI、机器学习和云计算应用程序设计中的最佳使用和实现方式。

PCI Express (PCIe) 已经存在多年,最近完成的 PCIe 基础规范 5.0 版本现在能够以高达 32GT/s 的速度实现 CPU 和外设的互连。然而,在具有大型共享内存池和许多需要高带宽设备的环境中,PCIe 受到了一些限制。PCIe 没有指定支持一致性的机制,并且不能高效地管理隔离的内存池,因为每个 PCIe 层级都要共享一个 64 位地址空间。此外,PCIe 链路的延迟可能过高,无法高效管理系统中多个设备的共享内存。

CXL 标准通过提供利用 PCIe 5.0 物理层和电气元件的接口来消除其中一些限制,同时提供极低延迟路径,用于主机处理器和需要共享内存资源的设备(如加速器和内存扩展器)之间进行内存访问和一致缓存。支持的 CXL 标准模式主要围绕采用 x16 通道配置并以 32GT/s 运行的 PCIe 5.0 PHY(表 1)。x8 和 x4 通道配置也支持 32GT/s,以支持分叉。任何比 x4 通道窄或比 32GT/s 慢的模式都被称为降级模式,这类模式在目标应用中显然不常见。虽然 CXL 可以为许多应用带来立竿见影的性能优势,但是某些设备不需要与主机进行密切交互,而是主要需要在处理大型数据对象或连续流时发出工作提交和完成事件的信号。对于此类设备,在加速接口使用 PCIe 就很合适,而 CXL 没有明显优势。

CXL 标准定义了 3 个协议,这些协议在通过标准 PCIe 5.0 PHY 以 32 GT/s 传输之前一起动态复用:

CXL.io 协议本质上是经过一定改进的 PCIe 5.0 协议,用于初始化、链接、设备发现和列举以及寄存器访问。它为 I/O 设备提供了非一致的加载/存储接口。

CXL.cache 协议定义了主机和设备之间的交互,允许连接的 CXL 设备使用请求和响应方法以极低的延迟高效地缓存主机内存。

CXL.mem 协议提供了主机处理器,可以使用加载和存储命令访问设备连接的内存,此时主机 CPU 充当主设备,CXL 设备充当从属设备,并且可以支持易失性和持久性存储器架构。

三个协议产生的数据都通过仲裁和多路复用 (ARB/MUX) 模块一起动态复用,然后被移交到 PCIe 5.0 PHY,进而以 32GT/s 的速度进行传输。ARB/MUX 在 CXL 链路层(CXL.io 和 CXL.cache/mem)发出的请求之间进行仲裁,并根据仲裁结果复用数据,仲裁结果使用加权循环仲裁,权重由主机设置。ARB/MUX 还处理链路层发出的功耗状态转换请求,向物理层创建实现有序降耗操作的单个请求。

CXL 通过固定宽度的 528 位微片传输数据,该微片由四个 16 字节时隙组成,并添加了两个字节 CRC:(4 x 16 + 2 = 66 字节= 528 位)。插槽采用多种格式定义,可专用于 CXL.cache 协议或 CXL.mem 协议。片头定义了插槽格式,并携带允许事务层将数据正确路由到预期协议的信息。

由于 CXL 使用 PCIe 5.0 PHY 和电气元件,它可以有效地插入到任何可以通过 Flex Bus 使用 PCIe 5.0 的系统中。Flex Bus 是一个灵活的高速端口,可以静态配置为支持 PCIe 或 CXL。图 2 举例显示了 Flex Bus 链路。这种方法使 CXL 系统能够利用 PCIe 重定时器;但是,目前 CXL 仅定义为直连 CPU 链路,因此无法利用 PCIe 交换机。随着标准的逐步完善,交换功能可能会被添加到标准中;如果是这样,则需要创建新的 CXL 交换机。