移动CPU异步多核和大小核的那些事

移动CPU异步多核和大小核的那些事_第1张图片


很多对移动CPU的异步多核的概念不是很理解,它作为高通骁龙系列的一大特色,它和同步多核处理器之间又有什么区别?各有什么优势呢?异步多核处理器又是怎么达到节能目的?此外,像三星Exynos 5440这一类“大小核”的处理器又会有什么特点呢?本文都将为你一一解答。

异步多核

异步多核,或者叫aSMP(asynchronous SMP),是由高通提出的,并应用在自家的Snapdragon S3/S4处理器中。之前也有过不少争论,比如说异步多核核心之间不能通讯,称之为“胶水双核”;或者说异步多核同时只能有一个核心接受指令,效率很低。当然呢,这些实际上都是不对的。

 什么是异步多核?其重点在于频率异步,可以将它称为异步频率架构(Asynchronous Clock Architecture)。在这样设计的多核处理器中,每个核心都可以工作在不同的电压和频率下。这样,可以将计算繁重的任务交给一个工作在高频的核心,而压力较小的任务则可以让一个工作在低频的,较慢的核心去负担。而在同步多核中,所有的核心都只能工作在相同的电压和频率下。

 

如下图所示,当有两个任务,一个计算负荷较重,而另一个计算负荷较轻时(图中紫色部分表示任务的计算负荷),异步多核可以让负荷较重的核心CPU0工作在较高的频率(图中蓝色部分代表频率),而负荷较轻的核心CPU1工作在较低的频率和电压下,由此来减小功耗。而同步多核的CPU1虽然负荷较轻,但由于架构限制,只能和CPU0保持同样的高频率和高电压,由此浪费了更多的能量。移动CPU异步多核和大小核的那些事_第2张图片

 

而在高通实际的设计中,不仅多个核心可以工作在不同的电压和频率下,它们共享的L2缓存也可以根据实际的负荷,工作在一个单独的电压和频率下,从而最大限度的节能。移动CPU异步多核和大小核的那些事_第3张图片

 

异步多核架构看上去确实很美好,但实际上并不是完美的。在一些情况下,异步频率架构会发生性能的损失。一种情况是,当一个CPU的L1缓存没有命中,需要去L2缓存取数据时,由于异步多核架构的各个核心和L2缓存工作在不同的频率下,需要更多的时间去完成数据的传输,如图中A的箭头所示。例如高通S4,其Krait CPU核心可以工作在最高1.5GHz下,而L2缓存的最高频率为1.3GHz,如果L2缓存处于频率更低的节能状态,此时核心就需要等待L2缓存完成传输。移动CPU异步多核和大小核的那些事_第4张图片

 

另一种情况下会损失更多的性能。当其中一个核心,例如CPU0的L1缓存没有命中,需要的数据在CPU1的L1缓存时,则数据需要从CPU1的L1缓存传输到CPU0的L1缓存,如图中B箭头所示。如果此时恰好CPU1的负担比较轻,处在较低的工作频率下,则需要很长的时间才能完成数据传输,而工作在高频的CPU0则被浪费在了等待中。移动CPU异步多核和大小核的那些事_第5张图片

 

在SiSoftware Sandra的多线程效率测试中也可以反映这一点,异步多核(图中紫色,Sony Xperia S,高通8660)相比同步多核Tegra2(图中绿色),核心之间通讯的延迟较高,带宽较低。当然,采用超线程技术的Intel Atom(图中蓝色),由于两个虚拟核心本身是一个物理核心,核心间通讯的延迟最低,带宽最高。移动CPU异步多核和大小核的那些事_第6张图片

 

“大小核”

那么,如何才能做到既能根据计算任务的轻重,动态的调节核心的能力,最大限度的节能;又避免异步多核架构在一些情况下性能损失的问题呢?ARM提出了大小核(big.LITTLE)的架构。移动CPU异步多核和大小核的那些事_第7张图片

 

在这样的一个架构中,包括了一个由“大核心”组成的集群,和“小核心”组成的集群。每个集群内部的多个核心,都是属于传统的同步频率架构,工作在相同的频率和电压下,因此不会出现异步多核损失性能的情况。“大核心”为高性能的核心,工作在较高的电压和频率下,消耗更多的能量,用于计算繁重的任务,典型的比如Cortex-A15。“小核心”性能虽然较低,但效率很高,典型的比如Cortex-A7,虽然其性能是A15的1/2,但耗电只有1/7,相比之下能效就是A15的3.5倍了。在一些计算压力不大的任务中,比如发个短信之类的,就不用劳驾性能强劲但又非常耗电的A15核心了,直接用性能足够,非常省电的A7核心就行。

大小核芯都采用相同的指令集,切换时以集群为单位。如上图,系统在任务较重时激活2个大核心,任务较轻时则激活2个小核心。它们之间通过特殊设计的总线相连,切换时总线自动将一个集群的状态传输给另一个集群,切换的时间非常快,小于20微秒。

实际上,在ARM提出大小核之前,nVIDIA的Tegra 3已经有这个意思了。Tegra 3包括四个高性能的A9核心(相当于大核心),和一个性能较低的,采用低功耗设计的A9伴核(小核)。当然那时候的设计还没有big.LITTLE完善,也没有特殊设计的缓存一致性互联,切换的时间也较长,达到了毫秒级别。

移动CPU异步多核和大小核的那些事_第8张图片

 

不出意外的话,三星Exynos 5440将会是第一个采用大小核设计的SoC。它将采用28nm HKMG工艺,集成4个Cortex-A15作为大核心,和4个Cortex-A7作为小核心,传言GPU也会回归到PowerVR,很有可能在Galaxy S4中使用。

你可能感兴趣的:(移动CPU异步多核和大小核的那些事)