础滨驱动的设计应用
草榴社区 高级产物营销经理 Gary Ruggles
PCI Express? (PCIe?) 6.0 技术即将推出,对于高性能计算、AI 和存储 SoC 设计人员来说,理解并考虑如何最好地应对即将面对的关键变化以及由此带来的设计挑战变得至关重要。这些变化包括从非归零 (NRZ) 转换到脉冲幅度调制 4 (PAM-4) 信号导致对噪声的敏感性增加,转向 FLow 控制器 unIT (FLIT) 导致控制器行为和性能的变化,PHY 与控制器之间紧密集成的需求,以及针对互操作性和测试的规划。
本文为设计人员总结了主要变化,以及如何处理这些变化,以确保顺利成功地过渡到 PCIe 6.0。
设计人员需要考虑的 PCIe 6.0 的三个主要变化如下:
前两项变化紧密相关,并且受到预计要传输 PCIe 6.0 信号的通道性质的影响。
除了这三项变化之外,还将简要介绍其他一些新特性,例如旨在允许功率/带宽扩展的新的低功耗状态 L0p,以及支持的标签数量从 PCIe 5.0 中的 768 个(10 位标签)扩展到 PCIe 6.0 中的 15,360 个(14 位标签)。
当数据速率从 16 GT/s 加倍到 32 GT/s 时,奈奎斯特频率也从 8GHz 加倍到 16 GHz,使得 PCIe 5.0(第 5 代)的频率相关损耗比 PCIe 4.0(第 4 代)严重得多。再加上电容耦合(噪声和串扰)的增加,使得 PCIe 5.0 通道成为最难处理的 NRZ 通道。如果 PCIe 6.0 试图保留 NRZ 信号,则奈奎斯特频率将增加到 32 GHz,通道损耗大于 60dB,这对于实际系统而言太大了,因此需要从 NRZ 更改为 PAM-4 信号。本质上,这一变化意味着发射和接收的信号现在有四个不同的电压电平,而不是两个,如图 1 所示。
图 1:在以相同比例显示的眼图中,(a) PCIe 5.0 32GT/s(NRZ 信号)显示 2 个信号电平和单眼,(b) PCIe 6.0 64 GT/s(PAM-4 信号)显示 4 个信号电平和 3 个不同的眼
图 1(a) 显示了使用 NRZ 信号的 PCIe 5.0 的眼图,包含两个电压电平和单眼。图 (b) 显示了使用 PAM-4 信号的 PCIe 6.0 的眼图,包含四个电压电平和三眼。图 1 中的两个信号具有相同的 16 GHz 奈奎斯特频率和相同的单位间隔 (UI)。这意味着他们基本上可以使用相同的 PCIe 5.0 通道,而不会遇到更糟糕的频率相关损耗,如果使用 64 GT/s 的 NRZ 信号,尼奎斯特速率为 32GHz。这就是 56G 和 112G 以太网转换到 PAM-4 信号的原因,也是 PCIe 6.0 现在转换到 PAM-4 的原因,没有更多的信号损耗。但是 PAM-4 的四个电压电平在一个 UI 中使用 2 bit 编码,而 NRZ 是 1 bit 编码,从而使数据速率提高了一倍。这听起来很棒,但是这里有一项重要的权衡因素。由于发射端 (TX) 的总体电压摆幅没有增加,因此 PAM-4 系统中每只眼的可用电压仅为 NRZ 的 1/3。因此,信号在 TX 和接收端 (RX) 之间遇到的任何噪声都会对信号完整性造成更大的损害。
转变为 PAM-4 信号使得 RX 的工作更加困难,因为眼不仅在电压域要小得多(约 1/3),而且在时域也要小得多,而且这么多的转换必须嵌入同一个 UI 中。如图 1 所示,这很明显。图 1 (b) 底部的绿色箭头显示了 NRZ 眼的相对宽度,表明 PAM-4 的眼宽度明显小于 NRZ 的眼宽度。因此,使用 PAM-4 时,时钟和数据恢复更加困难,需要更好的 RX 设计。PAM-4 的大多数设计(包括即将推出的 PCIe 6.0 设计)将在 RX 中配置一个模数转换器 (ADC),以更好地满足 PAM-4 的多电平信号需求以及对传统 NRZ 的支持。这意味着数字滤波是完全开放的,一个 RX 对另一个 RX 使用特定的数字信号处理 (DSP) 算法,再叠加针对不同通道的模拟和数字均衡的仔细平衡,将区分 PHY 性能。此外,更窄的 PAM-4 眼意味着 PCIe 6.0 上的 TX 抖动性能需要比 PCIe 5.0 上好 2 倍左右,设计人员应该仔细考虑这些因素。
从 NRZ 信号转换为 PAM-4 信号还会显著影响封装和电路板设计,因为更改为四个电平信号会导致信噪比 (SNR) 立即退化 9.6dB,因此正确管理噪声变得更加关键,即使奈奎斯特速率相同,封装和电路板设计中的串扰和回波损耗也比 PCIe 5.0 高。噪声敏感性增加意味着我们用于 PCIe 的 1e-12 误码率 (BER) 不可行,并且需要前向纠错 (FEC),因为 PAM-4 信令的 BER 将比 1e-12 高几个数量级,第一位误码率 (FBER) 的目标是 1e-6。在其他标准(如以太网)中,使用强大的 FEC 来获得可接受的 BER,但代价是带来 100ns 量级的大量额外延迟,这对 PCIe 来说是不可接受的。
由于 FEC 延迟和复杂性会随着需要纠正的符号数量的增加而增加,并且由于 PCIe 6.0 的延迟目标非常苛刻,因此使用了轻量级 FEC,并与使用循环冗余码 (CRC) 检测错误的 PCIe 的重试能力相结合,以便数据包可以重新发送或重试。PCIe 6.0 的轻量级 FEC 可以产生 1e-6 级的重试概率,并且与更强的 CRC 结合使用时,整个系统可以提供稳定、接近无误的性能,对往返时延的影响非常小(通常约为 2 纳秒)。这意味着设计人员可以使用与 PCIe 5.0 基本相同的延迟预期进行设计,对于许多情况,例如大于 128 字节(32 DW)的事务层数据包 (TLP),相对于 PCIe 5.0 将获得显而易见的实际延迟改进。
设计人员需要考虑的另一个重要问题是转换到使用 FLIT 作为数据交换单元,而不是使用可变大小的 TLP。由于 PAM-4 编码的更改和 FEC 需要将误码率提高到可接受的水平,因此这是必要的,这样 CRC 和重试机制可以让路给可接受的错误率和系统延迟。FEC 仅适用于固定大小的数据包,因此 PCIe 6.0 采用了 256 字节 FLIT 作为标准大小的数据传输单元。为了保留现有通道的 PCIe 5.0,需要对 PAM-4 进行更改,这需要添加 FEC,相应地需要转换到 FLIT。使用 FLIT 对系统有影响,因为一些 FLIT 可能有来自多个 TLP 的数据,而其他 FLIT 可能只包含 TLP 的一部分,并且底层 TLP 的大小仍可以在 0 到 4096B(1024 个 DWORD)之间变化。
另一个影响是,一旦设备进入 FLIT 模式(例如,通过协商必须支持 FLIT 的 PCIe 6.0 链路进入),则无论链路质量有何变化,它都必须保持 FLIT 模式。因此,如果由于通道不稳定而需要降低链路速度,则新协商的较低数据速率将保持 FLIT 模式。这意味着在 PCIe 6.0 中,需要支持的所有可能的速度都有 FLIT 模式。
随着在 PCIe 6.0 中引入新的 FLIT 模式,TLP 和数据层数据包 (DLP) 包头格式发生了变化,应用程序需要理解并正确处理这些变化。例如,对于 PCIe 6.0,FLIT 包含自己的 CRC,因此数据链路层数据包 (DLLP) 和 TLP 不再需要像在 PCIe 5.0 和前几代中那样的单独 CRC 字节。此外,由于 FLIT 的大小固定,因此无需使用前几代(非 FLIT 模式)中的 PHY 层成帧令牌。与 PCIe 5.0 相比,这提高了带宽效率。
PCIe 6.0 引入了一种新的低功耗状态,称为 L0p,允许 PCIe 6.0 链路在不中断数据流的情况下扩展带宽利用率,从而降低功耗。在前几代中,为了改变链路宽度,整个链路重新训练时,流量会中断几微秒,但 L0p 允许链路关闭通道,从而降低功耗,同时始终保持至少一个通道处于活动状态,即使其他通道正在进行链路训练。这种新的低功耗模式仅在 FLIT 模式下可用,而 L0s 支持非 FLIT 模式。
这种新的低功耗模式是对称的,这意味着 TX 和 RX 一起缩放,并且支持 FLIT 模式的重定时器也支持这种模式。在处于 L0p 期间空闲通道的 PHY 功耗预计与关闭通道时的功耗相近。
为了在 PCIe 系统中实现最佳性能,设计人员需要确定系统必须处理的未发布请求 (NPR) 的最大数量,以保持数据畅通,这取决于有效负载大小以及总往返时间 (RTT)。该数量转换为可用标签的数量,并且是必须根据系统需求正确设置的控制器属性。对于 PCIe 6.0,随着数据速率再增加一倍,以前的 768 个标签限制已经远远不够,因此标签数量最大值急剧增加,变为基于 14 位的 15,360 个标签。这样即使在往返时间较长的情况下也可以实现高效的性能,并且具有很大的余量,可以在将来实现更快的数据速率。
图 2 显示了各种 RTT 的 PCIe 4.0、5.0 和 6.0 数据速率所需的标签数量,以保持 256B 有效负载和 32B 最小读请求大小的最大吞吐量。如图 2 所示,PCIe 5.0 的 768 个标签限制远远不足以支持大多数 PCIe 6.0 系统的性能。这应该在作为系统片上 (SoC) 设计的一部分的 PCIe 6.0 控制器的配置过程中进行仿真和验证,以确保能够实现预期的性能。
图 2:实现 PCIe 4.0 至 PCIe 6.0 链路最大吞吐量所需的标签数量
要考虑的第二个因素是如何确保应用能够有效地利用 PCIe 6.0 的大量可用带宽。通常,应用程序通过带有 3 个独立接口的控制器连接到 PCIe:分别用于已发布、未发布和已完成事务。对于 64 GT/s PCIe 6.0,各种情况的分析表明,单个接口将导致链路利用率或带宽效率(实现的带宽相对于理论带宽)的显著损失。对于较小的数据路径宽度和较小的负载大小,此问题最为严重。
如图 3 所示,对于传统的单应用接口和双应用接口(用于已发布事务),PCIe 6.0 在各种数据路径宽度和有效负载大小下的传输链路利用率。在 1024b 数据路径的 32 字节有效负载的情况下,使用单个已发布接口而不是两个接口导致链路利用率下降 54%。这意味着在这种情况下,使用带有单个应用接口的控制器将获得相当于 PCIe 5.0 的性能。
图 3:使用多个应用接口来提高 PCIe 6.0 链路利用率
为了实现最佳性能、最低延迟和简化集成,通过单一供应商来实现 PHY 和控制器IP的完整解决方案是有利的。如果这不可能,PIPE 接口的细节就比较关键。PIPE 5.x 接口规范不支持 PCIe 6.0,因此必须指定较新的版本 PIPE 6.0。现在看来,PCIe 6.0 的大多数设计将采用基于新 PIPE 6.0 规范的 SerDes 架构 PIPE 接口。这简化了 PHY 设计,还使 PCIe 6.0 PHY 在推出时能够支持 CXL 3.0 的低延迟要求。
在 PCIe 6.0 中,仍然需要权衡数据路径位宽和 PIPE 接口处时序能够收敛的频率。对于要求最大的 PCIe 6.0 带宽和 16 通道配置的应用,只有两个可行的选择。为了使时序能够收敛在 1GHz,需要使用 64b PIPE,这又需要 1024b PCIe 6.0 控制器架构(16 通道 x 64b = 1024b)。这是 PCIe 6.0 的一个新特性,因为前代 PCIe 没有 1024 位架构可用。
另一个选择是使用 32 位 PIPE 并坚持使用 512 位架构。这意味着在 PHY 控制器接口上以 2GHz 来收敛时序。虽然这不太可能是大多数 SoC 设计人员的首选,但一些试图在非常快的 CMOS 过程中实现最小延迟的设计人员可能会选择,因为它将 bit 时钟的周期时间减半,提供比 1GHz 时序更小的延迟。
对于量产设备,64 GT/s 速率的能够验证链路的快速测试是生产测试需要的。此类测试通常使用内置环回模式、数据图形发生器和接收器(集成在 PHY 和控制器 IP 中)。在 PHY 中支持 PAM-4 的环回比 NRZ 更复杂,但同样重要,应将其视为可测试性解决方案的一部分。
对于实际硅片中的调试和质量监测,能够监测硅片中的 FBER 对于一个系统的实际链路质量也非常有益。可以与内置 scope 功能结合使用,通常合并入 PCIe 6.0 PHY IP,以获得对 TX 和 RX 之间更详细的理解。
要对像 PCIe 6.0 这样的新规范进行更鲁棒的系统测试,针对调试、错误注入和统计监测功能提供内置控制器支持非常重要。这有助于不确定是否能够正确地开发固件和软件,以预测可能遇到的任何潜在的实际系统问题。
虽然 PCIe 5.0 正在广泛流行并被主流设计所采用,但业界急切地等待 PCIe 6.0 的推出。好消息是 PCIe 6.0 带来了更高的性能和一系列新特性,包括 64 GT/s 的数据速率,采用具有吞吐量和延迟优势的 FLIT,以及新的低功耗状态 L0p,实现了真正的带宽扩展来降低功耗。然而,这些变化引入了一些注意事项,设计人员在决定迁移到新的 PCIe 6.0 规范之前需要了解这些注意事项。草榴社区 可以通过针对 PCIe 5.0 的 DesignWare?IP(客户已在超过 150 种设计中使用了该IP)和最近推出的 PCIe 6.0 IP 更容易实现这一转变。草榴社区 是 PCI-SIG 工作组的积极贡献者,帮助制定跨越所有代系的 PCIe 规范。