当前位置:   article > 正文

AXI4---独占访问_axi 独占访问

axi 独占访问

独占访问

独占访问机制可以提供类似semaphore-type的操作方法,而不需要让总线在操作期间持续专用于特定的master。这意味着类似semaphore-type的操作方法不会影响总线访问延迟或最大可实现带宽。

AxLOCK信号选择独占访问,而RRESP和BRESP信号分别指示独占访问读或写的成功或失败。

slave需要额外的逻辑来支持独占访问。当master尝试对不支持独占访问的slave访问时,AXI协议提供了一种机制用以指示这种情况。本节的其余部分描述了AXI独占访问机制。

1. 独占访问过程

独占访问的基本机制是:

  1. master对一个地址执行独占读。
  2. 在某个后续时间点,master试图通过对同一个地址执行独占写来完成独占操作,并且使用与独占读时使用的ARID相匹配的AWID。
  3. 这个独占写访问被标记为:
  • 如果自从独占读访问以来没有其他master写入该位置,则为成功。在这种情况下,独占写更新内存。
  • 如果自从独占读访问以来有另一个master写入了该位置,则为失败。在这种情况下,内存位置不会被更新。

master可能不会完成独占操作的写入部分。独占访问监控硬件仅对每个事务ID监控一个地址。如果master有完成独占操作的写入部分,那么该master随后使用相同的事务ID进行的独占读会改变被监控的独占访问地址。

2. 从master的角度来看独占访问

master通过执行独占读操作来启动独占操作。如果事务成功,slave返回EXOKAY响应,表示slave记录了要监控独占访问的地址。

如果master尝试从一个不支持独占访问的slave进行独占读,slave将返回OKAY响应,而不是EXOKAY响应。

注意

  • master可以将OKAY响应视为错误情况,表明不支持独占访问。本规范建议master不要执行此独占操作的写入部分。

在独占读操作之后的某个时间点,master尝试对同一位置执行独占写操作。如果自独占读以来被访问位置的内容未改变,独占写操作将成功。slave返回EXOKAY响应,并更新内存位置。

如果自独占读以来被访问位置的内容已改变,独占写尝试将失败,并且slave返回OKAY响应,而不是EXOKAY响应。独占写尝试不会更新内存位置。

master可能不会完成独占操作的写入部分。如果发生这种情况,slave将继续监控地址的独占访问,直到另一个独占读开始一个新的独占访问序列。

master必须在独占读部分完成之后,才能开始独占访问序列的写入部分。

3. 从slave的角度来看独占访问

不支持独占访问的slave可以忽略AxLOCK信号。它必须为正常和独占访问都提供OKAY响应。

支持独占访问的slave必须拥有监控硬件。本规范建议这样的slave对于能够访问它的每个支持独占的master ID都有一个监控单元。ARM架构参考手册,ARMv7-A和ARMv7-R版,定义了一个独占访问监控器,单端口slave可以拥有这样的独占访问监控器,位于slave外部。多端口slave可能需要内部监控。

独占访问监控器记录任何独占读操作的地址和ARID值,然后监控该位置,直到该位置发生写入,或者直到另一个具有相同ARID值的独占读将监控器重置为不同的地址。

当slave接收到一个特定AWID值的独占写入时,监控器检查是否该地址正在使用该AWID进行独占访问监控。如果是,这表明自从独占读访问以来,该位置没有发生写入,独占写入可以继续进行,完成独占访问。slave向master返回EXOKAY响应,并更新被访问的内存位置。

如果在一个独占写入时,地址不再使用相同的AWID值进行监控,这表明以下之一:

  • 自从独占读访问以来,该位置已经被更新。
  • 监控器已经被重置到另一个位置。

在这两种情况下,独占写入不得更新被访问的位置,slave必须返回OKAY响应,而不是EXOKAY响应。

4. 独占访问限制

以下限制适用于独占访问:

  • 给定ID的独占写入操作的突发大小和突发长度必须与相同ID的先前独占读操作的突发大小和突发长度相同。
  • 独占访问的地址必须与事务的总字节数对齐,即突发大小和突发长度的乘积。
  • 独占读和独占写的地址必须相同。
  • 独占读的ARID值必须与独占写的AWID值匹配。
  • 独占读和独占写事务的控制信号必须相同。
  • 独占访问突发中要传输的字节数必须是2的幂,即1、2、4、8、16、32、64或128字节。
  • 独占突发中可以传输的最大字节数是128字节。
  • 在AXI4中,独占访问的突发长度不得超过16次传输。
  • AxCACHE信号的值必须保证监控独占访问的slave能够看到该事务。例如,独占访问不能具有表明该事务是可缓存的AxCACHE值。

未遵守这些限制将导致不可预测的行为。

独占操作期间要监控的最小字节数由事务的突发长度和突发大小定义。slave可以监控更多的字节,最多128字节,这是独占访问的最大size。然而,这可能导致一个成功的独占访问由于相邻字节被更新而被错误地指示为失败。

5. 不支持独占访问的slave

响应信号RRESP(读响应)和BRESP(写响应)包括对成功正常访问的OKAY响应,以及对成功独占访问的EXOKAY响应。这意味着,不支持独占访问的slave可以提供OKAY响应来指示独占访问的失败。

注意

  • 对不支持独占访问的slave进行的独占写操作总是会更新内存位置。
  • 对支持独占访问的slave进行的独占写操作仅在独占写成功时才会更新内存位置。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/922604
推荐阅读
相关标签
  

闽ICP备14008679号