好的,各位同学,我们开始上课。
## PCIe 基础回顾:架构、拓扑与分层模型
### 1.1 聊聊PCIe总线架构
PCIe这个接口,大家应该不陌生。不管是电脑主板上插显卡的插槽,还是服务器里连SSD的接口,现在基本都是它。
它的全称是 PCI Express,说白了就是把PCI那种共享总线的并行架构,彻底换成点对点的串行差分连接。这么换有什么好处?我刚开始接触的时候也觉得只是换了个接口形式,后来才体会到,这背后是整个系统数据流动方式的革命。
**为什么非换不可?**
传统的PCI总线,所有设备挂在一个共享的并行总线上,就像一条单车道,谁先上谁走,还得大家商量着来,避免信号冲突。频率一高,电磁干扰和信号同步就成了噩梦。
PCIe则不同。每个设备都有自己专用的高速车道,而且是串行差分传输。频率可以跑得极高,而且因为不是共享的,每个设备都能独享带宽。
PCIe 的核心思想: 用高速串行差分信号,替代低速并行共享总线,实现点对点的全双工通信。
**那串行差分信号是个啥?**
这个概念其实不复杂。一条PCIe链路(Link)由若干通道(Lane)组成,每一对TX/RX通道就是一条物理链路。发送端通过两条线,分别发送完全反相的信号。接收端通过比较这两条线的电压差来还原数据。
这样做的好处,是能极大地抑制共模噪声。我有个朋友,早期做132总线纠错就吃够了并行信号毛刺的亏,换成PCIe之后,调试工作量明显下来了。
### 1.2 拓扑结构:从CPU到你手上的设备
PCIe的拓扑是一个树形结构,从根节点开始,一层层延伸出去。这个结构里主要有三种角色:
- **根复合体 (Root Complex, RC)**:CPU的大脑,连接内存、显卡等关键设备。
- **交换机 (Switch)**:像路由器一样,把上游的一路流量分成多路,或者合并多路。
- **端点 (Endpoint, EP)**:我们最终要操作的设备,比如网卡、磁盘控制器。
交换机内部的工作原理: 交换机内部其实就是个专门的PCIe交换芯片,它不参与上层协议解析,只是根据路由信息把TLP包发到对应的端口上。
**拓扑里的小陷阱**
我遇到过一个挺头疼的bug。某款主板上,一个PCIe SSD直接连到CPU的RC,另一个SSD通过一个Switch再连RC。结果前一个设备跑满了,后一个设备带宽就出现奇怪波动。调了很久才发现,是RC内部的设计问题,当某个端口压力大时,其他端口会间歇性被卡住。
这告诉我们,拓扑不只是画个方块图,它直接关系到性能的稳定。
### 1.3 分层模型:数据在栈里怎么走
最核心的部分来了。PCIe用了分层的架构,每一层只管自己那点事,把复杂的东西包装起来。这个模型分为三层:
| 层级 | 主要职责 | 协议数据单元 |
|:---|:---|:---|
| **事务层** | 处理读写请求、完成包、顺序、QoS | 事务层包 (TLP) |
| **数据链路层** | 数据完整性校验、重传、流控 | 数据链路层包 (DLLP) |
| **物理层** | 信号编码、序列化/反序列化、链路训练 | 物理层包 (PLP) |
**事务层 —— 应用的代言人**
事务层是顶层,它不关心数据怎么物理传输,只管生成和解析T的事务层包(TLP)。比如,软件发起一个读内存请求,事务层就会生成一个内存读TLP。
事务层里有个东西叫“事务描述符”,里面有请求者ID、标签等信息,用来唯一标识一个事务。这就像寄快递时的面单,收件人、寄件人、流水号都有。
**数据链路层 —— 快递的安检员**
这一层负责在相邻的两个设备间可靠传输TLP。它会在每个TLP上加上序列号和CRC校验码,形成一个DLLP。接收方校验无误后,会发一个ACK回来;如果校验失败,发送方会重传。
注意,数据链路层是点到点的,只负责一个链路段内的可靠传输。跨过Switch,数据每经过一个链路,就会经过一次数据链路层。
**物理层 —— 真正的搬运工**
物理层是实实在在的硬件,负责把DLLP变成电信号发射出去,以及把收到的电信号还原成DLLP。
它包含几个子块:物理编码子层 (PCS)、介质访问控制子层 (MAC) 和物理介质附加子层 (PMA)。其中,PCS负责8b/10b或128b/130b编码,PMA负责串行化和反序列化。
重要提示: 当我们在研究 ASPM(主动状态电源管理)时,主要会跟物理层和数据链路层打交道。特别是物理层的链路状态转换(L0s, L1, L2等),以及数据链路层的电源管理DLLP,是ASPM的核心。
**为什么这样分层?**
很简单。
每一层都能独立演进。比如物理层从2.5 GT/s进化到5 GT/s、8 GT/s,但上层的事务层和数据链路层协议基本没变。调试起来也轻松——哪一层出的问题,就在哪一层抓包分析,不会一头雾水。
好,这节课把PCIe的骨架搭完了。有了这个基础,下一节我们正式进入ASPM的世界。