查看原文
其他

PCIe 6.0用了什么技巧将传输速率提高了一倍?

wolf uefiblog UEFI社区 2023-12-29
点击上方“公众号” 可以订阅哦!

PCIe 5.0正式公布以来,尽管我们身边还罕有相应设备出现,但在最新公布的CPU中,无论是ARM阵营还是x86阵营,PCIe 5.0都变成必备功能,谁家的PPT缺了它都不好意思出来跟大家打招呼。PCIe 5.0 32GT/s的带宽满足了现今绝大多数的需求。尽管如此,大数据、人工智能、自动驾驶和超高速以太网(800 Gb/s)等对数据吞吐量需求极大的应用,总是欲壑难填,PCIe 5.0的高带宽余量将很快耗尽。今年早些时候,PCI-SIG如约公布了PCIe 6.0正式标准 (仅成员可以下载),PCIe的带宽又一次提高了一倍:

这次升级带宽所采用的技术手段,并不同于PCIe 3.0 -> PCIe 4.0,或者PCIe 4.0 -> PCIe 5.0这样,通过提高传输频率,更快地传输数据来提高带宽。而是有点类似PCIe 2.0到PCIe 3.0,通过改变编码来提高带宽。

来源:NEXTPLATFROM

注意看表中的PCIe 3.0,相对PCIe 2.0,频率只从5GT/s提高到8GT/s,增加了60%;而带宽则从16GB/s升级到32GB/s (16个Lane),这是为什么呢?正如我在这篇颇受欢迎的文章中:深入PCI与PCIe之一:硬件篇

介绍的那样,PCIe 3.0编码方式从8b/10b变成了128b/130b,编码效率提高了24%,从而得到:

1.6 x 1.24 = 2 倍

的传输带宽。受制于主板线材材质受限和成本限制,这一次,PCIe 6.0同样采用了类似方式,而且是仅仅通过改变编码方式到PAM-4来提高带宽。那么什么是PAM-4,什么又是FLIT呢?

PAM-4

PAM-4(pulse amplitude modulation, 4-level)编码并不是一个新技术,在超高速以太网编码上已经广泛应用。但这是它第一次应用在板级总线编码。我们知道,PCIe传输信号是一对差分信号,解码的时候只有0和1两种,叫做NRZ (non-return-to-zero),而PAM-4根据则在0和1之间划分出更多的空间,一个周期可传输信号从1个bit变成传输2个bit:

眼图演变

可以看到NRZ实际上是一种PAM2编码。是不是有点像Flash存储单元从SLC到MLC的转变?

Flash SLC和MLC

编码从0和1两个Level,变得有四个Level,带来了更多的误码率。为此要引入FEC(forward-error-correction),通过定长FLIT(flow control unit)和CRC(cyclic redundancy check)来校验数据并在出错后重发。因为定长FLIT的编码相对以前更加高效,从而不但没有增加延迟,反倒降低了延迟 。

结语

PAM4的引入,为以后继续通过这种方式打开了道路,令人浮想联翩。除了速度,PCIe 6.0还引入了L0p链路状态,关于它的内容,我们将在介绍链路ASPM(L0,L1,L0s和L0p)中介绍。PCIe 4.0之后Retimer的引入,它也同样适用于PCIe 5.0和6.0,我们也将今后专文介绍。

有人称它是PCIe Spec公布以来变化最大的一次,我却认为它实际上是最讨巧的一次,没有触及继续挑战传输频率这个技术和经济难题,你觉得呢?

其他PCIe内容:

深入PCI与PCIe之二:软件篇

PCIe的通道是怎么分分合合的?详解PCIe bifurcation

基于PCIe 5.0的CXL是什么?

参考资料

[1] PCIe 6.0 Spec: https://pcisig.com/pci-express-6.0-specification

[2] FLIT&PAM: https://pcisig.com/blog/pcie%C2%AE-60-specification-webinar-qa-deeper-dive-flit-mode-pam4-and-forward-error-correction-fec


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存