AI驱动的设计应用
Synopsys 高级产品营销经理 Gary Ruggles
数据生产和消费的大量增长,特别是图像、数字化语音和视频等非结构化数据,促使加速器的使用量大幅增加。根据 2016 年 10 月 2 日的美银美林全球半导体报告:“预计 2017 年的加速器 TAM 为 16.4 亿美元,预计该金额到 2021 年将超过 100 亿美元。” 这种数据中心异构计算的趋势意味着,越来越多不同类型的处理器和协处理器必须有效地协同工作,同时还必需共享存储器。这种分解可能导致系统由于在加速器上占用大量内存而遭遇严重的瓶颈,并且始终都需要与主机共享该存储器以避免不必要的和过度的数据复制。
Compute Express Link (CXL) 是一种开放式互连新标准,面向 CPU 和专用加速器的密集型工作负载,这些负载都需要在主机和设备之间实现高效稳定的存储器访问。最近宣布成立了一个支持该新标准的联盟,同时发布了 CXL 1.0 规范。本文介绍了片上系统 (SoC) 设计人员需要了解的一些 CXL 关键特性,以确定这种新的互连技术在其 AI、机器学习和云计算应用程序设计中的最佳使用和实现方式。
PCI Express (PCIe) 已经存在多年,最近完成的 PCIe 基础规范 5.0 版本现在能够以高达 32GT/s 的速度实现 CPU 和外设的互连。然而,在具有大型共享内存池和许多需要高带宽设备的环境中,PCIe 受到了一些限制。PCIe 没有指定支持一致性的机制,并且不能高效地管理隔离的内存池,因为每个 PCIe 层级都要共享一个 64 位地址空间。此外,PCIe 链路的延迟可能过高,无法高效管理系统中多个设备的共享内存。
CXL 标准通过提供利用 PCIe 5.0 物理层和电气元件的接口来消除其中一些限制,同时提供极低延迟路径,用于主机处理器和需要共享内存资源的设备(如加速器和内存扩展器)之间进行内存访问和一致缓存。支持的 CXL 标准模式主要围绕采用 x16 通道配置并以 32GT/s 运行的 PCIe 5.0 PHY(表 1)。x8 和 x4 通道配置也支持 32GT/s,以支持分叉。任何比 x4 通道窄或比 32GT/s 慢的模式都被称为降级模式,这类模式在目标应用中显然不常见。虽然 CXL 可以为许多应用带来立竿见影的性能优势,但是某些设备不需要与主机进行密切交互,而是主要需要在处理大型数据对象或连续流时发出工作提交和完成事件的信号。对于此类设备,在加速接口使用 PCIe 就很合适,而 CXL 没有明显优势。
表格 1: 支持 CXL 的操作模式
CXL 标准定义了 3 个协议,这些协议在通过标准 PCIe 5.0 PHY 以 32 GT/s 传输之前一起动态复用:
CXL.io 协议本质上是经过一定改进的 PCIe 5.0 协议,用于初始化、链接、设备发现和列举以及寄存器访问。它为 I/O 设备提供了非一致的加载/存储接口。
CXL.cache 协议定义了主机和设备之间的交互,允许连接的 CXL 设备使用请求和响应方法以极低的延迟高效地缓存主机内存。
CXL.mem 协议提供了主机处理器,可以使用加载和存储命令访问设备连接的内存,此时主机 CPU 充当主设备,CXL 设备充当从属设备,并且可以支持易失性和持久性存储器架构。
如图 1 所示,CXL.cache 和 CXL.mem 合并且共享一个公共链路和事务层,而 CXL.io 有自己的链路和事务层。
图 1: PHY、控制器和应用的 CXL 设备框图
三个协议产生的数据都通过仲裁和多路复用 (ARB/MUX) 模块一起动态复用,然后被移交到 PCIe 5.0 PHY,进而以 32GT/s 的速度进行传输。ARB/MUX 在 CXL 链路层(CXL.io 和 CXL.cache/mem)发出的请求之间进行仲裁,并根据仲裁结果复用数据,仲裁结果使用加权循环仲裁,权重由主机设置。ARB/MUX 还处理链路层发出的功耗状态转换请求,向物理层创建实现有序降耗操作的单个请求。
CXL 通过固定宽度的 528 位微片传输数据,该微片由四个 16 字节时隙组成,并添加了两个字节 CRC:(4 x 16 + 2 = 66 字节= 528 位)。插槽采用多种格式定义,可专用于 CXL.cache 协议或 CXL.mem 协议。片头定义了插槽格式,并携带允许事务层将数据正确路由到预期协议的信息。
由于 CXL 使用 PCIe 5.0 PHY 和电气元件,它可以有效地插入到任何可以通过 Flex Bus 使用 PCIe 5.0 的系统中。Flex Bus 是一个灵活的高速端口,可以静态配置为支持 PCIe 或 CXL。图 2 举例显示了 Flex Bus 链路。这种方法使 CXL 系统能够利用 PCIe 重定时器;但是,目前 CXL 仅定义为直连 CPU 链路,因此无法利用 PCIe 交换机。随着标准的逐步完善,交换功能可能会被添加到标准中;如果是这样,则需要创建新的 CXL 交换机。
图 2:支持本机 PCIe 和/或 CXL 卡的 Flex Bus 链路
CXL.io 协议用于初始化和链接,所以必需获得所有 CXL 设备的支持,如果 CXL.io 协议发生故障,链接就无法运行。其他两个协议的不同组合产生了总共三种被定义并受 CXL 标准支持的独特 CXL 设备类型。
图 3 显示了三种已定义的 CXL 设备类型及其相应的协议、典型应用以及支持的存储器访问类型。
图 3:三种已定义的 CXL 设备类型
对于 2 型设备,CXL 定义了两个一致性“偏置”,用于控制 CXL 对主机和设备连接存储器之间的一致性数据的处理方式。偏置模式指主机偏置和设备偏置,并且操作模式可以根据需要发生改变,从而在链路操作期间优化给定任务的性能。
2 型设备(例如,加速器)处理提交给主机的工作时间及其后续完成之间的数据时,设备偏置模式用于确保设备可以直接访问其设备连接的存储器,而无需与主机的一致性引擎通信。因此,设备可保证主机没有缓存线路。这为设备提供了最优的延迟性能,使得设备偏置成为加速器执行工作的主要操作模式。主机处于设备偏置模式时,主机仍然可以访问设备连接的存储器,但性能却不是最优。
主机偏置模式优先考虑从主机到设备连接存储器的一致性访问。该模式通常在工作提交期间使用,此时数据会从主机写入设备连接的存储器,而且在主机将数据从设备连接的存储器中导出后,可使用该模式完成工作。在主机偏置模式下,设备连接的存储器对于设备而言就像主机连接的存储器一样,如果设备需要访问,就通过一条发送到主机的请求进行处理。
可以使用软件或硬件,通过软件辅助和硬件自治这两种受支持的模式管理机制来控制偏置模式。加速器或其他 2 型设备可以选择偏置模式,如果两种模式均未选择,则系统默认为主机偏置模式,这样就必须通过主机路由对设备连接存储器进行所有访问。偏置模式可以使用 4KB 页面的颗粒度进行更改,并通过 2 型设备中执行的偏置表进行跟踪。
CXL 标准的一个重要特征是一致性协议是不对称的。Home 缓存代理仅停留在主机中。因此,主机控制存储器的缓存,从而解决连接的 CXL 设备请求的给定地址的整个系统的一致性问题。这完全不同于正在使用的现有专有和公开的一致性协议,特别是那些用于 CPU 到 CPU 连接的协议,因为它们通常是对称的,会使得所有互连设备都变得对等。
虽然这样有一些优点,但是对称的高速缓存一致性协议更加复杂,并且所有设备都必须处理由此产生的复杂性。具有不同架构的设备可以采用不同的方法来实现在微架构级别优化的一致性,而这一情况可能会为实现广泛的行业采用增加难度。通过使用主机控制的非对称方法,可以将不同的 CPU 和加速器轻松纳入新兴 CXL 生态系统。
大家可以设想在具有内存一致性的大型系统中同时使用多个协议来处理 CPU 到 CPU、CPU 到连接设备以及更长距离的机箱到机箱要求。目前,CXL 致力于为服务器提供经过优化的解决方案。CXL 固有的不对称性意味着它可能不适用于 CPU 到 CPU 或加速器到加速器的连接。此外,由于 CXL 依赖 PCIe 5.0 PHY,采用不同的传输可能更适合提高机架到机架安装的性能。
由于 CXL 与 PCIe 5.0 紧密结合,我们预计支持 CXL 的产品将在与 PCIe 5.0 同时面市。在 2019 年 3 月 11 日的一篇推文中,英特尔称他们“计划在英特尔 2021 年数据中心平台上发布采用 CXL 技术的产品,包括英特尔® 至强® 处理器、FPGA、GPU 和 SmartNIC。”2
CXL 联盟已经认识到需要支持某种互操作性和合规性计划,以帮助采用该标准。因此,我们将对规范进行一些细微更新以帮助支持此要求,并且最终可能会制定一份合规性计划。
CXL 标准似乎正在迅速发挥作用,在与主机处理器共享内存的同时,为需要高效处理数据的设备提供了优势。在本文发稿时,CXL 联盟的成员已达到 75 位,并且成员数量仍在增长。由于大型 CPU 供应商英特尔支持该标准并将在 2021 年提出支持 CXL 的系统,该系统似乎将会获得大规模的行业采用。
参考: