前情提要:Cortex-A 系列与 ARM 的三个设计团队
在此前的文章中,我们介绍了 ARM 的三个 CPU 架构设计团队:奥斯汀团队、索菲亚团队和剑桥团队。各团队在设计理念上各有所长,奥斯汀团队专注于高性能,索菲亚团队追求性能和能效的平衡,剑桥团队则主打低功耗小核。
big.LITTLE 架构的诞生:解决性能与功耗的平衡难题
随着智能设备的普及,移动设备的用户需求在不断变化。在ARM公版架构已成为主流的安卓市场,用户希望在进行高性能任务时(如游戏、视频编辑)能够体验到快速的响应速度,但在待机或执行轻量任务(如浏览网页、消息推送)时,则需要尽可能延长电池续航。传统的处理器在这种需求下往往显得力不从心:虽然能提供强劲的计算能力,但也带来了较高的功耗。
为了解决这一问题,ARM 在 2011 年 推出了革命性的 big.LITTLE 架构。这一架构提出了一种全新的思路:通过在同一个系统中结合高性能的大核(big cores)和低功耗的小核(LITTLE cores),能够在不牺牲用户体验的前提下实现性能与能效的平衡。
在 big.LITTLE 架构中,高性能任务由 Cortex-A15 这样的“大核”处理,而日常的轻量任务则交给节能的 Cortex-A7“小核”来完成。这一动态分工的模式使得系统能够根据当前的任务需求智能切换核心,从而在需要高性能时提供足够的计算能力,而在执行简单任务时保持低功耗状态,最大限度地延长设备续航。
这种架构的诞生背景,可以归结为移动设备市场的竞争加剧。智能手机和平板电脑的性能要求不断提升,而消费者对电池续航的需求同样强烈。在这种情况下,ARM 的 big.LITTLE 架构为设备制造商提供了一种能够灵活应对这两种需求的解决方案,使其迅速成为高端移动设备 SoC 设计的主流。
Cortex-A15:奥斯汀团队的高性能代表作
Cortex-A15 是 ARM 当时性能最强大的CPU架构,由奥斯汀团队打造。其设计目标是满足高性能应用的需求,特别是在服务器、网络设备和高端移动设备中。Cortex-A15 是系列文章中第一个介绍的奥斯汀团队作品,代表了他们在高性能处理器设计领域的大胆尝试。
从架构上看,Cortex-A15 采用了 12 级乱序执行流水线。相比于之前的 Cortex-A8 和 Cortex-A9,A15 提供了更复杂的分支预测机制,配置了 64 项的 microBTB(micro Branch Target Buffer) 和 256 项的 BTB(Branch Target Buffer),可以更好地预测执行路径,减少跳转带来的性能损耗。
在数据处理方面,和Cortex-A9相比,A15 支持 128 位的宽指令取指,解码宽度从两宽度升级到了3宽度,支持同时向多个执行单元发射指令,包括 两个 NEON 单元 和 两个整数(INT)单元、两个加载存储单元 和 分支单元,保证了处理器能够高效并行处理多种任务。
在存储方面,Cortex-A15 配备了 64 KB 的 L1 指令和数据缓存 以及一个可选的 1-4MB L2 缓存,并通过 L2 缓存控制单元(BIU) 管理与外部总线的连接。其 加载存储单元 每个周期能够同时加载和存储数据,为数据处理任务提供了出色的性能。
Cortex-A7:剑桥团队的低功耗小核
Cortex-A7 则是 ARM 剑桥团队的作品,专注于提供高能效比的处理能力。Cortex-A7 的设计初衷是A15的补充,在保持合理性能的同时,将功耗降到最低。采用简单的 顺序执行流水线,Cortex-A7 尽量简化指令处理过程,通过 8 级流水线 保持低延迟。
big.LITTLE 架构的深入解析
ARM 推出的 big.LITTLE 架构是为了应对移动设备对性能与功耗的双重需求。这一架构通过将高性能的大核(Cortex-A15)与节能的小核(Cortex-A7)组合在一起,实现了动态调节性能和功耗的目的。
- 大小核簇的设计与 L2 缓存共享: big.LITTLE 架构中,Cortex-A15 和 Cortex-A7 各自形成一个核心簇,并通过 共享 L2 缓存 来减少数据在各个核心间的传输延迟。这一机制依赖 SCU(Snoop Control Unit),与之前介绍的 Cortex-A9 架构类似,确保了缓存数据的一致性。SCU 负责管理每个核心之间的通信和数据同步,防止缓存数据被误读或丢失。
- 内存一致性与 CCI 总线控制器: 由于大小核簇之间和其他设备(如 GPU)可能会访问相同的数据,ARM 引入了 CCI(Cache Coherent Interconnect)总线控制器。CCI 确保各个处理器簇之间的数据一致性,让所有核和外设都能实时访问最新的数据,极大减少了延迟和同步问题。
- 任务动态迁移: big.LITTLE 的核心优势在于任务的动态迁移。系统能够根据任务的负载,将计算任务在高性能的大核和节能的小核之间无缝切换。比如,当用户在运行大型游戏或需要快速处理数据时,任务会切换到 Cortex-A15 上处理;而在日常浏览网页或待机时,则使用 Cortex-A7,确保设备的功耗降到最低。
上图展示了 Cortex-A17 + Cortex-A7 的系统架构。Cortex-A17 是 Cortex-A15 的优化升级版,因此它与 A7 的结合示意图同样适用于解释 big.LITTLE 的设计原理。从图中可以看出大小核簇通过 CCI 总线进行连接,实现了数据和指令的一致性。
big.LITTLE 架构的实际应用和意义
big.LITTLE 架构的推出标志着 ARM 在移动处理器架构上的创新,帮助设备实现了性能与功耗的最佳平衡。它不仅让设备在需要时能够获得强劲的性能,还在日常使用时通过小核保持超低功耗,大大延长了设备续航。凭借这种设计,ARM 成功占据了移动 SoC 市场的主导地位,推动了现代移动计算设备的发展。但在这一架构诞生的2011年,由于操作系统普遍不支持big.LITTLE 架构为代表的多核异构CPU,导致这一设计直到2013年之后才开始逐步的出现在市场上,并且这一过程还有些坎坷,这一问题我们留到后续文章再详细介绍。
总而言之,Cortex-A15 和 Cortex-A7 的结合,通过 big.LITTLE 架构展现了 ARM 对性能与能效平衡的独特理解。奥斯汀团队的高性能设计与剑桥团队的低功耗创新相得益彰,为现代移动设备处理器的设计提供了重要参考。这一架构不仅让用户体验到流畅的性能,还确保了设备在日常任务中实现节能运行,为移动计算的未来打下了坚实的基础。