科技的每一步前进都是为了解决前一代中出现的问题,这里指的是速度。作为扩展接口,主要用于外围设备的连接和扩展,而外围设备吞吐速度的提高,往往会倒推接口速度的提升。在了解PCIe之前,首先了解下PCIe的先祖们,包括ISA、MCA、EISA、VLB、PCI、PCI-X、AGP,其名词解释及速度对比分别如表1-1和表1-2所示。
表1-1
标准 | 释义 | 时间 | 备注 |
ISA | Industry Standard Architecture | 1981 | |
MCA | Micro Channel Architecture | ||
EISA | Extended Industry Standard Architecture | ||
VLB | VESA Local Bus | ||
PCI | Peripheral Component Interconnect | 1992 | |
PCI-X | Peripheral Component Interconnect eXtended | ||
AGP | Accelerated Graphics Port | ||
PCIe | Peripheral Component Interconnect Express | 2004 |
表1-2
标准 | 时钟 | 传输位宽 | 每时钟数据 | 带宽 |
ISA | 4.77 MHZ | 8 | 1 | 4.77 MB/s |
ISA | 8 MHZ | 16 | 0.5 | 8 MB/s |
MCA | 5 MHZ | 16 | 1 | 10 MB/s |
MCA | 5 MHZ | 32 | 1 | 20 MB/s |
EISA | 8.33 MHZ | 32 | 1 | 33.3 MB/s |
VLB | 33 MHZ | 32 | 1 | 133 MB/s |
PCI | 33 MHZ | 32 | 1 | 133 MB/s |
PCI-X 66 | 66 MHZ | 64 | 1 | 533 MB/s |
PCI-X 133 | 133 MHZ | 64 | 1 | 1066 MB/s |
PCI-X 266 | 133 MHZ | 64 | 2 | 2133 MB/s |
PCI-X 533 | 133 MHZ | 64 | 4 | 4266 MB/s |
AGP x1 | 66 MHZ | 32 | 1 | 266 MB/s |
AGP x2 | 66 MHZ | 32 | 2 | 533 MB/s |
AGP x4 | 66 MHZ | 32 | 4 | 1066 MB/s |
AGP x8 | 66 MHZ | 32 | 8 | 2133 MB/s |
PCIe 1.0 x1 | 2.5 GHZ | 1 | 1 | 250 MB/s |
PCIe 1.0 x4 | 2.5 GHZ | 4 | 1 | 1000 MB/s |
PCIe 1.0 x8 | 2.5 GHZ | 8 | 1 | 2000 MB/s |
PCIe 1.0 x16 | 2.5 GHZ | 16 | 1 | 4000 MB/s |
PCIe 2.0 x1 | 5 GHZ | 1 | 1 | 500 MB/s |
PCIe 2.0 x4 | 5 GHZ | 4 | 1 | 2000 MB/s |
PCIe 2.0 x8 | 5 GHZ | 8 | 1 | 4000 MB/s |
PCIe 2.0 x16 | 5 GHZ | 16 | 1 | 8000 MB/s |
PCIe 3.0 x1 | 8 GHZ | 1 | 1 | 1000 MB/s |
PCIe 3.0 x4 | 8 GHZ | 4 | 1 | 4000 MB/s |
PCIe 3.0 x8 | 8 GHZ | 8 | 1 | 8000 MB/s |
PCIe 3.0 x16 | 8 GHZ | 16 | 1 | 16000 MB/s |
1.1 PCI总线
PCI的含义是Peripheral Component Interconnect。
一颗典型的PCI总线树如图1-1所示。
图1-1中可看出,PCI总线主要包括三部分:
- PCI设备:符合PCI总线标准的设备就称为PCI设备,PCI总线架构中可以包含多个PCI设备,如图中的Audio和LAN等。PCI设备分为主设备和目标设备两种,主设备是一次访问操作的发起者,目标设备则是被访问者。
- PCI总线:PCI总线在系统中可以有多条,类似于树状结构进行扩展,每条PCI总线都可以连接多个PCI设备/桥。图中有两条PCI总线。
- PCI桥:当一条PCI总线的承载量不够时,可以用新的PCI总线进行扩展,而PCI桥则是连接PCI总线之间的纽带。
图1-1 PCI总线树
PCI总线的特点如下:
- 并行总线结构,在一个时钟周期内32个bit(后扩展到64)同时被传输,地址和数据在一个时钟周期内按照协议,分别一次被传输。在同一条总线上的所有外部设备共享总线带宽,
- PCI空间与处理器空间隔离。PCI设备具有独立的地址空间,即PCI总线地址空间,该空间与存储器地址空间通过Host bridge隔离。处理器需要通过Host bridge进行地址转换才能访问PCI设备,而PCI设备需要通过Host bridge进行地址转换才能访问主存储器。在Host bridge中含有许多缓冲,这些缓冲使得处理器总线域PCI总线工作在各自的时钟频率中。Host bridge的存在也使得PCI设备和处理器可以方便共享主存储器资源。
- 扩展性强。在PCI总线中,Root Bridge可直接练出一条PCI总线,这条总线也是该Root Bridge所管理的第一条PCI总线,该总线还可以通过PCI桥扩展出一系列PCI总线,并以Root Bridge为根节点,形成1颗PCI总线树。同一条PCI总线上的设备间可以直接通信,并不影响其他PCI总线上的设备间的数据通信。隶属于同一颗PCI总线树上的PCI设备,也可以直接通信,但需要通过PCI桥进行数据转发。
PCI越来越不能使用高速发展的数据传输的要求,PCI-X和AGP随之产生,PCI-X采用不断提高时钟频率来提速,AGP通过在一个时钟周期内传输多次数据来提速。但是随着频率的提升,PCI并行传输遇到了干扰的问题,且干扰EMI不可跨越,于是产生了使用高速差分信号进行数据传送的PCIe总线,其抗干扰能力强,可使用更高的总线频率,也可有效抑制电磁干扰EMI。
1.2 PCIe总线
PCI的含义是Peripheral Component Interconnect Express。
与PCI的总线结构不同,PCIe是点对点结构,一个典型的PCIe拓扑结构如图1-2所示。一个root port和一个endpoint直接组成一个点对点连接对,而Switch可同时连接几个endpoint。
图1-2 PCIe拓扑结构
从PCIe的拓扑结构可看出,CPU连接到根聚合体(Root Complex),RC负责完成从CPU总线域到外设域的转换,并实现各种总线的聚合。将一部分CPU地址映射到内存,一部分地址映射到相应的设备终端(如板卡)。PCIe设备有两大类,Root Port和Endpoint,Root Port相当于一个根节点(拓扑图中的switch),将多个Endpoint设备连接在一个节点,同时它完成数据的路由。Endpoint就是最终数据的接受者,命令的执行者。
PCIe总线的特点如下:
- PCIe总线使用高速差分总线,采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备,两个设备互为数据发送端和数据接收端,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑)。这使得PCIe与PCI总线采用的拓扑结构有所不同。如图1-3所示。
图1-3 PCIe总线的物理连接
2. PCIe总线采用了串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。在PCIe总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层,如图1-4所示、
图1-4 PCIe总线的层次组成结构
- PCIe总线使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量QoS (Quality of Service)问题。
PCI-E接口速率如表1-3所示。
表1-3 PCI-E接口速率表
PCIe版本 | PCIe1.0 | PCIe2.0 | PCIe3.0 | PCIe4.0 | PCIe5.0 |
发布时间 | 2002 Q3 | 2007 Q1 | 2010 Q4 | 2017 Q4 | 2019 |
总线频率 | 1.25GHz | 2.5GHz | 4GHz | ||
时钟 | 2.5GHz | 5GHz | 8GHz | 16GHz | |
单Lane的 峰值带宽 | 2.5GT/s | 5GT/s | 8GT/s | 16GT/s | 32 or 25 GT/s |
单Lane带宽 | 250MB/s | 500MB/s | 984.6MB/s | 1.969GB/s | 3.9 or 3.08 GB/s |
编码方式 | 8b/10b | 8b/10b | 128b/130b | 128b/130b | 128b/130b |