Non-posted(非转发)事务和posted(转发)事务都是PCIE TLP(事务层包)类型。Non-posted TLP有返回TLP,而posted 事务没有返回。
posted是一种无需确认的数据传输方式。在这种方式下,发送端将数据发送给接收端,无需等待接收端的确认信号。这种方式适用于对延迟要求较高的数据传输,如音频和视频流。
Non-posted是一种需要确认的数据传输方式。在这种方式下,发送端将数据发送给接收端,并等待接收端发送确认信号。只有在接收端发送确认信号后,发送端才能发送下一个数据包。这种方式适用于对数据完整性和可靠性要求较高的传输,如存储器读写操作。
区别:
- Non-posted事务分为两个部分,1)发送端向接收端发送TLP请求,2)接收端收到请求完成后,3)向发送端发送完成(completion)TLP. (发送-》接收-》反馈)Non-posted事务必须等待接收到完成TLP,PCIE总线才能结束当前的TLP。
- posted TLP不需要等待完成TLP,TLP在到达目标地之前,PCIE可以结束当前事务。
应用:
存储器读事务,IO读写事务和配置事务属于非转发事务。非转发事务按照分割事务的方法处理,请求者发起TLP请求给接收者,接收者反回完成TLP给请求者。例如IO读事务,在返回TLP事务中包含读数据。
存储器写事务和消息事务都属于转发事务。转发事务不需要返回TLP来确定事务是否完成。通过数据链路层的Nak DLLP和ACK DLLP来保证转发TLP正确的传输。