PCI总线的存储器读写总线事务
时序图
主设备获得总线使用权后,拉低FRAME,并在第一个时钟周期传送地址(AD)和总线命令(C/BE),第二个周期检测到IRDY和TRDY都为低,开始传送数据。传送完毕后,FRAME拉高。
Posted和Non-Posted传送方式
Posted总线事务:
PCI主设备向PCI目标设备进行数据传输时,当数据到达PCI桥后,由PCI桥接管来自上游总线的总线事务,并将其转发到下游总线。采用这种方式可以缩短对PCI主设备的占用时间。
No-Posted总线事务:
PCI主设备向PCI目标设备进行数据传递时,数据必须到达最终目的地之后,才能结束当前总线事务的一种数据传递方式。
协议规定只有存储器写请求可采用Posted总线事务,而存储器读和IO读写、配置读写都只能采用No-Posted总线事务。
若PCI设备11向存储器发起DMA写操作,则过程如下
PCI设备11获得总线x1的使用权后,将存储器写事务发送到总线x1。桥x1发现这个总线事务的地址不在自己管理范围内,首先接收这个事务,然后结束总线x1的事务。之后桥x1申请获取总线x0使用权,获得使用权后转发存储器写总线事务到总线x0,之后HOST主桥x接收这个写总线事务,并发送到主存储器。
若处理器对PCI设备11进行存储器写操作:
处理器首先向PCI设备11映射到的存储器域的地址进行写操作。注意:处理器能够操纵的是存储器域,PCI总线能够操作的是PCI域。所以处理器对PCI域对应的存储器域地址进行操作,通过HOST主桥进行翻译。HOST主桥x接收到来自处理器的存储器写操作后,主桥负责将对应存储器地址转化为PCI总线域的PCI宗宪帝制,并通过总线x0发起PCI写总线事务。由PCI桥x1接收这个写总线事务后,释放总线x0,由桥x1对设备11转发写总线事务。
无论是PCI设备还是处理器发起的操作,都需要HOST桥进行地址转换。PCI设备利用总线发起的事务地址处于PCI域,处理器能够操作的地址处于存储器域。
delayed传送方式
当使用Non-Posted方式时,如果数据没到达目的地,那么这个操作路径上的所有PCI总线都不能被释放,这严重影响使用效率。
delay总线事务包括delay读写请求和delay读写完成总线事务。
使用retry周期,使上游桥择时重试操作,暂时释放总线。