PCIe指定了三个离散的逻辑层架构:事务层、数据链路层和物理层。 这些层级中的每一层都分为两个部分:一个处理出站(要传输的)信息,一个处理入站(接收)信息,如图 1所示。
这个分层定义的基本目标是促进读者对规范的理解。 请注意,这种分层并不意味着特定的 PCIe实现。
PCIe 使用数据包在组件之间传递信息。 数据包在事务层和数据链路层中形成,以将信息从发送组件传送到接收组件。 当传输的数据包流经其他层时,它们会被扩展为在这些层次处理数据包所需的附加信息。 在接收端发生相反的过程,数据包从它们的物理层表示转换为数据链路层表示,最后(对于事务层数据包)转换为可由接收设备的事务层处理的形式。 图 2 显示了通过各层的事务级数据包信息的概念流。
请注意,出于链路管理的目的,在两个数据链路层(连接到同一链路)之间支持更简单的数据包通信形式
事务层
架构的上层是事务层。 事务层的主要职责是组装和拆卸 TLP。 TLP 用于通信事务,例如读取和写入,以及某些类型的事件。 事务层还负责管理 TLP 的基于信用的流量控制。
每个需要响应数据包的请求数据包都被实现为一个拆分事务。 每个数据包都有一个唯一的标识符,使响应数据包能够被定向到正确的发起者。 数据包格式支持不同的寻址形式,具体取决于事务的类型(Memory、I/O、Configuration和Message)。 数据包还可能具有诸如No Snoop, Relaxed Ordering, and ID-Based Ordering (IDO)之类的属性。
事务层支持四种地址空间:它包括三个 PCI 地址空间(Memory、I/O 和Configuration)并添加Message空间。 该规范使用Message空间来支持所有先前的边带信号,例如中断、功耗管理请求等,作为带内Message事务。 您可以将 PCIe Message事务视为“虚拟线路”,因为它们的作用是消除当前在平台实现中使用的大量边带信号。
数据链路层
堆栈中的中间层,即数据链路层,充当事务层和物理层之间的中间阶段。 数据链路层的主要职责包括链路管理和数据完整性,包括错误检测和错误纠正。
数据链路层的传输端接受由事务层组装的TLP,计算并应用数据保护码和TLP序列号,并将它们提交给物理层以通过链路传输。 接收数据链路层负责检查接收到的 TLP 的完整性,并将它们提交给事务层进行进一步处理。 在检测到 TLP 错误时,该层负责请求重新传输 TLP,直到正确接收到信息,或者确定链路发生故障。
数据链路层还生成和使用用于链路管理功能的数据包。 为了将这些数据包与事务层 (TLP) 使用的数据包区分开来,在指代在数据链路层生成和使用的数据包时,将使用术语数据链路层数据包 (DLLP)。
物理层
物理层包括用于接口操作的所有电路,包括驱动器和输入缓冲器、并行到串行和串行到并行转换、PLL(s) 和阻抗匹配电路。 它还包括与接口初始化和维护相关的逻辑功能。 物理层以特定于实现的格式与数据链路层交换信息。 该层负责将从数据链路层接收到的信息转换为适当的串行化格式,并以与连接到链路另一端的设备兼容的频率和宽度通过 PCIe 链路传输。
PCIe 架构具有“挂钩”,可通过速度升级和高级编码技术支持未来的性能增强。 未来的速度、编码技术或媒体可能只会影响物理层定义。