Robin Randhawa,首席工程师2013 年 4 月
简介
移动使用方式已经有了巨大变化,当今的消费者越来越多地将智能手机用于绝大部分的互联生活。这包括网页浏览、导航和游戏等高性能任务,也包括低要求的“持续在线,始终联网”后台任务,如语音通话、社交网络和电子邮件服务等。因此,手机已变为许多消费者不可或缺的计算设备。与此同时,平板电脑等新型移动设备正在重新定义计算平台,以满足消费者的需求。这为消费者创造了与内容互动的全新方式,将过去仅在有线设备上可实现的功能带到了移动设备。下一代计算是真正智能的。
所以对于这一切,摩尔定律把我们带向何方?历史预测说每 18 个月晶体管数将翻一倍,直到数量从几千发展到几十亿;然而,如果你真正看一下单个处理器的性能,它基本上停了下来,因为系统中可以消耗的功率已经达到顶峰。
对于未来的任何单处理器而言,散热将给速度的任何大幅提升带来限制。一旦达到设备的高温界线,它就会融化;或者对于手机而言,设备发热程度会开始让用户感到不适。除了散热的物理因素外,能效也非常低。如果你调整处理器的实现以不断提高其速度,需要的功率将成指数级增长,最后一点点提升也会非常昂贵。虽然尺寸翻倍在过去意味着速度也翻倍,现在却仅仅表示速度快几个百分比,所以复杂度并不能带来收益,这也是我们已达到单核系统极限的一个原因。
如果你无法让单个核心速度更快,就必须增加单个核心的数量。这也带来了可以将各个核心与其对应的需求相匹配的优势,即 ARM big.LITTLE™ 处理概念的用武之地。
Big.LITTLE 处理解决了当今的一大难题:在提高消费者“持续在线、始终联网”的移动体验的同时提高性能和延长电池续航时间。它将一个“big”多核处理器和一个“LITTLE”多核处理器组成一对,根据性能要求为正确的任务无缝选择正确的处理器,从而达到这一目的。重要的是,这种动态选择对于处理器上运行的应用程序软件或中间软件是透明的。
当前这一代 big.LITTLE 设计正随设备出货,它将高性能 Cortex™-A15 多处理器群集和高能效型 Cortex-A7 多处理器群集结合在一起。Cortex-A15和Cortex-A7处理器在架构上百分百兼容,并且具有相同的功能(支持 LPAE、虚拟化扩展,以及 NEON™ 和 VFP 等功能单元),允许为一个处理器编写的软件应用程序无需改动就可在另一处理器上运行。
版权所有 © 2013 ARM Limited.保留所有权利。
ARM 标志是 ARM Ltd. 的注册商标。
所有其他商标是其各自所有者的财产,特表谢意
big.LITTLE 系统结构
两个多处理器群集在其群集内部和群集之间都是完全缓存一致的。群集间一致性是通过 ARM 的 CoreLink™ 缓存一致性互联 (CCI-400) 实现的,它也实现了 ARM Mali™-T604 GPU 系统等组件的 I/O 一致性。两个群集中的 CPU 都可通过 CoreLink GIC-400 等共享中断控制器互发信号。
big.LITTLE 系统中的执行模式
既然同一应用程序无需改动就可在 Cortex-A7 或 Cortex-A15 上运行,这就开辟了以适当的方式将应用程序的任务指定到合适处理器的可能性。这其实也是多种执行模型的基础,即:
2. big.LITTLE MP 模型
顾名思义,通过迁移模型可以从一种处理器类型保护软件上下文并恢复到另一处理器类型上。在 CPU 迁移中,一个群集中的每个 CPU 与它在另一群集中对应的 CPU 配对,软件上下文以每个 CPU 为基础适当地在群集之间迁移。如果一个群集中的 CPU 都不在活动状态,则整个群集和关联的 L2 缓存可以关闭。
MP 模型可以让软件堆栈在两个群集中的处理器之间分布。所有 CPU 可以同时运行,提供最高的系统性能。
big.LITTLE 迁移模型
迁移模型是 DVFS(Dynamic Voltage and Frequency Scaling)等能耗-性能管理技术的自然扩展。迁移操作与 DVFS操作点过渡相似。根据负载的变化,操作点根据DVFS曲线相应改变。当前处理器(或群)达到最高操作点时,如果软件需要更多性能,处理器(或群集)迁移操作就会被激发。随后软件会继续在另一处理器(或群集)上根据新迁入的处理器(或群集)上的DVFS操作点执行。当不需要高性能时,可以切换回原来的处理器(或群集)上执行。
一致性显然是实现所需快速迁移的关键因素,因为它允许snoop要切出的处理器的状态,并恢复这些状态到要切入的处理器上,而不是通过主内存传输。此外,由于要要切出的处理器的 L2 缓存是一致的,因此它可在任务迁移之后保持加电状态,通过数据值监听,以减少要切入的处理器的缓存预热时间。但是,由于要切出的处理器的 L2 缓存也无法分配,因此最终需要清除缓存并关闭电源,以减少泄电。下面详述这一过程。
big.LITTLE CPU 迁移模型
在 CPU 迁移中,LITTLE 群集中的各个处理器与 big 群集中的某一处理器配对。CPU 分割成 CPU 对(Cortex-A15 和 Cortex-A7 处理器上的 CPU0,Cortex-A15 和 Cortex-A7 处理器上的 CPU1,等等)。当使用 CPU 迁移时,每个处理器对中同时只能使用一个 CPU。
CPU 迁移模型
系统主动监控各个处理器上的负载。高负载导致执行上下文移到 big 核心上;相应地,当负载为低时,执行移到 LITTLE 核心上。任何时候,一个处理器对中只有一个处理器处于活动状态。当负载从要切出的核心移到要切入的核心时,前者被关闭。这一模型允许在任一时间点big和LITTLE核心的混合处于活动状态。
big.LITTLE MP模型
由于 big.LITTLE 系统通过 CCI-400 保持完全一致性,我们可以使用另一个模型,允许 Cortex-A15 和 Cortex-A7 处理器都保持加电状态,并且同时执行代码。这种模型称为 big.LITTLE MP(实质上就是异构多处理器的范例)。这是 big.LITTLE 系统最为精妙和灵活的模式,这涉及单一执行环境可以同时运行在两个集群上。在这种使用模型中,当有活动线程需要相应级别的处理性能时,Cortex-A15 处理器核心会被加电,并与 Cortex-A7 处理器核心同时执行。否则,仅给 Cortex-A7 处理器加电。由于处理器核心并不是显式匹配的,非对称群结构更容易支持 MP 运行。
使用 big.LITTLE MP 时,操作系统的任务调度程序了解不同处理器的功耗-性能水平,将任务映射到适当的处理器。此时,操作系统在所有群集的所有处理器上运行,它们可能会同时处于运行状态。操作系统尝试将任务映射到最适合运行这些任务的处理器,然后关闭不在使用或使用不足的处理器。
ARM 已经制作了对 Linux 内核的一组修改,称为 ARM big.LITTLE MP HMP 补丁。这些修改针对 ARM big.LITTLE 测试芯片上运行的 Android 进行了评估,获得了出色的功耗-性能水平。
Linux 内核中的多处理器支持假设所有处理器具有相同的性能水平,因此任务可以分配到任何可用的处理器。所以,支持完整的 big.LITTLE MP 需要对 Linux 的调度和电源管理组件进行大量更改。这一工作已在开放社区中正常进行,第一款测试芯片提供了非常可观的结果。
移动应用概貌
让 big.LITTLE 占据优势的一个特征是典型移动工作负载的各种不同性能要求。下图显示目前已在出货的一款 Cortex-A9 移动设备中两个核心在 DVFS 状态,以及闲置和完全关闭状态上所花的时间百分比。图中红色代表最高频率运行点,绿色区域代表最低频率运行点,两者之间的颜色则代表中间的频率。除了 DVFS 状态外,OS 电源管理也可让 CPU 闲置。图中淡蓝色区域代表这一空闲时间。当 CPU 空闲足够长时间后,系统电源控制软件可能会让一个核心完全关闭来节省漏电功耗。这在图中使用最暗的颜色来表示。
图 6:低密度使用案例中的 DVFS 驻留情况
上图清晰显示,应用程序处理器在多个常见工作负载中将很大一部分的时间花在较低频率状态。在 big.LITTLE 系统中,SoC 将有机会把除暗红色以外的所有工作部分放在低功耗 Cortex-A7 CPU 上执行。下图中以相同的方式分析了更加繁重的工作负载,即使在这些情形中,仍大有机会将低于 1GHz 的频率映射到 Cortex-A7 处理器(已知其每时钟提供的性能是 Cortex-A9 处理器的 5~10%)。
图 7:低强度使用案例中的 DVFS情况
性能和功耗分析:big.LITTLE 测试芯片
自 2011 年以来,已经有用户级软件在 big.LITTLE 调度上运行,但仅在包含核心和interconnect的软件模型运行上。为了全面评估 big.LITTLE 系统的性能、节能水平和适当调节方法,有必要构建一个可全速运行用户软件的测试芯片。ARM 测试芯片在 2012 年初夏出厂了,几个星期后测试芯片便在开发板上运行完整的 Linux 和 Android Ice Cream Sandwich。(Jelly Bean 也可以运行,但本文中的结果来自 ICS)。该测试芯片由一个双核 Cortex-A15 群集、一个三核 Cortex-A7 群集,以及 CCI-400 缓存一致性互联器组成。测试芯片不含 GPU,因此影响了一些用户Benchmark,但该平台能够运行 Linux 和 Android 操作系统及Benchmark软件。
图 3 中的性能Benchmark是在 Cortex-A15 和 Cortex-A7 CPU 群集上独立运行的。测试芯片上的 Cortex-A15 的最高频率为 1.2GHz,而 Cortex-A7 的最高频率则为 1 GHz。Benchmark表明 Cortex-A15 和 Cortex-A7 CPU 的性能在预期范围之内,尽管测试芯片上的内存系统比生产 big.LITTLE SoC 上所期望的内存系统性能要低。根据分别运行的核心的结果,我们建立了足够的信心,相信该平台可以准确测量 big.LITTLE 的性能。测试芯片平台上的软件包含基本 Linux 内核和 CPU 迁移软件,还应用了 big.LITTLE MP 补丁,能够测试 CPU 迁移或 big.LITTLE MP 模型。
用于测试 big.LITTLE 性能的主要工作负载是一个网页浏览器Benchmark:在 Android ICS 上运行,循环访问多个网页,同时在后台播放音频。这一使用案例允许比较繁重的工作负载与较低性能要求的后台活动相组合。网页浏览器每隔 2 秒循环访问网页,并在各个页面上执行 500 像素页面滚动操作,以呈现所需性能水平相对较高的系统。在运行此Benchmark来测量性能和功耗时,首先有必要建立一个性能和功耗基准线。该基准线是通过独立运行Cortex-A15 CPU 群集得到的。
需要提醒的是,这一组结果是相对早期的;它们来自 big.LITTLE MP 补丁集的早期版本,它将 Linux 调度程序从完全公平和平衡的调度模型修改为 big.LITTLE 模型。我们预计随着软件的调整,性能和功耗也会改善,同时还会探索其他的可调节元素。值得一提的还有,测试芯片中缺乏 GPU;这会导致其 CPU 负载高于具有 GPU 减负功能的系统,而在 CPU 负载更低的情形中,有可能更加充分地利用 LITTLE 核心,达到更加节能的效果。它也拥有一组初步的电源和频率运行点,且无法单独对各个核心进行加电掉电,所以产品级的big.LITTLE SoC 有望实现更加出色的结果。例如,后台任务的性能的节能水平将超过 70%。
挑选 big.LITTLE 软件模型
常见的问题是“选择哪一软件模型?”目前的选择基本上是在 CPU 迁移和 big.LITTLE MP 之间,它们各有利弊。在 CPU 迁移中,big 和 LITTLE 核心是成对的,因此对称结构将轻松运作。在非对称结构中,也就是 big 与 LITTLE 核心数量不等的结构中,则需要额外的工作。由于 Cortex-A7 CPU 核心的尺寸较小,所以使用 4 个 LITTLE 核心加上 1 或 2 个 big 核心可能会有吸引力。CPU 迁移有利的一面是允许更简单的功率和性能调节,可以重用现有 OS 电源管理代码,这意味着多年的开发与测试能够加强CPU 迁移的实现。由于无需修改内核调度程序,在一定程度上要比实施 big.LITTLE MP 来得简单,所以相关软件目前也更加成熟。总而言之,CPU 迁移是 2013 上半年的产品的绝佳解决方案,对于不希望升级到 big.LITTLE MP 的系统而言,在以后也仍将是可行的解决方案。
big.LITTLE MP 具有多种技术优势,但目前尚不成熟;现在处于高级开发阶段,正如本文中提供的极好的测试结果所示,big.LITTLE MP 可以充分利用系统中的所有核心,非对称结构支持是标准的,无软件改动。它为性能和功耗优势提供更大机会。例如,它可同时利用所有核心来获得更出色的性能,或者在 big 和 LITTLE 上调节 DVFS 设置和调度程序设置来获得更好的节电效果。它允许调度程序细致地选择核心,常常提供更多的调节参数。灵活性的提高也会付出代价,需要进行更多调节,以便从 big.LITTLE MP 平台中获得全面的性能和功耗优势。这与最近几年的移动 SoC 没有多大区别,过去芯片供应商和 OEM 已经调节了设备的 OS 电源管理设置和 DVFS 参数 – big.LITTLE MP 扩展了这一调节过程以纳入新的参数,实现更出色的节电水平,并从高性能的“big”核心中获得更高的响应能力。
big.LITTLE MP 正在快速壮大,但尚未上升为主流。目前可供合作伙伴集成,有望在 2013 年下半年向上游提供。所幸的是,支持 big.LITTLE MP 不需要硬件更改,因此芯片供应商可以开发具有 CPU 迁移的平台,再通过发布的内核更新到已部署的平台升级为 big.LITTLE MP,或者现在构建 big.LITTLE SoC 以便应对 2013 年下半年的 big.LITTLE MP 软件。
虽然big.LITTLE MP还没有用在产品中,其软件已如本文结果所示方式运行,也在芯片供应商开发平台上演示过。big.LITTLE MP 软件在我们的测试系统上“开箱”即可运行,现在的工作主要集中于巩固该软件,并且针对各式各样的使用案例调节系统性能以获得最佳的结果。正在试验的一些可调节元素包括调度程序的负载平衡策略、上下迁移点,以及线程优先级。ARM 正在持续与硅晶片合作伙伴协同在上述每一个领域中进行系统调节。ARM 正在以开放源代码形式每月定期发布 big.LITTLE MP 补丁集,并且准备了针对测试芯片平台、测试结果和文档的最新调节。当前的补丁集可以从 Linaro 获得,网址为:http://git.linaro.org/gitweb?p=arm/big.LITTLE/mp.git;a=summary
CPU 迁移软件现在已向 Linaro 会员提供。
下一代 big.LITTLE 硬件
Cortex-A15 和 Cortex-A7 核心代表第一代 big.LITTLE 硬件。ARM 已宣布推出 2 款新的 CPU 核心,即 Cortex-A57 和 Cortex-A53 处理器,它们也能够支持 big.LITTLE 处理。Cortex-A57 处理器是一款性能优化的 CPU,每时钟周期性能提升 25% 以上,具有更高频率能力,效率也稍稍高于 Cortex-A15 处理器。Cortex-A53 处理器是一款 LITTLE 核心,每时钟周期性能提升 40%,能效则与 Cortex-A7 处理器大致相同。
这两款新处理器在架构完全相同,它们引入了对 ARMv8 架构的支持,带来改进的 NEON 和浮点运算能力、加密加速,以及 64 位支持。除了 AMBA4 ACE 外,两款核心都支持下一代一致互联,并且能够在 AArch32 模式中运行,以与当前 ARMv7 CPU 核心相同的方式运行现有的代码。通过巧妙而有效的方式实施对 64 位和额外通用寄存器的支持,基本上不增加功耗。此外还引入了微架构改进,为每个核心提供更多的每指令时钟周期吞吐量。在对软件应用细小更新以支持 64 位寻址模式后,这些新核心将以和当前 Cortex-A15 与 Cortex-A7 处理器相同的方式支持 big.LITTLE。两款处理器都会在 2013 年提供给领先硅晶片合作伙伴,有望在 2014 年实现硅晶片生产。同时,三星和瑞萨科技已推出并演示了基于 Cortex-A15 和 Cortex-A7 的第一款 big.LITTLE 硅晶片,另外有至少 5 家 ARM 合作伙伴计划在 2013 年实施 big.LITTLE。
结论
本白皮书介绍了 ARM 提供的第一个 big.LITTLE 系统。Cortex-A15 和 Cortex-A7 组合构成了完全一致系统,为处理带来了新的机会,超出在当前高性能移动平台上可能实现的性能。
big.LITTLE 系统为极宽动态范围的功率和性能控制点开启了大门。在由单一处理器类型组成的实施中则不可能实现。这一宽动态范围为当今设备中看到的工作负载提供了完美的执行环境,这样的工作负载通常由高需求和低需求线程混合组成。另外,它还为 Cortex-A7 实施极高能效创造了机会,因为它将是平台的运行引擎。
通过这些实施技术和各种使用模型,big.LITTLE 提供了在下一代移动平台中提升性能和延长电池续航时间的机会。