【摘要】:此时PCI桥首先Retry当前Non-Posted总线事务,并将其转换为Delayed总线事务。使用Delayed总线请求事务进行数据传送时,需要遵循以下规则。而这些重试操作极大浪费了PCI总线的带宽,这也是Delayed总线事务的缺点。此时这个Delayed总线完成事务除了在以下两种情况之外,不能被随便丢弃。PCI桥在处理Delayed总线事务时,必须能够接收来自这个桥同一侧的Posted存储器写请求。因为Delayed读总线事务A有可能被设备使用重试周期结束。
PCI总线规定在主设备置FRAME#信号有效后的16个时钟周期之内,目标设备需要置TRDY#有效,否则PCI总线将出现夭折现象,因此如果一个PCI主设备需要使用Non-Posted总线事务,通过多级PCI桥访问最终的目的设备时,可以使用Delayed总线事务。此时PCI桥首先Retry当前Non-Posted总线事务,并将其转换为Delayed总线事务。该Non-Posted总线事务的发起者需要择时重试该总线事务,而PCI桥将这个Delayed总线事务暂存。
在处理Delayed总线事务时,PCI桥可以每次只处理一个Delayed总线事务,当下一个Delayed总线事务到达时,PCI桥可以直接拒绝此Delayed总线请求事务;或者在PCI桥中设置一个队列,依次将Delayed总线请求事务保存在这个队列中,当这个队列满时,再拒绝下一个Delayed总线事务。使用Delayed总线请求事务进行数据传送时,需要遵循以下规则。
(1)只有Non-Posted总线事务才能使用Delayed总线事务。
(2)主设备访问目标设备时,如果被PCI桥使用重试周期暂时中断时,主设备必须择时重新访问这个目标设备,因为PCI桥将使用Delayed总线请求事务继续进行数据访问,PCI桥获得这个数据后,主设备再从PCI桥中获得这个数据。
(3)如果一个Delayed总线请求事务被要求重试,发起这个Delayed总线读请求事务的设备需要不断地择时重发这个数据访问,直到完成这个数据访问为止。在Delayed总线请求事务没有到达最终的设备之前,仅是一个数据请求,可以随时被丢弃。而这些重试操作极大浪费了PCI总线的带宽,这也是Delayed总线事务的缺点。
(4)当Delayed总线请求事务成功到达目的总线后,这个Delayed总线请求事务将被转换为Delayed总线完成事务。此时这个Delayed总线完成事务除了在以下两种情况之外,不能被随便丢弃。
1)如果主设备向一个可以预取的存储器空间进行读操作时,产生的Delayed总线完成事务可以被丢弃。因为对可以预取的存储器空间进行多次读操作,都不会产生任何副作用。(www.chuimin.cn)
2)当主设备在215个时钟周期后,依然没有进行总线重试时,PCI桥可以丢弃这个De-layed总线完成事务,而且需要通过某种机制通知主设备这个Delayed总线完成事务已经被丢弃,这种情况极少发生。
(5)PCI桥在处理Delayed总线事务时,必须能够接收来自这个桥同一侧的Posted存储器写请求。
(6)Delayed数据请求和Delayed数据完成之间没有序的要求。
(7)Delayed数据完成不可以超越之前的Posted写总线事务。
(8)如果主设备需要“Delayed读总线事务A”一定要在“Delayed读总线事务B”之前结束,唯一的方法就是在Delayed读总线事务A完全结束后,再启动Delayed读总线事务B。因为Delayed读总线事务A有可能被设备使用重试周期结束。因此尽管PCI设备先发送De-layed读总线请求A,仍然有可能在后发送的Delayed读总线请求B完全结束后,才被处理。
相关推荐