Store & Forward and Cut-Through
通常,对于Swtich来讲,通过它向其他设备传输报文的模式有两种。一种是所谓Store and Forward。另一种是Cut-Through。
PCIe事务层(Transaction Layer)相关内容
通常,对于Swtich来讲,通过它向其他设备传输报文的模式有两种。一种是所谓Store and Forward。另一种是Cut-Through。
今天我们来看一看Transaction Layer的TLP报文的具体组成。回顾一下前面我们讲到的Transaction Layer的报文。分为三个部分:Header、Data和ECRC。
昨天我们讲了PCIe系统里的报文顺序规则,其实在整条报文的传递路径上,对于报文顺序影响最大的就是PCIe Switch(再回忆一下,PCIe Switch内部可以看作是多个PCI-PCI的桥组成的)。事实上,PCI系统里的顺序规则主要就是针对PCI桥的。
前面我们学习了PCIe系统中的几种类型的事务,在一个系统中,时刻都有海量的不同类型的事务。如何安排这些事务有序合理的通过总线?访问设备? 谁先谁后?这就是我们要说的“序”。
与Posted事务的关键差异是,Non-Posted 事务的发起者是需要收到从目标设备返回的完成报文后,事务才算结束。如果目标设备由于某种原因并未返回完成,那将会导致发起者接收完成超时CO(Completion Timeout)。Configuration read and write, IO read and write, and Memory read都属于Non-Posted事务。
在学习Non-Posted Transaction之前,我们首先来了解一下什么是Completion(完成)。
所谓Posted Transaction,意思是指当数据发送到接收端的设备后,当前事务就完成了,发起事务的Requester就可以继续做下一件事了。因此,Posted Transaction不会导致Requester hang住。
Transaction Layer是三层模型里最上的一层,我们从这层开始学习。