目录
[2.1 AC通道(AC/CD/CR)特点](#2.1 AC通道(AC/CD/CR)特点)
[2.2 CRRESP返回规则](#2.2 CRRESP返回规则)
[3.1 ACE一致性传输设置](#3.1 ACE一致性传输设置)
[3.2 ACE一致性传输分类框图](#3.2 ACE一致性传输分类框图)
前言
ACE基于AXI4协议,用来保证多个ACE Master之间的内存读写一致性需求。典型应用是保证A53和A72两个cluster之间的内存一致性。总体上,ACE协议包含5个部分。
- Coherence Transaction
- Exclusive
- DVM
- Barrier
- Snoop Filter,减少广播,提高性能
对于第一部分,本文计划用两篇来展开。
- 第一篇概述新增通道,一致性传输分类
- 第二篇详细描述ARM一致性模型定义和传输的具体流程
这里顺便提一下AXI4和AXI3协议的最大不同,AXI4不支持LOCK,没有WID,AxLEN由4b扩大到8b。没有WID是因为ARM早期的CPU(ARM v7/v8)本身不会发出AXI3写乱序请求,而且它的NIC450也不支持**写乱序。**写乱序增加了系统的复杂性,无论是Master/Slave IP还是SOC互联总线。
一、ACE接口信号定义
相对于AXI4, ACE接口信号有如下增强:
- AR/AW多了三个信号,AxDomain/AxBar/AxSnoop,ACE Master用来发起barrier和一致性传输
- AC/CD/CR,外部总线用来Snoop ACE Master的cache或者invalidate/clean ACE Master的MMU TLB
- RESP3:2, RRESP3表示IsShare(IS),RRESP2表示PassDirty(PD)
- WACK/RACK,ACE Master通过这2个信号通知外部总线,它已经完成AR或者AW发起的一致性请求,外部总线可以发起AC请求,以避免ACE master内部cache一致性冲突。理论上,如果等WACK/RACK,才能发起新的AC请求,意味着跟AHB一样OT为1,效率会很低,所以这部分应该通过特定逻辑来实现更高效的多OT流水操作
基于ACE,有2个精简版本:
- ACE-LITE,它只支持上面说的第一点。本身没有cache或者不支持cache一致性的Master使用ACE-LITE接口来invalidate/clean其他ACE Master的cache
- ACE-LITE + DVM, 相对于ACE-Lite,多了AC/CR两个通道,没有CD通道,第3点和第4点也不需要。DVM表示外部总线可以通过AC/CR来管理ACE Master内的MMU TLB
二、AC通道特点
2.1 AC通道(AC/CD/CR)特点
- 在Snooped cache HIT情况下,CD上才会传输数据;是否传输,外部总线可以在收到CRRESP0后得知
- CD上传输的数据固定是WRAP Burst,数据量一定是cache line size,传输的LEN也是固定值。以总线宽度128b,64B cache line size为例,Beat数固定为4。所以CDLAST看过去没有必要,可能是留着以后扩展用
- AC/CD/CR的ordering模型,CD/CR必须在AC接收之后才可以返回,CD/CR之间没有顺序要求,从实现简单性角度,CD可以放在CR接收到之后再处理
- 因为没有ID,所以不支持乱序,Snooped Master对于外部AC请求按序执行
- Initiating Master发出的AR/AW一致性请求,经过外部总线后,如果原先是不同ID,比如在AR通道发起两个不同ID的一致性请求,在其他Snooped Master的AC总线上有可能看到反序的AC请求
- ACE Master发出的AR/AW一致性请求,外部总线广播给其它的Snooped Master,如图中的Initiating Master AR/AW广播到Snooped Master0和Snooped Master1
- 假定Snooped Master都命中并且返回DIRTY数据,外部总线可以选取最早返回CRRESP的ACE Master作为返回Initiating Master的数据来源,不需要考虑如何合并所有Snooped Master的数据,因为理论上它们的返回数据必定一样。如果Snooped Master同时返回CRRESP,AMBA没有明确定义,只要按任意固定优先级选取一个即可
- 对于返回Initiating Master的CRRESP1,要考虑合并,规则如下。所以返回Initiating Master的CRRESP可以在收到所有Snooped Master的CRRESP再返回
所有Snooped Master的CRRESP1 或起来作为返回Initiating Master的CRRESP1
- 有数据传输
- 没有数据传输,但是传输类型是CM(CleanShare/CleanInvalid/MakeInvalid,见3.2分类)
2.2 CRRESP返回规则
对于数据是否传输,用DT(CRRESP0)来判断,SPEC规定如下
|-----------------------------------------------|--------------------------------------------|--------------------------------|------------------------------------|
| Snoop Transaction issued by Initiating Master | DT(CRRESP0) response by Snooped Master | Interconnect写回数据到MainMemory的条件 | Interconnect返回数据到Initiating Master |
| MakeInvalid MakeUnique | DT=0; 不推荐DT=1 | 无需写回 | 无需返回 |
| CleanUnique CleanShare CleanInvalid | 假如DIRTY,DT=1 假如Clean,不推荐DT=1 | 假如PD (CRRESP2=1) | 无需返回 |
| ReadOnce | 假如DIRTY,DT=1 假如Clean, 推荐DT=1 | 假如PD (CRRESP2=1) | 必须返回 |
| ReadClean | 假如DIRTY,DT=1 假如Clean, 推荐DT=1 | 假如PD (CRRESP2=1) | 必须返回 |
| ReadNoneShareDirty | 假如DIRTY, DT=1 假如Clean, 推荐DT=1 | 假如PD & IS(CRRESP3) | 必须返回 |
| 其他AR Snoop | 假如DIRTY, DT=1 假如Clean, 推荐DT=1 | 无需写回 | 必须返回 |
对于IS(CRRESP3),SPEC规定如下
|-----------------------------------------------|--------------------------------------------|
| Snoop Transaction issued by Initiating Master | IS(CRRESP3) response by Snooped Master |
| MakeInvalid MakeUnique | IS=0 |
| ReadUnique CleanUnique CleanInvalid | IS=0 |
| 其他AR Snoop | IS=x(可为0,也可为1) |
三、ACE一致性传输分类
3.1 ACE一致性传输设置
MainMemory如果需要在多个cluster或者多个core之间共享,需要在MMU页表属性中指定共享属性。

在"S"设定为1后,ARM CPU才能发出一致性请求,外部总线再根据一致性请求作对应的处理。
3.2 ACE一致性传输分类框图
ACE一致性传输主要在ARM文档的C4/C5部分。
C4是描述Initiating Master 的行为和状态变化,C5是描述Snooped Master的行为和状态变化。
AxBar控制Barrier传输;
AxSnoop/AxDomain控制一致性传输;
AxDomain为2'b00 or 2'b11, AxSnoop为4'h0,为读或写NoSnoop(非一致性)传输;
AxDomain为2'b01 or 2'b10, AxSnoop控制一致性传输,某些一致性传输也可以使用AxDomain为2'b00,下文会提及
AxSnoop总共4比特,理论上16种情况,实际上只用了13种,排除DVM两种,剩下11种编码:
- 4种是Partial line传输(白色斜体字所示),其余的都是Full line
- 只有5种传输的AxDomain可以是Inner/Outer/None-sharable(黄色框),其他的必须是Inner/Outer
- AR传输类型大部分可以直接转到AC通道的同名传输,有2个例外
- AR CleanUnique -> AC CleanInvalid
- AR MakeUnique -> AC MakeInvalid
- AW有同样情况
- AW WriteClean -> AC CleanInvalid
- AW WriteUnique -> AC MakeInvalid
- AR通道12种传输类型,5大类,由上到下如图所示。小框最右边是AxSnoop编码。
- None-Cacheable(虚线框)
- ReadSharable(RS)
- WriteSharable(WS)
- Cache Maintenance(CM)
- DVM Message/DVM Sync
- AW通道5种传输类型,2大类,由上到下:
- None-Cachebale(虚线框)
- MainMemory Update(MU,不会产生AC Snoop)
- AC通道10种传输类型

- ACE-LITE/DVM传输类型如下,最多8种一致性传输类型,包括DVM两种。
为什么ACE-LITE只能支持这5种呢?
ACE-LITE的本意是自身没有cache,意味着它本身cache初始态是I,而支持的这5种刚好允许初始态是I,在发起Snoop传输之后,自身结束态也是I。请参考下篇详细内容。
总结
本文介绍了ACE协议及其在保证多核处理器内存一致性中的应用。ACE基于AXI4协议,新增了5个关键功能:一致性事务、独占访问、DVM扩展、屏障操作和监听过滤器。文章详细解析了ACE接口的信号增强,包括新增的AC/CD/CR信号和精简版本ACE-LITE/DVM的特性。重点阐述了AC通道的工作机制,包括数据传输规则、响应合并策略和监听事务处理流程。最后,文章系统分类了ACE的12种AR传输类型和5种AW传输类型,并说明了它们在共享内存场景下的应用条件。这些机制共同构成了ARM多核架构下的高效一致性解决方案。
参考
- AMBA AXI and ACE Protocal Specification(Version D)
- ARM Architecture Reference Manual(Version B)




