[AXI 专题] AXI4 原子操作 锁定访问与独占访问
什么是atomic access?
当管理器想要对特定内存区域执行一系列访问时,他们使用原子访问,同时确保该区域中的原始数据不会被其他管理器的写入破坏。此序列通常是读取、修改和写入序列。
通常在多核CPU处理中需要进行原子操作,比如说core0,core1对同一数据同时加1,如果没有原子操作,那么最后结果只加1,有原子指令就可以实现一个CPU独占执行时间,这就保证了同一时刻只有一个core能够访问该数据空间,如图。
什么是semaphore-type operations?
信号量操作是建立在原子操作的基础上的,信号量操作用于进程的同步,主要包括两种操作,P操作和V操作,分别对信号量S进行操作,P操作就是wait(S),V操作就是signal(S)。在PV操作的执行中,信号量S的修改应不可分割地执行,也就是原子操作,即当一个进程修改信号量S的时候,其他进程不能修改该信号量的值。
signal encoding
b00
Normal accessb01
Excludsive accessb10
Locked accessb11
reserved
locked access 锁定访问
什么是locked access?
a locked sequence of transcations forces the interconnect to reject access to subordinate from any orther manager.
强制interconnect 拒绝其他 manager(master)访问subordinate(slave)
locked access的结束条件
final transaction不设定AXLOCK信号,作为locked sequence的结束,也属于locked sequence的一部分,在这个final transaction之后,就release lock,允许其他manager访问subordinate。
AXI3 AXI4对locked access的可支持性
对于AXI4而言,没有了锁定访问,对于AXI3而言,是支持锁定访问的。
开启锁定访问sequence transactions的条件
必须确保先前的transaction都完成了,即没有在途的transaction了
locked access示意图
如图,当M0发起locked access的时候,必须确保没有在途的transaction,之前的transaction必须完成。
然后M0使用AxLOCK发起locked transaction,然后interconnect通过内部仲裁器确保只有M0能访问到subordinate,任何其他的manager(M1)访问Sub都会被Blocked,直到M0发起一个非locked transaction表示locked sequence完成。
exclusive access 独占访问
前面说了AXI4不支持locked access,那么为什么取消了呢,因为增加了exclusive access,比locked access对于interconnect更加有效率。
什么是exclusive access?
与locked access 不同的是,locked access不允许其他manager访问subordinate,而exclusive允许其他manager访问该subordinate,但是不允许其他manager访问相同的memory range(内存范围)。
因此对于原子访问的主要用途信号量操作而言,这种机制可以一方面保证总线其他manager可以继续访问subordinate,另一方面保证信号量操作可以正确完成,保证了总线延迟和最大带宽。
独占访问的要求
独占访问可以包括多个transaction,但是所有的transaction必须有相同的地址通道信息。
对于subordinate而言,需要内部实现独占访问的monitor去记录独占事务序列的信息确定哪段地址范围是被独占访问的,以及识别正在执行独占访问的manager。要实现独占访问功能,必须要在subordinate中实现exclusive access monitor
exclusive access示意图
当M0发起一次独占访问读操作后,subordinate中的monitor会有如下可能响应。
- EXOKAY:读操作已经执行,独占访问成功,并且事务ID已经记录下,memory range和manager已经记录下。
- OKAY:读操作已经执行,但是subordinate不支持独占访问,独占访问错误。
如果当M0接受到EXOKAY的响应,那么M0可以尝试完成exclusive sequence,即进行一次独占写,这次独占写需要有相同的事务ID以及相同的地址范围。
接下来可能接受到来自subordinate的响应为:
- EXOKAY:没有其他manager对先去读事务的地址范围进行写操作,所以M0的独占写事务成功,在这种情况下,独占写事务更新了memory。
- OKAY:有别的manager,例如M1,在M0发起写事务之前已经对独占地址范围进行了写操作,独占写失败。
monitor实现的额外硬件需求
要实现exclusive access,需要每个transaction ID都记录一个地址,用来标记不同序列的独占访问地址。
独占访问的成功判断
当manager发起两笔独占访问,第一笔独占访问transaction ID是0,第二笔是1,对相同的独占访问地址进行读操作,subordinate都会给出EXOKAY的响应,因为该subordinate支持独占访问操作,并且读操作成功执行。
然后manager发送一笔写事务,transaction ID是0,然后subordinate检查该笔transaction ID是否记录在monitor中,检查后发现该地址被记录在monitor的table中,因此独占访问写操作成功,返回EXOKAY响应,同时由于地址0xA000已经被写入修改了,monitor将所有地址为0xA000的独占记录移除。
然后manager再次发送一笔写事务,transaction ID为1,此时monitor再次检查内部的独占记录发现没有独占记录,因为在上一个exclusive sequence已经清除掉所有地址为0xA000的独占记录了,因此独占写事务失败,返回OKAY,并且内存中的数据不会更新,也就是data 0x4并不会写入到地址中。
这个例子演示了独占访问如何实现非阻塞行为。与LOCK访问相比,正是这种行为提供了更大的系统吞吐量。
标签:locked,独占,access,访问,manager,AXI4,subordinate,AXI From: https://www.cnblogs.com/pu1se/p/16707862.html