现代软件栈在移动系统中可能存在冲突的需求。一方面要求高性能的任务比如游戏,但另一方面要求对低密集的应用如音频播放器节省功耗。

        传统上不太可能让单核处理器设计既有高性能能力又有有效的节省功耗。这意味着很多功耗浪费因为高性能的core被用于低密度的任务,会导致减少电池寿命。性能也将被功耗所限制core只能跑在持久的周期。

        ARM的big.LITTLE技术通过将有效节能的LITTLE core与高性能的big core成对解决此问题。Big.LITTLE只是层次处理系统的一个例子。这种系统通常包含不同微架构的不同处理器类型,像通用处理器和特殊ASIC。

        Big.LITTLE将层次化进一步提升,它包含在微架构上不同但在指令集上兼容的通用处理器。术语HMP通常用于这种系统。HMP与AMP不同的是HMP中所有的处理器都是一致的且运行在相同的操作系统image。

        软件可以运行在big或LITTLE处理器依赖于性能要求。当要求高性能时软件被移到big处理器上运行。对于普通任务,软件可以很好的运行在LITTLE处理器上。通过这个联合,big.LITTLE提供了一种方案,该方案可以到达最新移动设备的最高性能,同时也达到最大节省功耗。

1 big.LITTLE系统的结构

        Big.LITTLE系统中两种类型的core都是完全cache一致性的并共享相同的指令集。相同的应用二进制完全可以无修改的运行在任意一个core上。处理器内部微架构的不同使他们能够提供不同的功耗和性能特征,这是big.LITTLE概念的基础。它们通常由操作系统管理。

        Big.LITTLE软件模型要求数据在big和LITTLE cluster之间进行透明并有效的传输。cluster之间的一致性由cache一致性内部互联拉ARM CoreLink CCI-400。没有硬件一致性,big和LITTLE core之间数据在转换通常通过主内产生,但这会很慢且电源效率低。另外,它要求复杂的cache管理软件来保持big和LITTLE cluster之间的数据一致性。

        另外这种系统也要求一个共享的中断控制器,如GIC-400,使中断可以在cluster中任意core间进行迁移。所有的core可以使用分发控制器拉CoreLink GIC-400发送信号给其他core。任务的切换通常由OS调度器处理,并对应用软件不可见。一个例子如下所示:

Bigtable技术架构_Big

1.1 big.LITTLE配置

        多个big.LITTLE配置是有可能在,如上图所示,使用Cortex-A57 core作为big cluster,Cortex-A53作为LITTLE cluster,虽然其他配置也有可能。

        LITTLE cluster具有处理大多数低密度任务如音频播放器,网页,操作系统事件,及其其他打开和连接的任务。更可能LITTLE cluster来运行低密度任务如游戏或音频处理等。

        Big cluster可以用来运行重负荷在任务如某些高性能游戏图片。网页呈现是另外常用的例子。两个类型的cluster成对提供机会来节省功耗且满足在移动设备上增加的应用性能要求。