前面章节描述的cache仅考虑在单个处理器的cache效果。Cortex-A53和Cortex-A57处理器支持一个cluster的不同core之间的一致性管理。这要求地址区域被标记为正确的shareable属性。这些处理器允许系统包含多核cluster,这里一致性可以在cluster间数据共享时被维护。这种系统级一致性要求cache一致性内部互连,如ARM CCI-400,它实现了AMBA 4 ACE总线。
系统中一致性的支持依赖于硬件设计和很多可能存在的配置。比如,一致性可以仅在一个cluster中支持。一个双cluster big.LITTLE系统可能在inner domain,它包含cluster的core。或多cluster系统,这里inner domain包含cluster和outer domain包含其它cluster。要了解更多big.LITTLE系统的信息,看big.LITTLE技术章节。
除了硬件来维护cache之间的数据一致性,你必须能够由运行在一个core上的代码发出的cache维护广播到系统的其他部分。硬件配置信号控制是否inner或outer cache维护操作被广播以及是否系统barrier指令被广播。AMBA 4 ACE协议允许发出barrier到其他master,因此维护和一致性操作的顺序被维护。内部互联逻辑要求由boot代码初始化。
软件必须定义哪个地址区域被master的哪个group使用,即哪个其他master共享该地址,通过创建合适的转换表项。对于normal cacheable区域,这意味着设置shareable属性为non-shareable,inner-shareable, 或outer-shareable。对于non-cacheable区域,shareable区域被忽略。
在多核系统,不可能知道一个特定的core是否有线能够覆盖cache中的某些地址(特别是内部互连特征cache,比如CCN-50X)。
维护可能需要广播到内部互连。这意味着在一个core上的软件可以对一个地址发出一个cache clean或无效化操作,该地址通常可能被保存在不同core的数据cache中。当维护操作被广播时,操作在某个shareability域被所有core发出。
SMP操作系统通常依赖发送广播cache和TLB维护操作。考虑外部DMA引擎能够修改外部内存内容的情况。
运行在某个core的SMP操作系统不知道哪个core有数据。它要求需要cluster中无效化的地址范围。如果操作没有广播,操作系统必须在每个core发出清除或无效化操作。一个DSB barrier指令让core等待它发出的广播操作完成。barrier不能强制广播的操作完成。
下表列出了前面章节描述的cache维护操作以及他们是否可以被广播。
指令 | 描述 | 是否广播 |
IC IALLUIS | I cache无效化所有到PoU, inner shareable | YES |
IC IALLU | I cache无效化所有到PoU | NO |
IC IVAU, Xt | 通过地址进行I cache到PoU | 可能 |
DC ZVA, Xt | 通过地址进行D cache清零 | NO |
DC IVAC, Xt | 通过地址进行D cache到PoC | YES |
DC ISW, Xt | 通过路/组进行D cache无效化 | NO |
DC CVAC, Xt | 通过地址进行D cache清除到PoC | 可能 |
DC CSW, Xt | 通过路/组进行D cache清除 | NO |
DC CVAU, Xt | 通过地址进行D cache清除到PoU | 可能 |
DC CIVAC, Xt | 通过地址进行D cache清除和无效化到PoC | YES |
DC CISW, Xt | 通过路/组进行D cache清除和无效化 | NO |
对于IC指令,即指令cache维护操作,IS表明功能应用到inner shareable域的所有指令。