1.2.1 概述
PCIe 规范定义了一种分层的设备设计体系结构。这些层分为处理层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),在垂直方向上又可以进一步分成两部分:处理出站流量的发送部分和处理入站流量的接收部分。
1.2.2 设备层及相关的数据包
1.2.2.1 处理层事务包(TLP)
TLP 数据包的装配
软件层/设备核心层将装配 TLP 核心部分所需要的信息发送到处理层,这部分信息是 TLP 数据包的头和数据部分。某些 TLP 不包含数据部分。接下来要计算可选的端到端的 CRC(ECRC) 字段并将其附加到数据包中,因为该数据包的最终目标设备要使用 ECRC 字段来检查 TLP 头和数据部分中的 CRC 错误。
TLP 的核心部分被转发至数据链路层,然后由数据链路层为其附加序列 ID 和 LCRC 字段。链路另一端的相邻接收器设备使用该 LCRC 字段检查 TLP 的核心部分和序列 ID 中的 CRC 错误。装配后的 TLP 被转发至物理层,由物理层再附加各一字节的开始和结束成帧字符。然后,对数据进行编码,并使用链路上可用的通道差动发送数据包。
TLP数据包的拆解
临近的接收器设备接受进入的 TLP 比特流。物理层解码接收到的 TLP ,剥去开始和结束帧字段。得到的 TLP 被发送至数据链路层,由数据链路层检查该 TLP 中的任何错误,并剥去序列 ID 和LCRC 字段。没有 LCRC 错误,则该 TLP 将被向上转发至物理层。如果接收设备是交换器,那么交换器将根据 TLP 头中包含的地址信息将该数据包由交换器的一个端口路由至一个出端口。允许交换器检查 ECEC 错误,甚至报告它发现的错误。但不允许交换器修改 ECRC,如果存在这样的错误,该 TLP 的目标设备将检测到一个 ECRC 错误。
该 TLP 的最终目标设备负责检查其头和数据部分中的 ECRC 错误。在剥去 ECRC 字段后,留下该数据包的头和数据部分,而正是这些信息将最终被转发至设备核心/软件层。
-
-
-
- 数据链路层数据包(DLLP)
-
-
DLLP 数据包源于发送器设备的数据链路层,终止于接收器设备的数据链路层。当 DLLP 通过 PCIe 链路从一台设备传送到另一台设备时,物理层对 DLLP 的装配和拆解也起作用。
DLLP 可用于链路管理功能,包括与 ACK/NAK 协议相关的 TLP 确认,电源管理和流控制信息的交换。
DLLP 在链路上两个直连组件的数据链路层之间传输。与通过 PCIe 结构传输的 TLP 不同,DLLP 不通过交换器。DLLP 也不包含路由信息。与 TLP 相比,这些数据包较小,为 8 个字节。
DLLP 的装配
DLLP 有多种类型,包括流控制 D