PCIE总线技术-扫盲
这篇PCIE还写得比较详细:PCIe总线技术详解:概述、拓扑、信号与事务层-CSDN博客
PCIE每个设备独自一根总线,不会出现抢占带宽的情况。
新的协议会兼容旧的协议,PCIE可以兼容PCI、PCIE3.0可以兼容PCIE2.0、PCIE x8可以兼容PCIE x2等等
PCI最大带宽266MB/s,PCIE 1.0 x1带宽达到了250MB/s
PCI拓扑结构:
PCIe协议中的lane
- 定义:PCIe协议中的lane是一组差分信号的组合,包括发送和接收。一个发送方向的差分信号包括TX+和TX-两条线,接收亦然,所以一条lane有四条物理连线。发送和接收是同时进行的,故为全双工。
- 数据传输方式:lane是PCIe系统中最基本的数据传输路径,负责在两个PCIe设备之间传输数据。通过多个lane并行传输数据,可以显著提高数据吞吐量。例如,一个X4的链路由4条lane组成,其带宽是单lane的4倍。
- 链路与lane的关系:Link是指两个PCIe部件的链接,通常由端口和lane组成。一个by-N Link由N条lane组成,多条lane组成的link有效扩展了link的带宽。lane的初始化和多条lane的组合优化是在link的初始化训练过程中实现的。
乘0.8是指编码效率。 除以8是一个字节为8bit,转换为字节
8b/10b编码:在PCIe 1.0和2.0版本中,使用的是8b/10b编码方案。这种编码方式包含了一些额外的冗余信息,用于错误检测和校正。在这种编码中,每10位传输的数据中,只有8位是有效数据。因此,编码效率为80%(即8/10)。
比如有一个数据包想发送到终端设备,CPU把数据给一个虚拟地址 --> 将该虚拟地址映射到内存 --> 根部把数据读出来 --> 经过一些switch再给到终端设备。
root complex(RC): 根桥设备,CPU和PCIe拓扑之间的接口,负责PCIe报文的解析和生成。RC会将CPU的request转换成PCIe的4种不同的请求(Configuration、Memory、I/O、Message);
switch: PCIe的转接器设备(扩展PCIe端口),为挂在它上的设备(endpoint 或 switch)提供路由和转发服务。
PCIe endponit(EP): PCIe终端设备,如网卡、显卡等。
PCI Express-PCI bridge: 桥接设备,连接其他的PCI总线、PCI-X、PCIe总线。
和PCI并行总线不同,PCIe的总线采用了高速差分总线,并采用端到端的连接方式, 因此在每一条PCIe链路中两端只能各连接一个设备, 如果需要挂载更多的PCIe设备,那就需要用到switch转接器。
Switch扩展了PCIe端口,靠近RC的那个端口,我们叫上游端口(upstream port),而分出来的其他端口,我们叫下游端口(downstream port)。一个Switch只有一个上游端口,可以扩展出若干个下游端口。下游端口可以直接连接Endpoint,也可以连接 Switch,扩展出更多的PCIe端口。