AMBA总线协议(六)—— 一文看懂 AXI3 协议原子访问2

AMBA总线协议(五)—— 一文看懂 AXI3 协议 原子访问 2

  1. AMBA总线协议(一)—— 一文看懂APB总线协议
  2. AMBA总线协议(二)—— 一文看懂AMBA2 AHB2与AMBA3 AHB-Lite总线协议的区别
  3. AMBA总线协议(三)—— 一文看懂AHB总线所有协议总结(AHB2 & AHB-Lite & AHB5 )
  4. AMBA总线协议(四)—— Multi-Layer AHB System (多层AHB总线架构)
  5. AMBA总线协议(五)—— AXI3 协议接口信号介绍1
  6. AMBA总线协议(六)—— 一文看懂 AXI3 协议原子访问2

AXI协议还规定了怎么开发独占和锁定访问机制

原子访问:
1. 主要类型:

为了使原子访问的开发更加简单,使用ARLOCK[1:0]/AWLOCK[1:0]信号提供独占访问和锁定访问:
在这里插入图片描述

2. 独占访问:
  1. 独占访问:

a) 独占访问机制使得信号量类型操作(semaphore type operations)的开发不需要总线在操作期间保持对某一个特定主机的锁定;
举个简单例子理解信号量:

  • 以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。
    在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用

b) 独占访问的优点是既不会影响关键总线访问的延迟,也不会影响最大可达到的带宽;

c)ARLOCK[1:0]/AWLOCK[1:0]信号选择独占访问,RRESP[1:0]、BRESP[1:0]信号标示独占访问成功或失败;

d)从机必须具有额外的逻辑来支持独占访问,AXI协议提供了一个自动防故障(fail-self)机制来表示当一个主机尝试对一个不支持独占访问的从机进行独占访问;

  1. 独占访问基本过程:

a) 主机执行一个某地址位置的独占传输

b) 一段时间之后,主机通过执行一个到相同地址位置的独占写,来尝试结束独占操作;

c) 主机独占写访问的结果表示为:

  • i) 在读和写访问之间,如果没有其他主机对该位置进行写,则独占访问成功;
  • ii) 在读和写访问之间,如果任何主机对该位置进行了写,则独占访问失败,在这种情况下,地址位置不会被更新;

d) 注意:

  • i) 一个主机可能还没有完成一个独占操作的写操作部分。独占访问对硬件的监视,必须只能监视每个事物ID的一个地址;
  • ii) 因此,如果一个主机没有完成独占操作的写操作部分,则接下来的一个独占写会改变正在被独占地监视的地址;
  1. 主机进行独占访问:

a) 主机通过执行一个独占读来开始一个独占操作,独占操作通常从从机返回一个EXOKAY响应,表示从机记录了要被监视的地址

b) 注意:

  • i) 如果主机尝试从一个不支持独占访问的从机执行一个独占读操作,则从机返回OKAY响应,而不是EXOKAY响应;
  • ii) 主机可将这种情况当做错误条件,表示不支持独占访问,推荐主机在这种情况下,不执行该独占操作的写操作部分;

c) 如果从独占读之后地址位置发生了改变,则独占写操作失败,从机返回OKAY响应,代替EXOKAY响应,独占写操作不会更新memory位置;

d) 一个主机可能没有完成独占访问的写操作部分。如果发生这种情况,则从机继续监视独占的地址,直到另一个独占读操作开始一个新的独占访问;

e) 在独占访问的读操作完成之前,主机不能开始独占访问的写操作部分;

  1. 从机视角的独占访问:

a) 一个不支持独占访问的从机可以忽视ARLOCK[1:0]/AWLOCK[1:0]信号,从机必须为正常访问和独占访问提供一个OKAY响应;

b) 一个支持独占访问的从机必须具有监控电路,对于这种从机,推荐具有一个监控单元,用来监控可访问该从机的每个可独占访问的主机ID。
一个单端口从机可以具有一个从机外部的标准独占访问监控器,但是多端口的从机可能要求内部监控器;

c) 独占访问监控器记录任何独占读操作的地址和ARID值,之后监控器一直监控该位置,直到一个到该位置的写操作发生,或者直到相同的ARID值的另一个独占读操作将监控器复位到一个不同的地址;

d) 当一个具有给定的AWID值的独占写操作发生,则监控器会检查该地止是否正在被独占监控;

  • i) 如果是,则表示独占写操作之前,该位置没有发生写操作,独占写操作会继续执行,来完成独占访问。
  • ii) 从机返回EXOKAY响应到主机;

e) 如果独占写发生时,地址不再被监控,则表示以下一种情况:

  • i) 从独占读之后,位置被更新;
  • ii) 监控器已经被复位到另一个位置

f) 以上两种情况下,独占写操作都不能更新地址位置,并且从机必须返回OKAY响应,代替EXOKAY响应;

  1. 独占访问约束:

a) 独占访问约束

i) 一个给定ID的独占写的大小和长度必须和前一个具有相同ID的独占读的大小和长度相同;

ii) 一个独占访问的地址必须被对齐到事务中总共的字节数;

iii) 独占读和独占写的地址必须一致;

iv) 独占访问中独占操作部分的ARID必须和写操作部分的AWID相同;

v) 独占访问中读和写部分的控制信号必须一致

vi) 一个独占访问突发中要被传输的字节数必须是2的次幂,即1,2,4,8,16,32,64,128;

vii) 一个独占突发中最大可被传输的字节数为128;

viii) ARCACHE[3:0]/AWCACHE[3:0]的值必须保证监控独占访问的从机要能看见事务

  • One. 例如一个正在被从机监视的独占访问不能具有一个表示该事物是可高速缓存的ARCACHE[3:0]/AWCACHE[3:0]值;

b) 不遵循以上约束会导致不可预测的行为:

i) 在一个独占操作期间,被监控的最小字节数由事务的长度和大小定义;

ii) 监控一个更大的字节数是可接受的,最大为128,即一个最大的独占访问;

iii) 但是这可能会混淆:当独占访问成功了,但因为一个邻近的字节被更新,却被标示为失败;

  1. 不支持独占访问的从机

a) 响应信号BRESP[1:0]/RRESP包含一个用于正常访问成功的OKAY信号,以及一个独占访问成功的EXOKAY响应;

b) 即,一个不支持独占访问的从机,可以提供一个OKAY响应来表示独占访问的失败;

c) 注意:

  • i) 一个到不支持独占访问从机的独占写会始终更新memory位置;
  • ii) 一个到支持独占访问从机的独占写,只有该独占写成功后,才更新memory位置;
3. 锁定访问

a) 当一个事务的ARLOCK[1:0]/AWLOCK[1:0]信号表示该事物是一个锁定的传输时,互联必须确保只有发送该事务的主机才能被允许访问从机区域,直到从同一个主机发出的一个非锁定传输完成;互联中的仲裁器可以执行该限制;

b) 当一个主机开始一个锁定的读或写事务序列,主机必须保证没有其他outstanding事务正在等待完成;

c) 任何ARLOCK/AWLOCK表示一个锁定序列事务,会强制互联锁定接下来的事务,因此,一个锁定的序列,其最后一个事务不能是ARLOCK/AWLOCK表示为锁定访问的事务,锁定序列必须始终以这样的最后一个事务来结束序列,这个最后的事务被包含进锁定的序列,作用是解除锁定;

d) 当结束一个锁定序列时,主机必须保证所有之前锁定事务都完成后,才能发送最后一个非锁定的事务;
之后主机必须确保最后一个非锁定事务以及完全完成,之后才能开始其他事务;

e) 主机必须确保在一个锁定序列中,所有的事务都具有相同的ARID和AWID值;

f) 注意:

  • 锁定访问要求互联在锁定序列处理期间要阻止任何其他事务的发生,因此会对互联的性能产生影响;
  • 推荐锁定访问仅用于支持遗留的设备;

g) 以下约束推荐,但不强制

  • 将所有锁定事务序列保持在相同的4KB地址区域内;
  • 将锁定事务序列限制为2个事务;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章