PCIE理论带宽与实际带宽
我们平时都习惯用Gb/s,MB/s或者GB/s来计算和表示带宽值,但是PCIE协议用的是GT/s即每秒千兆传输来表示传输速率,用起来不是很方便,也没有固定格式转换,但是可以计算出来理论值来参考,实际测试的时候还会有些损耗。
PCIE的不同版本传输速率转换不同,主要是跟不同版本的编码方式有关,因为PCIe是一条串行总线,数据中嵌入了时钟,它需要确保发生足够的电平转换(1到0和0到1),以便接收端恢复时钟。
1、PCIE1.0和PCIE2.0 使用了 “8b/10b “编码,即每8个bit(1个字节)被编码成一个10 bit 的符号进行传输,然后在接收端进行解码,因此,总线传输10 bit的编码数据实际所发送的只有8 bit的数据。
所以PCIE1.0和PCIE2.0转换效率是8b/10b。
2、到了PCIE 3.0 标准及以后,编码方案为128b/130b编码,也即每128 bit的数据编码为130 bit的符号进行传输,传输效率得到极大提升,即128b/130b。
3、带宽计算可以先计算出单条lane带宽在乘以通道长度(x1/x4/x8等)。
4、下图是不同版本的PCIE带宽,供参考,实际测试的时候会有一定损耗的。
PCI Express 版本 | 推出 | Line 编码 | 原始 传输率* | 有效带宽 | ||||
---|---|---|---|---|---|---|---|---|
×1 | ×2 | ×4 | ×8 | ×16 | ||||
1.0 | 2003 | 8b/10b | 2.5 GT/s | 250 MB/s | 0.50 GB/s | 1.0 GB/s | 2.0 GB/s | 4.0 GB/s |
2.0 | 2007 | 8b/10b | 5.0 GT/s | 500 MB/s | 1.0 GB/s | 2.0 GB/s | 4.0 GB/s | 8.0 GB/s |
3.0 | 2010 | 128b/130b | 8.0 GT/s | 984.6 MB/s | 1.97 GB/s | 3.94 GB/s | 7.88 GB/s | 15.8 GB/s |
4.0 | 2017 | 128b/130b | 16.0 GT/s | 1969 MB/s | 3.94 GB/s | 7.88 GB/s | 15.75 GB/s | 31.5 GB/s |
5.0 | 2019 | NRZ 128b/130b | 32.0 GT/s | 3938 MB/s | 7.88 GB/s | 15.75 GB/s | 31.51 GB/s | 63.0 GB/s |
使用较多的场景是PCIE设备以及扩展存储设备,例如:Nvme磁盘、HBA、RAID以及expander等,GPU以及网络设备往往只需要向下兼容即可。