ARM ACE 和 ACE-LITE 的含义
ARM的ACE(AXI Coherency Extensions)和ACE-Lite是ARM的AXI(Advanced eXtensible Interface)总线协议的扩展版本,用于实现多核处理器系统中的缓存一致性。
ARM提供了ACP和ACE-lite接口,这两个接口都有device coherency的功能。
ACP是DSU模块的slave接口,它的接口协议规范是ACE-lite协议的子集。ACP slave接口,允许接了该接口的外部master通过DSU的main memory interface(master接口)访问cachable memory空间。ACP的读和写接口宽度都是128bit,为了提高效率,每次访问以cache line为边界。为了保证cache一致性,每次ACP接口访问,都需要check cluster中的所有cache location,即L3 cache和每个core的L1/L2 cache。
ACE-lite是支持I/O coherency的接口。I/O coherency的意思是指device能snoop到CPU的cache、但CPU不能snoop到device内的cache。通常device会提供ACE-lite master接口,如GPU支持ACE-lite master接口。
ACE,可支持full coherency,device和CPU之间能互相snoop对方的cache。
下图说明了ACE和ACE-lite接口的使用:
通过CCI-400连接了ACE master接口的A15/A7 CPU 和 ACE-Lite master接口的GPU / DMAC / LCD controller等devices,
I/O coherency:Devices可以snoop处理器内部的cache,但处理器不能snoop device内部的cache。ACE-lite接口支持I/O coherency,不支持full coherency。如GPU的devices通常具备ACE-Lite master接口。
Full coherency:devices和processors,互相可以snoop对方的cache。ACE接口支持full coherency。CPU通常具备ACE master接口。
1. ACE(AXI Coherency Extensions)
ACE 是AXI总线的扩展,专门为支持多核处理器系统中的全缓存一致性而设计。它提供了缓存一致性协议,使多个CPU或其他缓存代理能够共享一致的内存视图。ACE支持以下功能:
- 缓存一致性事务:通过无效化和清理等操作,使各个CPU核的缓存内容保持一致。
- 共享数据操作:ACE支持多个主设备共享相同的内存区域,例如写入-写回缓存的内存行。
- 带宽与性能优化:ACE允许通过减少不必要的内存访问和缓存失效次数来提高系统的性能和带宽利用率。
在多核处理器系统中,ACE允许不同核之间的缓存数据一致,从而避免了数据不一致带来的数据错误和性能开销。
2. ACE-Lite
ACE-Lite 是ACE的简化版本,只支持部分缓存一致性功能。它适用于不需要完全缓存一致性的设备或IP核,比如DMA控制器。ACE-Lite主要特点有:
- 只读或只写访问:与ACE不同,ACE-Lite不支持完全缓存一致性事务,只支持读取和写入内存的操作。
- 简化硬件设计:由于ACE-Lite只支持基本的内存访问,没有缓存一致性事务,因此它在硬件实现上比ACE更简单,适合资源受限的IP核使用。
总的来说,ACE适用于需要完整缓存一致性支持的多核系统,而ACE-Lite则适用于不需要完全一致性、性能需求较低的外围设备或IP核。
ACE(AXI Coherency Extensions)和 ACE-Lite 是 ARM 为 AMBA AXI 总线(Advanced eXtensible Interface)定义的两个扩展协议,主要用于支持 多核系统中的缓存一致性(cache coherency)。它们的作用如下:
一、背景:为什么需要 ACE/ACE-Lite
在多核 SoC(System on Chip)中,每个 CPU 核通常有自己的 L1/L2 cache。
如果这些 cache 不一致,就会导致多个 CPU 看到的数据不相同。例如:
- CPU0 把数据写到缓存,但还没写回内存;
- CPU1 从内存读同一个地址,结果读到旧数据。
为了解决这种“缓存一致性问题”,ARM 定义了 ACE 协议 来协调各个缓存之间的数据状态。
二、ACE(AXI Coherency Extensions)
ACE 是 在 AXI4 基础上扩展出来的完整缓存一致性协议,提供完整的 snooping 机制。
1. 核心功能
ACE 允许多个缓存保持一致,支持以下机制:
- Snoop(探测):一个 master(如 CPU)访问数据时,ACE 协议会通知其他 master(其他 CPU)检查是否缓存了这块数据。
- Cache state 管理:定义了缓存行的状态(如 Shared、Unique、Clean、Dirty)。
- 数据共享和更新:通过 snoop 响应决定是否需要从其他缓存中取最新数据,而不是从内存中取。
2. 典型应用场景
多核 CPU 系统(如 ARM Cortex-A 系列),每个核心的 L2 cache 都通过 ACE 接口连接到一个 CCI(Cache Coherent Interconnect) 或 CMN(Coherent Mesh Network),形成系统级一致性。
CPU0 (ACE) ----\
> CCI / CMN <--> Memory
CPU1 (ACE) ----/
三、ACE-Lite(AXI Coherency Extensions Lite)
ACE-Lite 是 ACE 的简化版本,用于 不需要缓存但仍需与系统保持一致性 的设备。
1. 特点
- 没有本地缓存(non-cacheable master),所以不需要 snoop 其他缓存。
- 仍能参与一致性系统(coherent system),即:
当它访问内存时,系统会确保相关缓存行被清理(flush)或更新。
2. 典型应用场景
外设(DMA、GPU、ISP 等)在写内存时,仍需要与 CPU 缓存保持一致。
例如:
- DMA 向内存写入数据后,CPU 再读时应看到最新数据;
- 因此 DMA 使用 ACE-Lite 接口,保证写前先清除 CPU 缓存中的旧数据。
CPU (ACE) ----\
> CCI / CMN <--> Memory
DMA (ACE-Lite) /
四、ACE 与 ACE-Lite 的主要区别对比
| 特性 | ACE | ACE-Lite |
|---|---|---|
| 是否有缓存 | 有(cacheable master) | 无(non-cacheable master) |
| 是否参与 snoop | 是 | 否 |
| 是否发起 snoop 请求 | 是 | 否 |
| 是否响应 snoop 请求 | 是 | 否 |
| 是否参与缓存一致性系统 | 是 | 是(被动参与) |
| 典型设备 | CPU、带缓存的加速器 | DMA、GPU、外设等 |
五、总结一句话
- ACE:用于带缓存的主设备(如 CPU),支持完全的缓存一致性(包括 snooping)。
- ACE-Lite:用于不带缓存的主设备(如 DMA、外设),能与 ACE 系统保持一致性,但不参与 snooping。


浙公网安备 33010602011771号