查看原文
其他

CXL联盟的最新更新(联盟主席 Siamak Tavallaei)

常华Andy Andy730 2024-03-16

Source: CXL Consortium Update with Siamak Tavallaei, March 8, 2023


我将谈谈CXL联盟本身,它是如何形成的以及输出是什么。基本上,CXL联盟有15名董事会成员、9家发起人公司、几家贡献公司,董事会现在已经建立,名单上有15名董事会成员。今天上午作为董事会会议的一部分,Larrie当选为CXL联盟的总裁。CXL已证明自己是用于高速低延迟互连的事实上的行业标准协议。在这段旅程中,Gen Z和OpenCAPI决定将其规范迁移到CXL,这些规范可供CXL团队成员合并到新功能中。


让我介绍一下什么是CXL技术,并为您提供一些关于CXL 3.0的花絮和一些有趣的事情。许多工作通常是作为CXL联盟在工作组、董事会内的一部分完成的。并且有两大要素技术工作组和营销工作组直接向董事会报告目录,但他们有非常活跃的工作流程和工作组。或者发生的事情是用例被识别,对用例的响应变成来自不同公司成员不同贡献者的提案,他们被辩论,最终发明一个解决方案或从这些讨论中出现并被放入规范中。我将与大家分享的早期幻灯片中的大部分是技术工作组和不同技术工作组的输出。在演讲结束时,我还有一些来自营销工作组的报告,这些报告基于该行业已经完成的工作。


CXL的概念始于过去早期的互连。不同类型的互连朝着不同的方向发展。发起人类型的公司聚在一起,最终同意生产相同的规格。一套规范供所有人使用。在2019年3月,CXL 1.0被建立,然后不同的公司与15家成员公司聚集在一起,发布了带有合规性章节的CXL 1.0。2020年11月是CXL 2.0发布的时间。最近,在8月作为Flash Memory峰会的一部分,CXL 3.0发布。我们有240多家成员公司。这很好地证明了CXL技术的实用性。


简而言之,CXL有一个非常简单的方法。根据已建立的PCIe技术,CXL.io使用的协议之一基本上与PCIe的功能相似。但随后CXL也引入了两种高速低延迟协议,CXL.mem和CXL.cache。所有三种协议使用相同的物理层,即物理链路层。对于不同的用例,有三种不同的协议。对于CXL.mem、CXL.cache,预期数据在200纳秒内移动,而批量移动CXL.io可能需要更长的时间。但是它还能够移动更大的内存。CXL的另一个方面是,为了使设备更快地出现,将负担放在主机端,因此在缓存一致性协议上,主机会完成大部分工作。该模型是不对称的。大部分工作由主机完成,因此设备可以很简单。当我们把所有这些放在一起,使用它,CXL.mem,CXL.cache,我们创建了一个融合内存。通过聚合内存,可以想象一个软件可以在主机上运行,而无需太多工作。它可以移植到加速器上运行,它们可以共享相同的内存区域,既可以作为主机内存的一部分,也可以作为设备内存的一部分。这是一种效率提升,减少了为需要加速器的应用程序(如GPU)移动数据所需的时间和功耗。


考虑到我提到的CXL.io、CXL.mem和CXL.cache的三种不同的协议,那么我们可以想到三种类型的设备,我们简单地称它们为Type1、Type2和Type3。Type1设备是实现CXL.cache的设备。一个很好的例子可能是NIC甚至存储控制器。希望启动指向主机内存的循环,因此设备使用CXL.cache来访问主机内存,并在缓存一致性模型中,硬件负责两个设备之间的缓存坐标。仅支持CXL.men的设备是Type3设备,它的行为类似于内存,这些设备中的每一个仍然必须实现CXL.io以进行编程和响应中断或生成中断。Type3设备实现CXL.mem并接收CXL.mem周期,而CPU启动CXL.map。本质上,CXL设备可以启动CXL.cache,例如Type1设备,处理器启动发往Type3设备的CXL.mem。现在,您可以想象一个设备可以是具有本地内存的加速器,也可以是实现所有三种协议中的三种的 Type 2 设备,即用于编程和移动批量数据的 I/O CXL.cache 用于缓存设备启动的周期,CXL.mem 用于设备从主机 CPU 接收内存周期。


如果您还记得CXL 2.0引入了四个主要功能。我创建了一层切换,一层用于扇出的切换。一台主机可能有一个或多个端口,在每个端口上,您可以有一个交换机,该交换机可以有多个downstream端口。因此,即使使用CXL 2.0,也可以创建许多以扇出方式连接到的设备。这些设备可能是持久内存类型的设备。要启用持久内存,将所有队列刷新到持久存储中非常重要。因此,创建一个全局持久刷新概念非常重要。这是一个主要的用例。一旦设备离CPU较远,因此确保它们的安全非常重要。因此,加密模型是作为IDE协议的一部分创建的,就像PCIe所做的那样。当您将它们放在一起时,也可以通过引入多逻辑设备来创建内存池系统。该图显示了单个逻辑设备SLD。所有这些设备都可以专用于一台主机。他的模型专用于主机之一,一个设备可以将其内存段细分为多个区域,每个区域可以专用于不同的处理器。这是一种多逻辑设备。CXL 2.0交换机可能有多个多逻辑设备或多个SLD设备连接到它。


CXL 3.0添加了更多功能,主要围绕结构功能、增强的交换功能。我将逐一介绍它们,然后描述可以使用CXL结构管理器管理的多头设备(如MLD),并介绍适用于近内存计算的主题。CXL 3.0的特殊功能之一是它的比特率将比特率从每秒32GB传输翻倍到每秒64次传输,使用PCIe Gen6物理层的bound 4。在增强的交换功能方面,一个重要因素是加速器与存储设备或加速器与NIC或存储设备之间的对等通信能力。这是CXL 3.0作为交换机扇出的一部分提供的一项特殊功能CXL 2.0只允许将一个CXL.cache设备连接到交换机,但它确实允许扇出多个CXL.mem设备,或者CXL 3.0现在存在用于连接多个CXL.cache设备或多个CXL.mem设备的功能。CXL 3.0不限于只有一层开关,可以级联。我有几个图表来说明这一点。在结构功能下,当您可以互连多个交换机时,您可以想象不同的结构拓扑,这些拓扑允许启用计算解耦,一旦计算机隔离成为可能,就可以将它们全部重新组合在一起,并从解耦单元中创建可组合的内存系统。对于结构设备、结构交换机和结构连接的设备,要正常工作,需要一层管理。因此,CXL结构管理器增强了CXL结构管理器的功能,作为CXL 3.0规范的一部分,以增强功能。在所有这些方面,CXL以完全向后兼容而自豪,因为CXL 3.0规范允许CXL1.1、1.0、2.0或3.0。所有这些都插入到同一个结构、同一个交换机中。一些交换机可能提供也可能不提供所有功能,这是允许的。这提供了投资保护,如果有人已经开始设计和产品化特定的硅解决方案,那么它最好是背板和与规范向前兼容的。


问:向后兼容性是所有内容是否都恢复到链上最旧设备的功能,或者每个设备都有自己独立的连接,其中一个以1.0运行,另一个可以在2.0运行。

答:所有这些都是可能的。CXL提供了许多强制性要求,如果设备声称是CXL 2.0或3.0,则必须遵循某些强制性功能集,但有许多可选功能,设备制造商可能会选择某些CXL 2.0功能某些但不是全部CXL 3.0功能。在所有这些情况下,设备中的功能位将报告该设备在链路协商期间能够执行的操作,当根端口直接连接到处理器或交换机的下游端口时,它们可以连接到设备作为他们协商的设备在功能位上,他们选择比特率,选择宽度选择功能并选择他们运行的协议类型CXL.io、CXL.mem、CXL.cache,许多其他功能都在功能位内。作为设备的一部分更坚固的部件发现和枚举去读取所有功能位,并基于这些位启用其他功能,因此设备已实现的内容和固件已启用的内容的组合创建一组完整的特定设备,用于一个环境或另一个设备可能能够运行高级功能,但如果固件没有实现它,或者驱动程序没有驱动程序或某些选择不启用它的软件,他们可以关闭它们而不使用它


问:这是端到端协商还是端口到端口协商

答:它从链接开始。因此,这是一个点对点端口到端口的协商,但如果它是一个大型系统,则整个系统必须在整个端到端中工作才能具有特定功能。


问:如果是点对点协商,这也意味着您可能会遇到设备需要能够缓冲的情况。

答:是的。设备取决于功能以及他们需要多少缓冲区或队列来调整。


问:这是否成为需要列出其具有多少缓冲能力的另一种功能?

答:在每个可选功能上,都有一个功能位,其中一些可选功能可能有范围,因此报告它们具有的功能范围、大小、尺寸、延迟等的寄存器可能是这些类型功能的一部分。


问:在这个问题上,是否由软件向我展示启用了什么?我正在考虑如果我有不同代的CXL设备,一个支持加密,一个不适合我,重要的是要知道已经协商的内容,然后由软件向我展示该链接上发生了什么已经协商的内容哪些是活动的,哪些是不活动的。

答:你是对的。规范必须首先允许它,设备必须实现它,然后固件需要发现并启用它,然后根据端到端,启用沿途的一切可能是不可行或不可取的,所以可能会有一些选择公司或软件的明智选择,他们最终登陆它以启用某些功能,如果问题是设备是否会这样做,有一个答案,但系统是否会实现整个链来启用该特定功能是由高级软件完成的。


问:高级软件会将我列为操作员CIS管理员,已经协商好了。

答:您可以获得有关此内容的报告,软件开发人员将拥有基于读取不同位置的所有功能位的工具,以报告已启用的内容和实际运行的内容。


问:因为我知道,如果突然关闭加密,这显然很重要。

答:是的,没错,好问题。


问:某些功能不在规格中,对吗?我不能让设备实现自己的做事方式以及自己的功能和特性,并移植这些。这是与CXL集成还是只是并行?

答:你的陈述一开始就说某些东西不在规范中。如果事情不在规范中,那么就没有标准的CXL方法来发现它们。这里有许多供应商定义的功能,然后它们是供应商定义的,你必须有某种驱动程序和某种供应商对这些东西的理解。你们知道,当我们作为一群人的一部分时,我们称之为联盟构建一些规范是限制你做某些事情来陷入麻烦的事情。因此,我们非常努力地不限制创新。我们希望一切皆有可能,但是为了互操作性,某些事情需要对齐,A点连接到B点。嘿嘿知道如何谈判。我们不想阻止人们发明东西和推动技术进步,因此他们可以实现几个供应商特定的功能。


问:是否像在iSCSI中那样与查询页面中定义的供应商分组在一起?

答:有一些特定的方法来查询供应商特定的项目,然后你得到的转储少一点或注册转储,你必须解释这些东西的含义,并且具有该功能的设备很可能具有设备驱动程序来为你执行该解释。


我想在这里画的是树层次结构的定义,每个人都可能熟悉PCIe的作用,定义树结构,如果您有主机CPU,例如主机编号2想要到达设备1设备2设备5和设备6。可以为此确定树结构,如果设备1想要与主机2的设备通信。简单来说非常简单,但是如果设备想要到达相邻的设备,它必须通过树结构,它必须一直到树的根部到主机,然后返回。PCIE允许通过主机完成点对点,但您可以想象这将在连接到主机的链路上产生瓶颈。所以,这是可以做到的,但它会产生依赖性和瓶颈。在CXL 3.0中,非常希望有一种更快的方法,一种非阻塞方法,一种没有规范固有瓶颈的方法。因此,设备中可能存在瓶颈,这是设备实现的一部分,但规范允许交换机层次结构中的设备到设备对等通信,而不必依赖主机链路。因此,这是CXL 3.0支持点对点的主要补充。除此之外,实现和开发的另外两个重要功能是无序IO,用于更高效的数据移动,排序规则由源而不是结构整体维护,然后返回创建的验证通道,以便为缓存坐标完成缓存和窥探,在硬件中维护缓存硬币以支持对等。


问:哪些设备需要具有对等访问?你会是一个用例吗?

答:想要访问NIC的GPU,在GPU希望将其内存占用量从其所有本地扩展到所有内存,这些内存可能在结构点对点连接后面与设备的设备3可能是内存设备,它可能是MLD或共享内存,或者我也有一些图表。


这可能是对你的一些问题的答案。我们讨论的设备可以是单个逻辑设备,其所有内存都专用于一台主机,也可以是多逻辑设备的一部分专用于一台主机,另一部分我们可以将其专用于另一台主机。CXL 3.0的一个变体是共享概念。Say内存区域可以分配并绑定到多个主机,that允许内存共享,因为存在这样的共享区域,那么twohosts可以使用该共享内存进行主机到主机的通信,因此,在我们讨论终端设备的点对点通信之前,有一张幻灯片,但这张幻灯片说明了通过该共享内存进行主机通信的方法,并且后端无效通道对于实现共享内存也是必要的。


现在我要把内存池和内存共享放在一起,他们可以想象有一个开关,多个设备连接到它,每个设备都能够细分自己这些设备的一部分,你想与所有主机共享一个区域,其中一部分是专用的,所有这些都是可能的,在那个模型中,早期的讨论人们谈论内存来来去去,动态容量设备是设备内存区域增长或SHRINK将该内存区域与主机上运行的内存管理单元通信的规范。


问:您真的能为我设计一个主机吗,因为这与传统的服务器架构非常陌生,其中有一个用于电路板的盒子,上面有芯片。我只是在处理你的东西,但现在你说的是解耦所有内容,但我们仍然作为主机处理事情。

答:谢谢你问这个问题。我在这个模型中,像这个主机这样的例子实际上是一个CPU。CPU主机CPU或主机操作系统主机操作系统虚拟机管理程序主机与VM或来宾操作系统相比,主机CPU上运行的主机操作系统是我们在这里所说的主机时使用的术语。我不是指网络、存储和内存以及其他一切的整个组合,这就是我们如何解耦主机CPU,与加速器处理元素不同,它们没有相互连接,主机CPU可能有本地内存,但它可能在CXL内存解耦之外运行,但此模型中的主机是具有启动CXL的根端口的主机。


问:所以,现实世界的例子,比如说一个大型的多核服务器仍然是一个在单个处理器上运行的操作系统,它的名称就是你只是在其他地方使用工作加速器来使用部分结构。

答:另一个非常好的区别。当我们说主机时,我在这个模型中可能是一个主机操作系统在一个CPU上运行或在多个CPU上运行。因此,它可以是一个对称的多处理,整个程序集可以是计算元素,通用计算元素,多个CPU。它仍然不是一个完整的系统,因为它没有NIC和存储,而NIC和存储是通过CXL结构连接的,例如,现在此图中的主机1的组合,您可以想象主机1绑定到设备4的一部分和设备1的一部分。You可以在所有这些周围画一条线。我们首先解耦,然后我们使用我们之前在一些削减谈话中讨论过的软件结构来组合它们。That创建了一个可组合的系统。


如果这个词之前我说的不清楚,我深表歉意。我应该说的好一点。


CXL 3.0交换机层的另一个方面是,我们可以有多个层,用于扇出或级联。当我们这样做时,您可以立即看到某些功能是可能的。你可以想象一个脊叶系统,你可以有一个开关盒,因为这个图试图显示一个实现你的骨干层的开关盒,然后你可以有许多设备,每个设备可能都有一个开关,其中一个设备可能专用于多个NIC,其中一个可能专用于许多SSD,因为早期的讨论可能都是记忆,所有这些仍然可以彼此相距几跳,在脊柱中来回弹跳。叶子和主干型号可以使用具有3.0规范的CXL交换机结构来完成。


问:我有一个关于叶子和书脊的问题。如果我们从网络的角度来看,我们正在做叶子和脊椎,我将使用BGPa或ACMP BGP多路径来尝试最大化吞吐量。我是那种跨端口拆分不同连接以尽可能多地饱和上传下载的方法,还是更接近生成树或所有流量都在一个或每个设备上?

答:什么是CXL规范,连续一代,我们在这个模型中逐一介绍这些主题,首先我们没有任何交换机,然后我们有一层交换机,现在我们有多层交换机,作为提供聚合带宽,我们确实有内部离开。你可以有一个具有多个端口的设备一个CPU,并且有多个端口可以跨CXL链路交错,每个链路可以转到不同的交换机,并且从该交换机的下游可能有多个设备,因此CPU可以具有它拥有的所有层的聚合带宽。他们用于聚合带宽,但您也在谈论多路径。多路径是一个概念,很多CXL网络人员,我们有一个专门的网络工作组,知道他们希望拥有它,但它还没有在这个特定的规范中。一旦我们建立了爬行运行系统,这些东西你可以想象它们会到来。


问:我不希望它在最小可行产品中引入网络,但知道它是如何工作的很有趣,因为这是一个设计考虑因素。

答:请梦想远大,我们将梦想远大。我们有远大的愿景,我们有多个目标,我们将一步一步地实现这一目标。


我可以总结技术方面;我有一个图表可以在一分钟内显示所有CXL功能。但是,我想提请您注意的号召,请参与CXL 3.0的号召。当人们想要设计一些东西时,您不必等待拥有一切,如果您拥有CXL 2.0,您可以,它可以与设备进行互操作,该设备是1.1的交换机,它是可互操作的,对于我们未来支持3.0的CXL交换机。因此,不一定要等到一切都开始。你可以开始是好的。然后来加入并参与识别用例,提出如何解决和实施用例的建议,然后帮助实施它们提供反馈。还可以参与任何类型的POC或参考设计。但是一个小时前,我们谈到了一个非常好的创新。成员们正在谈论构建参考设计,参与这类活动。我们需要硬件系统,这样软件人员就可以实现它们并学习提供反馈,并最终使这些系统更加健壮。


从技术方面进行图片摘要。You可以看到超集关系。CXL 3.0执行CXL 2.0执行的所有操作,CXL 2.0执行CXL1.1执行的所有操作。在CXL1.1最初发布后,我们立即采取了爬行运行方法,一群人聚在一起想象某些东西将其修复为只有四个主要功能,以便我们可以在一年或一年半内完成。我们做到了,后来我们变得更加雄心勃勃,创建了一个更大的集合或CXL 3.0。CXL 3.0已发布,但人们仍在研究附加功能,这些功能将以ECN的形式和未来规范的形式出现。


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存