PCIe 6.0时代即将到来,你准备好了吗?
新思专家Gary Ruggles发表在电子发烧友网的专业洞见
PCI Express(PCIe)6.0技术即将推出,对于高性能计算、AI和存储SoC开发者来说,理解并考虑如何最好地应对即将面对的关键变化,以及由此带来的设计挑战变得至关重要。这些变化包括从非归零(NRZ)转换到脉冲幅度调制4(PAM-4)信号导致对噪声的敏感性增加,转向FLow控制器unIT(FLIT)导致控制器行为和性能的变化,PHY与控制器之间紧密集成的需求,以及针对互操作性和测试的规划。
本文为开发者总结了主要变化,以及如何处理这些变化,以确保顺利成功地过渡到PCIe 6.0。
开发者需要考虑的PCIe 6.0的三个主要变化如下:
● 数据速率从32GT/s翻倍至64GT/s
● 从NRZ编码转换到PAM-4编码,以及由此带来的纠错影响
● 从传输的可变大小TLP到固定大小FLIT
前两项变化紧密相关,并且受到要传输PCIe 6.0信号的通道性质的影响。
除了这三项变化之外,本文还将简要介绍其他一些新特性,例如旨在允许功率/带宽扩展的新的低功耗状态L0p,以及支持的标签数量从PCIe 5.0中的768个(10位标签)扩展到PCIe 6.0中的15,360个(14位标签)。
通道和PAM-4
当数据速率从16GT/s加倍到32GT/s时,奈奎斯特频率也从8GHz加倍到16GHz,使得PCIe 5.0(第5代)的频率相关损耗比PCIe 4.0(第4代)严重得多。再加上电容耦合(噪声和串扰)的增加,使得PCIe 5.0通道成为最难处理的NRZ通道。如果PCIe 6.0仍然保留NRZ信号,则奈奎斯特频率将增加到32GHz,通道损耗大于60dB,这对于实际系统而言太大了,因此需要从NRZ更改为PAM-4信号。这一变化意味着发射和接收的信号现在有四个不同的电压电平,而不是两个,如图1所示。
图1(a)显示了使用NRZ信号的PCIe 5.0的眼图,包含两个电压电平和单眼。图(b)显示了使用PAM-4信号的PCIe 6.0的眼图,包含四个电压电平和三眼。图1中的两个信号具有相同的16GHz奈奎斯特频率和相同的单位间隔(UI)。这意味着他们基本上可以使用相同的PCIe 5.0通道,而不会让频率相关损耗变得更糟糕,如果使用64GT/s的NRZ信号,奈奎斯特频率为32GHz。这就是56G和112G以太网转换到PAM-4信号的原因,也是PCIe 6.0现在转换到PAM-4的原因,可以降低信号损耗。但是PAM-4的四个电压电平在一个UI中使用2bit编码,而NRZ是1bit编码,从而使数据速率提高了一倍。这听起来很棒,但是这里有一项重要的权衡因素。由于发射端(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字节(32DW)的事务层数据包(TLP),相对于PCIe 5.0将获得显而易见的实际延迟改进。
FLIT
开发者需要考虑的另一个重要问题是转换到使用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相比,这提高了带宽效率。
新的低功耗状态
用于FLIT模式的L0p
PCIe 6.0引入了一种新的低功耗状态,称为L0p,允许PCIe 6.0链路在不中断数据流的情况下扩展带宽利用率,从而降低功耗。在前几代中,为了改变链路宽度,整个链路重新训练时,流量会中断几微秒,但L0p允许链路关闭通道,从而降低功耗,同时始终保持至少一个通道处于活动状态,即使其他通道正在进行链路训练。需要注意的是,这种新的低功耗模式仅在FLIT模式下可用,而L0s支持非FLIT模式。
这种新的低功耗模式是对称的,这意味着TX和RX一起缩放,并且支持FLIT模式的重定时器也支持这种模式。在处于L0p期间空闲通道的PHY功耗预计与关闭通道时的功耗相近。
在64GT/s下保持性能
为了在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控制器的配置过程中进行仿真和验证,以确保能够实现预期的性能。
要考虑的第二个因素是如何确保应用能够有效地利用PCIe 6.0的大量可用带宽。通常,应用程序通过带有3个独立接口的控制器连接到PCIe:分别用于已发布、未发布和已完成事务。对于64GT/s PCIe 6.0,各种情况的分析表明,使用单个接口将导致链路利用率或带宽效率(实现的带宽相对于理论带宽)的显著损失。对于较小的数据路径宽度和较小的负载大小,此问题最为严重。
如图3所示,对于传统的单应用接口和双应用接口(用于已发布事务),PCIe 6.0 在各种数据路径宽度和有效负载大小下的传输链路利用率。在1024b数据路径的32字节有效负载的情况下,使用单个已发布接口而不是两个接口导致链路利用率下降54%。这意味着在这种情况下,使用带有单个应用接口的控制器将获得相当于PCIe 5.0的性能。
图3:使用多个应用接口来提高PCIe 6.0链路利用率
PHY和控制器集成
为了实现最佳性能、最低延迟和简化集成,通过单一供应商来实现PHY和控制器IP的完整解决方案是有利的。如果这不可能,PIPE接口的细节就比较关键。PIPE 5.x 接口规范不支持PCIe 6.0,因此必须指定较新的版本PIPE 6.0。现在看来,PCIe6.0 的大多数设计将采用基于新PIPE 6.0规范的SerDes架构PIPE接口。这简化了PHY 设计,还使PCIe 6.0PHY在推出时能够支持CXL 3.0的低延迟要求。
在PCIe 6.0中,仍然需要权衡数据路径位宽和PIPE接口处时序能够收敛的频率。对于要求最大的PCIe 6.0带宽和16通道配置的应用,只有两个可行的选择。为了使时序能够收敛在1GHz,需要使用64b PIPE,这又需要1024b PCIe 6.0控制器架(16 通道x64b=1024b)。这是PCIe 6.0的一个新特性,因为前代PCIe没有1024位架构可用。
另一个选择是使用32位PIPE并坚持使用512位架构。这意味着在PHY控制器接口上以2GHz来收敛时序。虽然大多数SoC开发者不太可能首选这种架构,但如果开发者想要在非常快的CMOS过程中实现最小的延迟,那他们就有可能会这么选择,因为将bit时钟的周期时间减半,可以提供比1GHz时序更小的延迟。
测试和调试注意事项
对于量产设备,64GT/s速率的生产测试需要能够验证链路的快速测试,此类测试通常使用内置环回模式、数据图形发生器和接收器(集成在PHY和控制器IP中)。在PHY中支持PAM-4的环回比NRZ更复杂,但很重要,应将其视为可测试性解决方案的一部分。
对于实际硅片中的调试和质量监测,能够监测硅片中的FBER对于一个系统的实际链路质量也非常有益。可以与内置scope功能结合使用,通常合并入PCIe 6.0 PHYIP,以获得对TX和RX之间更详细的理解。
像PCIe 6.0这样的新规范需要进行更鲁棒的系统测试,针对调试、错误注入和统计监测功能提供内置控制器支持非常重要。这有助于不确定是否能够正确地开发固件和软件,以预测可能遇到的任何潜在的实际系统问题。
总结
虽然PCIe 5.0正在广泛流行并被主流设计所采用,但业界急切地等待PCIe 6.0的推出。好消息是PCIe 6.0带来了更高的性能和一系列新特性,包括64GT/s的数据速率,采用具有吞吐量和延迟优势的 FLIT,以及新的低功耗状态L0p,实现了真正的带宽扩展来降低功耗。然而,这些变化引入了一些注意事项,开发者在决定迁移到新的PCIe 6.0规范之前需要了解这些注意事项。新思科技可以通过针对PCIe5.0的DesignWare IP(客户已在超过150种设计中使用了该IP)和最近推出的PCIe6.0 IP更容易实现这一转变。新思科技是PCI-SIG工作组的积极贡献者,一直在帮助制定跨越所有代系的PCIe规范。
//////////