两年前,在AI迅猛发展的浪潮席卷数据中心之前,CXL被视为解决异构计算、内存池化和可组合服务器架构问题的方案,被寄予厚望,被视为数据中心的救世主。众多现有参与者和新兴企业纷纷将CXL纳入产品规划,或基于CXL开发全新产品,例如内存扩展器、池化器和交换机。然而,时至2023年末和2024年初,许多项目悄然搁浅,许多超大规模云服务商和大型半导体公司也几乎完全转向其它方向。
随着Astera Labs的上市和新产品的推出,CXL再次回到了人们的视野。尽管CXL在理论上拥有巨大的潜力,但数据中心格局已经发生了重大变化,而CXL控制器和交换机等硬件仍然没有实现大规模出货。尽管如此,围绕CXL的喧嚣和研究仍在继续,一些业内人士甚至开始推动CXL成为AI发展的“助推器”。
CXL市场能否迎来爆发式增长并兑现当初的承诺?CXL能否成为AI应用的互联方式?它将在CPU连接扩展和池化中扮演什么样的角色?
简单的答案是否定的,将CXL推广为AI的“推动者”是完全错误的。
让我们快速回顾一下CXL的主要应用场景和承诺。
CXL快速概述
CXL是建立在PCIe物理层之上的协议,可以实现设备之间的缓存和内存一致性。利用广泛存在的PCIe接口,CXL允许内存在各种硬件上共享:CPU、NIC和DPU、GPU和其它加速器、SSD和内存设备。
这使以下应用场景成为可能:
- 内存扩展:CXL可以帮助增加服务器的内存带宽和容量。
- 内存池化:CXL可以创建内存池,其中内存被从CPU中解耦出来,理论上可以大幅提高DRAM的利用率。从理论上讲,这可以为每个云服务商节省数十亿美元。
- 异构计算:ASIC比通用CPU更高效。CXL可以通过为ASIC和通用计算提供低延迟的缓存一致性互连来帮助实现异构计算,从而使应用程序更容易地将它们集成到现有的代码库中。
- 可组合服务器架构:服务器被解耦成各种组件,并放置在组中,这些资源可以动态地分配给工作负载,从而提高资源浪费率和利用率,同时更好地匹配应用程序需求。
下图展示了部分情况:CXL可以解决主系统内存和存储之间的延迟和带宽差距,从而实现新的内存层。
一些人现在预测,到2028年,CXL销售额可能高达150亿美元,而目前只有几百万美元,因此我们认为是时候对CXL市场进行适当的更新了,因为这是一个完全荒谬的说法。
让我们首先讨论一下CXL在人工智能中的应用案例。
CXL不会成为AI时代的互联方式
目前,CXL的可用性是主要问题,因为Nvidia的GPU不支持它,而且与AMD的技术仅限于MI300A。虽然MI300X在硬件上理论上可以支持CXL,但并未适当地暴露出来。CXL IP的可用性将在未来得到改善,但存在比可用性更深层次的问题,这使得CXL在加速计算时代变得无关紧要。
两个主要问题与PCIe SerDes和芯片的边缘区域有关。芯片的IO通常必须来自芯片的边缘。Nvidia提供的下图以卡通化的形式展示了H100。中心是所有的计算。顶部和底部100%专用于HBM。随着我们从H100向B100迈进,HBM的数量增加到8个,需要更多的芯片边缘区域。Nvidia继续将他们的2个die包的两个完整边缘用于HBM。
剩下的两个边缘专用于其它芯片之间的IO,这就是标准和专有互连在die面积上竞争的地方。H100 GPU有3种IO格式:PCIe、NVlink和C2C(用于连接到Grace)。Nvidia决定只包括最低限度的16条PCIe通道,因为Nvidia更倾向于后两者NVLink和C2C。请注意,服务器CPU(如AMD的Genoa)最多可达128条PCIe通道。
这种选择的主要原因是带宽。16条PCIe通道接口在每个方向上有64GB/s的带宽。Nvidia的NVlink为其它GPU带来每个方向450GB/s的带宽,大约高出7倍。Nvidia的C2C也为Grace CPU带来每个方向450GB/s的带宽。公平地讲,Nvidia将更多的芯片边缘区域专用于NVLink,因此我们需要在这个方程中包括芯片面积;但即使如此,我们估计,在大量不同类型的SoC上,像Nvidia NVLink、Google ICI等以太网风格的SerDes每单位芯片边缘区域的带宽约高出3倍。
因此,如果你是一个在带宽受限的世界中设计芯片的芯片设计师,那么当你选择使用PCIe 5.0而不是112G以太网风格的SerDes时,你的芯片大约会变得差3倍。这种差距在下一代GPU和AI加速器采用224G SerDes时仍然存在,与PCIe 6.0 / CXL 3.0保持这种3倍差距。我们处于一个受制于引脚数量的世界,放弃IO效率是一个疯狂的折衷。
AI集群的主要扩展和扩展互联方式将是专有协议,如Nvidia NVlink和Google ICI,或以太网和Infiniband。即使在规模扩大的模式中,这种劣势也是由于固有的PCIe SerDes限制。由于延迟目标的分歧,PCIe和以太网SerDes具有截然不同的比特误码率(BER,bit-error-rate)要求。
PCIe 6要求BER <1e-12,而以太网要求1e-4。这种8个数量级的巨大差异是由于PCIe的严格延迟要求,需要一种极轻量级的前向纠错(FEC,forward error correction)方案。FEC在发送器处以数字方式添加冗余奇偶校验位/信息,接收器用于检测和纠正错误(位翻转),就像内存系统中的ECC一样。更重的FEC会增加更多的开销,占据本应用于数据位的空间。更重要的是,FEC会在接收器端增加大量延迟。这就是为什么直到Gen6,PCIe都避免使用任何FEC的原因。
以太网风格的SerDes受到的严格PCIe规范限制要少得多,使其速度更快,带宽更高。因此,NVlink的延迟更高,但在大规模并行工作负载的AI世界中,这并不重要,~100ns vs ~30ns不值得考虑。
MI300 AID将其大部分芯片边缘区域用于PCIe SerDes而不是以太网风格的SerDes。虽然这给了AMD在IFIS、CXL和PCIe连接方面更多的可配置性,但结果是总IO约为以太网风格SerDes的1/3。如果AMD希望在与Nvidia的B100的竞争中有所作为,他们需要立即放弃PCIe风格的SerDes,转向AI加速器。我们相信他们将在MI400上做出这样的改变。
长期以来,AMD缺乏高质量SerDes严重限制了其产品的竞争力。他们提出了Open xGMI/Open Infinity Fabric/Accelerated Fabric Link,因为CXL不是适用于AI的正确协议。虽然它主要基于PCIe,但为了市场推广、性能、一致性和可达性的原因,它舍弃了PCIe 7.0和CXL的一些标准特性。
CXL对AI的内存带宽扩展有什么影响?定制AI超大规模云计算芯片采用情况如何?其它供应商的其它定制硅芯片(如Marvell Google CXL芯片)又如何?我们将解答这些问题,并审查更经典的内存池化和内存扩展应用场景。
0 comments:
New comments are not allowed.