赞
踩
独占访问
独占访问机制可以提供类似semaphore-type的操作方法,而不需要让总线在操作期间持续专用于特定的master。这意味着类似semaphore-type的操作方法不会影响总线访问延迟或最大可实现带宽。
AxLOCK信号选择独占访问,而RRESP和BRESP信号分别指示独占访问读或写的成功或失败。
slave需要额外的逻辑来支持独占访问。当master尝试对不支持独占访问的slave访问时,AXI协议提供了一种机制用以指示这种情况。本节的其余部分描述了AXI独占访问机制。
独占访问的基本机制是:
master可能不会完成独占操作的写入部分。独占访问监控硬件仅对每个事务ID监控一个地址。如果master有完成独占操作的写入部分,那么该master随后使用相同的事务ID进行的独占读会改变被监控的独占访问地址。
master通过执行独占读操作来启动独占操作。如果事务成功,slave返回EXOKAY响应,表示slave记录了要监控独占访问的地址。
如果master尝试从一个不支持独占访问的slave进行独占读,slave将返回OKAY响应,而不是EXOKAY响应。
注意
在独占读操作之后的某个时间点,master尝试对同一位置执行独占写操作。如果自独占读以来被访问位置的内容未改变,独占写操作将成功。slave返回EXOKAY响应,并更新内存位置。
如果自独占读以来被访问位置的内容已改变,独占写尝试将失败,并且slave返回OKAY响应,而不是EXOKAY响应。独占写尝试不会更新内存位置。
master可能不会完成独占操作的写入部分。如果发生这种情况,slave将继续监控地址的独占访问,直到另一个独占读开始一个新的独占访问序列。
master必须在独占读部分完成之后,才能开始独占访问序列的写入部分。
不支持独占访问的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响应。
以下限制适用于独占访问:
未遵守这些限制将导致不可预测的行为。
独占操作期间要监控的最小字节数由事务的突发长度和突发大小定义。slave可以监控更多的字节,最多128字节,这是独占访问的最大size。然而,这可能导致一个成功的独占访问由于相邻字节被更新而被错误地指示为失败。
响应信号RRESP(读响应)和BRESP(写响应)包括对成功正常访问的OKAY响应,以及对成功独占访问的EXOKAY响应。这意味着,不支持独占访问的slave可以提供OKAY响应来指示独占访问的失败。
注意
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。