这是brianjeff 有关big.LITTLE技术的最新文章,可以解答市面上很多有关big.LITTLE的问题
这里翻译成中文,供大家参考
原文链接:Ten Things to Know About big.LITTLE
ARM big.LITTLE™ 技术在业界日益得到认可,它能够在移动设备中使用,以更低的功耗,满足用户对更高性能的需求。自发布以来,当前已有 12 家以上 ARM 合作伙伴正在积极使用 big.LITTLE 技术进行设计。
问题 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 CPU 负载已满时,操作系统可将额外工作分配给 Cortex-A7 CPU。当前,这种技术在 Antutu、Geekbench、NdeBench 基准测试中和其他多核工作负载中最有优势,但是,随着软件日臻成熟,更加充分地利用其他核心,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 高出三倍以上。
最终,这意味着 big.LITTLE 提供更好的节能机会,优于单个 CPU 微架构实施。CPU 集群内部的异步 DVFS 具有一些强大优势。我们将异步 DVFS 视为可扩展性能概念的体现,它本身也是一种很好的解决方案。但是,big.LITTLE 技术相比异步 DVFS 具有一定优势。这些技术的并行开发展示了 ARM 生态系统的强大能量 – 它们为了提高在市场上的采用率而展开竞争,与单种架构和实施一统市场相比,这种竞争可以促进每种方法以更快的步伐发展。
问题 6:big.LITTLE 可以在系统级别上提供显著节能吗?
在系统级别上,它可以节省 CPU 子系统的 50% 以上功耗,这是非常可观的节省。与 DVFS、电源门控、时钟门控和保持模式相结合,big.LITTLE 在移动设备的整体电源管理中扮演着重要角色,随着软件电源管理策略的演进,它还将为未来的节能带来机会,可以通过协调的策略,更加密切地协作管理关闭、核心迁移、电压和频率。总之,目前的节能效果非常好,未来还会更好。
问题 7:在执行高性能任务方面,big.LITTLE 也能够节省功耗吗?
高性能应用程序也有低强度的时段,例如在等待用户输入时或 GPU 处于活动状态时。在这些时段内,现有的智能手机 SoC 会调低至较低的 DVFS 点和/或让核心空闲。从下图中,我们可以看出,在运行高清赛车游戏时,DVFS 机制让双核 Cortex-A9 CPU 在将近一半时间处于空闲状态,同时在 90% 以上时间在低于 1GHz 的频率下工作。所有这些空闲时段和低频率状态非常适合转移到 LITTLE 核心,即便对于GT Racer 高清游戏这样的高性能工作负载,它也提供了节省能耗的机会。
高性能工作负载也有低强度时段,我们还可以举出很多其他例子。在一个页面呈现之后的网络浏览,在存储器上处于等待状态的高性能任务,等等。由于从 big 核心迁移至 LITTLE 核心的速度极快,即便很短的低强度时段,也可将工作负载转移至 LITTLE CPU,从而节省能耗。
问题 8:为了支持 big.LITTLE,需要更改多少用户级代码?
不需要。使用 big 核心还是 LITTLE 核心由操作系统决定。big.LITTLE 是一种电源管理技术,对于用户级软件是完全不可见的,与动态电压和频率调节 (DVFS) 或多核 SoC 中的 CPU 关闭非常相似。
如果使用 big.LITTLE 的动因是用户空间,则又会有可以利用的机会。用户空间可以知道某个线程对于用户体验是否重要,并允许用户界面线程使用 big CPU,同时阻止后台的线程/应用程序使用 big CPU 等等。其他示例包括在屏幕关闭时阻止使用 big 核心,或者在您知道只能使用 LITTLE 核心进行计算的情况下(例如在通话过程中)锁定线程。用户空间可以提供更多特性,但这些技术都不是必需的,big.LITTLE 也不要求具有用户空间意识以节省能源和提供高性能。
问题 9:big 核心和 LITTLE 核心的数量可以不同吗?
有了全局任务调度,软件可以自动支持不同数量的 big 核心和 LITTLE 核心。这对系统没有任何额外要求,软件可在不同数量和类型的核心之间自动平衡负载。我们预期,随着 big.LITTLE 全局任务调度技术在 2013 下半年开始进行更广泛部署,具有不同数量的 big 核心和 LITTLE 核心的这种非对称系统拓扑将得到更普遍的使用。
问题 10:我听说这种技术很难使用... 它有多复杂?
软件实际上非常简单。无需在用户级别或中间件级别上进行任何代码更改。big.LITTLE 软件完全在内核空间中,以相对较小的补丁集形式提供,并由芯片供应商在电路板和芯片支持库中应用。芯片供应商和 OEM 进行了一些调整,类似于在当前标准多核系统中对 DVFS 运行点和核心关闭策略的调整方式。该补丁位于内核中,因此对于用户是透明的 – 供应商生产芯片并进行调整之后,它就可以工作。
应用程序开发人员可以轻松享受 big.LITTLE 的所有优势(高速全局任务切换、最佳效率、更高的性能),因为 ARM 和 ARM 合作伙伴在完成所有集成工作时就考虑到了这个问题。ARM 提供了 big.LITTLE 的一个示例硬件实施,使用 Versatile Express V2P-CA15_A7 CoreTile,非常适合作为评估的起点。