首页 理论教育数据链路层报文发送顺序

数据链路层报文发送顺序

【摘要】:PCIe总线为了保证数据的完整性,不允许打断正在传送的报文。也是一种发现错误后的恢复手段,因此这种报文的传递优先权高于其他TLP。因为在错误没有处理完毕之前,其他TLP的传递是没有意义的,接收端都将丢弃这些报文。其他在事务层等待的TLP。其他DLLP,这些DLLP包括地址路由,电源管理等报文,这些报文与数据报文的传递无关,是PCIe总线规定的一些控制报文,所以优先权最低。

数据链路层还规定了报文发送的顺序。由上文的描述中,我们可以发现DLLP和TLP的发送共用一个PCIe链路,除此之外物理层的报文PLP(Physical Layer Packet)也使用同样的链路。因此PCIe链路需要合理地安排报文的发送顺序,以避免死锁。其发送顺序如下所示。

(1)正在发送的TLP或者DLLP具有最高的优先权。PCIe总线为了保证数据的完整性,不允许打断正在传送的报文。从理论上讲,打断正在传送的报文是可行的,但是硬件需要更大的代价,也需要制定更加复杂的协议保证数据的完整性。

(2)PLP的传送。一般来说,处于协议底层的报文优先权高于处于协议高层的报文,这也是解决死锁的一个有效方法。

(3)NAK DLLP。NAK DLLP需要优先于TLP的发送,原理同上。

(4)ACK DLLP。ACK DLLP响应正确接收的报文,在绝大多数处理过程中,错误处理报文优先于正确的响应,这也是一种防止死锁的方法。(www.chuimin.cn)

(5)重新传送Replay Buffer中的TLP。也是一种发现错误后的恢复手段,因此这种报文的传递优先权高于其他TLP。因为在错误没有处理完毕之前,其他TLP的传递是没有意义的,接收端都将丢弃这些报文。

(6)其他在事务层等待的TLP。

(7)其他DLLP,这些DLLP包括地址路由电源管理等报文,这些报文与数据报文的传递无关,是PCIe总线规定的一些控制报文,所以优先权最低。