2019 年初,诞生了一种名为 Compute Express Link(简称 CXL)的新互连。 这一新规范基于 PCI Express (PCIe) 物理层并以当时最快的 PCIe 链路速度 (32GT/s) 运行,被吹捧为计算协处理器的理想互连。 四年后,关于这种加速的讨论几乎被看似无休止的关于内存共享、池化、分解和所有其他特点的公告所淹没,可想而知,这些内存不是直接连接到 CPU 的。 本文简要介绍了 CXL 的背景和概念,并帮助引导您确定这种技术是否适合您的下一个 SoC 设计。

CXL 背景

CXL 1.0 规范发布时,将 FLIT(流量控制单元)的概念引入了 PCIe 领域。 使用 PCIe 5.0 规范引入的备用协议协商功能,两个 PCIe 链路合作伙伴继续执行原本正常的 PCIe 链路协商序列,但它们最终不是进入 PCIe“L0”状态,而是进入 CXL 模式并开始交换 CXL FLIT。 由于其专注于以主机为中心的不对称缓存一致性协议,延迟对 CXL 的有效性绝对至关重要,并且整个 CXL 规范都是围绕最小化延迟而构建。 为实现这一目标而进行的细节和权衡的讨论不属于本文的探讨范围,但对于许多 CPU 缓存行的典型 64 字节传输,CXL 的延迟比 PCIe 的延迟低数倍。 CXL 实际上定义了三种不同的协议:CXL.io、CXL.cache 和 CXL.mem。 CXL.io 传输 PCIe 以实现向后兼容性、批量数据传输和系统配置目的,并且性能不会高于本机 PCIe 链路。 CXL.cache 和 CXL.mem 是 CXL 规范的真正实质内容,仅支持 64 字节传输,但提供惊人的低延迟(低延迟成为 CXL 的标志)。 

CS1142348322

图 1:CXL 协议在 CXL 系统中的使用

订阅 Synopsys IP 技术公告

包括深度技术文章、白皮书、视频、即将举行的网络研讨会、产品公告等等。

CXL.mem 使用和动机

最初,CXL.mem 协议似乎定义为只允许主机 CPU 访问加速器的本地内存,但规范撰写得极具灵活性,允许该主机访问 CXL 结构中的任意内存。 最初,人们对使用 CXL.mem 作为向系统添加非易失性存储器的一种方式感兴趣。 传统存储接口以块为导向,难以适应 CPU 典型的随机存取模式。 虽然始终可以在 PCI Express 等接口上映射内存,但这些接口与传统软件相结合的 I/O 焦点意味着连接在该处的内存无法被主机 CPU 有效缓存。 CXL.mem 能够从 CPU 的现有缓存架构访问内存,使设计人员能够轻松连接 NAND 闪存和其他非易失性存储器,就像对于主机 CPU 而言只是更多的系统内存一样。 CXL 是第一个提供对非易失性系统存储器的广泛访问的接口,它为软件架构开辟了新的边界,模糊了文件和存储器之间的界限。  

 

系统架构师不久后就将 CXL 附加存储器的相同愿景扩展到了传统的易失性存储器技术。 将系统存储器从 CPU 上移开,CPU 可以变得更加灵活。 在传统架构中,未使用的存储器如果已连接到一个特定 CPU,另一个 CPU 可能就无法访问它,而 CXL 接口上的存储器可以在一段时间分配给 CPU A,在另一段时间分配给 CPU B。 随着 CXL 结构扩展到机柜到机柜环境,我们可以想象在不久的将来,来自多个物理服务器的存储器可以合并,以服务于内存密集型工作。 数据中心市场的许多细分市场表明,这种存储器放置的灵活性极具吸引力,并且在过去几年中,这个市场一直呈爆炸式增长。 此类 CXL.mem 设备在闪存峰会、开放计算项目峰会等行业活动中都是热门话题。

图 2:CXL.mem 支持无处不在的内存

CXL 连接内存产品的可用性还可以让设计人员灵活地将 CXL 接口用于片外存储器。 在过去,除了配置 DDR 接口来访问大量片外存储器外,SoC 设计人员几乎别无选择。 当在没有片外存储器的配置中使用相同的 SoC 时,这是相当有局限性的。 使用 CXL 接口,SoC 架构师可以在内存附件不需要接口时重新利用该接口。

在 SoC 设计中采用 CXL.mem

SoC 设计人员如何希望将 CXL.mem 集成到其架构中,可以有许多可用选项。 当然,无论计划使用率如何,要考虑的第一个属性都是延迟。 这可能并不明显,但通常用于片上连接的标准化接口往往不是非常适合 CXL.mem。 CXL.mem 与现有接口之间的桥接将增加延迟 - 甚至可能需要存储和转发缓冲以考虑协议差异。 因此,强烈建议架构师和设计师在连接他们的 CXL 接口时,在逻辑上使其尽可能靠近实际缓冲区和数据移动器。  

 

同样不太明显的是 PHY 对整体 CXL 延迟的贡献。 CXL 的低总体延迟意味着在 PCIe 设计中很少或根本不需要考虑的物理层延迟的微小变化现在可以产生可测量的影响  同样,大多数市售的 CXL 解决方案将利用 PIPE SerDes 架构(而不是原始 PIPE 架构),因为它允许 CXL 控制器优化 PHY 的数据路径。  

 

如前所述,SoC 可通过两种方式连接到 CXL 链路。 如果 SoC 为系统提供内存,它将作为 CXL.mem 设备进行连接。 如果 SoC 连接到 CXL 存储器设备,SoC 将作为 CXL.mem 主机进行连接。 为了获得最大的灵活性,设计人员可能会希望他们的 CXL 接口能够在“主机”或“设备”其中一种模式下运行,因此 SoC 架构需要考虑两者的数据流和控制。   CXL.mem 协议很简单,因此在大多数实现中,CXL 主机功能可以在很大程度上由软件驱动。 CXL.mem 设备的复杂性从简单到极其复杂不等。 设计人员需要意识到,CXL 不同于许多其他接口规范,它包含了详细的设备级控制。 其中指定了各种服务质量监视器和控制,以及地址解码和分区,因此 CXL.mem 设备设计人员在为其设计开发内部控制和状态接口时需要密切关注。

结语

CXL.mem 为系统和 SoC 设计人员在实施低延迟内存解决方案方面提供了极大的灵活性。 SoC 设计人员需要专注于减少其整体延迟,并在实施 CXL.mem 设备时提前计划规范所要求的应用逻辑。 Synopsys 提供了范围广泛的各种 CXLPCIe 控制器以及 PHY IP,包括双模(CXL 主机和 CXL 设备运行时间均可在单个控制器中选择)和交换机端口支持。 Synopsys 还拥有专业的领域知识,可以帮助引导您做出 SoC 架构和设计选择,以实现最佳延迟和性能。

Synopsys IP 技术公告

深度技术文章、白皮书、视频、网络研讨会、产品公告等等。

继续阅读