找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 177|回复: 0

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

[复制链接]

27

主题

0

回帖

248

积分

管理员

积分
248
发表于 2026-1-17 14:34:31 | 显示全部楼层 |阅读模式 来自 LAN

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

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分层结构

应用层(Application Layer)

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

事务层(Transaction Layer)

这是PCIe协议的最高层。它负责创建和解析事务层包(TLP),处理流量控制、服务质量(QoS)以及事务排序等功能。事务层还负责将数据封装成PCIe事务包进行传输。

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

物理层(Physical Layer)

这是PCIe协议的最底层。它负责实际的信号传输,包括数据编码(如8b/10b或128b/130b或Flit)、扰码、字节条带化以及链路训练和初始化。物理层提供了PCIe设备之间数据通信的传输介质,并管理链路状态。

3. PCIe设备内的分层

如图是一个Root Complex和Endpoint的分层互联图,两者绿色的物理层相互连接,直接通信,向内部分别到达蓝色的数据链路层和红色的事务层。

Switch内部有PCI-PCI Bridge,如下图所示,每个PCI-PCI Bridge都可以看作是一个独立的PCIe device,它们都有各自的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。如下图所示,所有的PCI-PCI Bridge的port最外层是物理层,中间是数据链路层,内部通过事务层将各个PCI-PCI Bridge互联。

PCIe Switch内部结构

4. PCIe体系内的分层

我们将Root Complex,Switch和Endpoint整合到一个体系内,如下图所示。PCIe总线传输的是数据包(Packet),如下图中黄色的箭头。Root Complex要想和SSD0通信,数据包(Packet)必须先穿过downstream Port三层,到达Switch的upstream的三层,Switch将数据包处理后通过内部的PCIe bus传输到downstream port,穿过downstream port的三层,最终到达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

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


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PCIe技术圈-专注PCIe技术的中文社区 ( 皖ICP备17021150号-5 )|网站地图

GMT+8, 2026-2-16 07:06 , Processed in 0.040219 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表