PCI的posted事务和non-posted事务

一,posted事务和non-posted事务

https://blog.csdn.net/icxiaoge/article/details/80456837

https://blog.csdn.net/fzhykx/article/details/79718744

简单来说:posted事务就是在request传到下一级时,上游请求就结束了(此时事务还没有到达target,也还没有完成),又下一                     级继续完成request。

                  non-posted事务,需要等到completion的response结束后,才能结束一次request。

                  由于non-posted事务会一直等到事务完成才释放总线,所以很影响总线的带宽,为此出现了delayed事务和split事务。

 二、delayed事务以及delayed事务的顺序要求

PCI桥接受上游的request后,向下传递request,如果16个周期后依旧没有回应,这时候下游的桥就使用retry信号中断请求,PCI桥收到Retay信号后,就中断request信号,释放总线,计数一段时间后,重新发起一个delayed-request,若依旧16个周期没有反应,下游继续发送retay,pci桥在停止request,计数一段时间后再重新发起,如此反复直到target 准备好数据完成(此时的完成标记成delayed总线完成。)

 

 只有memory write(PMW(posted-memory write))和message可以是posted 事务

 

 三、delayed事务执行过程中要注意的顺序问题

总的来讲:

1、PMW不能越过之前的PMW执行(如果前后两个posted写,A是写,B是标记写好,B先于A执行,如果此时出现读事务,就会出现读旧数据的错误),PMW要能够越过其他的non-posted事务执行(为了防止死锁/提高总线利用率)

2、DRC/DWC要可以越过DRR/DWR事务执行,也是为了避免死锁的问题

3、delayed read/write request 都只是一个request,只有得到grant后,事务才开始执行,所以为了防止死锁和提高总线利用率,这个request可能因为之前提到的优先级问题被discard掉。(而一个桥处理delayed事务的能力是有限度的,假设多个delayed事务都在执行,又来了新的delayed事务,可能会导致其中一个delayed事务被bypass 掉,所以南桥有一个针对LPC事务的处理,为防止对LPC的事务被bypass,会计数retry的次数,达到阈值后,就将该request移到pending-request buffer中,过一会儿再重新发起一个request。

 

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值