PCIe 知识整理-带宽计算

传输速率为每秒传输量GT/s,而不是每秒位数Gbps,因为传输量包括不提供额外吞吐量的开销位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案,导致占用了20% (= 2/10)的原始信道带宽。

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

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

PCIE带宽计算

PCIe 吞吐量(可用带宽)计算方法:

吞吐量 = 传输速率 * 编码方案

PCIe2.0协议支持5.0GT/s,每一条Lane上支持每秒钟传输5G个bit;但是不代表每条Lane支持5Gbps的速率。

由于PCIe2.0的物理层协议采取的是8b/10b的编码方案。每传输8个bit需要发送10个bit。这多出的2个Bit并不是对上层有意义的信息。

那么, PCIe 2.0协议的每一条Lane支持 5 * 8 / 10 = 4 Gbps = 500 MB/s 的速率。

以一个PCIe 2.0 x8的通道为例,x8的可用带宽为 4 * 8 = 32 Gbps = 4 GB/s。

同理,PCI-e3.0 协议支持 8.0 GT/s, 即每一条Lane 上支持每秒钟内传输 8G个Bit。

而PCIe 3.0 的物理层协议中使用的是 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。

为应对各领域日益增长的超高速带宽需求,英特尔推出了全新的互联协议Compute EXpress Link(CXL),面向超极数据中心,高性能计算和AI等领域,可有效解决未来所遇到的负载瓶颈。

SSD的协议标准除了SATA,还有一个更先进的协议标准,就是PCIe。PCIe总线使用了高速差分总线,并采用了端到端的连接方式。

两个设备之间的的传输通道,称为Link,由1,2, 4, 8, 16, 32个Lane组成。Lane的数目代表Link的传输宽度(x1, x2, x4, x8, x16, x32)。

Lane是发送端与接收端之间的一个传输回路。由两组差分信号组成。如下图,

扩展:PCIe链路使用差分信号进行数据传送,一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。

与单端信号相比,差分信号抗干扰的能力更强,能有效抑制电磁干扰EMI(Electro Magnetic Interference)。

PCIe传输速率对比

Gen1/Gen2采用是8b/10b的编码,而Gen3之后则采用的是128b/130b的编码。

PCIe 的速度倍增减惯例与 PCIe 5.0 的发布保持一致。PCIe 5.0 使用自 PCIe 3.0 版以来的标准 128b/130b 编码方法,将在每个方向上提供 64 GB/秒的吞吐量。由于 PCIe 技术允许数据全双工双向流动,因此两个方向的总吞吐量加起来达到 128 GB/秒

PCIe 3.0 之前的编码标准是 8b/10b,这意味着 8 位数据被编码并作为 10 位数字传输。这进而产生了 20% 的性能开销因子,将 2.5 GT/秒的原始比特传输速率降低到仅为 2.0 Gbit/秒的净带宽。这个更有效的 1.5% 开销因子在 PCIe 5.0 编码惯例中仍然有效。

PCIe总线物理链路间的数据传送使用基于时钟的同步传送机制,但是在物理链路上并没有时钟线,PCIe总线的接收端含通过PLL锁相环从接收报文中提取接收时钟,从而进行同步数据传递。

PCIe是一种封装分层协议,主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。

在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

在一条PCIe链路中,这两个端口是完全对等的,分别连接发送与接收设备,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。因此PCIe链路必须使用Switch扩展PCIe链路后,才能连接多个设备。

发布于 2023-07-30 23:25・IP 属地上海

 

浅谈PCIe体系结构 浅谈PCIe体系结构 - 1 - 目录 - 1 - 第I篇PCI体系结构概述 - 1 - 第1章PCI总线的基本知识 - 3 - 1.1 PCI总线的组成结构 - 6 - 1.1.1 HOST主桥 - 6 - 1.1.2 PCI总线 - 7 - 1.1.3 PCI设备 - 7 - 1.1.4 HOST处理器 - 8 - 1.1.5 PCI总线的负载 - 9 - 1.2 PCI总线的信号定义 - 10 - 1.2.1 地址和数据信号 - 10 - 1.2.2 接口控制信号 - 11 - 1.2.3 仲裁信号 - 13 - 1.2.4 中断请求等其他信号 - 14 - 1.3 PCI总线的存储器读写总线事务 - 15 - 1.3.1 PCI总线事务的时序 - 15 - 1.3.2 Posted和Non-Posted传送方式 - 16 - 1.3.3 HOST处理器访问PCI设备 - 17 - 1.3.4 PCI设备读写主存储器 - 19 - 1.3.5 Delayed传送方式 - 21 - 1.4 PCI总线的中断机制 - 23 - 1.4.1 中断信号与中断控制器的连接关系 - 23 - 1.4.2 中断信号与PCI总线的连接关系 - 24 - 1.4.3 中断请求的同步 - 25 - 1.5 PCI-X总线简介 - 28 - 1.5.1 Split总线事务 - 28 - 1.5.2 总线传送协议 - 28 - 1.5.3 基于数据块的突发传送 - 29 - 1.6 小结 - 29 - 第2章PCI总线的桥与配置 - 30 - 2.1 存储器域与PCI总线域 - 30 - 2.1.1 CPU域、DRAM域与存储器域 - 31 - 2.1.2 PCI总线域 - 32 - 2.1.3 处理器域 - 32 - 2.2 HOST主桥 - 34 - 2.2.1 PCI设备配置空间的访问机制 - 35 - 2.2.2 存储器域地址空间到PCI总线域地址空间的转换 - 37 - 2.2.3 PCI总线域地址空间到存储器域地址空间的转换 - 39 - 2.2.4 x86处理器的HOST主桥 - 42 - 2.3 PCI桥与PCI设备的配置空间 - 45 - 2.3.1 PCI桥 - 45 - 2.3.2 PCI Agent设备的配置空间 - 47 - 2.3.3 PCI桥的配置空间 - 50 - 2.4 PCI总线的配置 - 54 - 2.4.1 Type 01h和Type 00h配置请求 - 54 - 2.4.2 PCI总线配置请求的转换原则 - 56 - 2.4.3 PCI总线树Bus号的初始化 - 58 - 2.4.4 PCI总线Device号的分配 - 60 - 2.5 非透明PCI桥 - 62 - 2.5.1 Intel 21555中的配置寄存器 - 63 - 2.5.2 通过非透明桥片进行数据传递 - 65 - 2.6 小结 - 67 - 第3章PCI总线的数据交换 - 68 - 3.1 PCI设备BAR空间的初始化 - 68 - 3.1.1 存储器地址与PCI总线地址的转换 - 68 - 3.1.2 PCI设备BAR寄存器和PCI桥Base、Limit寄存器的初始化 - 70 - 3.2 PCI设备的数据传递 - 72 - 3.2.1 PCI设备的正向译码与负向译码 - 72 - 3.3.2 处理器到PCI设备的数据传送 - 74 - 3.2.3 PCI设备的DMA操作 - 74 - 3.2.4 PCI桥的Combining、Merging和Collapsing - 75 - 3.3 与Cache相关的PCI总线事务 - 77 - 3.3.1 Cache一致性的基本概念 - 77 - 3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写 - 82 - 3.3.3 PCI设备对可Cache的存储器空间进行DMA读写 - 83 - 3.3.4 PCI设备进行DMA写时发生Cache命中 - 85 - 3.3.5 DMA写时发生Cache命中的优化 - 87 - 3.4 预读机制 - 89 - 3.4.1 Instruction Fetch - 89 - 3.4.2 数据预读 - 92 - 3.4.3 软件预读 - 94 - 3.4.4 硬件预读 - 96 - 3.4.5 PCI总线的预读机制 - 97 - 3.5 小结 - 101 - 第II篇PCI Express体系结构概述 - 102 - 第4章PCIe总线概述 - 104 - 4.1 PCIe总线的基础知识 - 104 - 4.1.1 端到端的数据传递 - 104 - 4.1.2 PCIe总线使用的信号 - 106 - 4.1.3 PCIe总线的层次结构 - 109 - 4.1.4 PCIe链路的扩展 - 111 - 4.2 PCIe体系结构的组成部件 - 114 - 4.2.1 基于PCIe架构的处理器系统 - 114 - 4.2.2 RC的组成结构 - 117 - 4.2.3 Switch - 118 - 4.2.4 VC和端口仲裁 - 120 - 4.2.5 PCIe-to-PCI/PCI-X桥片 - 122 - 4.3 PCIe设备的扩展配置空间 - 124 - 4.4 小结 - 125 - 第5章PCIe总线的事务层 - 126 - 5.1 TLP的格式 - 126 - 5.1.1 通用TLP头的Fmt字段和Type字段 - 127 - 5.1.2 TC字段 - 129 - 5.1.3 Attr字段 - 130 - 5.1.4 通用TLP头中的其他字段 - 131 - 5.2 TLP的路由 - 133 - 5.2.1 基于地址的路由 - 133 - 5.2.2 基于ID的路由 - 135 - 5.2.3 隐式路由 - 138 - 5.3 存储器、I/O和配置读写请求TLP - 139 - 5.3.1 存储器读写请求TLP - 139 - 5.3.2 完成报文 - 144 - 5.3.3 配置读写请求TLP - 146 - 5.3.4 消息请求报文 - 147 - 5.4 TLP中与数据负载相关的参数 - 148 - 5.4.1 Max_Payload_Size参数 - 148 - 5.4.2 Max_Read_Request_Size参数 - 149 - 5.4.3 RCB参数 - 149 - 5.5 小结 - 150 - 第6章 MSI和MSI-X中断机制 - 151 - 6.1 MSI/MSI-X Capability结构 - 152 - 6.1.1 MSI Capability结构 - 152 - 6.1.2 MSI-X Capability结构 - 154 - 6.2 PowerPC处理器如何处理MSI中断请求 - 158 - 6.2.1 MSI中断机制使用的寄存器 - 159 - 6.2.2 系统软件如何初始化PCIe设备的MSI Capability结构 - 162 - 6.3 x86处理器如何处理MSI-X中断请求 - 165 - 6.3.1 Message Address字段和Message Data字段的格式 - 165 - 6.3.2 FSB Interrupt Message总线事务 - 168 - 6.4 小结 - 169 - 结束语 - 170 -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日实现财富自由-2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值