ARMv8-A编程指导之多核处理器(4)

        前面章节描述的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域的所有指令。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值