TLP传输三阶段
TLP 发送的三个阶段涉及到 PCIe 协议栈中的不同层次,具体如下:
TLP 发送阶段 1(TS1):这个阶段是在传输层(Transaction Layer)中进行的。在这个阶段,TLP 数据包会进行编码和格式化处理,并添加一些控制信息,如 Stream ID 和序列号等。同时,在这个阶段还会进行一些流控制、纠错等相关处理。
TLP 发送阶段 2(TS2):这个阶段是在数据链路层(Data Link Layer)中进行的。在这个阶段,TLP 数据包的比特流会被转换为物理层链接的差分信号,然后通过物理层芯片驱动器(driver)发送到信道上。
TLP 发送阶段 3(TS3):这个阶段是在物理层(Physical Layer)中进行的。在这个阶段,驱动器会将比特流转换为物理层链接的差分信号,并在信道上进行传输。接收端会对这些信号进行抽取、采样和解码,以还原原始的比特流。如果传输成功,接收端会向发送端发送确认反馈(ACK),完成数据传输过程。
因此,TLP 发送阶段从传输层开始,经过数据链路层和物理层,最终完成数据的传输。
TS1
在 PCIe 协议中,TS1 是指 TLP 发送阶段 1(TLP Transmission Stage 1),也可以简称为 TLP 阶段 1。TLP 是指传输层协议(Transaction Layer Packet),用于在 PCIe 系统中传输数据和控制信息。TLP 发送阶段 1 在 TLP 数据包被发送到物理层之前执行,包括以下步骤:
- 发送端对 TLP 数据包进行编码,包括添加首部、进行 CRC 校验等。
- 发送端将编码后的 TLP 数据包转换成物理层可传输的比特流。
- 发送端将比特流发送到物理层,开始传输过程。
因此,TS1 是指 TLP 数据包在经过传输层之前的一个处理阶段,涉及到 TLP 数据包的编码和转换等过程,确保数据能够正确地传输到物理层。需要注意的是,在 PCIe 规范中,TS1 有时也被称为 DLLP 发送阶段 1(Data Link Layer Packet Transmission Stage 1),但含义是相同的。
TS23
在 PCIe 协议中,TS2 是指 TLP 发送阶段 2(TLP Transmission Stage 2),也可以称为 TLP 阶段 2 或 DLLP 发送阶段 2(Data Link Layer Packet Transmission Stage 2)。TS2 是 TLP 数据包进入数据链路层时的一个处理阶段,其主要任务是将传输层中编码后的 TLP 数据包转化为物理层可传输的差分信号,并对其进行一些控制和纠错处理,如预加重、功率控制、差分输出等。
而 TS3 是指 TLP 发送阶段 3(TLP Transmission Stage 3),也可以简称为 TLP 阶段 3。TS3 是在物理层中进行的一个处理阶段,其主要任务是等待接收端的确认反馈(ACK),以确定数据是否成功传输。如果成功,发送端会通知上层协议栈,否则会进行重传或其他纠错操作。
需要注意的是,在 PCIe 规范中,有时也会将 TS2 和 TS3 统称为数据链路层发送阶段,因为它们都是在 PCIe 协议栈的数据链路层中执行的。但 TS2 主要涉及到物理层和数据链路层之间的转换处理,而 TS3 则是针对物理层传输的结果进行的确认和处理。
Secondary Bus Reset
Secondary Bus Reset是PCI Express (PCIe) 总线协议中的一种重置机制,用于恢复处于部分失效状态的PCIe设备和子系统。
在PCIe总线中,每个Root Complex(根复杂)都有一个Primary Bus,而每个Secondary Bus都连接到Primary Bus上的一个PCI桥接器。当Secondary Bus上的某个设备或子系统出现异常情况时,可能会导致连接到该Bus上的其他设备也受到影响,从而造成数据传输错误、系统崩溃等问题。此时,可以利用Secondary Bus Reset机制来尝试修复这些异常情况,并恢复总线的正常工作状态。
具体来说,当Host Controller发现Secondary Bus上出现异常情况时,可以向该Bus发送Secondary Bus Reset信号。这个信号会通知所有连接到该Bus上的设备和子系统进行重置操作,使它们恢复到初始状态。在这个过程中,所有与该Bus相关的内存映射区域和设备配置寄存器都会被清空,所有正在进行的DMA操作也会被终止。
需要注意的是,Secondary Bus Reset信号只会影响到当前Bus上的设备和子系统,并不会影响到PCIe总线中其他Bus上的设备和子系统。因此,如果出现了多个Bus上的异常情况,可能需要对每个Bus都进行Reset操作以达到完全的修复效果。
总之,Secondary Bus Reset是PCIe总线协议中的一种重置机制,用于恢复处于部分失效状态的PCIe设备和子系统。它可以清空所有与该Bus相关的内存映射区域和设备配置寄存器,并终止正在进行的DMA操作,是一个重要的故障恢复手段。