础滨驱动的设计应用
CXL 正在可能大量应用于 HPC,但需要围绕 SoC 设计人员提供的硬件生态系统开发软件框架。本文探讨了 CXL 规范,并推测了加速或实现高性能计算的新应用加速的机会。
特此回顾一下 CXL 规范的一些基本知识:有三种协议(CXL.io、CXL.cache 和 CXL.mem),有三种设备类型使用这些协议的不同组合。 CXL.io 是 PCIe 通信的低延迟替代方案,这两种协议几乎可以互换使用。 CXL.io 为 I/O 设备提供了强化的但非一致的加载/存储接口。CXL.cache为协议的设备提供了机会,使其可以在系统内存中创建一致的缓存,并使用请求和响应方法为低延迟的I/O事务创建缓存。 最后,CXL.mem 提供了 CXL.cache 的逆向的功能,允许主机处理器访问 CXL 连接的设备,这些设备是或包含具有低延迟加载/存储命令结构的存储器。
CXL 设备类型
如前所述 - 这三种协议可以通过不同的方式组合来支持三种设备类型,为方便起见,将其称之为类型 1、2 和 3。 第 1 类设备结合了 CXL.io 和 CXL.cache 协议,允许无内部存储器的智能 NIC 或加速器等设备直接控制和访问系统存储器的区域。 第 2 类设备与类型 1 设备类似,但具有附加或内部存储器,并利用所有三种协议来允许系统或设备以两者间的硬件支持的一致性在另一个存储器中分配区域。 这两个不同的方向(由系统启动或由主机启动)分别称为主机偏置或设备偏置模式。 最后,第 3 类设备是 CXL.io 和 CXLmem 协议支持的存储器设备,允许在 DRAM、NVRAM 和扩展器等各种持久性和易失性存储器设备中实现字节寻址内存语义。 所有这些设备都受支持,并且通过结构,主机可以访问其他系统中的附加内存和专用内存扩展器,就像它是本地内存一样。 下面的图 1 显示了这三种设备类型汇总。
图 1:CXL 设备类型。摘自 r.3.0, v1.0
与本机 PCIe 事务相比,CXL.mem 和 CXL.cache 的延迟更低,PCIe 5.0 的常用延迟指标约为 100 ns,CXL 2.0 操作的常用延迟指标约为 20-40 ns。与 PCIe 相比,CXL.mem 延迟降低,导致最简单、最明显的 CXL 应用程序是使用第 3 类设备的内存扩展,即应用程序线程可以访问系统外部的存储器,但消除了由于内存不足而导致作业失败的可能性。 此功能称为内存池,通过支持交换机附加内存来扩展此范式,通过 CXL 2.0 增强了此功能。 它不仅允许从其他来源增强内存,还允许系统向其他系统提供未使用的本地内存,从而实现更高的利用率和更低的前期系统成本。 CXL 3.0 规范中引入的内存共享允许多个主机访问给定的 CXL 附加内存分配。 它还定义了结构连接内存扩展器的概念——这些设备可以包含各种类型的内存,以便进行池化和共享,并且可以实现本地内存分层,以代表主机优化池的性能特性。 这为 Cray Research 定义的 SHMEM 协议创造了一个有趣的替代方案,使多个主机对共享内存池进行极低延迟访问。由于本机总线互连介质,这不仅提供了比 SHMEM 库例程更好的性能,而且还为该共享内存池上的并行计算提供了可能简单得多的编程模型。
CXL 降低系统内和系统间延迟的另一个内在价值是,它还具有促进设备到设备内存事务的潜力,例如在一个或多个系统中用多个 GPU,而不需要或花费专有的辅助总线或软件层来互连这些设备。 对于较小的模型 AI 训练范式,这可以轻松展示即时性能影响。 结构连接加速器将远程硬件直接暴露于共享内存系统的这一潜在用例可能预示着 AI 训练的新时代,特别是在数据中心,因为 CXL 引入了对称的对等设备通信功能,从而消除了持续参与 CPU 的需求。
总的来说,CXL 结构为服务器分解提供了机会,从而避免了特定服务器限制用于需要系统架构中未本地驻留的特定资源的应用程序工作流。 当存储器可以集中到结构连接的扩展器中时,可以放松对每个系统内的专用(和隔离)存储器的需求。 专用内存总线和 CXL 的附加带宽有助于解决核心内存带宽不足问题,允许设计和配置单个服务器,更注重性能而不是容量。 实现这一愿景的关键是开发低延迟 CXL 交换和灵活的内存分层支持,这些支持内置在支持软件和扩展器硬件中。
CXL 的完整性和数据加密
鉴于 CXL 2.0 中的外部交换和 CXL 3.0 中的增强结构的引入,随着数据在服务器外部裸露电缆上传输,增强的总线安全性变得至关重要。 因此,PCIe 和 CXL 控制器可以使用完整性和数据加密 (IDE) 安全 IP 模块,以确保即使第三方入侵者或观察者可以访问这些数据,数据完整性和隐私也会受到保护。
草榴社区 安全 CXL 控制器与可配置、符合标准的 IDE 安全模块集成,可以帮助设计人员保护其 SoC 中的数据传输免受篡改和物理攻击。 草榴社区 CXL 3.0 IDE 安全模块和 CXL 2.0 IDE 安全模块 在 CXL.cache CXL.mem 协议情况下为 FLIT 提供保密性、完整性和重放保护,并在 CXL.io 的情况下为事务层数据包 (TLP) 提供保密性、完整性和重放保护。 它们与控制器的数据接口总线宽度和通道配置相匹配,且在面积、性能和延迟方面进行了优化(对于 CXL .cache/.mem 滑动模式,延迟低至零周期)。
展望未来
经过多年以来对包括 OpenCAPI、GenZ等在内的一致协议进行的标准化尝试,本行业似乎已经围绕 CXL 合并。 使用称为“信用可扩展流”(CXS) 协议的流接口,看起来 CXL 控制器还将采用一种方法,通过封装更新版 CCIX 来为多处理器架构提供对称一致性;由于一致性开销增加,这最初在其本机形式中遭受了更高的延迟,特别是对于小型写入操作。 CXS.B(CXS 的 CXL 托管版本)提供了专用于 CPU 之间对称通信的一对流媒体通道来解决这个问题。 事实上,甚至可以设想使用 CXL 结构上多台计算机的 CPU 进行可扩展的 SMP 处理!
深度技术文章、白皮书、视频、网络研讨会、产物公告等等。