草榴社区

CXL 的新兴应用

新思科技高级产物营销经理 Gary Ruggles

介绍

在上一篇文章计算快速链路 (CXL) 标准介绍中,我们说明了 CXL 的基本原理和初始目标应用。本文重点介绍了该行业出现的一些 CXL 新兴应用,以及这些应用如何获得快速发展的 CXL 规范的支持。

考虑在本文发布时,CXL 联盟的成员数已增长到 120 多位,现在显然已成为新的高速互连/一致性标准联盟中最大的组织,而加速器缓存一致性互联 (Cache Coherent Interconnect for Accelerators, CCIX) 联盟的成员数流失了大约 50 位,Gen-Z 流失了大约 70 位,OpenCAPI 则流失了大约 38 位。这的确很令人震惊,因为 CXL 联盟大约是在 18 个月前才成立,而其他两个联盟则已成立将近四年。由此可见,CXL 在行业中越来越受欢迎,并瞄准许多令人兴奋的新兴应用。

图 1 显示的快照概括了从去年 3 月份首次公布 CXL 联盟和 1.0 规范至今,CXL 规范的发展情况。看图之后,您就可以了解局势的迅速变化。

图 1:CXL 的主要事件和规范发展时间表

一些主要进展包括更新 CXL 1.1,随后快速更新 27 个勘误表,以更正和/或澄清 1.1 规范的各个方面。图 1 所示的最大进展之一是宣布 CXL 董事会任命新成员,其中包括 IBM、AMD 和 Arm。他们携手 CXL 的最初创始者之一 Intel,在 CXL 领域将四大 CPU 制造商远远甩在后面,并确保投资开发 CXL 类产物的公司都将拥有丰富的主机平台生态系统,不再仅局限于 x86 系统。为了增加 CXL 的吸引力,Intel 在近期的 2020 年架构日宣布,他们即将推出的 CPU 平台 Sapphire Rapids 将于 2021 年面市,该平台将包含对 CXL 1.1 的支持。

该时间表还高调宣布了 CXL 与 Gen-Z 联盟之间达成的谅解备忘录 (MOU)。在上一篇文章中,我们探讨了在具有内存一致性的大型系统中同时使用多个协议来处理 CPU 到 CPU、CPU 到连接设备以及更长距离的机箱到机箱要求(可能不具备一致性)。随着 Gen-Z MOU 的达成,现在这一课题更加清晰。我们见证了 CXL 成为服务器内部的主要解决方案,借助 Gen-Z 提供机柜到机柜甚至机架到机架的连接,凭借其用以太网物理层的能力实现的连接距离,要长于使用 PCIe 5.0 PHY 实现的连接。

新一代 CXL

在本文发布时,新一代 CXL 规范可能最终定稿并获得发布,从而有可能启用许多新的应用。该新规范可从 CXL 联盟网站免费下载,并可供采纳该规范的成员在开发过程中使用。新一代 CXL 旨在支持存储应用,并包含几项新功能,以使 CXL 在这些应用中表现更加强劲。虽然大多数上述功能尚未公开,并且在此无法披露,但至少有一项已经在各种论坛中展开讨论,并且从 Intel 最近提交的专利申请(美国专利申请号 20200065290)中可以有所了解,即引入交换支持,从而使得新一代 CXL 超越简单的点对点接口。

CXL 的新内存应用

转向使用 CXL 意味着一台主机可以连接多个存储设备,并允许主机作为内存空间的一部分连续访问内存。这在 CXL 1.1 中是不可能的,因为它仅允许建立单个主机到设备连接(无扇出)。使用新一代 CXL,连接到多个下游设备的内存可以跨多个主机共享,并且内存可以根据具体应用的需要在这些主机之间拆分。

新涌现的存储器,通常是事务性内存,读写时间可能不确定且不对称。这使得它们不太适合与 DRAM 共享 DDR 总线。基本上来讲,只有同质的 DIMM 才能共享 DDR 总线,通常需要:

  • 同代 DDR
  • 相同的速度等级和时序,以保持总线效率
  • 相同的器件几何形状,以支持跨所有通道交错
  • 相同的功耗和热包络

这是当前采用同质 DIMM 方法执行内存扩展时面临的一个重大限制。CXL 提供了激动人心的内存扩展替代方案,它不依赖于 DDR 总线或添加更多 DIMM,从而能够得出真正的异构内存连接解决方案。如图 2 所示,未来的存储器装置可以使用 CXL 连接到片上系统 (SoC),CXL 创建了标准且独立于媒体的连接,几乎能够连接任何内存类型(包括 DDR、LPDDR、持久内存等)。由于每个 CXL 链路都可以连接到特定内存的优化控制器,因此可以优化性能特征(如持久性、耐久性、带宽和延迟)并将其与每种特定内存类型相匹配。

由于配备多个 CPU 的 SoC 需要访问更多不同类型的内存,通过 CXL 链路可以升级使用传统 DDR 接口的附加内存,因而这种基于 CXL 的内存方法会是理想之选。与添加 DDR 接口相比,使用 CXL 内存扩展除了支持包含各种内存类型之外,还会减少使用的 Pin 数。每个方向 16GB/s 带宽的 CXL x4 接口只需要 16 Pin。如果基于 CXL 的内存模块外形支持 x8 CXL 链路,SoC 中的每个 CXL 链路仍然只需要 32 Pin,而每个方向的带宽将高达 32GB/s。

虽然图 2 右侧 SoC 上的 CXL 链路可以分别连接到单独的 CPU,但如果 SoC 设计包含嵌入式 CXL 交换机(利用新一代 CXL 交换功能),则各种主机 CPU 可以访问不同 CXL 链路上的多个内存设备,为 CXL 内存扩展方法打开更多可能性。

图 2:从具有 2 个 DDR 内存通道的现今 SoC 到具有额外 CXL 内存的未来 SoC

CXS:CXL 的新接口

尽管尚且没有与 CCIX 达成 MOU,但业界已有考虑合作的传闻,我会在下一部分基于 CXL 的 CCIX 中对此进行介绍。务必要了解 Arm 和新思科技最近启用的新应用侧接口1

CXL 的标准应用侧接口由三个独立的接口组成:CXL.io、CXL.cache 和 CXL.mem 三种 CXL 协议分别对应一个接口,如图 3a 所示。鉴于 ,现在可以考虑使用包含 CXS 接口的 CXL 控制器。

Arm 定义了一个称为 CXS 的新型流式接口,用于从 CCIX 控制器桥接到其相干网状网络 (CMN-600),如图 3b 所示。DesignWare? CCIX IP 等 CCIX 控制器可实现 Arm 的 CXS 接口,从而可直接插入 Arm CMN-600。最近,Arm 与新思科技合作更新 CXS 接口定义,使 Arm 的新一代相干网状网络能够直接连接到具有 CXS 接口的新版 CXL 控制器中。为使此连接生效,CXL 链路层的一些功能被移出 CXL 控制器,并被 CMN 或其他应用中的逻辑接管。在它的位置上添加了一个 CXS 接口模块,用来代替 CXL.cache 和 CXL.mem 接口。结果如图 3c 所示,得到一个与 3b 中的 CCIX 控制器非常相似的设计。

 

图 3:使用 CXS 接口的 CXL 和 CCIX 控制器的接口选项比较

图 3c 显示了一个现在通过 CXS 接口接收数据帧的 CXL 控制器,该 CXS 接口通过 ARB/Mux 与 CXL.IO 数据帧相接。基本操作不变,CXL 控制器不需要了解通过 CXS 接口从控制器左侧向下传输的数据帧内容。这不仅实现了与新一代可扩展 Neoverse 相干网状网络的直连,还使得下一部分探讨的有趣课题成为可能:基于 CXL 的 CCIX。

基于 CXL 的 CCIX

通过 CXS 接口而不是 CXL.cache 和 CXL.mem 的标准独立接口访问 CXL 控制器时,从本质上来讲,这意味着通过链路两侧的适当协议管理,任何协议理论上都能够以 256b (64B) 数据帧的形式通过 CXS 流式接口。要使 CCIX 一致性协议在此接口上运行,需要确定一种方法,将其映射到 CXL 使用的 64B 数据帧中。有很多方法可以做到这一点,并且至少在 Arm 发布的一个规范草案中准确定义了如何做到这一点2。CCIX 联盟可能会利用此规范或制定具有相同用途的规范,但只要链路两端的应用遵循相同的规范,系统就能运行。

这种方法的潜在优势在于能够使用 CCIX 协议(可根据需要在每个 SoC 中实施 CCIX 一致性代理)在多个 SoC 之间创建对称相干链路,同时还能受益于 SoC 之间的 CXL 链路提供的极低延迟。这就克服了 CXL 的显著限制(无对称操作),同时保持其最显著的优势:低延迟。

总结

CXL 规范仍处于早期阶段。很难预测下一步可能会发生什么,以及还会有哪些应用和使用模型变得可用。然而很明显,带宽将再次翻倍,因为预计下一次迭代的规范将使用速率为 64 GT/s 的 PCIe 6.0 PHY。快速发展的生态系统促进了 CXL 取得成功,使得设计人员能够使用新功能和新接口,以支持新的 CXL 应用。针对内存扩展的 CXL 、CXL 交换功能的支持得到进一步强化、通过 Arm 的 CXS 接口实现全新 CXL 控制器设计、可基于 CXL 传送 CCIX,这些都为业界带来了众多优势。

新思科技作为 PCIe IP 领域的领导者,除了利用专业知识提供经过硅验证的 32GT/s PCIe 5.0 PHY 外,还提供业界首个 CXL 控制器 IP,用于先进的 FinFET 流程,从而提供完整的 DesignWare CXL IP 解决方案,支持当前的 CXL 1.1 规范以及新一代 CXL。

新思科技对新一代 CXL 的支持包括可选的安全/加密功能,其中有启用了安全功能的 CXL 控制器和处理实际 AEC-GCM 加密/解密功能的 CXL IDE 模块。这些设计能够无缝插入,提供完整的新一代 CXL 安全解决方案。

参考资料

  1. Arm 基于 64B 数据帧的 CCIX,文档编号 ARM AES 0026,测试版 A,2020 年 5 月 1 日