谁的功劳?
以拆机闻名的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平米的小居室?答案当然是“取决于要求”。
如果是土豪拿来当家庭影院,显然你要把房间造得大一点;如果你要将房子出租给大学生,自然房间自然小一些、多一些为妙。嗯,现在我是甲方,我命令你在这两个设计中选择一个更“高级”,更“先进”,或者更“正确”的进行设计,你的答案是啥?(回答当然是:这家伙脑子坏掉了吗?)