原来苹果A7处理器是这样用双核击败八核的
扫描二维码
随时随地手机看文章
随着苹果在iPhone5s上祭出“业界首枚64bit手机处理器”,果粉们似乎找到了新一轮嘲讽Android的武器:Anandtech等权威媒体测试表明,运行频率仅1.3GHz的双核A7处理器,性能堪比安卓手机中的四核Cortex A15处理器。“Android就知道拼硬件,四核八核做出来,还不如我家苹果双核快,丢脸不丢脸?”
实测:双核秒杀四核/八核
好吧严肃一点,让我们先把得意洋洋的果粉放到一边。事实上A7处理器“以双核战翻四核”这个近乎于神话的结果本来也很有趣,这是否是苹果远远抛开业界设计水平的佐证呢?要知道在如今的处理器设计中,在同样的功耗前提下即便是差距大如英特尔vs ARM,也几乎不可能做到一个核心对抗对方两个核心,更别说是ARM阵营的内部斗争了。
A7处理器兼容下一代ARMv8 64bit指令集,核心架构由苹果自行设计
跑谷歌Octance Java这种单线程性能需求强劲的代码,iPhone 5s把几乎所有安卓手机都轰成了渣
运行Sunspider Javascript测试程序时也获得了类似结果,GS4大概只有iPhone 5s一半的性能
诚然,Apple A7是一枚设计优秀64bit的处理器,64bit带来的额外寄存器资源如果优化得当,应用程序可获得近乎翻倍的性能提升,但即使在现有的32位环境中,iPhone 5s表现依然抢眼,苹果是如何做到这点的?
应用程序64位化之后,往往会带来一些不可思议的性能提升,图中iPhone 5s运行64位AES加密时性能较32位提升了825%
要解答这个问题,我们必须梳理一个思维盲区:直到现在,唯性能论者的潜意识里,各家厂商的处理器核心都是差不多的,因此超过一倍的性能差距往往会让人觉得不可思议。但问题是:不同处理器的核心架构真的差不多吗?或者我们换个问法:熊的力气超过人类两倍,这有什么奇怪的吗?
谁的功劳?
以拆机闻名的Chipworks日前公布了A7处理器的核心分析图,这个问题总算得到了明确的答案。由于A7采用的是三星28nm HKMG LP工艺,为了更好的对比,我们找来三星自家的Exynos 5410,两枚处理器的核心X射线透视图如下:
显而易见,苹果A7的CPU虽然是双核设计,但是它消耗掉的芯片面积(或者说晶体管数量)与四核Cortex A15几乎相等。考虑到核心数量的设计只是逻辑层面的差异,半导体芯片运算能力的本质来源依然还是晶体管数,这也就意味着,苹果A7最终表现出与四核心Cortex A15等同的性能是应该的,而不是不可思议的。
苹果A7处理器单个核心的面积就接近两个标准的ARM Cortex A15处理核心,因此A7的单线程性能比Cortex A15强完全正常。同时,由于逻辑核心只有两个,A7的多线程性能比四个Cortex A15弱也是情理之中。
总体来看,Apple A7的设计对于晶体管的利用率反而低于Cortex A15,综合单线程和多线程的性能,A7在使用了相同晶体管的前提下并没有实现同等的性能,当然这也是正常的,大而少的设计本身就存在难以避免的浪费。
设计思路的差异
实际上,苹果A7处理器选择的是消耗Cortex A15两倍的资源,去实现一个单线程好于Cortex A15 50%-70%的设计。这样的选择是基于IOS系统的需要——iOS是一个对于后台任务限制很严格的系统,同时也是一个高度私有化、高度优化的封闭体系,在这样的体系里苹果认为单线程性能更加重要一些,因此作出了这样的选择。
而Android是一个允许后台程序随意执行和切换的开放系统,在这样的系统下对于并行度的需求要明显高过IOS,所以Android走上了多核心之路,而IOS坚持大核心战略。这样不同的需求决定了不同的设计风格,自然也导致了在不同的测试条件下拥有不一样的表现,而这一切本质上都是正常的:在相同的半导体工艺环境下,没有任何人用更少的代价实现了更多的性能,这一切只是取舍。
那么,谁的设计更先进,或者说代表了谁的思路更正确?要回答这个问题,你可以假想自己是一个建筑设计师。你手头有100吨混凝土,你是用它去造两间80平米的大客厅,还是用它去造10个20平米的小居室?答案当然是“取决于要求”。
如果是土豪拿来当家庭影院,显然你要把房间造得大一点;如果你要将房子出租给大学生,房间自然是小一些、多一些为妙。嗯,现在我是甲方,我命令你在这两个设计中选择一个更“高级”,更“先进”,或者更“正确”的进行设计,你的答案是啥?