原文: Ten Things to Know About big.LITTLE
投稿人: brianjeff,2013 年 6 月 18 日
ARM big.LITTLE™ 技术越来越受到业内的认可,被视为一种在移动设备中以低功耗满足更高性能要求的进步方式。自其发布以来,现有超过十二家 ARM 合作伙伴在设计中积极运用 big.LITTLE 技术。
随着 big.LITTLE 处理技术的推广运用,几个常见问题应然而生。我准备利用这篇博文来解答一些比较常见的疑问:
1. 可否同时打开所有核心?
2. 该软件是否与 DVFS 和 SMP 调度等现有机制相似?
3. 现在是否可以搭配 Android™ 运行而不更改 Android?
4. big.LITTLE 如何实现更高的性能?
5. big.LITTLE 如何提高节能而不仅仅降低电压?
6. big.LITTLE 可以节约的电能在系统层面上是否可观?
7. big.LITTLE 在高性能任务上是否也可节省电能?
8. 需要更改多少用户级代码才能支持 big.LITTLE?
9. big 和 LITTLE 核心的数量是否可以不同?
10. 我听说很难用… 它有多复杂?
问题 1:可否同时打开所有核心?
在早期的 big.LITTLE 软件模型(群集迁移和 CPU 迁移)中,软件在核心之间进行切换,不能同时打开所有核心。在更近期的软件模型中,即全局任务调度,软件可以同时让所有核心处于活动状态,因为操作系统清楚系统中的 big 和 LITTLE 核心,并且直接控制可用核心间的线程分配。使用全局任务调度时,操作系统电源管理机制将继续让未使用的核心闲置,其方式与当今标准多核系统中的方式相同。
一个架构 – 三种主要软件使用模型
问题 2:该软件是否与 DVFS 和 SMP 调度等现有机制相似?
在当今的智能手机和平板电脑中,动态电压和频率调节 (DVFS) 技术用于适应所需性能的瞬时变化。big.LITTLE 迁移模式扩展了这一理念,在超过 LITTLE 核心的最高 DVFS 运行点时过渡到“big”CPU 核心。此迁移用时约 30 微秒。相反,DVFS 驱动程序通常每隔 50 毫秒评估操作系统和各个核心的性能,尽管一些实施中的采样频率会稍微高一些。它需要 100 微秒左右进行电压和频率更改。由于迁移 CPU 或群集的用时要短于 DVFS 更改用时,并且在数量级上也比 DVFS 更改的操作系统评估期间短,big.LITTLE 过渡能够让处理器更频繁、更深入地在更低运行点上运行,而且对用户而言完全不可见。
在全局任务调度模型中,DVFS 机制依然在运作;但是,操作系统内核调度程序清楚系统中的 big 与 LITTLE 核心,并且尽力将高性能线程的负载平衡到高性能核心上运行,将低性能或内存限制线程平衡到高能效核心上运行。这与当今的 SMP 负载平衡器相似,后者自动在系统中可用的核心间平衡线程负载,并且让未使用的核心闲置。big.LITTLE 全局任务调度中运作相同的机制,但操作系统会跟踪各个线程的负载历史记录,结合使用该历史记录和实时性能采样,在 big 和 LITTLE 核心之间相应地平衡线程负载。
问题 3:现在是否可以搭配 Android™ 运行而不更改 Android?
问题 4:big.LITTLE 如何实现更高的性能?
由于具备高效的 Cortex®-A7 核心,SoC 设计商可以调节 Cortex-A15 处理器以实现高性能,而平均功耗依然保留在现有移动电源的限制范围内。这允许使用高吞吐 Cortex-A15 CPU 的全部容量实现性能激增,关小电压和频率,然后将任务迁移到 LITTLE 核心获得持续的后台处理性能。
此外,在全局任务调度软件模型中,操作系统可在 Cortex-A15 满载时将额外工作分配到 Cortex-A7 CPU。目前,这在 Antutu、Geekbench 和 ANDeBench 等基准测试以及其他多核工作负载中最有效用,但随着软件愈加成熟地利用额外核心,big.LITTLE 系统中存在的额外核心将能够实现更高的总体性能。
最后,我们发现目前许多主要工作负载中(例如网页浏览)存在一个或两个需求很高的线程(Android 中的 WebViewCoreThread 和 SurfaceFlinger)。这种工作负载非常适合 big.LITTLE – 高性能线程可以逐一分配到高性能 Cortex-A15 CPU 上,而后台线程则可调度到一个或多个 LITTLE CPU 上。通过将较低性能的线程分配给 LITTLE CPU,高性能核心的整个容量可以专用于需求最多的线程,从而实现更高的总体性能。
问题 5:big.LITTLE 如何提高节能而不仅仅降低电压?
当前一代 big.LITTLE SoC 中的 Cortex-A15 群集和 Cortex-A7 群集可在独立的频率上运行。其他尝试已倡导使用具备异步电压调节的相同核心来降低能耗。使用 big.LITTLE 时,big 和 LITTLE 核心可以将低密度工作迁移到能效在 3 倍以上的更简单流水线,进一步调节电压和降低能耗。在 LITTLE CPU 核心的整个性能范围中,它们实现的节能水平要远远高于电压调节本身。
只有 big.LITTLE 拥有调节微架构的优势,其能效为高性能 CPU 的 3 倍或以上。
总而言之,这意味着 big.LITTLE 能够带来比单 CPU 微架构实施更大的节电机会。CPU 群集中的异步 DVFS 具有一些可靠的优点。我们将异步 DVFS 视为对可缩放性能理念的认同,其本身也是一个不错的解决方案。不过,big.LITTLE 技术的优势不止于此。这些技术的平行开发体现了 ARM 生态系统的力量 - 它们将在市场运用中开展竞争,与市场中仅存在一种架构和实施相比,每一种方式都可能因为这种竞争而以更快的步伐逐渐向前演进。
问题 6:big.LITTLE 可以节约的电能在系统层面上是否可观?
将 CPU 子系统功耗降低 50% 或更多在系统层面上是可观的。在与 DVFS、电源门控、时钟门控和保留模式等结合使用时,big.LITTLE 在移动设备的总体电源管理中发挥重要的作用,随着软件电源管理策略的演进,它将为未来节能带来更多机会,而且能在协调的策略中更加紧密地运作来管理关机、核心迁移、电压和频率。总之,目前的功耗降低水平已经非常不错,未来还会更好。
问题 7:big.LITTLE 在高性能任务上是否也可节省电能?
高性能应用程序也有密度较低的时期,例如在等待用户输入时,或者 GPU 处于活动状态时。在这些期间,现有的智能手机 SoC 将下移到更低的 DVFS 点并/或让核心闲置。从下图中我们可以看到,在玩游戏期间,HD 赛车游戏导致 DVFS 机制让双核 Cortex-A9 CPU 在接近一半时间内闲置,在 90% 以上的时间内低于 1GHz 运行。所有这些闲置期间和低频率状态良好地映射到 LITTLE 核心,带来了节能的机会,即便是 GT Racer HD 游戏这种高性能工作负载也一样。
高性能工作负载拥有低密度期间的其他示例举不胜举。渲染页面后立即进行的网页浏览,在内存中处于等待状态的高性能任务,等等。由于将工作从 big 迁移到 LITTLE 核心的速度极快,即便是非常短的较低密度期间也能映射到 LITTLE CPU 而实现节能。
问题 8:需要更改多少用户级代码才能支持 big.LITTLE?
完全不需要。是使用 big 还是 LITTLE 核心由操作系统负责决定。big.LITTLE 这种电源管理技术对用户级软件完全不可见,与多核 SoC 中动态电压和频率调节 (DVFS) 或 CPU 关闭非常相似。
在使用可由用户空间驱动的 big.LITTLE 时也存在利用机会。用户空间可以知道一个线程是否对用户体验重要,而且(举例来说)能允许用户接口线程使用 big CPU,同时阻止后台线程/应用程序使用。其他示例包括在屏幕关闭时禁止使用 big 核心,或者在你清楚只需 LITTLE 核心就可执行计算的使用情形中(例如在通话期间)固定线程。用户空间有机会让你更进一步,但这些技巧并不都是必要的,而且 big.LITTLE 并不要求任何用户空间认知度就能实现节能和提高性能。
问题 9:big 和 LITTLE 核心的数量是否可以不同?
使用全局任务调度时,软件可以自动支持不同数量的 big 和 LITTLE 核心。没有额外的系统要求,该软件可以在不同数量和类型的核心之间自动平衡负载。我们预计这种类型的非对称系统拓扑(具有不同数量的 big 和 LITTLE 核心)将变得更加常见,因为 big.LITTLE 全局任务调度在 2013 年下半年开始将有更广范围的部署。
问题 10:我听说很难用… 它有多复杂?
该软件实际上比较简单。不需要用户级或中间软件级的代码更改。big.LITTLE 软件完全处于内核空间中,以相对较小的补丁集形式交付,供芯片供应商在主板和芯片支持库中应用。芯片供应商和 OEM 需要进行一些调节,与目前标准多核系统中调节 DVFS 运行点和核心关闭策略的方式相似。补丁位于内核之中,对用户透明 - 一旦进行了构建与调节,它就能运作。
应用程序开发人员可以轻松享用 big.LITTLE 的所有优势(高速全局任务切换、最佳效率和更高性能),因为 ARM 和 ARM 合作伙伴在完成所有集成工作已将这一点考虑在内。ARM 拥有 big.LITTLE 的示例硬件实施,其使用了 Versatile Express V2P-CA15_A7 CoreTile,是用于评估的不错起点。
Brian Jeff 是 ARM 的一名高级产品经理,他负责 Cortex-A 处理器和 big.LITTLE 处理器技术的移动路线图和产品线。他于 2009 年加入 ARM,曾经担任过 CPU 产品管理和性能基准测试等职位。在加入 ARM 前,Brian 在德州仪器和飞思卡尔半导体公司担任过营销、工程和技术销售等职位。他拥有弗吉尼亚理工大学的 BSEE 学位,以及奥斯汀的德克萨斯大学的 MBA 学位。Brian 定居奥斯汀,在研究最新产品和处理器技术之外的闲暇时刻,他喜欢山地骑行、弹吉他,以及和家人一起远足。