当前位置:首页 > 智能手机 > iPhone > 评测
64位的长线布局 苹果A7处理器剖析
  • 2013-9-28 17:36:06
  • 类型:原创
  • 来源:电脑报
  • 报纸编辑:陈小豆
  • 作者:
【电脑报在线】iPhone 5S发布,新一代的A7芯片再度成为焦点,这颗全新的64位处理器迅速引发热议,如此早地转移至64位架构是否必要?转移之后的性能是否真会因此提高两倍?面对这些核心问题,苹果A7芯片和以往的A6/A5一样,仍旧保持神秘,本文则力图为读者们关注的问题提供一个启发性的视角。

  iPhone 5S发布,新一代的A7芯片再度成为焦点,这颗全新的64位处理器迅速引发热议,如此早地转移至64位架构是否必要?转移之后的性能是否真会因此提高两倍?面对这些核心问题,苹果A7芯片和以往的A6/A5一样,仍旧保持神秘,本文则力图为读者们关注的问题提供一个启发性的视角。


  
部署64位 苹果并非第一个
  事实上苹果并非第一个针对嵌入式设备设计64位处理器的公司,ARM发布ARM v8这套64位指令集架构比苹果早了两年,推出 Cortex-A50系列的时间比苹果早了一年,而Intel的动作也不慢,上一代凌动处理器,亦即Atom 2XXX系列的部分型号就支持64位,而最近刚刚推出的Silvermont架构也是如此。
  但ARM与Intel都并未将设计上的领先转化成大规模量产的消费电子产品,苹果则凭借自己的垂直整合优势,迅速建起官方APP、操作系统支持、CPU架构三根64位顶梁柱,又手握iPhone 5S这种明星机型,才于一众竞争者中拔得头筹。
  
为什么要做64位移动芯片?
  苹果如此高调而迅速地将手机CPU转移至64位阵地,也引发了不少人对于其必要性的怀疑。将系统迁移至64位真的是多此一举吗?非也。对于64位迁移的问题,业界的方向是清晰且一致的,苹果并非异类,只是顺应潮流。我们从ARM与Intel在64位架构上所做的动作就能看出。
  迁移64位的最大动机,一般认为是解决地址空间不足的问题。将地址空间扩张后,APP将能够使用大于4GB的物理内存,这一变化无疑将减轻程序开发人员所承受的内存压力,从而有助于大型APP的开发和性能表现。Android阵营的旗舰机型已经开始配备3GB的内存,触及32位的寻址界限相信不会很远。
  但对于iOS系统则不然,AnandTech的评测显示iPhone 5S的内存容量仍然停留在1GB,因此迁移64位的举动只是类似于提前进入阵地的战略准备,PC从32位到64位用了数年时间,苹果想在移动上做这件事情也并非一夜之间,广大的APP开发社区也需要时间向64位迁移。
  iPhone 5C以及之前的iPhone 5和iPhone 4都需要32位软件,所以除非iPhone 5S卖得非常火,iOS生态内想推64位应用还是有一定难度的。苹果可能还需要至少两代产品才会将内存容量提升至4GB以上,因此64位的主要好处可能无法在短期内显现。


   

64位架构的性能变化
   iPhone 5S的内存容量没有变化令许多人失望,从而悲观地认为64位架构的性能根本无法发挥。这种担心不能说全无道理,但是颇有些多余。单纯从32位迁移至64位并且不增加内存容量也会对性能带来显著影响,这份影响正是来自于指令集架构的变化。
   A7所部署的指令集架构是64位定长的ARMv8 RISC指令集,而先前使用的ARMv7与此性质类似,但每一条指令都只有32位长度。如何设计这32位的编码方案是指令集架构设计的核心问题之一。一套好的指令集架构允许编码多种模式的许多条指令,这要求操作码字段足够长,同时还要操作尽可能多的通用寄存器,因此寄存器字段也不能过短,而殿后的最终字段一般将携带大的操作数或是地址,这就要求操作数\地址字段也要有相当的长度。这些字段相互竞争32个比特位,在字长不够的情况下容易顾此失彼。
   例如,编码64条指令需要6个二进制位,再编码32个通用寄存器需要另外5个二进制位,因此两个源寄存器和一个目的寄存器将占用15位,此时32位的指令长度里只剩下32-6-15=11位,若再加载一个16位的操作数\地址,编码空间就不够用了。
   在新一代ARMv8指令集上,ARM终于转向64位,由于指令字长翻倍,编码空间大大增加,通用寄存器数量从原先的13个增加到30个。更多的通用寄存器使得程序load-store的数量减少,编译器也有更大的空间去进行诸如循环展开之类需要较多寄存器的代码优化工作。借着通用寄存器数目翻倍的契机,ARMv8还进行了函数调用约定的调整,以往的参数传递需要通过堆栈来进行,但在ARMv8上允许使用8个通用寄存器进行快速传参,这将大大加速函数调用的过程。指令编码长度的增加带来的另一个额外效应就是长数据类型的算术操作不再需要打散,更多的长数据\地址能够直接加载到指令编码的字段内部,由此加速执行。
   目前针对ARMv8 64位指令集架构的这些特点尚未见到针对性的量化分析,不过当年AMD率先从X86转向64位,寄存器的增加给处理器猛地提了速。2006年AMD与美国东北大学的研究者联名发表的测试数据显示,函数调用的加快使得Athlon X2 4400+在SPECint 2006中的h264ref编码测试加速了35%以上,大量使用长数据算术的libquantum量子计算机模拟测试也有同样幅度的提高。
   值得一提的是,转向x86-64使得SPEC测试的内存占用平均增加25%,缓存请求率也有大幅度提高,而iPhone 5S在转向64位的同时却保持内存容量不变,这一做法是否会对性能带来负面冲击还有待系统测试的检验。
  测试数据显示,A7的主频与A6相同,保持在1.3GHz上,但是同频率下的性能有着一倍左右的提高,仅小幅落后于可睿频至2.4GHz的Intel Silvermont 架构Atom Z3770,可以说这个性能是非常不错的。Silvermont架构的CPU性能已经有当年桌面Core架构CPU性能的一半,不得不让人感慨移动CPU行业的进步速度。
   
延伸阅读
M7协处理器与GPU 领先依旧
除了向64位的迁移,iPhone 5S内部的处理器还有着其他方面的变化,其中之一就是M7协处理器的引入。随着智能手机集成度提高,功能加强,环境感知计算的概念也被提出,例如iPhone可以通过加速度计感知用户目前是在步行或者开车,并指示iOS避免自动加入路上的WiFi热点,然而针对移动计算设备的功耗分析显示,APP追踪用户动作时将持续消耗电能,特别是地图类应用,这对于智能手机续航时间已形成负面影响。苹果公司此次引入M7协处理器相信将较好地解决这个问题。
  新引入的M7协处理器并非A7 SOC芯片的一部分,而是以一颗微控制器的形式独立存在于主板上靠近A7的位置,经过Chipworks拆机确认,M7的真身为NXP LPC18A1单片机,其内部核心为ARM Cortex-M3处理器,这颗芯片将统一接管加速度计、陀螺仪和指南针传感器送来的数据,在不唤醒A7的情况下负责所有相关动作的处理。
  Cortex-M3是一个非常简单的CPU核心,只有三级流水线结构,功耗比A7有着数量级上的差距,将它独立在A7之外有助于减少A7的活动时间,从而延长续航。这也解释了为什么在电池没有大幅增加的情况下,iPhone 5S官方公布的续航时间却有所延长。
  从iPhone 4S开始,iPhone的GPU也在保持着跨越式的步伐,根据AnandTech从开发文档上的信息推断,此次iPhone 5S装配了代号为Rogue的PowerVR 6系列GPU,型号为G6430,这种GPU的配置在目前PowerVR 6系列全阵营中排行第二,拥有四个计算集群,理论每周期单精度浮点性能为256FLOPS,执行架构向NVIDIA、AMD的桌面GPU靠拢,改成了全标量架构。性能提升幅度在一倍上下,领先于LG G2当中装配的Adreno 330。


苹果的发布会展示的《无尽之剑 3》的画面效果,带来4倍画面细节的提升,正是仰赖于这颗GPU和OpenGL ES 3.0的支持


总结
向64位迁移需要开发者的跟进
可以说A7确是一个设计成功的芯片,移动设备上的大容量内存迟早会来,所以苹果的先下手为强非常明智,同时,64位架构恰好配合其他的芯片改动(指纹数据的硬件加密、M7协处理器)。但苹果向64位的迁移,还需看广大开发者社区的跟进。考虑到iPhone 5S活跃在产品线上的时间只有两年,64位架构的全部优点可能将无法在A7身上全部体现,A7作为苹果设计的SOC中承上启下的关键一步是否能够做好交接,我们拭目以待。 
本文出自2013-09-30出版的《电脑报》2013年第38期 D.智能手机
(网站编辑:pcw2013)


我来说两句(0人参与讨论)
发表给力评论!看新闻,说两句。
匿名 ctrl+enter快捷提交