一文读懂PCIe的进化史

本文转载自:SDNLAB

编者按

PCIe发展至今已经从最初的1.0升级到了6.0,但很多人对于PCIe只知其然而不知其所以然,小编今天就带大家一起来看一看。

要想了解什么是 PCIe,首先我们要来聊聊什么是总线。

如果把主板看作一座城市,那么总线就像是城市里的公共汽车,能按照固定行车路线,传输来回不停运作的比特

在很久以前,我们的电脑并不像如今这样有统一的接口与总线规范。那时想要给主板做拓展有很大的局限性,因为主板上的接口基本只能对应一个硬件设备,各大厂商之间的规范也各不相同,就是在这样的大环境下,ISA (Industry Standard Architecture)诞生了。

ISA总线是IBM公司为PC/AT电脑而制定的总线标准。由于兼容性好,ISA在上个世纪80年代是最广泛采用的系统总线,不过它的弱点也是显而易见的,比如传输速率过低、CPU占用率高、占用硬件中断资源等。ISA总线的淘汰也成了必然。

1992年6月,英特尔发明了名为外部链接标准也就是Peripheral Component Interconnect的接口规范,缩写为PCI。PCI接口的特性在于采用的是并行传输方式,根据连接的数据宽度和频率不同,能够达到不同的数据传输速度。

相较上一代 ISA,PCI 有着明显的速度提升,同时还能够自动配置资源,支持即插即用,很快就在各大厂商之间的混战中占领市场。

不过PCI的带宽有限,对日益强悍的GPU等高性能单元来说逐渐成为了瓶颈。因此,基于PCI的技术又发展出了AGP等专用于图形卡的总线接口标准。AGP依旧是并行传输数据。

随着系统性能进一步提升,对带宽要求越来越大。PCI和AGP这样的并行传输技术,无法在当时的技术条件下带来性能的进一步提升。

终于在2001年,非营利组织PCI-SIG召集了英特尔、AMD、博通、IBM、微软等厂商提出了PCIe(Peripheral Component Interconnect Express)新总线标准。

1.png

PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量(QOS)等功能。PCIe的主要优势就是数据传输速率高,而且还有相当大的发展潜力。

PCIe也有多种规格,x1、x4、x8、x16、x32,x 后面的数字代表 PCIe 插槽有多少条通道(数据如何进出 PCIe 卡)。一个 PCIe x1 插槽有一个通道,可以每个周期传输一位数据。一个 PCIe x2 插槽有两个通道,每个周期可以传输两位数据(依此类推)。

2.png

大多数台式电脑主板都有许多 PCIe 插槽,可用于添加通用显卡、各种外设卡、无线网卡或固态硬盘等等。PC 中可用的 PCIe 插槽类型将取决于你购买的主板。

在使用中你可以将PCIe x1卡插入PCIe x4或者x16的插槽中,但该卡将始终在 PCIe x1 模式下运行。同样的,你也可以将 PCIe x8 卡插入 PCIe x4 插槽,但它只能使用一半的带宽。

下图展示了 PCIe 规范随时间的演变:

3.png

2003年-2010年:PCIe 1.0 - PCIe 3.0

PCIe 技术始于 2003 年,PCIe 1.0数据速率为 2.5GT/s,PCIe 2.0 规范在 2006 年将数据速率翻了一番,达到 5.0 GT/s。前两代 PCIe 技术使用 8b/10b 编码,产生了 25% 的编码开销。

2010年,PCIe 3.0 将数据速率提高到了 8.0 GT/s ,并采用了新的 128b/130b 编码机制,使每个引脚的带宽比 PCIe 2.0 翻了一番。新的编码机制通过采用三个随机位翻转检测的故障模型确保了高可靠性,并具有多种创新方法来执行数据包的物理层帧,同时保留从上层发送的数据包格式。

PCIe 3.0规范还加入了一些增强信号指令,以及对数据完整性的优化,包括发送器和接收器以及拓扑结构等,再加上重新优化的PLL、数据通道等。此外,PCIe 3.0标准的更新版本PCIe 3.1在2014年11月发布,加入了包括电源管理、性能优化和功能拓展等多项改变,当然本质的数据传输能力没有变化。

2017年10月:16.0 GT/s的PCIe 4.0

依照PCIe 1.0到PCIe 3.0的更新节奏来看,相对于2010年发布的PCIe 3.0,PCIe 4.0规范应该要在2014或2015年发布,但实际上,PCI-SIG直到2017年中才发布PCIe 4.0,较预期晚2、3年,这连带也推迟了应用的时间。

PCIe 4.0花费了7年时间将数据速率从 8.0 GT/s 翻倍到 16.0 GT/s (每条通道大约 2GB/s,或总共 64GB/s)。PCIe 4.0 保留了相同的 128b/130b 编码方案,PCIe 标准通过软件和机械接口保持与旧规范和新规范的向后和向前兼容性。也就是说,PCIe 3.0卡可以在支持PCIe 4.0的主板上工作,PCIe 4.0卡也可以在PCIe 3.0主板上工作,但受限于PCIe 3.0接口的性能。

不过,作为处理器平台龙头厂商的Intel未能及时支持PCIe 4.0。当PCIe 4.0于2017年底发布后,在2019年前后进入推广期,除了获得一些网卡与SSD产品的支持之外,在主机与服务器平台方面,也有IBM的Power 9,以及AMD的Zen 2架构处理器平台支持,而后者也让PCIe 4.0进入了x86平台应用领域。

然而Intel的迟迟不支持导致PCIe 4.0一直无法真正进入主流应用阶段。这个僵局直到2020年后才打破,但Intel平台真正对PCIe 4.0的支持要等到2021年中才落实,至此,PCIe 4.0也才算是开始进入主流应用阶段。

2019 年 5 月:32.0 GT/s 的 PCIe 5.0

过去几年,计算领域发生了重大变化,云计算、边缘计算以及人工智能、机器学习和分析等应用引发了对更快的数据处理和移动的需求。随着计算和内存容量呈指数级增长,我们需要以更快的节奏维持 I/O 带宽翻倍,以跟上新兴应用程序的性能。

例如,400 Gb(或双 200 Gb)网络需要 32.0 GT/s 的 x16 PCIe 来维持带宽。这就要求在PCIe 4.0架构之后不到两年的时间里发布一个完全向后兼容的PCIe 5.0——这对于一个标准来说是一个重大的成就。

从 PCIe 4.0 到 PCIe 5.0 规范的演变主要是速度升级。128b/130b 编码是将带宽扩展到更高数据速率的协议支持,在PCIe 3.0和PCIe 4.0规范中已经内置了这种编码。通道损耗扩展到 36 dB,同时对连接器进行了改进,以最大限度地减少频率范围增加所带来的损耗。

PCIe 5.0 架构的增强功能之一是对备用协议的内置支持。随着 PCIe 技术发展成为带宽最高、能效最高和部署最广泛的接口,某些用途需要额外的协议,例如,某些加速器和智能网卡可以缓存系统内存并将其内存映射到系统内存空间,以便在PCIe协议之外进行高效的数据交换。同样,系统内存正在迁移到 PCIe PHY,因为它提供了高能效的高带宽和低延迟解决方案。

PCI-SIG 预计 PCIe 4.0 和 PCIe 5.0 将在一段时间内共存,PCIe 5.0 用于对吞吐量要求高的高性能需求,例如用于 AI 工作负载和网络应用程序的 GPU。因此,PCIe 5.0 将主要用于数据中心、网络和高性能计算 (HPC) 企业环境,而不那么密集的应用(如台式机应用)将适用于 PCIe 4.0。

2022 年1月:PCIe 6.0发布,速度为 64 GT/s

2022年1月11日,PCI-SIG正式发布了PCIe 6.0最终版本1.0,从技术上来说,PCIe 6.0是PCIe问世近20年来,变化最大的一次。

4.png

PCIe 6.0 规范目标要求

根据PCI-SIG的介绍,PCIe 6.0主要有三大变化:数据传输速率从32GT/s翻倍至64GT/s;编码方式从NRZ 信令模式转向PAM4信令模式;从传输可变大小TLP到固定大小FLIT。

5.png

PAM4 信号

PCIe 6.0 规范引入了PAM4编码方式,才让PCIe 6.0的数据传输速率再次翻倍。在PCIe 6.0之前,各代PCIe采用的都是NRZ信令,即不归零编码,它采用0或1两个电压等级,每一个时脉周期只能传输1bit的信号。PAM4使用4个信号电平,而不是传统的0/1两个电平,单个信号就能有四种编码(00/01/10/11)状态。这使得PAM4可以携带两倍于NRZ信令的数据。但它的代价是比特误码率 (BER) 更高。

6.png

尽管 PCIe 架构具有链路级重试 (LLR) 机制来重放受错误影响的事务,但由于重试而导致的带宽损失使其在PAM4错误率下无法运行。因此,PCIe 6.0 规范结合使用轻量级前向纠错(FEC)和 LLR 机制来满足低延迟和低带宽开销的性能指标。此外,循环冗余校验(CRC)方案提供了一个非常强大的错误检测机制,可以抵消相关性的高错误率。

7.png

FLIT 模式

PCIe 6.0 引入了 FLIT 模式,其中数据包以固定大小的流量控制单元组织,而不是过去几代 PCIe 中的可变大小。引入 FLIT 模式的最初原因是纠错需要使用固定大小的数据包;但是,FLIT 模式还简化了控制器级别的数据管理,从而提高了带宽效率、降低了延迟并缩小了控制器占用空间。对于固定大小的数据包,不再需要在物理层对数据包进行成帧,这为每个数据包节省了 4 字节。FLIT 编码还消除了以前 PCIe 规范中的 128B/130B 编码和 DLLP(数据链路层数据包)开销,从而显著提高了 TLP效率,尤其是对于较小的数据包。

8.png

FLIT 模式

PCIe 6.0 引入了 FLIT 模式,其中数据包以固定大小的流量控制单元组织,而不是过去几代 PCIe 中的可变大小。引入 FLIT 模式的最初原因是纠错需要使用固定大小的数据包;但是,FLIT 模式还简化了控制器级别的数据管理,从而提高了带宽效率、降低了延迟并缩小了控制器占用空间。对于固定大小的数据包,不再需要在物理层对数据包进行成帧,这为每个数据包节省了 4 字节。FLIT 编码还消除了以前 PCIe 规范中的 128B/130B 编码和 DLLP(数据链路层数据包)开销,从而显著提高了 TLP效率,尤其是对于较小的数据包。

最后

在实际应用方面,刚刚发布不久的PCIe 6.0目前自然还尚无具体进展,现在主流的应用还在PCIe 3.0和PCIe 4.0,不过PCIe 5.0已经进入初步的推广期,自2021年底开始,便开始有厂商推出支持PCIe 5.0的高速网卡与SSD产品,并且一些新的GPU、CPU开始采用PCIe 5.0了。

这也让当前的PCIe应用环境形成了3.0、4.0、5.0、6.0“四代同堂”的奇特现象,并且仍将持续一段时间。

整体而言,新一代PCIe 5.0与PCIe 6.0已经崛起,并陆续投入应用,PCIe 6.0带来的新特性,包括64GT/s的数据速率、PAM4编码方式、具有吞吐量和延迟优势的 FLIT等等,必然会更好地推动行业发展。

参考:

https://www.electronicdesign.com/industrial-automation/article/21136215/intel-whats-the-difference-going-from-pcie-30-to-pcie-60 
https://pcisig.com/blog/evolution-pci-express-specification-its-sixth-generation-third-decade-and-still-going-strong 
https://www.rambus.com/blogs/pcie-6/ 
https://www.elecfans.com/d/1816714.html 
https://www.eettaiwan.com/20220323nt61-pcie-6-0-is-coming/ 
https://www.sohu.com/a/600164003_121123771 
https://new.qq.com/rain/a/20190907A0JGH000 

https://www.ithome.com.tw/tech/149041 

最新文章