白皮书
提升高性能移动平台的能效
Peter Greenhalgh,ARM 2011 年 9 月
本文介绍了 ARM 提供的第一个 big.LITTLE™ 系统的基本原理和设计,该系统基于高性能 Cortex-A15 MPCore 处理器、高能效 Cortex-A7 MPCore 处理器、ARM CoreLink CCI-400 一致性互联以及相应支持性专利技术。
目录
目录................................................................................................................................................... 1
简介................................................................................................................................................... 2
处理器............................................................................................................................................... 2
系统................................................................................................................................................... 4
big.LITTLE 任务迁移使用模型...................................................................................................... 5
big.LITTLE MP 使用模型............................................................................................................... 7
软件................................................................................................................................................... 7
结论................................................................................................................................................... 8
版权所有 © 2012 ARM Limited.保留所有权利。
ARM、AMBA、Cortex 和 ARM 徽标是 ARM Limited 的注册商标。CoreLink、CoreSight、big.LITTLE 和 Mali 是 ARM Limited 的商标。所有其他商标名称或者产品名均为其各自所有者的财产。
简介
用户需要现代高性能移动平台提供前所未有的性能范围。他们要求平台能够完成游戏和 Web 浏览等高处理强度任务,同时对于文本编辑、电子邮件和音频等低处理强度任务,他们要求平台提供很长的电池续航时间。
在 ARM 提供的第一个 big.LITTLE 系统中,作为“big”部分的 ARM Cortex-A15 处理器与作为“LITTLE”部分的 Cortex-A7 处理器配合使用,两者构成的系统能够通过最高能效的方式,完成高强度任务和低强度任务。该系统通过 CoreLink CCI-400 一致性互联来连接 Cortex-A15 和 Cortex-A7 处理器,具备足够的灵活性,能够支持各种 big.LITTLE 使用模型,这些使用模型可以根据任务处理要求量身定制。
处理器
big.LITTLE 的中心原则是:各个处理器在架构上应该是相同的。Cortex-A15 和 Cortex-A7 都实施完整 ARM v7A 架构,包括虚拟化和大物理地址扩展。因此,所有指令都在 Cortex-A15 和 Cortex-A7 上通过架构一致的方式执行,但两种处理器的性能不同。
Cortex-A15 和 Cortex-A7 的实现定义的功能集也是相似的。两种处理器可以配置为具有一至四个核心,而且都在处理器集群内部集成二级缓存。此外,每个处理器都实施了单一 AMBA 4 一致性接口,可以连接至一致性互联(例如 CCI-400)总线。
在微架构方面,Cortex-A15 和 Cortex-A7 之间的差异变得非常明显。Cortex-A7(图 1)是一款顺序执行非对称双发射处理器,流水线长度在 8 至 10 级之间,Cortex-A15(图 2)是一款乱序持续三发射处理器,流水线长度在 15 至 24 级之间。
图 1 Cortex-A7 流水线
图 2 Cortex-A15 流水线
由于指令执行所消耗的功耗与它需要通过的流水线级数有一定关系,因此 Cortex-A15 和 Cortex-A7 之间的明显能耗差异来自不同流水线长度。
通常,在 Cortex-A15 微架构中采用的指导原则和 Cortex-A7 微架构有所不同。适当时,Cortex-A15 以能效来换取性能,而 Cortex-A7 则以性能来换取能效。二级缓存设计就是这些微架构权衡的很好例子。一种局部优化方法是在 Cortex-A15 和 Cortex-A7 之间共享单个二级缓存,这部分设计可从能效或性能的优化中受益。因此,Cortex-A15 和 Cortex-A7 具有集成二级缓存。
表 1 显示了不同基准和微基准的 Cortex-A15 和 Cortex-A7 之间的性能和能耗差异。第一列显示了从 Cortex-A7 到 Cortex-A15 的性能提升,第二列考虑了两者之间的性能和能耗差异,以显示从 Cortex-A15 到 Cortex-A7 的能效改进。所有测量指标都基于使用相同单元和 RAM 库的 Cortex-A15 和 Cortex-A7 的完整频率优化布局。在 Cortex-A7 上执行的所有代码都是针对 Cortex-A15 编译的。
Cortex-A15 与 Cortex-A7 的性能比
Cortex-A7 与 Cortex-A15
的能效比
Dhrystone
FDCT
IMDCT
MemCopy L1
MemCopy L2
表 1 Cortex-A15 与 Cortex-A7 的性能和能耗比较
在表 1 中,我们应该注意:虽然 Cortex-A7 标记为“LITTLE”处理器,但它的性能潜力是非常可观的。事实上,由于微架构的进步,Cortex-A7 提供比当前 Cortex-A8 更高的性能,而且功耗更低。因此,大量处理工作仍然由 Cortex-A7 完成,而无需借助于 Cortex-A15。
系统
要创建理想的 big.LITTLE 解决方案,还必须考虑以处理器为中心的整个系统。
CCI-400 互联是一个关键部分,它有利于实现 Cortex-A15 和 Cortex-A7 之间的完全一致性,以及 GPU 等组件的 IO 一致性。通过围绕 Cortex-A15 和 Cortex-A7 的事务特征进行优化,并且考虑通向主内存和系统的路径,我们提供了性能尽可能高的单个解决方案。
图 3 Cortex-A15 CCI Cortex-A7 系统
big.LITTLE 系统的另外一个单元是共享的通用中断控制器 (GIC-400)。除了能够向 Cortex-A15 和 Cortex-A7 分配多达 480 个中断之外,由于 GIC-400 的可编程特性,它还可在 Cortex-A15 或 Cortex-A7 群集中的任何核心之间迁移中断。
从跟踪和调试的角度来看,Cortex-A15 和 Cortex-A7 都提供跟踪解决方案,而且都与 Debug v7.1 架构兼容。通过 CoreSight SoC 提供对 big.LITTLE 调试和跟踪的完全支持。
要考虑的最后一点是,结合使用 Cortex-A15、Cortex-A7、CCI-400 和 GIC-400 的系统对于所有 big.LITTLE 使用模型都是最理想的。没有任何一种可配置功能或优化特别有利于某种使用模型。但是,为了降低 big.LITTLE 任务迁移使用模型中的软件复杂性,我们建议在 Cortex-A15 群集和 Cortex-A7 群集中实施相同数量的核心。
big.LITTLE 任务迁移使用模型
在 big.LITTLE 任务迁移使用模型中,操作系统和应用仅在 Cortex-A15 或 Cortex-A7 上执行,而从不在两个处理器上同时运行。这种使用模型是动态电压和频率调节 (DVFS) 的自然延伸,由具有单个应用处理器的当前移动平台提供运行点,允许操作系统将平台性能与应用所需性能相匹配。
相反,在 Cortex-A15-Cortex-A7 平台中,这些运行点同时应用于 Cortex-A15 和 Cortex-A7。当 Cortex-A7 执行时,操作系统可以调节运行点,如同它是具有单个应用处理器的现有平台的工作点那样。当 Cortex-A7 达到最高运行点后,如果需要更高性能,则可以调用任务迁移,将操作系统和应用转移到 Cortex-A15 上运行。
这种方式允许低强度应用和中强度应用在 Cortex-A7 上执行,其能效优于在 Cortex-A15 上可以达到的能效,而当前智能手机上常见的高强度应用则可在 Cortex-A15 上执行。
图 4 Cortex-A15-Cortex-A7 DVFS 曲线
big.LITTLE 系统的一个重要考虑因素是它在 Cortex-A15 群集和 Cortex-A7 群集之间迁移任务所需的时间。如果花费时间过长,操作系统会对此有所觉察,系统功耗在一段时间内会抵消任务迁移的优势。因此,Cortex-A15-Cortex-A7 系统设计应该能够在少于 20,000 个周期内迁移,当处理器在 1GHz 频率下运行时,可在 20 微秒内迁移。
任务迁移之所以能够如此快速,原因之一是任务迁移涉及的处理器状态数量相对较少。将要关闭的处理器称为“出站处理器”,它必须将所有整数和高级 SIMD 寄存器文件内容与整个 CP15 配置状态一同保存。将要恢复执行的处理器称为“入站处理器”,它必须恢复从出站处理器保存的完整状态。此外,由 GIC-400 控制的所有活动中断也必须迁移。它们需要 2,000 个以下的指令来实现保存和恢复,由于两个处理器在架构上是相同的,因此在入站处理器和出站处理器的状态寄存器之间存在一对一映射。
图 5 big-LITTLE 任务迁移
图 5 描述了入站处理器和出站处理器之间的任务迁移过程。一致性显然是实现快速任务迁移的关键因素,因为它允许在入站处理器上监听和恢复在出站处理器上保存的状态,而不是通过主内存传输。此外,由于出站处理器的二级缓存是一致的,因此它可在任务迁移之后保持加电状态,通过数据值监听,改进入站处理器的缓存预热时间。但是,由于出站处理器的二级缓存也无法分配,因此需要最终清除缓存并关闭电源,以减少泄漏耗电。
还应该注意,在任务迁移过程中,线程会正常执行。唯一的中断期是在任务迁移过程中,当中断被禁用,状态从出站处理器传输到入站处理器时。
big.LITTLE MP 使用模型
由于包含 Cortex-A15 和 Cortex-A7 的 big.LITTLE 系统通过 CCI-400 保持完全一致性,我们可以使用另一个合理的使用模型,允许 Cortex-A15 和 Cortex-A7 都保持加电状态,并且同时执行代码。这种使用模型称为 big.LITTLE MP,实质上就是异构多重处理。请注意,在这种使用模型中,仅当有线程需要相应级别的处理性能时,才需要为 Cortex-A15 加电,并与 Cortex-A7 同时并列执行。否则只需为 Cortex-A7 加电。
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 系统的一部分,ARM 提供了一个软件切换器,适用于 Cortex-A15、Cortex-A7、CCI-400 和 GIC-400。该切换器具有两大用途:
第一个用途是提供 Cortex-A15 和 Cortex-A7 之间的任务迁移所需的全部机制。除了处理器状态保存和恢复之外,该切换器还包括让处理器进入和退出一致性状态、控制互联中的监听、迁移中断所需的代码。该切换器既可按原样使用,也可将代码用作模板来集成到操作系统中。
第二个用途是向操作系统掩盖 Cortex-A15 和 Cortex-A7 之间的少量编程模型差异。虽然 Cortex-A15 和 Cortex-A7 在架构上是相同的,而且所有寄存器都通过架构一致的方式读取和写入,但寄存器的内容可能并不始终相同。因此,Cortex-A15 和 Cortex-A7 并非在任何情况下都在编程模型上完全相同。
例如,在 Cortex-A15 和 Cortex-A7 中,标识处理器的主要标识寄存器的内容有所不同,描述一级缓存和二级缓存拓扑的 CP15 寄存器内容也存在差异。幸运的是,由于 Cortex-A15 和 Cortex-A7 都实施了虚拟化扩展,因此对这些寄存器的操作系统访问可以仅限于虚拟机监控程序层,切换器可在该层中处理这些访问。
切换器使得我们能够针对当前操作系统来构建 big.LITTLE 系统。但是,与状态保存和恢复代码相同,可能 Cortex-A15 和 Cortex-A7 之间的少量编程模型差异会由操作系统处理,而不是由切换器处理。
结论
本白皮书介绍了 ARM 提供的第一个 big.LITTLE 系统。Cortex-A15 和 Cortex-A7 组合构成了完全一致系统,为处理带来了新的机会,超出在当前高性能移动平台上可能实现的性能。
用户无需实施单个应用处理器来处理高强度和低强度任务,big.LITTLE 系统为 Cortex-A15 实现极高性能打开了大门,因为只有在需要该性能时才为该处理器加电。另外,它还为 Cortex-A7 实施极高能效创造了机会,因为它将是平台的运行引擎。
通过这些实施技术和各种使用模型,big.LITTLE 提供了在下一代移动平台中提升性能和延长电池续航时间的机会。