• 正文
  • 相关推荐
申请入驻 产业图谱

ACE总线的axcache和axdomain属性详解

05/21 16:56
254
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1. AXCACHE属性介绍

AWCACHE和ARCACHE信号统称为AXCACHE,用来表示请求的内存属性,可以控制请求在SoC系统里的传输、控制cache和buffer对请求的处理等。

AWCACHE[3:0]信号的编码如下:allocate、other allocate、modifiable、bufferable。

ARCACHE[3:0]信号的编码如下:other allocate、allocate、modifiable、bufferable。

1. AXCACHE[0],Bufferable属性:

该bit表示请求可以被暂时缓冲在某个中间组件(如SoC系统中的Home Node节点)中。

该bit主要用于写事务:

当bufferable bit为0时,写响应表示数据达到最终目的地(例如DDR)。

当bufferable bit为1时,写响应可以从中间节点(例如Home Node)就返回,只要满足observe就可以。这样可以极大提高写性能。

2. AXCACHE[1],Modifiable属性:

AXI4/ACE的AXCACHE[1]和AXI3的AXCACHE[1]的名字不一样。前者叫Modifiable,后者叫Cacheable,但是两者对应的功能是一样的。

当modifiable bit等于0时,表示该事务是不可修改的(non-modifiable)。axaddr、axsize、axlen、axburst、axprot、axnse参数一般不允许改变。

当modifiable bit等于1时,表示该事务的某些特性可以改变,具体如下:

1. 一个事务可以被拆分为多个事务;

2. 多个事务可以被合并为一个事务;

3. 读事务可以获取比需求更多的数据;

4. 写事务可以访问比需求地址范围更大的区域,可以使用WSTRB信号防止更新不相关的数据。

5. axaddr、axsize、axlen、axburst、axcache属性可以改变。

3. AXCACHE[3:2],allocate和other allocate属性:

Allocate bit为1表示先前的数据可能已经缓存到cache里,需要在cache中查找对应cacheline。推荐将数据分配到cache里,以供将来使用。

Other Allocate bit为1表示先前的数据可能已经缓存到cache里,需要在cache中查找对应cacheline。不推荐将数据分配到cache里,因为不期望再次访问该数据。

如果Allocate和Other Allocate都为0,不需要在cache中查找对应cacheline。

Memory type:AWCACHE和ARCACHE对应的内存类型如下:

2. AXDOMAIN属性介绍

在包含cache的系统中,必须采取措施来保证cache一致性。在AMBA协议中,有以下三种方法来维护cache coherency:

使用Non-cacheable事务。

使用CMO操作的软件coherency。

使用snoop和自动维护cache的机制的硬件coherency。

为了表示数据的shareable属性,ACE协议定义了三种domain:System、Shareable和Non-shareable。

1. System domain

System domain里的地址必须对所有能访问它们的manager可见。这是通过以下机制来保证的:确保System domain的请求是non-cacheable的,因此不会存到local cache里。使用System domain会使coherence变简单,但一般不会有很高的性能。

访问device类型的内存需要使用System domain。

2. Non-shareable domain

Non-shareable domain里的地址不需要对其它manager可见。访问Non-shareable domain的地址不需要触发硬件coherence机制。

如果Non-shareable数据在Manager之间共享的话,那么必须在数据被读之前,发送cache维护操作(CMO)来clean和invalidate来自任何local cache的数据。

使用CMO操作来进行数据共享也叫作软件coherency,并且是一种有效的方法(如果共享行为是已知的)。例如,有可预测的数据会先被一个master写,再被另一个master读。这种方法的主要缺点是依赖软件的正确性,软件容易产生coherency bug且不易定位。

为了避免coherency丢失的问题,缓存Non-shareable的cacheline时有以下规则:

不允许对clean的Non-shareable数据进行evict和write-back。这样可以避免clean数据将下游cache中有其他manager写入的dirty数据给覆盖掉。

在从一个cache到另一个cache读Non-shareable数据时,不允许传递dirty数据。cacheline必须以clean状态传递,并且cacheline的writeback由下游cache负责。这样可以避免接下来对该cacheline的write-back覆盖后续其他manager的更新。

3. Shareable domain

Shareable domain里的地址必须对将这些地址标记为Shareable的master可见。shareable属性的地址必须snoop local cache并且在cache里查找可能来自其他manager的Shareable数据。

AXI组件需要支持Shareable Domain有两个原因:使能IO coherency和支持Shareable cacheline在上下游cache之间的移动。

Shareable domain的请求可以使用INCR和 WRAP的burst类型,不能使用FIXED。

axdomain信号的定义如下,在AMBA5协议中,不再区分inner shareable和outer shareable,统一为shareable。

Domain consistency:一个地址可以被一个master标记为shareable且被另一个master标记为Non-shareable。为了避免coherency丢失,作为Non-shareable来缓存的数据必须先进行CMO操作来保证可见,然后才能被将其标记为Shareable的master访问。

axcache和axdomain的合法组合如下表,device属性必须使用system domain,normal non-cacheable属性三种domain都可以使用,cacheable属性可以使用shareable和non-shareable domain。

参考:

AMBA AXI/ACE Protocol Specification

https://zhuanlan.zhihu.com/p/26258598959?share_code=13AenGsF9Lx9j&utm_psn=2036774311961342844

相关推荐