白皮书
big.LITTLE 技术进步实现节电和节能
提升高性能移动平台的能效
ARM 公司 Brian Jeff,2012 年 9 月
ARM® big.LITTLE™ 处理是一种将高性能 CPU 和节能型 CPU 组合在一起,并且可以保证缓存一致性的节能方式,根据性能需求将软件执行动态转移到适当的 CPU 上。big.LITTLE 处理技术于 2011 年首次引入,ARM 现已测试了运用 big.LITTLE 技术的芯片。本白皮书将阐述 big.LITTLE 系统测得的节电和性能水平,以及提供最佳结果的系统设置和调节方法。此外也将讨论在 big.LITTLE SoC 上充分利用节能机会的各种可用软件选项,以及支持 big.LITTLE 技术的 SoC 的系统硬件选项。
目录
目录................................................................................................................................................... 1
简介................................................................................................................................................... 2
big.LITTLE 硬件.............................................................................................................................. 2
big.LITTLE 迁移.............................................................................................................................. 4
big.LITTLE MP................................................................................................................................ 6
移动应用概貌................................................................................................................................... 7
性能和功耗分析:big.LITTLE 测试芯片...................................................................................... 8
挑选 big.LITTLE 软件模型............................................................................................................. 9
下一代 big.LITTLE 硬件............................................................................................................... 10
结论................................................................................................................................................. 11
关于作者......................................................................................................................................... 11
版权所有 © 2012 ARM Limited.保留所有权利。
ARM 标志是 ARM Ltd. 的注册商标。
所有其他商标是其各自所有者的财产,特表谢意
简介
用户对当前智能手机和平板电脑的性能需求正在快速提高,已大大快于电池容量或者半导体工艺节电水平的进步。同时,用户需要在大体相当的外观尺寸中获得更长的电池续航时间。这一系列相互冲突的需求,要求移动 SoC 设计创新超越工艺技术和传统电源管理技术所能实现的水平。
智能手机和平板电脑的使用模式千变万化。一部分时间内执行游戏和网页浏览等高处理密度任务,通常更长时间则执行短信、电子邮件和音频等低处理密度任务。big.LITTLE 处理技术通过在一个 SoC 中融合两个不同的处理器来利用所需性能的这种变动。big 处理器设计用于在移动功率预算内实现最高性能。LITTLE 处理器则旨在实现最高的效率和足够高的性能,可以应付最高强度以外的所有工作时段。
在首款 big.LITTLE SoC 中,“big”处理器是 ARM® Cortex™-A15,“LITTLE”处理器则是 Cortex-A7。两者共同打造了一个系统,能够以能效最高的方式完成高强度和低强度任务。该系统通过 CCI-400 缓存一致性互联来连接 Cortex-A15 和 Cortex-A7 处理器,具备足够的灵活性,能够支持各种 big.LITTLE 使用模型,这些使用模型可以根据任务处理要求量身定制。
自 2011 年推出该技术以来,ARM 与合作伙伴通力协作,优化和调节 big.LITTLE 软件,构建了一款能够在运行典型移动工作负载的同时测量 big.LITTLE 性能与功耗的测试芯片。
big.LITTLE 硬件
big.LITTLE 的中心原则是 big 和 LITTLE 处理器在架构上应该是相同的。Cortex-A15 和 Cortex-A7 处理器都实施完整的 ARMv7A 架构,包括虚拟化和大物理地址扩展。因此,所有指令都在 Cortex-A15 和 Cortex-A7 处理器上通过架构一致的方式执行,但两种处理器的性能不同。
Cortex-A15 和 Cortex-A7 处理器的实现定义功能集也是相似的。两种处理器可以配置为具有一至四个核心,而且都在处理集群内部集成二级缓存。此外,每种处理器都实施了单个 AMBA® 4 一致性接口,可以连接至一致性互联(例如 CCI-400)。
两个处理器的微架构大不相同。Cortex-A7(图 1)是一款顺序执行非对称双发射处理器,流水线长度在 8 至 10 级之间,Cortex-A15(图 2)是一款乱序执行持续三发射处理器,流水线长度在 15 至 24 级之间。
图 1:Cortex-A7 流水线
图 2:Cortex-A15 流水线
由于指令执行所消耗的能量与它需要通过的流水线级数有一定关系,因此 Cortex-A15 和 Cortex-A7 之间的明显能耗差异来自不同流水线复杂度。一系列基准测试表明,Cortex-A15 的每单位 MHz 性能大约是 Cortex-A7 的两倍,而在完成相同的工作负载时 Cortex-A7 的能效大约是 Cortex-A15 的三倍。下图比较了 Cortex-A15、Cortex-A7 和 Cortex-A9 CPU 核心在测量频率和预期生产频率上的性能。
图 3:– 性能基准测试
考虑以处理器为中心的整个系统,创建理想的 big.LITTLE 解决方案。. 典型的 big.LITTLE 处理器子系统如下图所示,其基于 CCI-400 互联和全局中断控制器。
图 4:采用 Cortex-A15、CCI 和 Cortex-A7 的 big.LITTLE 子系统
big.LITTLE 处理的最初构想是利用两大使用模型:big.LITTLE 迁移和 big.LITTLE MP。这两种软件模型的主要区别在于它们在工作负载运行时执行期间分配工作到 big 或 LITTLE 核心的方式。上述系统硬件可支持其中任一种主要软件类别。
big.LITTLE 迁移
在 big.LITTLE 迁移软件模型中,基本理念是 OS 内核调度程序不清楚 big 和 LITTLE 核,内核空间中驻留的 DVFS 电源管理软件控制大小核之间软件上下文的迁移。这种软件模型是动态电压和频率调节 (DVFS) 的自然延伸,由当前移动平台提供运行点,允许操作系统将平台性能与应用所需性能相匹配。在当今的智能手机 SoC 中,cpu_freq 等 DVFS 驱动程序以固定而频繁的间隔对 OS 性能进行采样,DVFS 管理程序决定是要转移到更高或更低的运行点,还是保持在当前的运行点上。
这些运行点影响单个 CPU集群的电压和频率;但是,big.LITTLE 系统中存在两个不同电压和频率域的 CPU 集群。这允许 big 集群充当 LITTLE 处理器集群提供的 3~5 DVFS 运行点的逻辑扩展。在迁移模式控制下的 big.LITTLE 系统中,当 Cortex-A7 执行时 DVFS 驱动程序可以将 CPU 集群的性能调节到更高的水平。当 Cortex-A7 达到最高运行点后,如果需要更高性能,则可以调用迁移,将操作系统和应用转移到 Cortex-A15 上运行。这种方式允许低强度应用和中强度应用在 Cortex-A7 上执行,其能效优于在 Cortex-A15 上可以达到的能效,而当今一些应用程序上常见的高强度应用则可在 Cortex-A15 上执行。
实际上有两种迁移类型:CPU 迁移和集群迁移。big.LITTLE 的最初探索用的是集群迁移。使用这种方式时,整个上下文从所有运行中的 Cortex-A7 CPU 迁移到相同数量的 Cortex-A15 CPU,反之亦然。然而,经常会出现这样的情形:单个 CPU 上的负载很高,而集群中其他 CPU 上的负载又比较低。这种情形下,将整个多核上下文迁移到 big 集群的效率不高。幸运的是,现有的 DVFS 机制通常会对多核系统中每一核的负载进行采样。这为以更细的粒度(即系统中的各个 CPU)执行迁移提供了机会。这一运作模式称为 CPU 迁移;在这种模式中,每个“LITTLE”CPU 与一个“big”CPU 逻辑结对。OS 调度程序将每一对视作一个逻辑 CPU,而 big.LITTLE 软件则可在 big 和 LITTLE CPU 之间迁移执行上下文,以便和当前的性能需求相匹配。下图显示了在 CPU 迁移下可发生的 CPU 上下文迁移示例,其中一个 Cortex-A7 CPU 的任务迁移到单个 Cortex-A15 CPU 上,在第一个 Cortex-A7 CPU 上运行的任务则保留在该集群中,以便与各个任务组的性能需求有更好的匹配。
图 5:CPU 迁移调度示例
big.LITTLE 系统的一个重要考虑因素是它在 Cortex-A15 集群和 Cortex-A7 集群之间迁移执行上下文所需的时间。如果花费时间过长,操作系统会对此有所觉察,系统功耗在一段时间内会抵消迁移的优势。因此,Cortex-A15-Cortex-A7 系统设计应该能够在大约 30~50,000 个周期内迁移,当处理器在 1GHz 频率下运行时,可在 30~50 微秒内迁移。
迁移之所以能够如此快速,原因之一是涉及的处理器状态数量相对较少。将要关闭的处理器称为“出站处理器”,它必须将所有整数和高级 SIMD 寄存器文件内容与整个 CP15 配置状态一同保存。将要恢复执行的处理器称为“入站处理器”,它必须恢复从出站处理器保存的完整状态。此外,由 GIC-400 控制的所有活动中断也必须迁移。它们需要 2,000 个左右的指令来实现保存和恢复,由于两个处理器在架构上是相同的,因此在入站处理器和出站处理器的状态寄存器之间存在一对一映射。一致性显然是实现快速迁移的关键因素,因为它允许在入站处理器上监听和恢复在出站处理器上保存的状态,而不是通过主内存传输。此外,由于出站处理器的二级缓存是一致的,因此它可在迁移之后保持加电状态,通过数据值监听,改进入站处理器的缓存预热时间。但是,出站处理器是可以关闭的。如果由于迁移或者闲置或热插拔等其他原因,集群中的所有处理器都关闭,则清理并关闭二级缓存就可节省漏电功耗。何时关闭出站 L2 缓存是因 SoC 而异的;可通过 CCI-400 互联中的缓存命中计数器帮助决定,但这是 big.LITTLE SoC 中“可调节”设置的一个示例。
应该注意,在迁移过程中,线程会正常执行。唯一的中断期是在 CPU 迁移过程中,中断被禁用,状态从出站处理器传输到入站处理器时。
big.LITTLE MP
由于包含 Cortex-A15 和 Cortex-A7 的 big.LITTLE 系统通过 CCI-400 保持完全一致性,我们可以使用另一个合理的使用模型,允许 Cortex-A15 和 Cortex-A7 都保持加电状态,并且同时执行代码。这称为 big.LITTLE MP,属于完全异构的调度。big 处理器是否需要打开取决于当前执行的任务的性能要求。如果有需求较高的任务,则可以打开 big 处理器来执行它们。需求较低的任务可以在 LITTLE 处理器上执行。最后,任何未在使用的处理器都可关闭。这可确保无论 big 还是 LITTLE 核都仅在需要时才处于活动状态,同时确保使用适当的核来执行给定的工作负载。
big.LITTLE MP 是一种非常理想的使用模型,因为它让线程能够在最合适的处理资源上执行。有些计算密集型线程的输出是用户可见的,需要很高处理性能,它们可以分配给 Cortex-A15。而有些线程的 I/O 负载很大,或者其生成的结果对于用户并非时间关键型的,它们可在 Cortex-A7 上执行。
例如,与电子邮件更新相关的线程就是非时间关键型线程的一个简单例子。在进行 Web 浏览的同时,用户希望继续执行电子邮件更新,但这些线程是在 Cortex-A15 性能级别上还是 Cortex-A7 性能级别上执行是无关紧要的。由于 Cortex-A7 是能效更高的处理器,因此它执行线程的时间稍长一点,但消耗的电池续航时间较少,对于此种线程更加适用。
最后,由于完全一致性系统可以产生大量一致事务,Cortex-A15、Cortex-A7 和 CCI-400 的设计可以应对最差情况监听场景。其中包括一种情况,即 Mali™-T604 GPU 连接到一个 I/O 一致 CCI-400 端口,每个事务监听 Cortex-A15 和 Cortex-A7,同时 Cortex-A15 和 Cortex-A7 也在相互监听。
移动应用概貌
让 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 调度上运行,但仅在CPU核和互联的软件模型上。为了全面评估 big.LITTLE 系统的性能、省电水平和适当调节方法,有必要构建一个可全速运行用户软件的测试芯片。ARM 测试芯片在 2012 年初夏从制造工厂返回,几个星期后测试硅晶片便在开发板上运行完整的 Linux 和 Android Ice Cream Sandwich。(Jelly Bean 也在运行,但本文中的结果来自 ICS)。该测试芯片由一个双核 Cortex-A15 集群、一个三核 Cortex-A7 集群,以及 CCI-400 缓存一致性互联组成。测试芯片不含 GPU,因此影响了一些用户基准测试,但该平台能够运行 Linux 和 Android 操作系统及基准测试软件。
图 3 中的性能基准测试是在 Cortex-A15 和 Cortex-A7 CPU 集群上独立运行的。测试芯片上的 Cortex-A15 的最高频率为 1.2GHz,而 Cortex-A7 的最高频率则为 1 GHz。基准测试表明 Cortex-A15 和 Cortex-A7 CPU 的性能在预期范围之内,尽管测试芯片上的内存系统比生产 big.LITTLE SoC 上所期望的内存系统性能要低。根据分别运行的CPU核的结果,我们建立了足够的信心,相信该平台可以准确测量 big.LITTLE 的性能。测试芯片平台上的软件包含基准Linux 内核和 CPU 迁移软件,还应用了 big.LITTLE MP 补丁,能够测试 CPU 迁移或 big.LITTLE MP 模型。
用于测试 big.LITTLE 性能的主要工作负载是一个网页浏览器基准测试:在 Android ICS 上运行,循环访问多个网页,同时在后台播放音频。这一使用案例允许比较密集的工作负载与较低性能要求的后台活动相组合。网页浏览器每隔 2 秒循环访问网页,并在各个页面上执行 500 像素页面滚动操作,以呈现所需性能水平相对较高的系统。在运行此基准测试来测量性能和功耗时,首先有必要建立一个性能和功耗基准线。该基准线是通过独立运行的 Cortex-A15 CPU 集群测量的。
图 8:big.LITTLE 结果
需要提醒的是,这一组结果是相对早期的;它们来自 big.LITTLE MP 补丁集的早期版本,它将 Linux 调度程序从完全公平和平衡的调度模型修改为 big.LITTLE 模型。我们预计随着软件的调整,性能和功耗也会改善,同时还会探索其他的可调节元素。值得一提的还有,测试芯片中缺乏 GPU;这会导致其 CPU 负载高于具有 GPU 减负功能的系统,而在 CPU 负载更低的情形中,有可能更加充分地利用 LITTLE 核心,达到更加节能的效果。它拥有一组初步的电源和频率运行点,且无法单独对各个CPU核进行电源门控,所以真实 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 电源管理代码的重新利用,意味着可以沿用多年的开发与测试。无需修改内核调度程序,因此在一定范围上比 MP 简单。总而言之,CPU 迁移是 2013 上半年及以后的产品的绝佳解决方案
big.LITTLE MP 具有多种技术优势,但目前尚不成熟;现在处于开发阶段,正如本文中提供的可观的早期测试结果所示,big.LITTLE MP 可以充分利用系统中的所有核心,非对称拓扑支持是标配,无软件改动。它为性能和功耗优势提供更大机会。例如,它可同时利用所有核心来获得更出色的性能,或者在 big 和 LITTLE 上调节 DVFS 设置和调度程序设置来获得更好的省电效果。它允许调度程序细致地选择CPU核,常常提供更多的调节参数。灵活性的提高也会付出代价,需要进行更多调节,以便从 big.LITTLE MP 平台中获得全面的性能和功耗优势。最后,big.LITTLE MP 正在快速壮大,但尚未准备好投入生产。其目标是在 2013 年上半年开始可供合作伙伴集成。所幸的是,支持 big.LITTLE MP 不需要硬件更改,因此芯片供应商可以部署具有 CPU 迁移的平台,再通过内核更新升级为 big.LITTLE MP。
虽然尚未在生产中部署 big.LITTLE MP,其软件已如本文结果所示方式运行。big.LITTLE MP 软件在我们的测试系统上“开箱”即可运行,现在的工作主要集中于巩固该软件,并且针对各式各样的使用案例调节系统性能以获得最佳的结果。
图 8 中的性能与功耗结果表明调节 big.LITTLE 系统的重要性,其各种结果仅仅基于一个可调节元素。其他可调节元素包括调度程序的负载平衡策略、上下迁移点,以及线程优先级。ARM 和上述每个领域内的芯片合作伙伴正在进行系统调节,因此预计 2012 年末将会出现一组新的 big.LITTLE 性能和功耗结果。
除了性能调节外,ARM 也在改进 big.LITTLE MP 补丁集,每月以开放源代码形式定期发布,计划在 2012 年末向上游推送补丁。当前的补丁集在 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 是与 Cortex-A15 相似的 big 核心,每时钟周期性能提升 20%,拥有更高频率能力,效率也稍稍高于 Cortex-A15。Cortex-A53 是与 Cortex-A7 相似的 LITTLE 核心,每时钟周期性能提升 25%,能效则与 Cortex-A7 相同。
这两款核心在架构上完全相同,它们引入了对 ARMv8 架构的支持,带来改进的 NEON 和浮点运算能力、加密加速,以及 64 位支持。除了 AMBA4 ACE 外,两款核心都支持下一代一致互联,并且能够在 AArch32 模式中运行,以与当前 ARMv7 CPU 核心相同的方式运行现有的代码。通过巧妙而有效的方式实施对 64 位和额外通用寄存器的支持,基本上不增加功耗。此外还引入了微架构改进,为每个核心提供更多的每指令时钟周期吞吐量。这些新CPU核将以与当前 Cortex-A15 和 Cortex-A7 CPU 相同的方式支持 big.LITTLE;两者都会在 2013 年提供给领先芯片合作伙伴,有望在 2014 年实现芯片生产。同时,ARM 合作伙伴已在为基于 Cortex-A15 和 Cortex-A7 的第一款 big.LITTLE 芯片出货,有望在 2012 年末实现初步生产,2013 年全面投向各种设备生产。
结论
本白皮书介绍了 ARM 提供的第一个 big.LITTLE 系统。Cortex-A15 和 Cortex-A7 组合构成了完全一致性系统,有可能会超出在当前高性能移动平台上可能实现的性能。
big.LITTLE 系统为极宽动态范围的功率和性能控制点开启了大门。在由单一处理器类型组成的实施中则不可能实现。这一宽动态范围为当今设备中遇到到的工作负载提供了完美的执行环境,这样的工作负载通常由高需求和低需求线程混合组成。另外,它还为 Cortex-A7 实施极高能效创造了机会,因为它将是平台的运行引擎。
通过这些实施技术和各种使用模型,big.LITTLE 提供了在下一代移动平台中提升性能和延长电池续航时间的机会。
关于作者
Brian Jeff 是 ARM 的一名产品经理,他负责 Cortex-A7 和 Cortex-A53 等高效 Cortex-A 级处理器,以及 big.LITTLE 处理技术。他于 2009 年加入 ARM,曾经担任过性能基准测试和产品营销等职位。在加入 ARM 前,Brian 在德州仪器和飞思卡尔半导体公司担任过产品管理、工程和技术销售等职位。他拥有弗吉尼亚理工大学的 BSEE 学位,以及奥斯汀的德克萨斯大学的 MBA 学位。
参考资料
[1] Greenhalgh,P.2011。采用 ARM Cortex™-A15 和 Cortex-A7 的 big.LITTLE 处理。ARM TechCon™ 大会技术报告(2011 年 10 月)
[2] Randhava,R.2011。ARM big.Little 系统的系统软件。ARM TechCon 大会技术报告(2011 年 10 月)