我们为什么要定义一条总线,或者更确切的来说,我们定义PCI总线的目的何在? 在我看来,PCI总线的意义在于可以更高效的让CPU/Memory和外部设备进行数据传送,说白了,PCI总线就是个传数据的。为了应付不同的数据传送场景,PCI总线规定了两种数据传送方式:Posted和Non-Posted。 Post翻译过来就是邮寄的意思,当我们写了一封信然后丢进邮筒,那就要做好一去不复返遥遥无回应的准备。按照这样理解的话,如果不需要对方响应的数据传输,就是Posted;如果需要对方立即或者稍后响应响应的就是Non-Post。 Non-Posted总线事务是指PCI主设备向PCI目标设备进行数据传送的时候,数据必须到达目的地之后,才能结束当前总线事务。PCI总线在没有结束当前总线事务时必须等待。PCI总线规定Memory Read, I/O Read/Write, Config Read/Write都只能采用Non-Posted方式传输。首先读操作肯定得是Non-Posted,读操作需要目标设备返回读回来的数据,如果在返回数据的过程中运行插入其他的操作,这样主设备就很可能接收不到读回来的这笔数据了;其次,IO Write也是需要等待IO设备的响应的,不能允许中间插入其他操作,而Config Read/Write的本质其实是IO Read/Write。这样看来,将Memory Read, I/O Read/Write, Config Read/Write规定为Non-Posted传输就十分容易理解了。 Posted总线事务指PCI主设备向PCI目标设备进行数据传输时,当数据到达PCI桥后,即由PCI桥接
pcie协议_PCI/PCIE协议中的Posted与NonPosted事务
最新推荐文章于 2024-05-23 13:44:09 发布