Bios实习 学习篇- 5.PCIe学习(2)
PCIe架构组成
PCIe架构不是简单的"插槽标准",而是一个完整的、分层的、点对点的互连生态系统。
1.PCIe的硬件拓扑结构(Topology)
PCIe采用树状点对点拓扑(point-to-point tree topology),根部为Root Complex(根复合体),向下延伸出多级分支,无环路(loop-free)。这种设计避免了传统总线的冲突和带宽共享问题,每个链路(Link)都是独立的差分对(differential pair)串行连接。
主要硬件组件包括:
- Root Complex(RC,根复合体): PCIe架构的“根节点”,通常集成在CPU或芯片组(Chipset)中,是CPU/内存子系统与整个PCIe fabric之间的桥梁。它负责生成配置事务(Configuration Transactions)、地址映射(Memory/IO空间)、DMA支持,以及枚举整个拓扑(Enumeration)。一个RC可包含多个Root Port(根端口),每个Root Port可连接一个Endpoint或Switch。RC内部还可能集成Host Bridge(主机桥),将处理器事务转换为PCIe TLP。
- Endpoint(EP,端点设备): 位于拓扑的“叶子节点”,即实际的外设设备(如显卡、NVMe SSD、网络接口卡)。Endpoint通过Base Address Registers(BAR)向系统暴露内存/IO空间,支持作为Requester(发起者)或Completer(完成者)进行DMA传输。Endpoint只能响应上游事务,无法直接与同级设备通信,必须通过RC或Switch路由。
- Switch(交换机): 用于扩展端口数量,实现“扇出”(fan-out)。Switch有1个Upstream Port(上游端口,连接RC或上级Switch)和多个Downstream Port(下游端口,连接Endpoint或下级Switch)。它负责在端口间路由TLP包,支持Peer-to-Peer(P2P)通信(部分Switch支持),极大提升了系统扩展性(如服务器中连接多个GPU或存储设备)。
- Bridge(桥接器): 主要用于向下兼容旧设备,如PCI-to-PCIe Bridge(将PCI/PCI-X设备接入PCIe总线)或PCIe-to-PCI Bridge。Bridge在拓扑中充当“翻译器”,转换不同协议或总线号范围。
2. PCIe的协议分层结构(Layered Architecture)
PCIe协议采用分层设计(类似于OSI模型,但简化),每个设备(RC或EP)内部都实现这些层,从上到下依次为:Transaction Layer(事务层)、Data Link Layer(数据链路层)、Physical Layer(物理层)。上层产生的数据包逐层封装后通过链路传输,下层接收后逆向解封装。
- Transaction Layer(事务层): 最上层,负责生成和解析TLP(Transaction Layer Packet)。主要功能包括:设备配置(Configuration Read/Write)、内存/IO读写、消息中断(MSI/MSI-X)、流量控制(Flow Control)。它将软件请求(如CPU访存)转换为PCIe事务,并处理地址路由和QoS。
- Data Link Layer(数据链路层): 中间层,负责可靠传输。生成DLLP(Data Link Layer Packet),实现ACK/NAK确认、重传机制、CRC校验、流量控制信用(Credits)管理。确保TLP在链路上传输无丢包、无乱序。
- Physical Layer(物理层): 最底层,分为Logical Sub-Block(逻辑子块)和Electrical Sub-Block(电气子块)。逻辑子块:链路训练(Link Training & Status State Machine, LTSSM)、8b/10b或128b/130b编码、串行/解串(SerDes)、多Lane聚合。电气子块:差分信号驱动、接收、均衡(De-emphasis/Equalization)、时钟嵌入(embedded clock)。 物理层定义了Lane(通道):每Lane由1对TX和1对RX差分线组成,支持x1、x4、x8、x16、x32等宽度,双向全双工。
