TripTheWorld

PCIe总线何去何从? 实际的需求催生了技术的变革。 PCIe就像是计算机王国里的一场“交通革命”,它替代了PCI成为计算机领域主要的互联总线。那么它的发展趋势如何?让我们一步一步揭开它神秘的面纱。欢迎关注微信公众号“硬件工程师宝典”,获取更多资讯。

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

0
阅读(1575)

0,引言

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

所有PCIe主题的文章都会收录在《深入浅出聊PCIe》合集里,欢迎评阅。

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

一,PCIe为什么要分层

我们之前说过PCIe体系相当于一个庞大的集团公司:CPU是这个集团的CEO; Root Complex是CPU的秘书团队; switch是大区域的分总公司;而endpoint则是子公司或办事处。

俗话说得好,有人的地方就有江湖,有江湖的地方就会有阶级分层,美其名曰分工合作。

PCIe体系的总公司和每个子公司要实现的功能非常强大,因此也要分工合作。一个完整的PCIe体系结构包括应用层(Application Layer)、事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。层于层相互独立,下层为上层服务,每层只负责本层内的事务,层与层之间定义标准的接口,因此某一个层的改变对另外层不产生影响。

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

二,PCIe怎么分层

如下图所示,从上到下,灰色的表示应用层,红色的表示传输层,蓝色的表示数据链路层,绿色的表示物理层。

19_1.png

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

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

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

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

三,PCIe设备内的分层

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

20.png

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

21.png

 四,PCIe体系内的分层

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

22.png

 

五,总结

  • 这种分层结构实现了职责的分离,使得每一层都专注于特定的功能,从而简化了设计和实现。

  • 各层之间通过明确定义的接口进行通信,上层依赖下层提供的服务,而下层则为上层提供支持。这种紧密的协作确保了PCIe链路能够高效、可靠地完成从高层软件请求到低层物理传输的整个数据通信过程。

简而言之,物理层是数据的“管道”,数据链路层是“管道的守护者”,确保数据安全无误地通过管道,而事务层则是“数据的管理者”,负责数据的生成、解析和传递给应用程序。它们共同构成了一个强大而灵活的通信协议栈。

六,抛砖引玉

PCIe设备内部既然分了四层,那么PCIe数据包packet是怎么四层内相互传输的?PCIe数据包packet传输过程中遵循什么原理?

敬请关注下一篇:PCIe从入门到精通之六:PCIe数据包packet的神奇之旅

七,参考文献:

需要以下参考文献(PCIe标准)的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载连接。

15_baidu_file.png


百度网盘分享的文件