据我所知,big.LITTLE 系统上的大核心和小核心位于不同的集群中。集群之间的缓存一致性需要将区域标记为外部共享,并且非常昂贵。我检查了Linux内核代码,似乎它只需要内部共享域的一致性。所以我的问题是 Linux 如何保证两个集群同时处于活动状态的“CPU 迁移”或“全局任务调度”模型中的缓存一致性?
我已经从arm社区得到了答案。这是亲爱的马克·拉特兰 (Mark Rutland) 的回答。
https://lkml.org/lkml/2020/3/23/598
多个集群可以在同一个Inner Shareable域中,Linux 依赖于它支持的系统的情况。这是可能的 构建一个集群处于不同内部共享的系统 域,但 Linux 不支持在此类系统上使用所有内核。
即使有 CCI、CCN、CMN 等,Linux 也要求所有内核(它 被告知)位于同一个内部共享域中。那是什么 一般建造。