首页 > 其他分享 >[AXI 专题] AXI4 原子操作 锁定访问与独占访问

[AXI 专题] AXI4 原子操作 锁定访问与独占访问

时间:2022-09-19 15:48:13浏览次数:64  
标签:locked 独占 access 访问 manager AXI4 subordinate AXI

[AXI 专题] AXI4 原子操作 锁定访问与独占访问

什么是atomic access?
当管理器想要对特定内存区域执行一系列访问时,他们使用原子访问,同时确保该区域中的原始数据不会被其他管理器的写入破坏。此序列通常是读取、修改和写入序列。

通常在多核CPU处理中需要进行原子操作,比如说core0,core1对同一数据同时加1,如果没有原子操作,那么最后结果只加1,有原子指令就可以实现一个CPU独占执行时间,这就保证了同一时刻只有一个core能够访问该数据空间,如图。

img

什么是semaphore-type operations?

信号量操作是建立在原子操作的基础上的,信号量操作用于进程的同步,主要包括两种操作,P操作和V操作,分别对信号量S进行操作,P操作就是wait(S),V操作就是signal(S)。在PV操作的执行中,信号量S的修改应不可分割地执行,也就是原子操作,即当一个进程修改信号量S的时候,其他进程不能修改该信号量的值。

signal encoding

  • b00 Normal access
  • b01 Excludsive access
  • b10 Locked access
  • b11 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示意图

image-20220918233115023

如图,当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示意图

image-20220919134948748

当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都记录一个地址,用来标记不同序列的独占访问地址。

独占访问的成功判断

image-20220919142023843

image-20220919142040029

当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

相关文章

  • 解决nginx启动后进程存在但访问不到的问题
    文章不易,请关注公众号毛毛虫的小小蜡笔,多多支持,谢谢。有任何问题都可以留言咨询。问题今天访问服务器的页面,发现访问不到。分析过程端口不通想起之前是操作过ngin......
  • 使用cpolar远程访问群晖NAS
    在现代企业中,协同办公和数据共享的作用已经受到广泛认可,而群晖作为小型数据处理中心,也已经进入很多公司,并成为局域网内的数据存储和处理中心。但如果需要在公共互联网访问......
  • 基于ts重构axios
    ustbhuangyi老师的基于TypeScript从零重构axios学习记录。知识点TypeScript常用语法:基础类型、函数、变量声明、接口、类、泛型、类型推新、高级类型......
  • Smallest Subarrays With Maximum Bitwise OR
    SmallestSubarraysWithMaximumBitwiseORYouaregivena0-indexedarray nums oflength$n$,consistingofnon-negativeintegers.Foreachindex$i$from$......
  • [AXI4 专题] response signaling AXI4中的响应信号与对应控制
    [AXI4专题]responsesignalingAXI4中的响应信号与对应控制AXI4响应信号类型RRESPandBRESPsignalis2bitlength,whichisindicatingofb00:OKAYresponse......
  • Axiomatic Attribution for Deep Networks
    摘要这篇文章主要研究的是如何将模型的预测归因到模型的输入上这个问题。作者提出了两条归因方法应该满足的基本定理,敏感性(Sensitivity)和实现不变性(ImplementationInvar......
  • matplotlib 清除axis plt.cla()、plt.clf()、plt.close()
     plt.cla()#清除axes,即当前figure中的活动的axes,但其他axes保持不变。plt.clf()#清除当前figure的所有axes,但是不关闭这个window,所以能继续复用于其他的plot。......
  • 【设计模式篇】访问者模式(Visitor)
    访问者模式定义(GoF):表示一个作用于某对象结构中的各种操作,它使你在不改变各个元素类的前提下定义作用于这些元素的新操作。先通过结构图,来了解访问者模式应用场景我们......
  • 在未安装IE的机器上访问IE专属网站
    问题背景在报名教师资格证考试的时候,系统提示只支持通过InternetExplorer(以下简称IE)来报名,就离谱。不得不感慨到了2022年,依然有部分网站(主要是内部网站)只兼容IE。然而Win......
  • wordpress固定链接+宝塔nginx配置伪静态访问
    一、站点设置 打开站点设置,选择伪静态,选择wordpress   二、wordpress设置打开wordpress后台,选择设置---》固定链接 选择一个你喜欢的格式点击保存 之......