Exclusive Access
Exclusive访问机制可以提供信号量类型的操作。
什么是信号量?
信号量本质是一个计数器, 用于多进程对共享数据对象的读取,它和管道不同,它不以传送数据为主要目的,
它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。申请信号量(P操作,计数器减1)–>操作临界资源–>释放信号量(V操作,计数器加1)
(注:PV操作必须是原子操作)
多个执行流为了访问临界资源会竞争式的申请信号量, 因此信号量是会被多个执行流同时访问的,也就是说信号量本质也是临界资源。
注:信号量本质是计数器,但并不意味着只有计数器,其中还包含了一个等待队列。
slave要求额外的逻辑来支持Ex访问。
一个ex访问的基本机制是:
- Master从一个地址执行一次ex读。
- 稍后,Master尝试通过对相同的地址执行ex写来完成本次独占操作,且本次写的AWID和上次ex读的ARID相匹配。
- 如果上次ex读之后没有其他master对这个位置进行写入,那么这次ex写成功。在这种情况下,ex写更新内存。
从Master视角看ex访问:
Master通过执行ex读开启一个独占操作。如果事务成功,slave返回EXOKAY响应。
如果Master尝试对一个不支持独占操作的slave执行ex读,slave返回OKAY响应。
在ex读之后的某个时间,Master尝试对同一位置进行ex写。如果这个位置的内容没有被改变,则ex写成功。slave返回EXOKAY响应,并且更新内存。如果内容发生改变,ex写失败,slave返回OKAY响应,内存不会更新。
从Slave视角看ex访问:
不支持ex访问的slave必须为normal和exclusive访问都提供OKAY响应。
支持ex访问的slave必须具有monitor硬件。
独占访问监控器记录任何ex读的地址和ARID值。然后它会监控那个位置直到写发生或者另一个具有相同ARID的ex读将monitor重置。
当slave收到具有给定AWID值的ex写时,监视器将检查该地址是否正在被监控以使用该AWID进行独占访问。如果是,表明没有写入发生,本次ex写正常进行以完成独占访问。slave返回EXOKAY响应给master并且更新内存位置。否则返回OKAY响应。
独占访问限制
ex写和ex读的突发长度和突发大小必须相同。
独占访问的地址必须和transaction的总byte数(burst size * burst length)对齐。
ex读的ARID必须和ex写的AWID匹配。
在AXI4中,独占访问的突发长度不得超过16。
Locked Access
AXI4不支持locked事务了。Locked事务的实现对Interconnect的复杂度和QoS的能力有重要影响,并且大多数组件也不要求locked事务。
AXI3:Normal、Exclusive、Locked
AXI4:Normal、Exclusive
AXI4-Lite:Normal