PCIE学习笔记(一)总线规范及接口的带宽、速率计算

目录

一 PCIE总线规范:

二 PCIE接口的带宽、速率计算相关概念

三 PCIE带宽计算


一 PCIE总线规范:


PCI-Express (peripheral component interconnect express) 是一种高速串行计算机扩展总线标准,它原来的名称为 “3GIO” ,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。

PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCIe总线使用了高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。这使得PCIe与PCI总线采用的拓扑结构有所不同。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量 (QOS)等功能。

PCIe 总线使用端到端的连接方式,在一条 PCIe 链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。 PCIe 链路可以由多条 Lane 组成,目前 PCIe 链路× 1 、× 2 、× 4 、× 8 、× 16 和× 32 宽度的 PCIe 链路。

PCIE学习笔记(一)总线规范及接口的带宽、速率计算_第1张图片PCIE学习笔记(一)总线规范及接口的带宽、速率计算_第2张图片

图1:PCIe/AGP/PCI物理接口及PCIe 链路 图

PCIE学习笔记(一)总线规范及接口的带宽、速率计算_第3张图片PCIE学习笔记(一)总线规范及接口的带宽、速率计算_第4张图片

图2:PCI Express x1 和X16板卡图

不同PCIe版本对应的传输速率如下:

PCIe版本

总线频率

Lane的峰值带宽

编码方式

吞吐量

X1

X4

X8

X16

1.0

1.25GHz

2.5GT/s

8b/10b

250MB/s

1GB/S

2GB/S

4GB/S

2.0

2.5GHz

5GT/s

8b/10b

500MB/s

2GB/S

4GB/S

8GB/S

3.0

4GHz

8GT/s

128b/130b

984.6MB/s

3.938GB/S

7.877GB/S

15.754GB/S

4.0

8GHz

16GT/s

128b/130b

1.969GB/s

7.877GB/S

15.754GB/S

31.508GB/S

5.0

16GHz

32 or25GT/s

128b/130b

3.9 or 3.08GB/s

15.8 or 12.3GB/S

31.5 or 24.6GB/S

63.0 or 49.2GB/S

表1:PCIE接口带宽及传输速率

二 PCIE接口的带宽、速率计算相关概念


GT/s —— Giga transation per second (千兆传输/秒),即每一秒内传输的次数。重点在于描述物理层通信协议的速率属性,可以不和链路宽度等关联。

Gbps —— Giga Bits Per Second (千兆位/秒)。GT/s 与Gbps 之间不存在成比例的换算关系

在PCIe总线中,使用GT(Gigatransfer)计算PCIe链路的峰值带宽。GT是在PCIe链路上传递的峰值带宽,其计算公式为 带宽=总线频率×数据位宽×2

传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。而3.0标准中,使用了更为有效的128b/130b编码方案从而避免20%带宽损失,3.0的浪费带宽仅为1.538%,基本可以忽略不计,因此8GT/s的信号不再仅仅是一个理论数值,它是一个实在的传输值。

三 PCIE带宽计算


PCIe 吞吐量(可用带宽)计算方法:吞吐量 = 传输速率 *  编码方案

例如:PCI-e 1.0 协议支持 2.5 GT/s,即每一条Lane 上支持每秒钟内传输 2.5G个Bit;但这并不意味着 PCIe 1.0协议的每一条Lane支持 2.5Gbps 的速率。因为在PCIe 1.0 的物理层协议中为了达到直流均衡,使用的是 8b/10b 的编码方案(8b/10b 的编码基本原理)。 即每传输8个Bit,需要发送10个Bit;这多出的2个Bit并不是对上层有意义的信息。那么, PCIe 1.0协议的每一条Lane支持 2.5 * 8 / 10 = 2 Gbps = 250 MB/s 的速率。

以一个PCIe 1.0 x16的通道为例,x16的可用带宽为 2 * 16 = 32 Gbps = 4 GB/s。

 

而3.0标准中,使用了更为有效的128b/130b编码方案从而避免20%带宽损失,3.0的浪费带宽仅为1.538%,同理可算出PCI-e3.0的带宽:

例如:PCI-e3.0 协议支持 8.0 GT/s, 即每一条Lane 上支持每秒钟内传输 8G个Bit。物理层协议中使用的是 128b/130b 的编码方案。 即每传输128个Bit,需要发送130个Bit。那么, PCIe 3.0协议的每一条Lane支持 8 * 128 / 130 = 7.877 Gbps = 984.6 MB/s 的速率。

一个PCIe 3.0 x16的通道,x16 的可用带宽为 7.877 * 16 = 126.031 Gbps = 15.754 GB/s。

你可能感兴趣的:(接口)