1. ACE协议与缓存一致性背景
在讨论ACE协议新增的AC/CR/CD通道之前,我们需要先理解现代多核处理器系统中缓存一致性的重要性。随着处理器核心数量的增加,每个核心通常都有自己的私有缓存(L1/L2),这就带来了一个关键问题:当多个核心访问同一内存地址时,如何保证所有核心看到的数据是一致的?
传统的AXI(Advanced eXtensible Interface)总线协议设计初衷是解决主设备(Master)和从设备(Slave)之间的高效数据传输问题。它提供了AW/W/B/AR/R五个独立通道来实现读写操作的流水化和并行化。然而,AXI的设计假设是"一个主设备访问一个从设备"的点对点模型,这在单核系统中工作得很好,但在多核场景下就显得力不从心了。
举个生活中的例子:AXI就像是一个单向的电话系统,只能由主叫方拨打给被叫方。而多核系统需要的是多方会议电话,任何一方都可以主动发言,也能听到其他人的发言。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. AXI的局限性分析
2.1 AXI通道的功能限制
AXI协议的五种通道各有明确分工:
- AW(Address Write):写地址通道
- W(Write Data):写数据通道
- B(Write Response):写响应通道
- AR(Address Read):读地址通道
- R(Read Data):读数据通道
这些通道都是单向的,且方向固定为主设备到从设备(除了B和R通道是从设备到主设备)。这种设计在多主设备系统中会遇到几个关键问题:
- 无法发起监听请求:当一个主设备修改了共享数据时,系统无法主动通知其他主设备
- 无法收集监听响应:其他主设备无法告知系统它们当前的缓存状态
- 无法回传监听数据:持有最新数据的主设备无法将数据直接传给需要的主设备
2.2 一致性协议的需求
常见的缓存一致性协议如MESI、MOESI都需要四种基本操作:
- Read:读取缓存行
- Read Exclusive:以独占方式读取缓存行
- Clean:清理缓存行
- Invalidate:使缓存行失效
AXI协议无法直接支持这些操作,特别是当这些操作需要由互联(Interconnect)发起,而不是由主设备发起时。
