1.概述
早期的计算机使用PCI(Peripheral Component Interconnect)总线与外围设备相连,PCI总线使用单端并行信号进行数据传输,由于单端信号很容易被外部系统干扰,其总线频率很难进一步提高。目前,为了提高总线频率以获得更高的总线带宽,高速串行总线逐步替代了并行总线,PCI Express总线已逐渐替代了PCI总线。
PCI Express总线使用高速差分总线和端到端的连接方式,每个PCIe设备都有一个或多个独立的传输通道(称为"lanes"),这些通道直接连接到主板的芯片组或CPU。每条通道包含两对差分信号,一对用于发送数据,一对用于接收数据,因此支持全双工通信。若要增加带宽,只需要增加lanes的数量即可,更加灵活。
-
Lane和版本
PCIe的基本单元是lane,它由一对发送和一对接收差分信号组成。多条lanes可形成更宽的传输通道,例如x1、x2、x4、x8、x16和x32配置,其中x代表lane的数量。随着计算机的发展,PCIe标准也在发展,目前常见的版本是PCIe 1.0、2.0、3.0、4.0以及5.0,每个新版本提供的带宽相比前一版本大约翻一番。 -
可扩展性和兼容性
PCIe对热插拔设备提供支持,同时它也向后兼容;也就是说较新版本的插槽可以接受较旧版本的卡,而较新版本的卡也可以插入到较旧的插槽中工作(但速度会降低至插槽所支持的最高标准)。这提供了极大的灵活性和系统升级的方便性。 -
使用场景
PCIe被广泛用于各种类型的设备连接,包括显卡、固态硬盘、以太网卡、Wi-Fi控制器、雷电扩展卡和其他高速外部设备。由于它的高速度和低延迟特性,PCIe在现代计算中是首选接口。 -
技术优势
PCIe的主要优势在于其高性能和可扩展的带宽,这使得它能够支持最新的存储设备、高性能GPU以及通信设备的速度要求。其其他优势包括更小的物理占位、更好的I/O虚拟化支持和省电等。
随着计算需求的不断增长和新技术的出现,PCIe技术也在不断演进,以更好的适应未来硬件的发展需求。
2.速率
协议版本 | 编码类型 | 信号 | 最大传输速度 | x1带宽 | x2带宽 | x4带宽 | x8带宽 | x16带宽 | 推出时间 |
---|---|---|---|---|---|---|---|---|---|
1.0 | 8b/10b | NRZ | 2.5 GT/s | 250MB/s | 500MB/s | 1GB/s | 2GB/s | 4GB/s | 2003年 |
2.0 | 8b/10b | NRZ | 5.0 GT/s | 500MB/s | 1GB/s | 2GB/s | 4GB/s | 8GB/s | 2007年 |
3.0 | 128b/132b | NRZ | 8.0 GT/s | ~1GB/s | ~2GB/s | ~4GB/s | ~8GB/s | ~16GB/s | 2010年 |
4.0 | 128b/132b | NRZ | 16.0 GT/s | ~2GB/s | ~4GB/s | ~8GB/s | ~16GB/s | ~32GB/s | 2017年 |
5.0 | 128b/132b | NRZ | 32.0 GT/s | ~4GB/s | ~8GB/s | ~16GB/s | ~32GB/s | ~64GB/s | 2019年 |
6.0 | 1b/1b(Flit Mode) | PAM4 | 64.0 GT/s | 8GB/s | 16GB/s | 32GB/s | 64GB/s | 128GB/s | 2022年 |
7.0 | 1b/1b(Flit Mode) | PAM4 | 128.0 GT/s | 16GB/s | 32GB/s | 64GB/s | 128GB/s | 256GB/s | 2025年 |
- NRZ(Non-Return-to-Zero,不归零编码): 使用高低电平传输数据位,在数据位脉冲结束后,不需要回归到零电平。
- PAM4(4-Level Pulse Amplitude Modulation,四电平脉冲幅度调制): 是一种调制技术,采用4个不同的信号电平传输数据。PAM4信号的每个符号周期包含了两个比特的逻辑信息,比如用逻辑信号“0”来代表逻辑信号“00”,“1”代表“01”,“2”代表“10”,“3”代表“11”。
- Flit Mode: 流控单元模式,是一种1b/1b的编码方式。之前是以TLP为单位进行事务传输,PCIe 6.0以FLIT为单位进行事务传输,每个FLIT有256B数据,每B数据占用4UI。
3.PCIe总线拓扑结构
下图是一个典型的x86计算机PCIe总线拓扑结构。RC(Root Complex)是每条PCIe总线的开始,PCIe设备通过RC和CPU通信。在x86计算机中,RC集成了PCIe总线端口、存储器控制器等一系列与外部设备有关的接口,比较复杂,而在其他体系结构的计算机中,RC可能只包含PCIe总线端口,通常只有一个端口。下图中的RC内部通过PCI-PCI桥扩展出来3个端口。第一个端口下面节了一个Switch,Switch的作用是扩展链路,该Switch通过内部的PCI-PCI桥扩展出来3个下行端口,这3个端口都可以接PCIe设备,PCIe设备被称为EP(Endpoint)。第二个端口没有扩展,可以直接接PCIe设备。第三个端口接了一个PCIe转PCI或PCI-X桥,该桥下面可以接PCI或PCI-X设备。
下图是intel 10代酷睿和400系列芯片组的示意图。CPU通过DMI总线和PCH芯片(南桥)连接。DMI总线使用和PCIe总线相同的物理层,因此带宽也和PCIe相同。CPU和400系列芯片组都集成了PCIe RC。CPU中RC引出的x16连接显卡。400系列芯片组的RC引出的24 lanes连接对带宽要求不高的设备,比如PCIe网卡、M.2 NVMe SSD等。
下图是intel 12代酷睿和600系列芯片组的示意图。相比10代酷睿和400系列芯片组,12代酷睿和600系列芯片组将PCIe总线版本提升到5.0,提升了PCIe总线数量,增加了CPU直出的PCIe总线数量,避免经过北桥芯片引起的性能损失。
4.PCIe总线层次结构
PCIe总线是一个分层结构,结构如下图所示,包含了应用层(Device Core、PCIe Core Hardware/Software Interface)、事物层(Transaction Layer)、数据链路层(Data Link Layer)、物理层(hysical Layer)。报文中的数据在应用层中产生,发送后会依次穿越事物层、数据链路层和物理层,接受端接收到报文后处理顺序和发送端相反,其依次经过物理层、数据链路层和事物层,数据最终被交付到接受端的应用层。
和网络报文类似,PCIe报文发送时,会在报文头和报文尾加上该层PCIe协议规定的数据,接收端接收到报文后再依次剥离相应的协议数据。如下图所示,发送数据时Data在应用层产生,穿越事物层时会加上Header和ECRC(End-to-end CRC),穿越数据链路层时会加上Sequence Number和LCRC(Link CRC),穿越物理层时会加上Framing。接收数据时,穿越物理层时剥离Framing,穿越数据链路层时剥离Sequence Number和LCRC,穿越事物层时剥离Header和ECRC,最终数据交付到应用层。事物层、数据链路层和物理层PCIe总线规范做了明确的规定,要求设计者严格遵守,而应用层PCIe总线规范没有严格规定,设计者可以根据需要进行自行设计。
ECRC是可选的,其主要的目的是解决Switch中可能的传输错误问题,如果用户的PCIe总线中没有Switch(只是简单的Root与Endpoint的端对端直连),完全可以不使用ECRC。
-
应用层
这一层决定了PCIe设备的类型和基础功能,可以由软件和硬件协同实现。如果该设备为EP,则其最多可拥有8项功能(Function),且每项功能都有一个对应的配置空间(Configuration Space)。如果该设备为Switch,则应用层需要实现包路由(Packet Routing)等相关逻辑。如果该设备为RC,则应用层需要实现虚拟的PCIe总线0(Virtual PCIe Bus 0),并代表整个PCIe总线系统与CPU通信。 -
事物层
接收端的事务层负责事务层包(Transaction Layer Packet,TLP)的解码与校检,发送端的事务层负责TLP的创建。此外,事务层还有QoS(Quality of Service)和流量控制(Flow Control)以及Transaction Ordering等功能。 -
数据链路层
数据链路层负责数据链路层包(Data Link Layer Packet,DLLP)的创建、解码和校检。同时,本层还实现了Ack/Nak的应答机制,以处理传输失败的情况。 -
物理层
物理层负责Ordered-Set Packet的创建和解码,同时负责发送与接收所有类型的包(TLPs、DLLPs和Ordered-Sets)。在发送之前需要对包进行一系列的处理,如Byte Striping、Scramble(扰码)和Encoder(8b/10b for Gen1/Gen2, 128b/130b for Gen3/Gen4)。在接收端需要进行相反的处理。此外,物理层还实现了链路训练(Link Training)和链路初始化(Link Initialization)的功能,一般通过链路训练状态机(Link Training and Status State Machine,LTSSM)完成。
每一个PCIe接口(interface)都必须包含事物层、数据链路层和物理层,比如Switch的每个port,如下图所示。
PCIe总线层次结构的详细信息如下图所示,这里不再赘述。
5.PCIe总线信号
…
参考资料
- PCIEXPRESS体系结构导读
- PCI Express technology 3.0
- PCI_Express_Base_r3.0_10Nov10
- PCIe7_0_Intro_PCIe_6_0_Solution
- http://blog.chinaaet.com/justlxy/p/5100053251
- https://www.jianshu.com/p/5889b7963558