PCIe版本简介
PCIe 是 "Peripheral Component Interconnect Express" 的缩写,中文意思是“外设组件互连快速通道”。这是一种高速串行计算机扩展总线标准,用于计算机内部硬件设备之间的连接,特别是用于连接中央处理单元(CPU)和外设,如图形处理单元(GPU)、固态硬盘(SSD)和其他高速设备。
PCI Express是一种用于连接高速组件的高速串行计算机扩展总线标准,它取代了PCI和PCI- X总线标准,并经过了多次调整改进。PCIe 1.0最初在2002年发布,为了满足日益增长的高带宽需求,之后又相继推出了不同的版本。目前共有五种不同的PCIe标准:PCIe 1.0、PCIe 2.0、PCIe 3.0、PCIe 4.0、PCIe 5.0、PCIe 6.0(于 2022.01 发布),传输速率每过一代增加一倍,PCIe 7.0计划在2025年发布。
PCIe各代次的传输速率、带宽(吞吐量)
值得一提的是,所有的PCIe卡版本都是向后兼容的,也就是说任何版本的PCIe卡和主板都可以以最低版本的模式工作。下表展示了6个传统PCIe版本之间的传输速率和带宽比较(以原始版本N.0为例)。
由于x32并不太常见,上表中就没有写x32的速率。理论上,PCIe 6.0最高支持了256GB/s的带宽。
如果考虑一下线路编码,可以有一些更准确的吞吐量/带宽:(可以看到从PCIe 3.0之后,线路码使用128b/130b编码。这种编码方式是为了实现更高的速率,并加入了均衡、DFE等措施以保证信号完整性。与之前的8b/10b编码相比,128b/130b编码的开销从20%降低到了2%以下)
PCIe卡/插槽的规格
PCIe也有多种规格,x1、x4、x8、x16、x32,x 后面的数字代表 PCIe 插槽有多少条通道(数据如何进出 PCIe 卡)。一个 PCIe x1 插槽有1个通道,可以每个周期传输1位数据。一个 PCIe x4 插槽有4个通道,每个周期可以传输4位数据(依此类推)。x32接口在实际应用中并不常见,通常只在需要极高吞吐量的特殊场合中才会被使用,例如某些高性能计算或特定的企业级存储应用
服务器设备的PCIe规格
Intel SPR、AMD Genoa 平台开始支持PCIe 5.0总线,有些NVMe SSD磁盘是PCIe Gen4 或 Gen5 得设备;在Mellanox的网卡中,CX6 是 PCIe Gen4.0 x16;CX7 是 PCIe Gen5.0 x16/x32。
在Linux系统中,可以通过 lspci -vvv -s $bdf 的命令查看设备是什么PCIe规格,命令输出中查看 “LnkCap”相关的信息,如:Speed 16GT/s, Width x16 就是PCIe 4.0 x16的设备;如下图所示就是查看一个CX6网卡的信息。
参考资料:
https://knowledge.ipason.com/ipKnowledge/knowledgedetail.html/1403
https://fpga.eetrend.com/content/2022/100566300.html
https://community.fs.com/cn/article/pcie-card-selection-guide.html
https://www.nvidia.com/content/dam/en-zz/Solutions/networking/ethernet-adapters/connectX-6-dx-datasheet.pdf
https://www.nvidia.com/content/dam/en-zz/Solutions/networking/ethernet-adapters/connectx-7-datasheet-Final.pdf