PCIe总线:(1)快速入门

1. 什么是PCIe?

PCIePeripheral Component Interconnect Express)是一种高速串行总线标准。它是2001年由Intel提出的,代替PCI/PCI-XAGP等传统总线。既然是Intel提出的,那它肯定是用于计算机中连接CPU和各种外设。

想象一下,你的电脑就像是一个超级忙碌的城市,里面有许多不同的“街道”和“交通工具”,它们负责把信息从一个地方传送到另一个地方。PCIe就是这些“街道”之一,它连接着电脑内部各种重要的硬件设备,像显卡、硬盘、网卡等。

在计算机主板上,PCIe和PCI总线如下图所示。

(图来自网络)

过去,电脑里面的硬件设备是通过 PCI 总线连接的。想象一下,PCI 就像是一个老旧的城市道路,车辆(数据)必须排队等候才能走,而且道路容量有限,交通容易拥堵,速度慢。而 PCIe 就像是一条现代化的高速公路,它不仅更快、更宽敞,而且每辆车(设备)都有自己专用的车道,不会与其他车辆发生拥堵。

PCIe总线特点:串行、差分、全双工、点对点通信、嵌入式时钟、多通道配置和高扩展性

2. 串行传输

PCIe串行传输,即数据一位一位地按顺序发送。而PCI是多bit并行传输,例如32bit PCI总线一次可并行发送32bit数据。

这里大家肯定会想,多位数据并行传输肯定速度快于单bit数据传输。在时钟频率相同的情况下确实如此,1个时钟周期,PCIe只传输了1bit数据,而32bit PCI已经传输了32bit数据了。如下图所示,串行传输101000101100这十个数据需要10个时钟周期,而并行传输只需要1个周期即可完成。

但是实际上串行传输速率肯定优于并行传输的。这是因为串行传输相比并行传输有如下优点。

优点

(1) 串行传输更容易提升速率,而并行传输很容易遇到瓶颈,需要所有bit数据严格同步,频率越高信号同步就越困难。例如,PCI 32bit总线最大时钟33MHz,带宽仅133MB/s,而PCIe 5.0Lane速率可达4GB/s,远超PCI

(2) bit并行传输易受电磁干扰。串行传输可以使用差分信号,抗干扰能力强。

(3) 采用串行传输,可以增加Lane来提升带宽。

缺点

(1)需要差分信号来减少干扰,增加了设计复杂度。

(2)在低速、短距离的场景下,串行没有明显优势,并行传输依然高效。

3. 差分

相位相反,即一条信号上升,另一条信号下降。

优点

抗干扰能力强。因为两条信号相反,外部干扰会同时作用在两条线上,但它们的电压差不变,可以有效消除噪声。

缺点

更复杂的硬件设计、更高的成本。

4. 全双工

全双工指双向同时传输,每条通道包含独立的发送和接收路径。

PCIe采用串行差分信号,每个Lane都有独立的发送和接收通道,因此天然支持全双工通信。而PCI采用并行总线架构,所有设备共享总线,数据在同一时间只能单向传输

优点

(1) 提升了带宽利用率,理论带宽是PCI2倍。

(2) 不需要等待总线仲裁,可立即收发数据。

(3) 适合多设备并行工作。PCIe每个设备都有独立通道,可以同时通信。而PCI多个设备共享同一条总线,必须轮流使用。

缺点

(1) 布线更复杂,物理资源需求更高。

(2) 设计复杂度增加,需要更多的协议管理层。

(3) 能耗可能增加。

5. 点对点通信

设备独享带宽,不会因为其他设备的存在而降低速度,避免传统总线因共享带宽引发的性能瓶颈。点对点架构具有明显的性能优势,但是所有设计都是trade-off的。

也带来了一些缺点:

(1) 主板需要设计更多的独立PCIe通道,增加了工程的复杂度。

(2) 需要更复杂的RCSwitch

(3) 需要更复杂的驱动和协议(PCIe热拔插、DMA访问),相比PCI总线协议,软件开发更难。

(4)PCI在特定场景仍有优势:低速设备,声卡、嵌入式工业设备,或者设计简单,制造成本较低,适合成本敏感的产品。

为什么PCI传统总线会共享带宽?

因为传统PCI总线架构中,所有设备共享同一条数据总线,数据传输时需要轮流使用总线,就像一条车道上的多辆汽车,每辆车必须等前面的车走完才能通信。

如果多个设备同时传输数据,带宽会被分割,导致数据拥塞,性能下降。因为它们无法独占带宽,所以会影响高速设备如显卡、SSD的性能。

6. 嵌入式时钟技术

PCI使用独立时钟线来同步数据,而PCIe采用8b/10b编码(PCIe 1.0-2.0)或者128b/130b编码(PCIe 3.0+)。

优点

1)PCIe在数据流中嵌入时钟,不需要额外的时钟线。降低布线复杂度。

2)提高信号同步性,减少时钟偏移(Skew)

缺点

1)需要额外的时钟恢复电路。

2)更容易受时间抖动(Jitter)的影响。相位抖动会影响信号完整性,需要更严格的时钟补偿。

3)PCIe初始链路训练时间更长。PCIe设备在启动时需要调整接收端的时钟恢复电路,使其与发送端同步。而PCI直接依赖外部时钟,不需要训练,设备初始化更快。PCIe设备上电时,链路训练可能需要几毫秒到数百毫秒,启动速度比PCI略慢。

4PCIe采用点对点连接,每个设备从数据流中恢复自己的时钟,可能会造成设备之间的时钟偏移(Drift。而PCI所有设备共享同一个外部时钟,确保所有数据传输的时间基准相同。

7. 多通道配置

支持x1/x4/x8/x16等通道组合,通道数越多带宽越高。

优点

(1) 带宽可以线性增加,x16的带宽是x116倍。

(2) 灵活扩展,不同设备可以使用不用Lane数量。

缺点

(1) 管理多个Lane,控制器和交换机需要更复杂的设计。

8. 高扩展性

兼容热拔插(在计算机运行时拔插设备,无需重启系统),支持跨代降速使用。

优点

(1)兼容热拔插维护设备更方便和更灵活。不需要关机就可以更换PCIe设备(如硬盘、网卡)。

(2)支持跨代降速使用可以提高设备的兼容性,避免设备被淘汰。例如:PCIe 4.0 的 NVMe SSD 可以插在 PCIe 3.0 主板上,虽然带宽降低,但仍能工作。

缺点

(1)需要额外的硬件设计,增加系统复杂度。

(2)需要软件层面支持,增加开发难度。例如需要 PCIe 热插拔控制器(Hot Plug Controller) 处理插拔事件,并动态分配资源。

(3)成本增加。


下面是个人的小小感悟:

在芯片设计的世界里,任何技术的升级都是权衡(trade-off。《中庸》有云:致中和,天地位焉,万物育焉。” 任何技术的取舍,都是在极端之间寻找平衡之道。

PCIe 并非完全摒弃 PCI 的理念,而是以更加灵活的方式,结合串行传输、点对点连接、多 Lane 扩展等特性,使得计算机系统在性能与成本之间取得动态平衡。

芯片设计者的智慧,便在于如何运筹帷幄,顺势而为,使得技术在进步的同时,不至于被其负担所反噬。欢迎关注我的个人微信公众号【芯筹帷幄】,交流你的见解与经验!


推荐学习资料:《PCI Express System Architecture》-MindShare著(关注公众号「芯筹帷幄」私信 “PCIe” 可获取 PDF 版)
《PCI Express 体系结构导读》-王齐著,电子工业出版社(公众号私信 “PCIe中文” 可获取 PDF 版)
欢迎关注,获取更多技术资料与分享!
这里将分享芯片设计的相关知识、技术前沿以及行业动态,期待与您交流和探讨,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值