自从年初三星发布Exynos 5 Octa(Exynos 5410)处理器以来,有关其真假八核心的争论就从来没有停止过,而它的出现对于原本就甚嚣尘上的多核无用论更是火上浇油。这种争议不仅在普通用户之间流传甚广,专业的开发人员也在研究它。XDA开发者论坛中,一位昵称“AndreiLux”的开发者就做出了他的一番解读。
【big.LITTLE大小混合架构】
Exynos 5 Octa处理器的理念基于ARM提出来的big.LITTLE架构设计,也是该技术的第一次实际展现。作为ARM的高级合作伙伴,三星走在了最前列,不过其它厂商也在进行研究,比如瑞萨也宣布了类似的产品。
所以说,这种处理器架构并不是三星设计出来的,而是出自ARM,也不是三星无聊的概念炒作,而是一种认真的技术。
big.LITTLE架构的核心就是既发挥Cortex-A7的超高能效,又利用Cortex-A15架构的超高性能。A7的性能不如A9,但是功耗也低得多;A15性能无敌,不过代价是功耗太高,至少在目前的工艺上不好接受。
喜欢自己倒腾架构的高通采取了另外一条思路,基于ARM指令集重新设计,但牺牲了一部分性能和功能来换取较好的能效。
至于如何衡量性能和能效,最关键的指标有两个:
IPC(每时钟周期指令数):代表着一种架构的性能水平,A15无疑是最好的,而且遥遥领先,然后是Krait 400、Krait 300、Krait 200、A9、A7、A8。
Perf/W(性能每瓦特):即性能功耗比,代表能效,最好是A7,然后是A9、Krait,A15远远落后。
三星之前已经毫不吝啬地公布了Exynos 5 Octa的架构和规格细节:28nm HKMG工艺制造,其中Cortex-A15部分面积19平方毫米,32KB一级指令/数据缓存、2MB二级缓存,主频200MHz~1.8+GHz;Cortex-A7部分面积3.8平方毫米,32KB一级指令/数据缓存、512KB二级缓存,主频200MHz~1.2+GHz。
A7部分的面积只有A15的四分之一,功耗则是只有17%。
【核内切换器(In-Kernel Switcher/IKS)】
Exynos 5 Octa虽然拥有八个物理核心,但展现在用户面前的只有四个。每个A15都有一个对应的A7作为搭档,但在三星公布的内核照片上看不到这种联系。
IKS扮演着调度员的角色,但它掌管的不是频率切换,而是在不同处理器之间切换。在负载变高的时候,从一条能效曲线蹦到另一条能效曲线上去,就这么简单。
而实现这种切换的是一个非常简单的内核驱动,根据测量到的工作负载来决定处理器的工作状态。举例来说,视频播放、文档处理、上网冲浪这些都交给A7,进入游戏后交给A15,退出来又还给A7。
总结下来有这么几条:
- 你不需要、也不可能同时拥有八个核心,事实上最多只会有四个同时工作。
- 如果负载很轻,也不需要多线程,big.LITTLE就会处于关闭状态,不会浪费功耗。
- 每一个配对的A15-A7都可以独立切换,并不是全部四个A15和全部四个A7进行切换,比如你可以有一个A15、两个A7正在工作,第四对则双双休息。
- 四个A15、四个A7各自有各自的频率层,可以运行在不同的频率上,也就是说,A15、A7可以频率不同,但是A15核心在同一时间却只会有一个频率。
【异构多处理(Heterogeneous Multi-Processing/HMP)】
这是big.LITTLE架构的另一个功能,但目前尚未实现。有了它,全部八个核心都可以同时启动。
这是一种极为复杂的工作状态,复杂度比简单的切换要高好几个数量级,需要系统内核调度器能够辨别A15、A7核心的不同。目前,Linux内核还做不到这一点,只会对所有核心等同视之。
Linaro工作组已经完成了HMP设计的第一阶段工作,会陆续将它们以补丁的方式打入Linux 3.8 Kernel。他们的工作就是让内核调度器聪明起来,可以追踪每一个处理进程的负载程度,以此智能地将负载分配给A7或者A15,而且切换的延迟要非常非常低,从而发挥全部核心的最大能效。
Linaro Connect峰会每几个月就会举行一次,关注这方面进展的开发人员不妨留意一下进展。
最后是结论:三星Exynos 5 Octa确确实实是一个八核心处理器,但现在并不是这么用的,只能说是4+4核处理器。