
PCI和PCIe到底是什么关系?为什么现在几乎看不到PCI插槽了?
如果你打开一台十几年前的电脑或主机机箱,你会发现上面往往排列着几条长度相同的白色扩展插槽,这些就是PCI(Peripheral Component Interconnect)总线接口。在那个年代,网卡、声卡、视频采集卡都离不开它。
如今无论是消费级PC主机还是服务器主板,基本都被长短不一的PCIe插槽所统治,很多刚接触硬件设计或底层驱动的工程师都会好奇,PCIe仅仅是PCI的加速版吗,两者究竟是什么关系?为什么曾经如日中天的PCI最终会被彻底淘汰?今天,我们就来聊一聊这背后的硬件接口进化历程。
PCI:属于并行总线时代的产物
PCI由Intel于1992年推出,在很长一段时间里都是PC平台最重要的扩展总线标准。
PCI采用的是典型的共享总线结构。简单来说,主板上的多个外设共同连接到同一条数据总线上,任何时刻只能有一个设备占用总线进行数据传输。当多个设备同时请求访问时,需要通过总线仲裁机制决定谁先使用。
这种设计在当时非常先进。相比更早期的ISA总线,PCI不仅速度更快,而且实现了即插即用(Plug and Play),大幅降低了硬件扩展难度。
但随着计算机性能的快速提升,共享总线架构的缺点也逐渐暴露出来,所有设备共用同一条传输通道,意味着带宽必须被多个设备分摊。一旦高性能设备增多,总线就会成为整个系统的瓶颈。

PCI为什么越来越跟不上时代
标准PCI接口最常见的规格是33MHz、32位,其理论带宽约133MB/s。
在上世纪90年代,这个带宽已经足够满足绝大部分应用的需求。但当进入千兆网络、高分辨率显示和大容量存储信息时代后,133MB/s的带宽很快就显得捉襟见肘。
当前市面上常见的千兆网卡理论带宽约125MB/s,PCI总线带宽尚且能应付,但NVMe固态硬盘读写速度普遍可达到数GB/s,FPGA图像采集卡单路数据流量就可能超过PCI总线极限,高性能显卡更是需要几十GB/s以上的数据交换能力。此时,PCI带宽就显得严重不足。
此外,除了带宽不足,共享总线还带来了额外的延迟和仲裁开销。当多个设备同时工作时,总线竞争会进一步影响系统性能。因此,从2000年前后开始,业界迫切需要一种全新的高速互联技术。
PCIe的出现:彻底改变连接方式
2003年,PCI Express(PCIe)正式发布。
很多人认为PCIe只是更快的PCI,实际上它们在硬件架构上已经完全不同。
PCI采用并行共享总线,而PCIe采用点对点串行连接。
在PCIe系统中,每个设备都拥有独立的数据链路,不再与其他设备共享总线带宽。设备通过交换结构(Switch)与CPU或芯片组连接,从而实现真正的并行通信。
这种变化带来的好处就是扩展性得到了极大增强,增加新的设备不会占用其他设备的传输资源,使得系统能够并行处理大量高速的数据流。

x1、x4、x8、x16到底是什么意思
观察主板会发现,不同PCIe插槽长度并不相同。
这是因为PCIe采用了基于Lane(通道)的设计。每条Lane都包含一组发送链路和接收链路,可以同时进行双向数据传输。
PCIe插槽后面的数字表示该设备可使用的Lane数量:
- PCIe x1:1条Lane
- PCIe x4:4条Lane
- PCIe x8:8条Lane
- PCIe x16:16条Lane
Lane数量越多,对应能够支持的总带宽就越高,常见的PCIe带宽速率如下表所示。
表1 PCIe常见带宽速率参考表
| 代数(Gen) | 传输速率(GT/s) | 编码方式 | x1 (单向) | x4 (单向) | x8 (单向) | x16(单向) |
| PCIe 1.0 | 2.5 | 8b/10b | ~250 MB/s | ~1.0 GB/s | ~2.0 GB/s | ~4.0 GB/s |
| PCIe 2.0 | 5.0 | 8b/10b | ~500 MB/s | ~2.0 GB/s | ~4.0 GB/s | ~8.0 GB/s |
| PCIe 3.0 | 8.0 | 128b/130b | ~985 MB/s | ~3.94 GB/s | ~7.88 GB/s | ~15.7 GB/s |
| PCIe 4.0 | 16.0 | 128b/130b | ~1.97 GB/s | ~7.88 GB/s | ~15.75 GB/s | ~31.5 GB/s |
| PCIe 5.0 | 32.0 | 128b/130b | ~3.94 GB/s | ~15.75 GB/s | ~31.5 GB/s | ~63.0 GB/s |

PCI消失了,但它其实一直都在
虽然硬件结构发生了翻天覆地的变化,但PCIe并没有完全抛弃PCI留下的生态。
为了保证兼容性,PCIe保留了PCI设备配置空间、设备枚举机制以及Bus/Device/Function等软件模型。对于操作系统而言,PCIe设备仍然被视为PCI设备的一种延续。
这也是为什么在Windows设备管理器或Linux系统中,至今仍然能够看到“PCI设备”“PCI总线”等名称。
从某种意义上说,PCIe继承了PCI的软件体系,却彻底重构了底层硬件架构。正是这种“软件兼容、硬件革新”的设计思路,使PCIe能够在短时间内取代PCI,并成为过去二十年最成功的计算机互联标准之一。
下期预告
既然PCIe已经不再是传统总线,那么设备上电后,操作系统又是如何发现PCIe设备的?PCIe配置空间、BAR寄存器和驱动程序之间又是什么关系?下一篇将从PCIe设备枚举过程开始继续展开。
如果您对本篇文章感兴趣,欢迎WX关注本作者嵌入式软硬件系统,后续将分享更多关于PCIe软硬件、驱动、上位机相关的理论和实践知识。

专注于嵌入式软硬件相关经验分享、工程实践与技术探索,涵盖单片机、FPGA、PCIe、驱动开发、上位机软件以及测控系统设计等多方面内容。