exclusive 和 lock

exclusive 和lock
1. 首先,Lock在amba2.0中就有涉及,意思是,某个master 可以通过Lock 总线来实现独占。只有当该master完成传输后才释放出总线。这样的话,总线的效率会降低。 2. 相比Lock,AXI 中引入了exclusive操作,不需要将bus锁定给某个master。而是通过TAG ID以及slave 返回的response来判断当前的传输是否成功。过程如下:
1)mst 首先向slave的某个地址位置发起一个exclusive读操作。slave中的monitor会纪录下该mst的 ARID和 要访问的地址位置(返回EXOKEY)。
2)mst向同一地址区域发起一exclusive写操作。slave同样要记录该操作的mst的 AWID 和 要访问的地址位置。如果AWID==ARID && 该地址内容没有改变(没有 其他的mst访问过),这个写操作就是成功的。该地址就会更新,同时slv会返回EXOKEY. 否则,slv会返回OKEY.
由此看来,对于exclusive操作,总线其实允许其他mst同时来请求总线。比如,当其他mst要同时通过总线访问其他的slv时,上述2)就不满足,所以总线就不会被锁定

 

在Atomic Access一节中是这么规定的:ARLOCK[1:0]/AWLOCK[1:0]信号为2'b00-------Normal access

                                                    ARLOCK[1:0]/AWLOCK[1:0]信号为2'b01-------Exclusive access

                                                    ARLOCK[1:0]/AWLOCK[1:0]信号为2'b10-------Locked access   

 

exclusive的操作相对于lock操作的优点是:只根据返回的resp来确定原子操作是否正确,不会影响interconnect的性能。

 

对于Exclusive access,从slave的角度来看,首先slave必须支持Exclusive的访问,具体slave必须有一些monitors 来记录收到exclusive访问时的,

                               ARID/AWID,ARADDR/AWADDR,ARSIZE/AWSIZE,ARLEN/AWLEN。总之必须保证访问的master和地址完全的一致。

                                其中的ARID/AWID由arm core来决定,如果是core0,ARID/AWID一般就是0。

从master的角度来看,master要发出一个exclusive的访问必须,先发出exclusive read后再发出exclusive write来完成一次exclusive的访问。

                               1)对于exclusive访问,正确的response是EXOKAY。而由于有的slave不支持exclusive的访问后直接忽视掉lock信号,此时就会

                                  返回OKAY信号。

                               2)在exclusive read之后,slave仍可在该地址接收normal write,此时如果exclusive指定的地址中的数据已经改变,则slave不

                                 会再下次exclusive write的时候,返回EXOKAY,取而代之会返回OKAY,表示出错了,此时write的值也不会写入。

                               3)在一次exclusive read会后,可以不等exclusive write,直接再发出exclusive read,这样slave monitor的地址就会改变,

                                 相当于发起一个新的exclusive操作。

exclusive的操作,不能是cache的属性。

在slave端,monitor的最小的地址是length*size,同样也可以monitor一个比这个乘机更大的地址空间,但是这样可能会使本来正确的

exclusive access却报出了错误。

 

对于lock操作,主要需要interconnect保证只有特定ID的master可以访问一个特定的slave地址,直到同一ID的master发出一个unlock的操作接收到。

                    一个master可以开始一个read/write的lock sequence,但这时必须保证没有其他的outstanding的transaction等待完成

                    当一个master开始一个lock的transaction时,必须保证没有其他的locked的transaction还没有完成。  

 

                    master必须保证一个locked transaction sequences中,最多只有两个transaction,同时在lock操作的过程中

                    所有的transaction都必须是同样的ID,一个lock的sequence,以最后一个unlock的transaction结束。ARLOCK/AWLOCK信号无效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值