PCIe从入门到精通
+ -

PCIe 从入门到精通之五:PCIe 分层结构

2026-04-02 0 0

0. 引言

PCIe 是硬件工程师跨不过去的坎。我刚开始工作就接触 PCIe,工作中遇到的所有产品都有 PCIe 总线。在此想把自己学习 PCIe 的一些经历和感悟,以及踩过的坑分享在这里。

所有 PCIe 主题的文章都会收录在《深入浅出聊 PCIe》合集里,每篇文章涵盖一个 PCIe 的主题,预计会有几十篇文章,我会尽量用通俗的语言和大家介绍 PCIe 设备内部的奥妙。

在上一篇文章《PCIe 从入门到精通之四:PCIe 总线的拓扑结构》中,我们对 PCIe 总线的拓扑结构有了一定的了解。在这一篇文章中我们继续介绍 PCIe 分层结构。

需要下载 PCIe 学习资料标准的朋友(pdf 格式),请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载链接。


1. PCIe 为什么要分层

我们之前说过 PCIe 体系相当于一个庞大的集团公司:

  • CPU:是这个集团的 CEO
  • Root Complex:是 CPU 的秘书团队
  • Switch:是大区域的分总公司
  • Endpoint:则是子公司或办事处

俗话说得好,有人的地方就有江湖,有江湖的地方就会有阶级分层,美其名曰分工合作。PCIe 体系的总公司和每个子公司要实现的功能非常强大,因此也要分工合作。

一个完整的 PCIe 体系结构包括:

层次 名称
顶层 应用层(Application Layer)
第二层 事务层(Transaction Layer)
第三层 数据链路层(Data Link Layer)
底层 物理层(Physical Layer)

分层特点

  • 层与层相互独立,下层为上层服务
  • 每层只负责本层内的事务
  • 层与层之间定义标准的接口
  • 某一层的改变对其他层不产生影响

就像总公司和每个子公司下面都有很多部门,每个部门有不同的职能,大家配合运行。


2. PCIe 怎么分层

如下图所示,从上到下:

  • 灰色:应用层
  • 红色:事务层
  • 蓝色:数据链路层
  • 绿色:物理层

PCIe分层结构

2.1 应用层(Application Layer)

它并非 PCIe 规范中明确定义的层,而是由用户根据自身需求进行设计和实现的。

2.2 事务层(Transaction Layer)

这是 PCIe 协议的最高层。它负责:

  • 创建和解析事务层包(TLP,Transaction Layer Packet)
  • 处理流量控制
  • 服务质量(QoS,Quality of Service)
  • 事务排序等功能

事务层还负责将数据封装成 PCIe 事务包进行传输。

位于事务层和物理层之间。数据链路层的主要职责是确保数据包在链路上的可靠传输,包括错误检测和恢复。它通过添加序列号和循环冗余校验(CRC),并使用 ACK/NAK 协议来保证报文的可靠传递。

2.4 物理层(Physical Layer)

这是 PCIe 协议的最底层。它负责实际的信号传输,包括:

  • 数据编码(如 8b/10b 或 128b/130b 或 Flit)
  • 扰码
  • 字节条带化
  • 链路训练和初始化

物理层提供了 PCIe 设备之间数据通信的传输介质,并管理链路状态。


3. PCIe 设备内的分层

如图是一个 Root Complex 和 Endpoint 的分层互联图:

  • 两者绿色的物理层相互连接,直接通信
  • 向内部分别到达蓝色的数据链路层和红色的事务层

Switch 内部有 PCI-PCI Bridge,如下图所示,每个 PCI-PCI Bridge 都可以看作是一个独立的 PCIe device,它们都有各自的事务层、数据链路层和物理层。

如下图所示,所有的 PCI-PCI Bridge 的 Port 最外层是物理层,中间是数据链路层,内部通过事务层将各个 PCI-PCI Bridge 互联。

PCIe Switch内部结构


4. PCIe 体系内的分层

我们将 Root Complex、Switch 和 Endpoint 整合到一个体系内,如下图所示。

PCIe 总线传输的是数据包(Packet),如下图中黄色的箭头。Root Complex 要想和 SSD0 通信,数据包(Packet)的传输路径为:

  1. 穿过 Downstream Port 三层
  2. 到达 Switch 的 Upstream 三层
  3. Switch 将数据包处理后通过内部的 PCIe Bus 传输到 Downstream Port
  4. 穿过 Downstream Port 三层
  5. 最终到达 Endpoint SSD0

PCIe完整体系分层


5. 总结

  • 这种分层结构实现了职责的分离,使得每一层都专注于特定的功能,从而简化了设计和实现。
  • 各层之间通过明确定义的接口进行通信,上层依赖下层提供的服务,而下层则为上层提供支持。这种紧密的协作确保了 PCIe 链路能够高效、可靠地完成从高层软件请求到低层物理传输的整个数据通信过程。

简而言之

  • 物理层是数据的 “管道”
  • 数据链路层是 “管道的守护者”,确保数据安全无误地通过管道
  • 事务层则是 “数据的管理者”,负责数据的生成、解析和传递给应用程序

它们共同构成了一个强大而灵活的通信协议栈。


这篇文章就聊到这里,敬请关注下一篇:
《PCIe 从入门到精通之六:PCIe 数据包 packet 的传奇之旅》


参考文献

  1. PCI Express® Base Specification Revision 5.0 Version 1.0
  2. PCI Express® Base Specification Revision 6.4
  3. PCI Express® Base Specification Revision 7.0

0 篇笔记 写笔记

关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!