编程语言应用

注册

 

发新话题 回复该主题

系统内存的未来,属于CXL [复制链接]

1#

系统架构师通常对未来不耐烦,尤其是当他们看到好的东西即将到来时。因此,当谈到英特尔创建的ComputeExpressLink或CXL互连时,我们可以有一定的期待,因为该互连现在已经吸收了HewlettPackardEnterprise的Gen-Z技术和IBM的OpenCAPI技术。

在可预见的未来,CXL将成为跨计算引擎的内存结构标准。

CXL2.0规范在PCI-Express5.0外围互连中带来内存池(memorypooling),这很快将在CPU引擎上可用,这是伟大的。但是所有的目光都已经转向刚刚发布的CXL3.0规范,该规范建立在年推出的PCI-Express6.0互连之上,带宽是上一代的2倍。

人们也已经开始考虑CXL4.0,在PCIExpress7.0之上提供另一个2倍带宽。根据预测,这将于年推出。

在某种程度上,我们预计CXL将遵循IBM的“Bluelink”OpenCAPI互连所开辟的道路。“蓝色巨人”在“Cumulus”和“Nimbus”Power9处理器中使用Bluelink互连来提供跨多个处理器的NUMA互连,运行Nvidia的NVLink协议以提供跨Power9CPU和Nvidia“Volta”VGPU加速器的内存一致性,并通过OpenCAPI端口为其他类型的加速器提供更通用的内存连贯链接。

但显然,OpenCAPI和CXL的路径不会完全相同。OpenCAPI是kaput,CXL是数据中心内存一致性的标准。

IBM在“Cirrus”Power10处理器上放置了更快的OpenCAPI端口,它们用于提供与Power9芯片一样的NUMA链接,以及使用BluelinkSerDes作为内存控制器的新OpenCAPI内存接口。与DDR4或DDR5控制器相比,运行速度稍慢。但它占用的芯片空间要少得多,消耗的功率也更少——并且具有与芯片中的其他I/O完全相同的优点。

理论上,IBM可以支持在Power10上的OpenCAPI互连上运行CXL和NVLink协议,但Nvidia有一些我们不理解的酸葡萄——不提供与Nvidia当前的“Ampere”A和即将推出的“Hopper”HGPU相干的内存。在OpenCAPI和NVLink之间的信号速率和通道数方面,IBM和Nvidia之间可能存在阻抗不匹配。IBM在其Power10芯片上有PCI-Express5.0控制器——这些是独特的控制器,不是BluelinkSerDes——因此本可以支持CXL一致性协议,但据我们所知,蓝色巨人也选择不这样做.

鉴于我们认为CXL是许多GPU加速器及其内存将在未来链接到CPU的方式,IBM的这一策略似乎很奇怪。因此,我们正在推动IBM推出支持CXL2.0和NVLink3.0相干链路(coherentlinks)的Power10+处理器,以及更高的核心数和更高的时钟速度,这可能发生在一年或一年半之后。

鉴于其OpenCAPI内存的巨大优势,IBM没有理由无法获得部分AI和HPC预算,该内存通过24核双芯片模块驱动GB/秒的内存带宽。我们还预计未来来自Nvidia的数据中心GPU计算引擎将以某种方式支持CXL,但具体如何与NVLink并排或合并尚不清楚。

目前还不清楚HPE如何将Gen-Z知识产权捐赠给CXL联盟。但IBM上周捐赠给CXL指导组织的OpenCAPI知识产权将用于打造CXL4.0标准,这两家系统供应商正在给CXL方面提供他们必须力所能及的帮助。为此,他们应该受到赞扬。

换句话说,我们认为Gen-Z和OpenCAPI都远远领先于CXL,并且可以很容易地被用作节点内(in-node)和节点间(inter-node)内存和加速器结构。HPE已经设计了一套非常优雅的内存结构开关和光收发器,IBM是唯一一家在其BluelinkSerDes上提供跨NvidiaGPU的CPU-GPU一致性以及通过其OpenCAPI内存接口连接盒内或盒内内存的能力的CPU供应商。

我们相信Gen-Z和OpenCAPI技术将有助于使CXL变得更好,并改进所提供的一致性的种类。CXL最初提供了一种非对称一致性,其中CPU可以像本地一样读取和写入加速器中的远程存储器,但使用PCI-Express总线而不是专有的NUMA互连——这是一个巨大的过度简化——而不是拥有完整的缓存CPU和加速器之间的一致性,这会产生大量开销,并且会产生自身的阻抗不匹配,因为过去PCI-Express比NUMA互连要慢。

但正如我们之前指出的那样,随着PCI-Express的速度每两年左右翻一番,并且随着带宽的跳跃,延迟保持稳定,我们认为CXL很有可能成为一种通用的NUMA互连和内存控制器,就像IBM对OpenCAPI所做的那样,英特尔已经为CXL内存和CXLNUMA提出了这一建议,Marvell对CXL内存当然也是这么想的也是。这就是为什么在CXL3.0中,该协议提供了所谓的“增强的一致性”,这是另一种说法,它恰好是设备之间的那种完全一致性。

例如,Nvidia在一个NVSwitch网络或IBM在Power9CPU和NvidiaVoltaGPU之间提供。英特尔一开始不想做的那种完全一致性。这意味着支持CXL.memory子协议的设备可以通过CXL交换机或直接点对点网络直接访问彼此的内存,而不是不对称地访问。

CXL没有理由不能成为内存区域网络的基础,因为IBM在Power10芯片上通过其OpenCAPI内存的“memoryinception””实现创建了内存区域网络。正如英特尔和Marvell在他们的概念演示中所展示的那样,chippery和interconnects的调色板对于像CXL这样的标准是非常开放的,并且在许多向量上对其进行改进非常重要。行业让英特尔赢得了这一场竞争,从长远来看,我们会因此而变得更好。英特尔在很大程度上放弃了CXL,现在各种外部创新都可以承担。

英特尔将UniversalChipletInterconnectExpress推广为用于连接计算引擎插槽内的chiplet的标准也是如此。基本上,我们将生活在这样一个世界中:运行UCI-Express的PCI-Express连接插槽内的chiplet,运行CXL的PCI-Express连接节点内的插槽和芯片(这变得越来越短暂),并且PCI-Express交换结构跨越有朝一日,一些机架甚至一行可能会使用CXL将CPU、加速器、内存和闪存连接在一起,形成可分解和可组合的虚拟硬件服务器。

目前,即将出现的是在PCI-Express6.0传输之上运行的CXL3.0,以下是CXL3.0如何与之前的CXL1.0/1.1版本和当前在PCI-Express之上的CXL2.0版本叠加5.0运输:

当CXL协议在I/O模式下运行时——即所谓的CXL.io——它本质上与用于I/O设备的PCI-Express外围协议相同。CXL.cache和CXL.memory协议在PCI-Express传输之上添加缓存和内存寻址,并以PCI-Express协议的大约一半延迟运行。

举例而言,就像我们在年9月与英特尔交谈时所做的那样,CXL协议规范要求当缓存线丢失时对snoop命令的snoop响应必须低于50纳秒(引脚到引脚),而对于内存读取(引脚到引脚),延迟必须低于80纳秒。相比之下,在典型的X86服务器中,本地DDR4内存访问CPU插槽大约需要80纳秒,而NUMA访问相邻CPU插槽中的远程内存大约需要纳秒。

通过在PCI-Express6.0传输之上运行CXL3.0协议,所有三种类型的驱动程序的带宽都增加了一倍,而延迟没有任何增加。由于字节流控制单元或flit固定数据包大小(大于PCI-Express5.0传输中使用的64字节数据包),带宽增加到GB/秒x16通道(包括两个方向))和PAM-4脉冲幅度调制编码,可将PCI-Express传输上的每个信号的比特数加倍。PCI-Express协议结合使用循环冗余校验(CRC:cyclicredundancycheck)和三向前向纠错(FEC:three-wayforwarderrorcorrection)算法来保护通过线路传输的数据,这是一种比以前的PCI-Express协议更好的方法因此为什么选择PCI-Express6.0和CXL3。

CXL3.0协议确实具有低延迟CRC算法,该算法将Bflit分成B半flit,并在这些子flit上进行CRC检查和传输,这可以将传输延迟减少2纳秒到5纳秒之间。

CXL3.0带来的新功能是内存共享,这与CXL2.0提供的内存池不同。这是内存池的样子:

借助内存池,您可以在带有CPU的主机和带有自己内存的加速器的机箱之间使用CXL的PCI-Express交换机,或者只是原始内存块(有或没有结构管理器),然后分配加速器(及其内存)或根据需要分配给主机的内存容量。如上图右侧所示,如果您想硬编码PCI-Express拓扑以供它们链接,您也可以在所有主机和所有加速器或内存设备之间进行点对点互连,而无需交换机。

使用CXL3.0内存共享,设备上的内存可以同时与多个主机同时共享。下图显示了CXL3.0启用的设备共享内存和共享区域的一致副本的组合:

系统和集群设计人员将能够将内存池和内存共享技术与CXL3.0混合和匹配。CXL3.0也将允许多层交换机,这在CXL2.0中是不可能的,因此您可以想象具有各种拓扑和层的PCI-Express网络能够将各种设备和存储器捆绑到交换机结构中。在超大规模和云构建者中常见的Spine/Leaf网络是可能的,包括仅共享其缓存的设备、仅共享其内存的设备以及共享其缓存和内存的设备。(即CXL设备命名法中的Type1、Type3和Type2。)

CXL结构将是真正有用的,并且在3.0规范中启用。使用结构,您可以获得支持CXL的设备的软件定义的动态网络,而不是使用链接特定CXL设备的特定拓扑设置的静态网络。以下是在CXL2.0中无法实现的结构中实现的非树拓扑的简单示例:

这是整洁的一点。CXL3.0结构可以扩展到4,个CXL设备。现在,问问自己这个问题:世界上有多少大型ironNUMA系统和HPC或AI超级计算机拥有超过4,台设备?没有你想的那么多。因此,正如我们多年来一直在说的那样,对于特定类别的集群系统,无论节点在其内存中是松散耦合还是紧密耦合,运行CXL的PCI-Express结构几乎就是它们联网所需的全部。以太网或InfiniBand将仅用于与外界对话。我们也希望看到DRAM前端的闪存设备作为存储集群下的硬件作为快速缓存。(傲腾3DXPoint持久内存不再是一个选项.但对于某种形式的PCM存储器或另一种形式的ReRAM,总是有希望的。)

当我们坐在这里思考所有这些时,我们不禁思考内存共享如何简化HPC和AI应用程序的编程,特别是如果共享内存中有足够的计算来对数据进行一些集体操作处理,这就有各种有趣的可能性。.

无论如何,CXL结构将会很有趣,它将成为许多系统架构的核心。诀窍在于共享内存以降低DRAM的有效成本——微软Azure的研究表明,在其云上,内存容量利用率平均仅为40%左右,而运行的虚拟机中有一半从未触及超过一半从底层硬件分配给他们的管理程序的内存——通过CXL切换和具有内存的设备和作为内存的设备的可组合性带来的灵活性。

我们想要的,也是我们一直想要的,是以内存为中心的系统架构,它允许各种计算引擎在内存中共享被操作的数据,并尽可能少地移动这些数据。至少在理论上,这是提高系统能效的途径。几年之内,我们将在实践中对这一切进行测试,这确实令人兴奋。我们现在需要的只是两年前的PCI-Express7.0,我们可以享受一些真正的乐趣。

系统内存的未来主要是CXL

超大规模制造商和云构建者在其X86服务器中投入的最昂贵的组件是什么?它是GPU加速器,正确。因此,让我们以另一种方式问这个问题:在构成其大部分服务器机群的更通用、非加速服务器中,最昂贵的组件是什么?存储。

如果你计算一下随着时间推移的成本,大约十年前,CPU曾经占数据中心基础设施工作负载基本服务器成本的一半左右;HPC系统在内核上的强度更高,在内存上的强度更低。内存约占系统成本的15%,主板约占10%,本地存储(即磁盘驱动器)约占5%到10%,具体取决于您想要该磁盘的容量或速度。其余部分由电源、网络接口和机箱组成,在很多情况下,网络接口已经在主板上,因此除了公司想要更快的以太网或InfiniBand接口的情况外,成本已经捆绑在一起。

随着时间的推移,闪存被添加到系统中,服务器的主内存成本飙升至顶峰(但相对于其他组件的价格有所下降),随着AMD的重新进入,X86CPU又回到了竞争。因此,通用服务器的服务器成本饼中的相对切片大小在这里和那里扩大和缩小。根据配置,CPU和主内存各占系统成本的三分之一左右,而如今,内存通常比CPU更昂贵。对于超大规模和云建设者来说,内存绝对是最昂贵的项目,因为X86CPU上的竞争更加激烈,从而降低了成本。

有趣的是:据英特尔称,CPU仍占IT设备功耗预算的32%左右,内存仅消耗14%,外围设备成本约为20%,主板约为10%,磁盘驱动器约为5%。(我们推测,闪存是功耗预算派的外围部分)。包括计算、存储和网络在内的IT设备消耗的功耗不到一半,而电源调节、照明、安全系统和其他方面数据中心设施消耗了一半多一点,这给出了相当可怜的1.8的电源使用效率。典型的超大规模和云构建者数据中心的PUE约为1.2。

可以这么说,内存是一个很大的成本因素,并且由于许多应用程序受到内存带宽和内存容量的限制,将主内存与CPU以及实际上任何计算引擎分离,是我们所写的可组合数据中心的一部分很多在下一个平台。

原因很简单:我们希望来自芯片的I/O也是可配置的,这意味着,从长远来看,融合内存控制器和PCI-Express控制器,或者提出通用传输和控制器它可以根据插入端口的内容说出I/O或内存语义。IBM在Power10处理器上使用其OpenCAPI内存接口完成了后者,但我们认为随着时间的推移英特尔和其他公司将使用在PCI-Express传输之上运行的CXL协议执行前者。

芯片制造商Marvell不再试图将其ThunderX系列Arm服务器CPU销售到数据中心,但仍希望参与CXL内存游戏。为此,早在5月初,它就收购了一家名为TanzaniteSiliconSolutions的初创公司,用于其智能逻辑接口连接器,这是CPU和内存之间的CXL桥,将帮助打散服务器,并将其重新组合在一起方式——自下一个平台建立之前我们就一直在谈论的事情。Tanzanite成立于年,去年展示了第一个使用FPGA的服务器CXL内存池,因为它正在对其SLIC芯片进行最后润色。

“今天,内存必须通过内存控制器连接到CPU、GPU、DPU,”Marvell闪存业务部副总裁ThadOmura告诉TheNextPlatform。“这有两个问题。一是非常昂贵的内存要么未被充分利用,要么更糟糕的是,未被使用。在某些情况下,还有更多的未充分利用,而不仅仅是内存。如果您需要更多内存来处理大型工作负载,有时您会在系统中添加另一个CPU以提高内存容量和带宽,但该CPU也可能未得到充分利用。这实际上是第二个问题:这种基础设施无法扩展。如果不添加更多CPU,就无法向系统添加更多内存。

所以问题是这样的:你如何让内存成为可共享和可扩展的?”

正如Omura在上表中指出的那样,另一个问题是CPU上的内核数量比内存带宽增长得更快,因此内核的性能与为其供电的DIMM之间的差距越来越大,正如上面的MetaPlatforms数据所示.最后,除了一些科学项目之外,没有办法聚合内存并将计算移近它以便可以就地处理,这限制了系统的整体性能。

来自HewlettPackardEnterprise的GenZ、来自IBM的OpenCAPI以及来自Xilinx和Arm阵型的CCIX都是融合内存和I/O传输的竞争者,但从长远来看,显然英特尔的CXL已成为每个人都将支持的标准,且他已经获得了GenZ和OpenCAPI的支持。

“CXL获得了很大的吸引力,并且基本上与所有主要的超大规模厂商合作,帮助他们弄清楚如何部署这项技术,”Omura说。因此,对Tanzanite的收购(其价值未披露)于5月底完成。

借助SLIC芯片,Marvell将能够通过CXL扩展控制器以及比DIMM尺寸更大的更胖更高的扩展内存模块,帮助行业创建标准DIMM尺寸。(IBM已经用它的几代PowerSystems服务器和他们自己开发的“Centaur”:缓冲内存控制器完成了后者。)

Omura说,CXL内存要做的第一件事就是打开现代处理器上DRAM和PCI-Express控制器的内存带宽,我们同意这个观点。

如果您现在有一个系统并且您在其内存插槽中设置了带宽,您可以通过为每个内存通道添加两个DIMM来增加容量,但是每个DIMM获得一半的内存带宽。但是随着使用SLIC芯片向系统添加CXL内存DIMM,您可以使用大部分PCI-Express总线为系统添加更多内存通道。

诚然,来自PCI-Express5.0插槽的带宽没有芯片上的DRAM控制器那么高,延迟也没有那么低,但它可以工作。在某些时候,当PCI-Express6.0推出时,某些类别的处理器可能不需要DDR5或DDR6内存控制器,DDR控制器可能会变成奇特的部件,就像HBM堆叠内存是奇特的并且只用于特殊的用例。希望CXL内存超过PCI-Express5.0和6。0不会比通过NUMA链接到多插槽系统中的相邻插槽更糟糕(如果有的话),而且一旦CXL端口实际上是系统和DDR上的主内存端口,它可能更不麻烦和HBM是专用的、奇异的内存,仅在必要时使用。至少这是我们认为可能发生的事情。

CXL内存扩展只是这一演变的第一阶段。不久之后,像Marvell的SLIC之类的CXL芯片将被用于创建跨多种(通常是不兼容的)计算引擎的共享内存池,甚至更进一步,我们可以期待CXL交换基础设施创建一个不同类型的存储设备和不同类型的计算引擎之间的可组合结构。像这样:

在Marvell的完整愿景中,有时XPU上会有一些本地内存——X是指定CPU、GPU、DPU等的变体——而PCI-Express上的CXLink将连接到内存模块它已在其上集成计算以执行专门的功能——您可以打赌,Marvell希望使用其定制处理器设计团队来帮助超大规模、云构建者和其他任何拥有合理容量的人将计算放在内存上并将其链接到XPU。Marvell显然也热衷于使用它通过Tanzanite收购获得的CXL控制器来创建具有原生CXL功能和可组合性的SmartNIC和DPU。

然后,几年后,正如我们多次谈到的那样,我们将在数据中心机架内获得真正的可组合性,而不仅仅是GPU和通过PCI-Express工作的闪存。但跨越各种计算、内存和存储。

Marvell已经拥有数据中心服务器和机架架构所需的计算(OcteonNPU和定制的ThunderX3处理器)、DPU和SmartNIC、电光、重定时器和SSD控制器,现在Tanzanite为其提供了一种供应方式CXL扩展器、CXL光纤交换机和其他芯片共同构成了Omura所说的“数十亿美元”的机会。

这是Tanzanite被创造出来追逐的机会,以下是它在Marvell交易之前设想的原型用例:

我们认为,只要DRAM内存的价格稍微下降一点,上述这些机器中的每一台都会卖得很好。内存还是太贵了。

CXL3.0标准发布,速度翻番

虽然在技术上仍然是新事物,但用于主机到设备连接的ComputeExpressLink(CXL)标准已迅速在服务器市场占据一席之地。

据报道,该标准旨在提供建立在现有PCI-Express标准之上更丰富的I/O功能集,其最显著的是优势在于设备之间的缓存一致性。从相关组织处获悉,CXL的主要应用方向是把CPU连接到服务器中的加速器,但希望能够在物理上仍然是通过PCIe接口上连接DRAM和非易失性存储。

这是一个雄心勃勃但得到广泛支持的路线图,在短短三年内使,CXL便成为事实上的先进设备互连标准,这就导致竞争对手标准Gen-Z、CCIX以及截至昨天的OpenCAPI都退出了竞争。

虽然CXL联盟在赢得互连战争后快速取得胜利,但联盟及其成员还有很多工作要做。假如在产品方面,第一批带有CXL的x86CPU几乎没有出货——这很大程度上取决于你所说的英特尔SapphireRidge芯片所处的边缘状态。

来到功能方面,设备供应商要求获得比比CXL的原始1.x版本更多的带宽和更多的功能。赢得互连战争使CXL成为互连之王,但在此过程中,这意味着CXL需要能够解决竞争对手标准设计的一些更复杂的用例。

为此,在本周的年闪存峰会上,CXL联盟在展会上宣布了CXL标准的下一个完整版本CXL3.0。这是继年底发布2.0标准并引入了内存池和CXL开关等功能之后的一次重要更新。

报道指出,CXL3.0侧重于互连的几个关键领域的重大改进。第一个是物理方面,CXL将其每通道吞吐量翻了一番,达到64GT/秒。同时,在逻辑方面,CXL3.0大大扩展了标准的逻辑能力,允许复杂的连接拓扑和结构,以及在一组CXL设备内更灵活的内存共享和内存访问模式。

CXL3.0:建立在PCI-Express6.0之上

首先,我们从物理方面开始了解新版本的CXL技术。资料显示,新版本的标准提供了期待已久的更新,以合并PCIe6.0。CXL之前的两个版本,也就是1.x和2.0,都是建立在PCIe5.0之上的,所以这是自年CXL推出以来,其物理层的首次更新。

PCIe6.0本身是对PCI-Express标准内部工作的重大更新,它再次将总线上的可用带宽量翻了一番,达到64GT/秒,对于x16卡来说,这可以达到GB/秒。据报道,这个速度是通过将PCIe从使用二进制(NRZ)信号转换为四态(PAM4)信号并结合固定数据包(FLIT)接口来实现的。借助这种方法,能使其速度翻倍而不会在更高频率下运行的缺点。由于CXL反过来构建在PCIe之上,这意味着需要更新标准以应对PCIe的操作变化。

CXL3.0的最终结果是它继承了PCIe6.0的全部带宽改进——以及前向纠错(FEC)等所有有趣的东西——与CXL2.0相比,CXL的总带宽增加了一倍。

值得注意的是,根据CXL联盟的说法,他们能够在不增加延迟的情况下完成所有这些工作。这是PCI-SIG在设计PCIe6.0时面临的挑战之一,因为必要的纠错会增加进程的延迟,导致PCI-SIG使用低延迟形式的FEC。尽管如此,CXL3.0在尝试减少延迟方面更进了一步,导致3.0具有与CXL1.x/2.0相同的延迟。

除了基本的PCIe.60更新之外,CXL联盟还调整了他们的FLITsize。CXL1.x/2.0使用了一个相对较小的68字节数据包,而CXL3.0将其增加到了字节。更大的FLITsize是CXL3.0的关键通信变化之一,因为它在headerFLIT中为标准提供了更多位,而这些位又是启用3.0标准引入的复杂拓扑和结构所必需的。尽管作为一项附加功能,CXL3.0还提供了一种低延迟“变体”FLIT模式,该模式将CRC分解为字节“sub-FLITgranulartransfers”,旨在减轻物理层中的存储和转发开销.

值得注意的是,字节的FLIT大小使CXL3.0与PCIe6.0保持一致,后者本身使用字节的FLIT。和它的底层物理层一样,CXL不仅支持在新的64GT/秒传输速率下使用大型FLIT,而且还支持32、16和8GT/秒,本质上允许新协议功能以更慢的传输速率使用.

最后,CXL3.0完全向后兼容早期版本的CXL。因此,设备和主机可以根据需要降级以匹配硬件链的其余部分,尽管在此过程中会失去更新的功能和速度。

CXL3.0特性:增强的一致性、内存共享、多级拓扑和结构

除了进一步提高整体I/O带宽外,上述针对CXL的协议更改也已实施,以支持标准内的新功能。CXL1.x是作为(相对)简单的主机到设备标准而诞生的,但现在CXL是服务器的主要设备互连协议,它需要扩展其功能以适应更高级的设备,并最终适应更大的用例。

从特性级别开始,这里最大的新闻是该标准更新了具有内存的设备的缓存一致性协议(Type-2和Type-3,用CXL的说法)。正如CXL所说,增强的一致性允许设备支持使主机缓存的数据无效。这取代了CXL早期版本中使用的基于偏差的一致性方法,为了保持简洁,保持一致性不是通过共享内存空间的控制,而是通过让主机或设备负责控制访问。相比之下,Backinvalidation更接近真正的共享/对称方法,允许CXL设备在设备进行更改时通知主机。

包含Backinvalidation也为设备之间的新对等连接打开了大门。在CXL3.0中,设备现在可以直接访问彼此的内存,而无需通过主机,使用增强的一致性语义来通知彼此它们的状态。从延迟的角度来看,跳过主机不仅速度更快,而且在涉及交换机的设置中,这意味着设备不会通过请求占用宝贵的主机到交换机带宽。虽然我们稍后会进入拓扑,但这些变化与更大的拓扑密切相关,允许将设备组织成虚拟层次结构,其中层次结构中的所有设备共享一个一致性域。

除了调整缓存功能外,CXL3.0还对主机和设备之间的内存共享进行了一些重要更新。CXL2.0提供了内存池,其中多个主机可以访问设备的内存,但必须为每个主机分配自己的专用内存段,而CXL3.0引入了真正的内存共享。利用新的增强一致性语义,多个主机可以拥有一个共享段的一致副本,如果设备级别发生变化,可以使用反向失效来保持所有主机同步。

然而,应该注意的是,这并不能完全取代池化。在某些用例中,CXL2.0风格的池更可取(保持一致性需要权衡取舍),并且CXL3.0支持根据需要混合和匹配这两种模式。

CXL3.0进一步增强了这种改进的主机设备功能,消除了之前对可以连接到单个CXL根端口下游的Type-1/Type-2设备数量的限制。

CXL2.0只允许这些处理设备中的一个出现在根端口的下游,而CXL3.0则完全解除了这些限制。现在,CXL根端口可以支持Type-1/2/3设备的完全混合匹配设置,具体取决于系统构建者的目标。值得注意的是,这意味着能够将多个加速器连接到单个交换机,提高密度(每个主机更多的加速器),并使新的点对点传输功能更加有用。

CXL3.0的另一大特性变化是支持多级切换。这建立在CXL2.0的基础上,该版本引入了对CXL协议交换机的支持,但仅允许单个交换机驻留在主机及其设备之间。另一方面,多级交换允许多层交换机——也就是说,交换机馈入其他交换机——这极大地增加了所支持的网络拓扑的种类和复杂性。

即使只有两层交换机,这也足以实现非树状拓扑结构,例如环形、网状结构和其他结构设置。并且各个节点可以是主机或设备,对类型没有任何限制。

同时,对于真正奇特的设置,CXL3.0甚至可以支持主干/叶架构,其中流量通过顶级主干节点路由,其唯一工作是将流量进一步路由回包含实际主机的低级(叶)节点/设备。

最后,所有这些新的内存和拓扑/结构功能都可以在CXL联盟所称的全球结构附加内存(GFAM)中一起使用。简而言之,GFAM通过进一步分解来自给定主机的内存,将CXL的内存扩展板(Type-3)理念提升到了一个新的水平。在这方面,GFAM设备在功能上是它自己的共享内存池,主机和设备可以根据需要访问它。GFAM设备可以同时包含易失性和非易失性存储器,例如DRAM和闪存。

反过来,GFAM将使CXL能够有效地支持大型多节点设置。正如Consortium在他们的一个示例中使用的那样,GFAM允许CXL3.0为在CXL连接的机器集群上实施MapReduce提供必要的性能和效率。当然,MapReduce是一种非常流行的用于加速器的算法,因此扩展CXL以更好地处理集群加速器常见的工作负载是标准的下一步明显(并且可以说是必要的)。尽管它确实模糊了CXL等本地互连的结束位置和InfiniBand等网络互连的开始位置之间的界限。

最终,最大的区别可能是支持的节点数量。CXL的寻址机制,联盟称之为基于端口的路由(PBR),最多支持2^12(4)个设备。因此,CXL设置只能扩展至此,尤其是当加速器、附加内存和其他设备迅速占用端口时。

总结一下,完整的CXL3.0标准将于今天,即FMS的第一天向公众发布。官方上,该联盟没有提供任何关于何时期望CXL3.0出现在设备中的指导——这取决于设备制造商-但有理由说它不会马上。随着CXL1.1主机刚刚交付——更不用说CXL2.0主机——CXL的实际产品化比标准落后几年,这对于这些大型行业互连标准来说是典型的。

分享 转发
TOP
发新话题 回复该主题