在汽车设计方面,即使您仍然希望将大型车的高性能与经济轿车的高能效合而为一,但您在组合大小引擎时会发现第二个引擎太重了,这种做法太不现实。
而在移动CPU世界里,我们已运用了这种概念:手机可以在同一芯片上集成CPU、图形处理器、视频引擎和音频引擎等。每一组件可以在每单位的能耗中提供最大的性能和功能。因此如果在"V8引擎"CPU 中增加其他经济型 CPU 引擎,那么就会产生芯片占用面积上的投资回报率的问题。但如果添加 ARM 的最新款 ARM Cortex-A7 CPU,即我们最小型的、最节能的应用处理器到至高端的 ARM Cortex-A15 CPU,则可以实现性价比最优的理想产品,这具有非常重要的意义。我们称此概念为 big.LITTLE 处理:即将小型的、高能效的 ARM CPU 与完全兼容的高性能 ARM CPU 紧密地同步整合在一起。Cortex-A7 处理器以作为 big.LITTLE 对中的一款小型 CPU 与高端 Cortex-A15 CPU 完美地整合在一起为宗旨而设计。我将在本次简述中与您分享我们的实现过程。
我们首先要确保在引擎切换过程中不会出现"间歇性的运行状态"。
在 big.LITTLE处理中,就意味着必须确保小型CPU和大型CPU之间具有百分之百的软件兼容性。从用户和操作系统软件的角度而言,大小内核必须保持外观上的一致性。具体来说,就是在架构上保持一致。也就是说,Cortex-A15 和 Cortex-A7 处理器必须具有完全相同的指令、数据类型和寻址模式,并且它们能够产生相同的结果。在设计的其他领域也必须保持一致。如缓存线大小、40位物理地址空间、硬件虚拟化以及 128b AMBA 4 本地总线接口。
第二个关键要素就是确保具有最优化的引擎…即在小型引擎上实现每加仑燃油的最大行程,而在 V8 引擎上实现最高的性能,并且不卡齿轮。
我们在 big.LITTLE 处理中使用的方法是在新一代移动平台的移动剖面图以及不同的功率剖面图中确定关键的性能点。大 CPU (Cortex-A15) 旨在提供比当今高端 CPU 还要高的性能,并且满足可使用在移动电源装置中。它由更复杂的、并行的、15 级或更高级的乱序管线组成,具体要根据指令流来确定。我们为小型 CPU (Cortex-A7) 开发了一种截然不同的由有序的 8 级管线组成的内核微体系架构,它能够并发执行大部分常用的指令对。与高性能内核的 NEON SIMD 单位相比,针对更大介质的 NEON SIMD 单位和浮点性能都有所降低。较小的 CPU 仅支持执行有序的指令,但仍支持所有相同的运算,如 64b 双精度浮点计算、针对整数和单精度浮点数据类型的双字和四字 SIMD 运算。如果较小 CPU 的功耗和使用面积接近于较大的 CPU,那么通过切换所节省的能耗并不足以证明添加另一个 CPU 群集的必要性。类似地,如果较小 CPU 的性能不能与高性能内核相对媲美,那么它们之间的处理能力差异会因性能的不稳定而出现非连续性业务处理。因此,我们必须在性能和功效方面实现最优化才能提供适合于 big.LITTLE 的 CPU。
我们需要确保的第三个问题是恒定的线性加速和减速。在引擎切换之间没有交接问题。
ARM 实现 big.LITTLE 处理的核心就是在较大 CPU 和较小 CPU 之间实现飞快的任务迁移。但是快速环境迁移所遇到的最大障碍是时间,也就是需要足够的时间来清除出站 CPU 群集上的缓存并使其无效,同时使用有效的环境来替换无效的环境。较小 Cortex-A7 和较大 Cortex-A15 处理器均具有 AMBA 一致性扩展 (ACE) 接口,这些处理器可跨 ARM 缓存一致性互联结构 (CCI-400)查看,在其他 CPU 群集的一级和二级缓存中执行查找操作。此功能的优点就在于出站 CPU 群集只需要保存由寄存器文件、CP15 寄存器值以及安全状态组成的小环境信息即可。然后在典型实现中,可以在总保存/恢复时间不到 20 微秒内,在入站CPU群集中恢复这一小环境信息(如较大 CPU 运行于 1GHz 或更快)。这种快速的环境切换具有很多优点。由于切换的成本开销很低,因此电源管理框架可以确定是切换到小群集,即使很短的时间,也会节省能耗,还是切换到大 CPU 群集,以便在极短的时间里使性能瞬间达到最高。这种切换控制非常简单,因而进行切换控制的软件也非常简单。同时,您可以在应用的中途进行环境切换,如 CPU 开始呈现网页时可以启用大 CPU,而在网页得到呈现后可以切换到较小的 CPU,直至需要载入新网页时才切换到大 CPU。因此无需把应用程序跨CPU 切割,SoC 的电源管理设备可以瞬间切换到相应大小的 CPU 元件中。
第四个也是最后一个需要确保的是这些引擎可以在一般情况下也能工作。
我们需要确保有一种简单的软件方法来控制 big.LITTLE 切换,与现成的电源管理机制保持一致。当今的智能手机和平板设备将动态电压与频率调节 (DVFS) 技术和多个空闲模式应用于应用处理器 SoC内单个 CPU 内核和 IP 模块上。我们所实施的 big.LITTLE 修改了后端驱动程序来控制处理器的 DVFS 运行点(例如 Linux/Android 中的 cpu_freq)。现在不再使用三个或四个 DVFS 运行点,而是通过驱动程序来感知两个 CPU 群集,每个群集都可能具有三至四个独立的电压和频率运行点,从而扩大了现有智能手机电源管理解决方案使用的性能调节的范围。big.LITTLE CPU 群集可以在纯切换模式下进行操作,即每一时刻只有一个 CPU 群集在 DVFS 驱动程序的控制下处于活动状态,也可以在异构多处理模式下进行操作,即操作系统可以为大型或小型 CPU 群集提供显式线程分配控制,并因此感知不同内核的存在。
总而言之,ARM big.LITTLE 处理所具有的这些属性可以为现代移动设备提供最佳的两种切换解决方案:与当今高端的智能手机应用处理器相比,其能耗节省了 70%,并且其最高性能比 2011款的最高端智能手机高很多。请注意这不是一个非此即彼的方案,而是在同样的工作负载下使性能和能耗均达到最优的解决方案。由于智能手机和平板电脑的工作负载具有高度动态性,因此很有可能需要两种切换模式。对于网络浏览、视频流、休闲游戏和 mp3 播放等重要的工作负载,应用 CPU 在最低的 DVFS 运行点中所用的运行时间占 70% 至 90%,而在最高的 DVFS 运行点中所用的运行时间仅不到 5% 左右。即使是高端的游戏工作负载或负载过重的互动网站,其最高运行点也通常只占 CPU 运行时间的 20~30%,这样便有机会切换到或将线程分配至小 CPU 中,使其 CPU 运行时间达到 70~80% 或更高。这可以很好地与 big.LITTLE 处理保持一致,其中较小 Cortex-A7 可以处理所有一般的任务,但不能处理当前发售的高端应用处理器 CPU 的两个最高运行点。这可以确保 Cortex-A7 在 80% 以上的 CPU 运行时间里提供所需的同一级别性能,这样便大大地减少了能耗,然后再根据需要瞬间切换到高性能 Cortex-A15 CPU 以实现最大的性能。让我们再回到汽车类比中,这就像有一个处于待机状态的涡轮增压 V8 引擎在需要爬坡时从停止状态突然加速,然后当您稍稍松开油门时,在不到一眨眼的功夫便切换到节能的引擎中。
如今在工程业界,我已领略到这世界上还真没有免费的午餐。您不可能在既有高性能又有高能效的同时,不付出一点代价。就本例而言我们需付出的是占用面积,相对于高性能的 CPU 本身而言,附加的 CPU 群集只占用很少的一点额外区域。而在 28nm 等现代工艺结构中,Cortex-A7 CPU 的每个内核所占用的面积不到一平方毫米的一半,因此片上成本的费用很低并且整合后的系统完全符合专为 CPU 群集定制的芯片空间大小要求。为了使平均能耗比当今主流智能手机更低,性能比当今具有最高性能的智能手机还高,即使必须在 SoC 上占用很少的一点额外区域也是相当划算的。我只希望这种做法也能应用在汽车上:经济高效、长行程、至高性能的梦想车!
上一篇:ARM Cortex系列(A8/A9/A15/A7) NEON多媒体处理SIMD引擎优化
下一篇:ARM Thumb Thumb-2指令集
推荐阅读最新更新时间:2024-03-16 15:00