CXL3.0,如何解决数据中心内存新问题(下)
作为下一代设备互连标准协议,CXL已成为业界和学术界最有前途的技术之一,不仅用于内存容量/带宽扩展,还用于异构互联,数据中心资源池解耦,它所带来的高带宽、低时延,高可扩展性,缓存/内存一致性和一致性有助于解决异构计算系统中出现的“孤岛”问题,真正实现异构系统高效协同的强大计算能力。
CXL技术的延迟问题
近年,业内对于这项崭新的CXL技术也是抱有较高期待。作为一种分布式内存技术,CXL 2.0主机将拥有自己的直连DRAM,并能够通过CXL 2.0链路访问外部DRAM,这种外部DRAM访问将比本地DRAM引入更多的时延,尽管CXL的主要特征是低延迟,但其与CPU的内存、缓存和寄存器比起来,延迟仍然有着一定差距。在此前的Hot Chips上,CXL联盟给出了CXL在延迟上的具体数字。独立于CPU外的CXL内存延迟在170-250ns左右,高过独立于CPU的NVM、网络连接的解构内存、SSD和HDD等。
微软Azure的报告显示,CXL内存相比其他CPU的内存、缓存和寄存器仍然存在一定差距(180%~320%之间),具体增加时延数值和比例可参见下图不同场景的详细介绍。不同应用系统对时延的敏感程度是不一样的,尤其是那些时延敏感类型的APP,下图显示不同CXL组网方案时延差异对应用系统性能的影响程度。在系统不做任何优化的情况中,整体趋势是越来越多的应用性能会出现下降的趋势,具体是多少比例要具体评估。随着时间的推移,业界预计CXL内存延迟问题在PCIe7.0/CXL3.0大规模部署时会大大改善,但这可能要到2024-25年,在这之前其实我们还是可以借助增强的内存系统管理调度监控软件支持来弥补本地以及远端CXL内存的时延差距。
本地及CXL内存资源扩展引入时延数值分析
微软 Azure CXL内存引入对应用影响分析
CXL技术的延迟解法
随着 CXL 技术发展,越来越多的企业正在拥抱支持 CXL 的异构分层内存系统。Meta提出了一个对内存进行分层概念,分为用于实时分析等关键任务的“热”内存、访问没有过于频繁的“暖”内存和用于庞大数据的“冷”内存。“热”内存页面放在原生DDR内存里,而“冷”内存页面则交给CXL内存。但是当前的软件应用可能无法有效区分“热”内存和“冷”内存。在原生内存用完后,就会去占用CXL内存。如此一来原本作为“冷”内存的CXL,也开始变成“热”内存。目前最大的挑战还是在操作系统和软件层面,如何检测到“冷”内存页面,将其主动转入CXL内存里,为原生DDR内存留出空间。
为了在此类系统中优化性能,Meta通过称为透明页面放置(Transparent Page Placement,TPP)的Linux内核扩展尝试找出与本地DRAM略有不同的内存页管理方式来处理具有不同类型温度等级的页面热特性,考虑到CXL主存相对本地内存时延差异,就像分布式存储使用各种速度的闪存/硬盘分级管理一样,Meta在其TPP论文中引入分层内存系统(Multi-Tier Memory)概念,观察判断在内存中使用的数据有多少是hot , warm , cold 的不同活跃程度,然后找出一种机制,在最快的内存中获取/存放 hot 数据,在最冷的内存中获取/存放cold 数据,在warm 内存中获取/存放 warm 数据。TPP的设计空间,可分为四个主要领域 :
1. 轻量级降级到 CXL-Memory,
2. 解耦分配和回收路径,
3. 热点页面升级到本地节点,
4. 页面类型感知内存分配。
Meta TPP是基于内核态透明页面热度监控及放置的解决方案,该协议与该公司的Chameleon内存跟踪工具结合使用,Chameleon内存跟踪工具在Linux用户空间中运行,人们可以跟踪CXL内存在其应用程序中的工作情况,Meta使用不同生产工作负载评估 TPP , 将“较热”页面放置在本地内存中并移动 CXL 内存中的“较冷”页面,发现 TPP 相比应用程序在默认 Linux 上的性能有些可以提高了 18%。相比现有的两项最先进的技术分层内存管理机制 -- NUMA 平衡和自动分层,有所改进提高 5-17%。
TPP 比其他协议更有效,减少了内存访问延迟
TPP方案减少了内存访问延迟,提高了应用程序吞吐量。相信随着时间的推移,CXL技术延迟问题会大幅改善。
CXL 3.0进入异构互联
CXL联盟推出CXL3.0规范,引入了结构功能和管理、改进的内存池、增强的一致性以及对等通信,带来了更多改进。数据传输速率翻倍提升至64 GT/s,且与CXL 2.0相比并没有增加延迟;同时向后兼容CXL 2.0、CXL 1.1和CXL 1.0版规范,有助于扩展创建异构可组合服务器架构的能力。
CXL 3.0 交换机现在可以支持一系列拓扑。以前在 CXL 2.0 中,只能使用 CXL.mem 设备进行扇出,主机访问外部设备提供的内存资源。一个机架或多个服务器机架现在可以利用Spine/Leaf或所有拓扑联网。CXL 3.0 的设备/主机/交换机/交换机端口的理论限制为 4,096个,这些变化极大地扩大了 CXL 网络的潜在规模,从几台服务器扩展到了服务器机架。
CXL 结构非树拓扑
CXL3.0-- Fabric 能力:
支持多头与 Fabric 连接装置
增强 Fabric 管理
支持可组合的分类基础设施
CXL3.0-- 更好的可扩展性和更高的资源利用率:
● 增强内存池
CXL 2.0 提供了内存池,其中多个主机可以访问设备的内存,但必须为每个主机分配自己的专用内存段,而 CXL 3.0 引入了真正的内存共享。利用新的增强一致性语义,多个主机可以拥有一个共享段的一致副本,如果设备级别发生变化,可以使用反向失效来保持所有主机同步。
● 支持多级切换
建立在 CXL 2.0 的基础上,该版本引入了对 CXL 协议交换机的支持,但仅允许单个交换机驻留在主机及其设备之间。另一方面,多级交换允许多层交换机,交换机可馈入其他交换机,极大地增加了所支持的网络拓扑的种类和复杂性。
● 增强一致性
CXL更新了拥有内存设备的缓存一致性协议,取代了 CXL 早期版本中使用偏袒某一方控制的内存一致性方法( bias-based coherency approach),这主要是为了保持协议简洁,实现缓存一致性特性的做法不是通过共享享内存空间访问控制的方式,而是让主机或设备其中一方负责控制访问权,新的增强一致性方式更接近真正意义的内存共享或者换个角度说主机和设备之间使用对等角色方式,允许 CXL 设备缓存发生更改时通知主机,主机再来读取这些改变数据。
● 改进软件功能
CXL 3.0 进一步增强了改进的主机设备功能,解除了之前对可以连接到单个 CXL 根端口下游的 Type-1/Type-2 设备数量的限制。
CXL 2.0 只允许这些处理设备中的一个出现在根端口的下游,而 CXL 3.0 则完全解除了这些限制。现在,CXL 根端口可以支持 Type-1/2/3 设备的完全混合匹配设置,具体取决于系统构建者的目标。值得注意的是,这意味着能够将多个加速器连接到单个交换机,提高密度(每个主机更多的加速器),并使新的点对点传输功能更加有用。
CXL3.0-- 更多特性:
将带宽翻倍至64GT/s
维持与 CXL2.0相同的延迟表现,完全向后兼容旧版2.0、1.1和1.0规范
CXL 3.0 引入的内存共享和设备到设备直达的特征极大增强异构网络的通信能力。主机 CPU 和设备现在可以在相同的数据集上协同工作,而无需不必要地打乱和复制数据。比如下图主机1/3/#共享同一个数据拷贝S1, 主机1/2共享同一个数据拷贝S2,主机2/主机#共享同一个数据拷贝S3。
CXL 3.0 内存池和共享
使用数据共享的一个例子是常见的 AI 工作负载,例如 Google 和 Meta 等巨头采用的数十亿参数的深度学习推荐系统。相同的模型数据在许多服务器上重复。用户的请求进来,推理操作开始运行。如果存在 CXL 3.0 内存共享,则大型 AI 模型可以存在于几个中央内存设备中,并且支持其他设备访问。该模型可以使用实时手机用户数据不断进行训练,并且可以跨 CXL 交换网络推送更新,这可以将 DRAM 成本降低一个数量级并提高性能。
另外一个例子中我们利用CXL3.0增强一致性特性实现异构系统硬件加速器之间松耦和,协作共同工作,这里面我们利用CXL3.0实现GPU 和 FPGA之间内存共享,通过 CXL/PCIe 总线的直接绕过过CPU进行数据通信,配合完成数学计算的工作,FPGA 负责解压缩一个包含1.6GB 双精度值的文件,数据将用作 GPU 的输入数值进行积分计算Pi。这代表了未来异构系统工作负载交互的模式:FPGA 被证明具有非常高的性能用于顺序可流水线操作的计算,而 GPU针对具备分支和内存跨域(branch and memory stride)规则的计算表现出色。
目前的PCIe实践需要中间使用主机存储器用于在 FPGA 和 GPU 之间共享数据。具体来说为了共享FPGA/GPU加速器之间的数据,必须执行从 FPGA 到CPU的数据拷贝,另外再从执行CPU到GPU的数据拷贝,具体工作流程如下:
(1)FPGA 主机(H2F) 内存传输
(2)FPGA 内核执行 (F)
(3)FPGA 到主机传输 (F2H)
(4)主机到 GPU 传输 (H2G)
(5)GPU 内核执行 (G)
(6)GPU 到主机传输 (G2H)
CXL 支持在主机和设备之间创建缓存一致的统一内存空间,传统加速器设计如果使用PCIe需要对主机和设备内存对象的显式数据移动请求进行编程,统一内存允许主机和设备隐式地对相同的数据对象进行操作,这减少了内存管理的复杂性。一旦信息被加载到加速器设备上,CXL 和 DMA PCIe 传输都支持本地访问,在后者DMA PCIe 传输方式中,数据缓冲区被显式移动到本地设备内存上。使用 CXL,访问过的内存地址会在本地缓存,如果重新访问这一内存地址,则可以在本地访问数据,而且使用 CXL 统一内存方式可以仅选择那些加速器使用过的高速缓存行才需要传输,而使用 PCIe DMA需要传输缓冲区中的整个地址范围。
CXL缓存一致性以及内存共享特性将允许异构场景主机CPU,FPGA,GPU之间直接交互数据,而不是首先将数据发送到主机,这可以用 FPGA 到 GPU 的直接传输(F2G)取代了 F2H 和 H2G。或者进一步允许内核直接访问统一共享内存中本地设备本地缓存的信息,实际上(H2F)(F2G)(G2H)这几步过程都省略了,现在执行的只剩下FPGA内核计算F0和GPU内核执行G0。内核运算被表示为0 表示运行时间将略有增加,因为数据需要加载到缓存中。如果应用程序是设计用于在本地执行管道中预取数据,然后这些增加的时间可以忽略不计。
通过本地内存作为中间传输介质
利用缓存一致性实现直接内存共享
CXL内存共享异构系统通信逻辑图
另外,由于文件解压并且集成按顺序发生,最理想的集成过程是采用数据流水的方式运行整个程序过程,FPGA和GPU以流水线方式重叠两个加速器进行通信计算,进一步减少执行时间。采用流水线方式运行的应用程序借助缓存一致,内存共享,高带宽低时延等CXL特性促进异构模式下FPGA/GPU加速器的紧密耦合,相比基准环境下应用完成时间可以获得大幅提高。
从上面例子可以看到,CXL 的真正关键不仅限于内存,还包括所有形式的计算,内存,网络,存储,加速卡。可组合的服务器DSA架构(特定领域架构)是指服务器被分解成不同的组件并放置在组中,这些资源可以动态地分配给工作负载。数据中心机架成为计算单元,客户可以为其特定任务选择任意数量的内核、内存和 AI 处理性能。这是服务器设计和云计算的美好愿景,当然这里面还有许多与此相关的复杂工程问题,但协议必须先行,这就是CXL 2.0和3.0标准为何迅速诞生的原因。
当然CXL初期应用的场景还是内存扩展或资源池,就现在服务器市场情况看,低核心数的CPU依然会继续使用原生DDR通道来配置DIMM内存。而只有高核心数CPU上,再根据系统成本、容量、功耗和带宽等参数来灵活应用CXL内存,因为这才是CXL的核心优势。内存共享可以提高性能和经济性的领域几乎是无限的。第一代内存池可以将总 DRAM 需求降低 10%。较低延迟的内存池可以使多租户云中的节省达到约 23%。内存共享可以进一步将 DRAM 需求降低 35% 以上。这些节省意味着每年在数据中心 DRAM 上花费数十亿美元。
随着横向扩展云计算数据中心概念的出现普及,市场发生了变化,更快的CPU内核不再是优先事项,而是如何经济高效地提供总体计算性能并将其集成在一起。计算资源专业化成为趋势,因此异构计算将占据数据中心主导地位,使用专用 ASIC 的各种加速器(FPGA/GPU/DPU/IPU)可以在使用更少晶体管的特定任务中提供超过 10 倍的性能。与其为整个工作负载设计芯片,不如为设计特定领域架构(DSA)芯片并将它们连接到特定工作负载所需的任何配置中,通过CPU+(集成或独立的)GPU/FPGA/DSA处理器,把软件业务与异构计算结合,用较小的功能构建大型系统以适用构建如网络、存储、虚拟化、安全、数据库、视频图像、深度学习等场景可能会更经济高效,更具成本效益。
如今,计算系统构建方式的变化将计算单元从单个芯片或服务器转移到整个数据中心,数据中心是新的计算单元。统一的设备互联系统(Unified interconnected Fabric)帮助实现异构场景下多处理器、加速器、资源池的互通。
作为智算中心网络建设者,锐捷网络将持续为客户提供创新的产品方案及服务,与客户共迎智算时代新浪潮。
参考文献:
TPP: Transparent Page Placement for CXL-Enabled Tiered-Memory
Pond: CXL-Based Memory Pooling Systems for Cloud Platforms
Demystifying CXL Memory with Genuine CXL-Ready Systems and Devices
Compute Express Link™ Specification 3.0 whitepaper
Design and Analysis of CXL Performance Models for Tightly-Coupled Heterogeneous Computing
Memory Disaggregation: Advances and Open Challenges
Network Requirements for Resource Disaggregation
A Case for CXL-Centric Server Processors
微信扫码关注该文公众号作者