文章目录
- 1.1 Locked accesses
1.1 Locked accesses
当主机使用 AxLOCK
信号来指示事务是锁定的事务时,互连(Interconnect)必须确保只有该主机可以访问目标从属区域,直到来自同一主机的未锁定事务完成。互连中的仲裁器(arbiter)必须执行此限制。
在主机启动读或写事务的锁定序列之前,它必须确保没有其他事务等待完成。
下图用了 M0 和 M1 来展示 AXI 锁定访问
当 M0 使用 一个 lock 信号来说明当前的访问时锁定访问时,互联会使用仲裁器来保证只有M0可以访问从属目标区域。
下图展示了锁定访问的具体工作流程:
- M0 发起 READ, MODIFY, WRITE 的流程申请,在事务开始, READ 执有LOCK 信号;
- 互联将其它的事物都锁在外面,如上图,从此刻开始 M1 没有访问目标区域的权限;
- 在事务的末尾,WRITE 不执有 LOCK 信号,互联去除锁定,此次锁定访问结束,其他事务可以进行访问目标区域,如下图:
任何带有AxLOCK
的表示已锁定事务的事务都会强制互连锁定后续的事务。因此,锁定的序列必须由一个没有AxLOCK
指示锁定事务终结。这就要求最后一个事务包含在锁定的序列中,并有效地移除锁定。此外,主机必须确保锁定序列中的所有事务都具有相同的AxID
值。
AXI4 中考虑到大多数组件并不需要锁定的事务,而且锁定事务对于互连设计和 QoS 带来挑战,因此取消了对locked access的支持,AxLOCK信号为1bit
。
AXI3 支持 Locked access,AxLOCK
信号为 2bit
: