ARM的未来主力 深入解析Cortex-A12

  • 来源:微型计算机
  • 关键字:ARM,Cortex-A12
  • 发布时间:2013-09-14 13:01

  ARM公司的产品给人的印象一直都是够用就好,功耗领先。比如在CPU的设计上,功耗重要性领先于性能,产品性能功耗比很高,因此旗下Cortex-A8、Cortex-A7和Cortex-A9架构都颇受用户欢迎,用在手机和平板等设备上非常合适。在Cortex-A9之后,ARM又推出了Cortex-A15架构——这一次ARM针对的是更高的性能需求,因此采用了更复杂的体系结构。在ARM的路线图上,Cortex-A15将采用20nm甚至更先进的技术来生产,最终维持和之前产品同样的高性能功耗比。ARM自己的算盘自然打得很好,可惜无论是TSMC还是三星在对抗物理定律的过程中都不算很成功,20nm甚至28nm、32nm工艺都是一拖再拖,最终厂商在激烈的市场竞争中不得不使用28nm制程来生产Cortex-A-15。在仅有的几款以28nm制程生产的Cortex-A15处理器上,人们看到了令人惊讶的高功耗。Cortex-A15算不上成功,实际使用中这一架构的芯片在移动设备尤其是手机中甚至只能维持十几秒的全负载,就会由于温度过高而不得不降频。一时间,Cortex-A15让人们怀疑,ARM和芯芹厂商的路线是否出现了偏差?原来的高性能功耗比产品哪里去了?

  ARM对这件事情的解决方案是推出了“big.LITTLE”架构加以补救。虽然在平时的应用中“big.LITTLE”架构在功耗方面的表现比纯粹的Cortex-A1 5核心要好,但复杂的设计和最终无法解决的功耗问题还是让其发展陷入了低潮,Cortex-A15大规模进入手持设备在目前的情况下看起来已经不太可能。在这样的情况下,ARM开始考虑不再将目标定得如此庞大,比如动辄相对上代产品性能提升200%之类,而是在Cortex-A9的基础上进行改进,目标性能定在比Cortex-A9快40% - 50%的水平上,目的是在目前的工艺下也能维持ARM处理器高性能功耗比的优势,这就是Cortex-A12。从2014年开始,Cortex-A12将替代老1日的Cortex-A9以及不甚成功的Cortex-A15,成为ARM在高性能移动芯片发展中的核心产品。

  从ARM之前对Cortex-A9的发展规划来看,ARM实际上希望让Cortex-A9在市场上继续存在一段时间,直到工艺可以承受Cortex-A15、Cortex-A57等高端架构后,再慢慢淘汰Cortex-A9。为了达到这个目的,ARM也一直在改进Cortex-A9架构,分别推出了多个升级版本。比如Cortex-A9rl、Cortex-A9r4等。其中Cortex-A9r4是Cortex-A9架构的最强版本,它的工艺升级到28nm,最高频率也从之前Cortex-A9架构的1.5GHz左右大幅度提升到2.3GHz,从架构来看,Gortex-A9r4相比最老的Cortex-A9,大幅度改进了分支预测系统和内存系统,整体性能相比老的Cortex-A9,在同频率下应该有约30%的提升。

  ARM认为这样的架构应该可以满足时下需求并等到新的工艺成熟,但是广商和消费者并不这么想。Cortex-A9是不错,但这不意味着它没有可以改进的地方。即使使用28nm,Cortex-A9也可以做太多的改动。在Gortex-A9上,苹果发展出了自己的swift架构并应用在iPad 4的A6X上。虽然苹果没有公布swift具体的内核设计方案,但根据估计苹果肯定是看到了Cortex-A9孱弱的解码端,将其从原生Cortex-A9的2个Decode单元升级为3个,顺便把执行端口也做了一定的扩大,从之前的3个升级到5个,以方便同时执行更多的任务——苹果所作的事情,和高通的Krait很类似(而且这两家公司都不爱公布CPU架构设计)。高通也是加强的解码端,更进一步大幅提升了执行端。无论是苹果还是高通,都看到了Cortex-A9的弱点:孱弱的前端特别是分支预测能力很差,而后端的执行能力也很糟糕。毕竟Cortex-A9只有四个执行模块,分别对应两个整数乱序ALU、一个顺序FP/NENO单元以及一个顺序地址产生单元,这种执行能力在目前的应用环境下已经显得捉襟见肘了。

  ARM现在的任务就是如何精确地命中Cortex-A9的缺点,在功耗和晶体管数量、产品面积不增加太多的情况下,捉供一个性能功耗比更为令人满意的架构。经过几乎翻天覆地的彻底改进后,ARM拿出了Cortex-A12架构。

  从指令集角度来看,Cortex-A12采用的是ARMv7a指令集,而Cortex-A9是ARMv7。ARMv7a是ARMv7的升级版本,主要添加的内容包括40bit物理内存寻址以及Large Physical Address Extension(LPAE)等。支持ARMv7a的CPU的内存寻址空间可以提升至jITB,不再受到32bit处理器的4GB内存空间的困扰。在其他技术方面,ARMv7a可以支持单周期执行两条ARM指令的能力,NENO SIMD指令集可以操作128bit寄存器,NENO最高可以同时操作16个8bit数据,支持虚拟化技术,并采用-128bit的AX14总线(支持big.LITTLE技术的重要总线)。因此,采用了ARMv7a指令集后,Cortex-A12就可以和Cortex-A1 5、Cortex-A7等CPU做到全兼容组建big.LITTLE系统——这在Cortex-A9上是无法完成的。由于部分总线架构和基本指令集的差异,Cortex-A9没有办法搭配小核心,这也是其一大缺陷。

  除了在指令集上的差异外,Cortex-A12的整数流水线深度进一步扩展到1 0 -1 2级(Cortex-A9足8-11级),略微增加了提升频率的空间。整个Cortex-A12架构也更为“乱序”,更为乱序的架构在复杂指令执行时有更好的表现。除此之外,Cortex-A12的一个重要进步在于将L2缓存彻底内置,和CPU核心直接整合在一起,所有核心共享缓存,缓存拥有独立电压和频率层,这样既可以和CPU同步也可以和CPU异步,灵活性大幅增加。缓存的彻底改进使得Cortex-A12不再像之前Cortex-A9那样依靠32Bytes的“小水管”和CPU核心进行连接,也不再需要操作系统单独支持,整个缓存体系的改变用“翻天覆地”来形容并不为过。

  其他功能方面,由于目前浮点计算要求增多,NENO指令集不再是可选单元,而变成了必选,NENO单元和vFP单元提升到了第四版,这对浮点性能有很大帮助。核心数量方面,每个Cortex-A12核心集群最多可以支持4个核心,但是依靠ARM的总线和同步设计,可以支持多个CPU核心集群,这样厂商可以方便地搭建出更多核心处理器(联发科笑了),比如8核心甚至是1 6核心等。

  从上述改进来看,整个Cortex-A12架构几乎将Cortex-A9架构中的很大一部分内容推倒重来,可以说Cortex-A12凡乎没有继承太多Cortex-A9的内容了。非要牵强地说Cortex-A12是Cortex-A9的改进版,还不如说Cortex-A12是Cortex-A15的精简版,毕竟后两者在指令集上还是相同的,亲缘关系更近一些。

  由于ARM没有给出特别详细的架构内容,因此这部分内容的架构图和分析来自于国外著名网站Anandtech。和Anandtech之前所有的评测一样,他们给出了一个概略图,用于描述Cortex-A12和Cortex-A9之间的差异。

  在Anandtech的图示中,前端部分Cortex-A-12使用了两个Decode单元。这和Cortex-A9是一样的,比Cortex-A15的3个要少了1个。根据ARM的官方说明,他们认为Decode部分是对整个架构功耗和性能影响最大的组件(原话为:解码宽度对于机器性能和功耗有着本质上的影响力)。Cortex-A12的目标并非性能而是更优秀的性能功耗比,因此配置2个Decode单元已经足够了。

  此外,Gortex-A9的另一个重要问题在于分支预测单元过于薄弱。之前的Cortex-A9后端规模也没有这么大,因此分支预测单元也是够用就好。Cortex-A-12上的流水线更深、计算资源更丰富,分支预测单元就显得更为重要了。好在ARM直接将更高一级的Cortex-A53的分支预测单元经过重新调整后“下放”给Cortex-A12使用,相比Cortex-A9也算得上是大幅改进了分支预测能力不足的问题。

  接下来的Rename&Dispatch部分,为了应付增大的后端,Cortex-A12设计了2个Rename&Dispatch单元,比Cortex-A9多了一倍。这样做的目的在于Cortex-A12大幅加强的计算部分。

  在看Cortex-A12的后端计算部分之前,先来看Cortex-A9的后端设计:Cortex-A9在Rename&Dispatch后,只设计了1个指令排序单元(lssue Queue),却要面对后方的4个功能模块(前文也有提到的:2个整数乱序ALU、1个顺序FP/NENO单元以及1个顺序地址产生单元),显然是捉襟见肘的。Cortex-A12在这方面就很大方,3个指令排序单元面对6个功能模块,各处理2个,不但大幅降低了指令排序单元不足导致的等待和效率低下的问题,还进一步扩大了计算规模,这也是Cortex-A12性能提升的最根本因素。Cortex-A12的三个指令排序单元分别跟着2个乱序整数ALU、2个乱序地址产生单元和2个乱序的FP/NENO单元——没错,Cortex-A12还将Cortex-A9上原本为顺序的浮点和地址单元改成了乱序执行,配合更为强大的揩令排序单元,进一步加强了CPU的性能。

  凭借计算单元和指令排序单元的改进,Cortex-A12就能轻易获得相对于Cortex-A9 30% -40%的性能提升。不过这也不是没有代价的。这使得Cortex-A12在同等工艺下的芯片面积相比Cortex-A9增大了约40%。比较下来,Cortex-A 15在28nm工艺下单核心面积为2.7mrr12,比Corte×-A9的28nm单核心面积的1.1 5mm2大了134%。即使Cortex-A12的面积提升40%后,也仅有1.6mm 2,只相当于Cortex-A15的60%,依1日不算大核心。当然,相比Cortex-A7在28nm工艺下0.45mIT12的核心面积,Cortex-A12还是大了不少,不过相应的性能也会强很多。性能方面,Cortex-A9目前的性能指数是2.5DMIPS/MHz,Cortex-A12按照ARM的官方数据会达到3.ODMIPS/MHz,相比Cortex-A15的3.5DMIPS/MHz要低了大约1 5%左右,但是比Cortex-A9高了大约20%。需要注意的是,DMIPS/MHz只是理论数据,它只能表示架构本身的指令处理能力,井非实际测试的性能表现。从之前CortexA-12的架构改进来看,GortexA-12在实际使用中相比CortexA9应该会有更为显著的性能进步。

  在分析完产品情况后,另一个需要关注的问题就是Cortex-A12的上市时间了。ARM大约在今年6-7月间完成了Cortex-A12的架构设计并向外公布。根据传统来看,架构设计转化为实际的产品,大约需要10 --12个月时间,即使ARM和台积电在芯片生产上做足了准备,比如充分利用各种各样的标准库、简化中间步骤等,Cortex-A-12首款产品的上市时间都不会早于201 4年6月。从_般情况来看,在芯片完成生产后并装备到手机中,即使是高通这样提供了完整、充分解决方案的厂商,最快也需要1个季度来解决生产、软件等问题,普通厂商至少需要2个季度,才能开始生产基于Cortex-A12架构的产品。

  这就意味着,用户接触到采用Cortex-A12处理器的手机最快也需要等到2014年第三季度甚至201 5年初了。根据目前的发展情况来看,在大约一年多时间后,TSMC应该已经可以较为成熟地生产20nm的产品,这样的话Cortex-A15也有可能降低它令人难堪的高功耗,并顺利进驻手机等平台(Cortex-A57其实也在蠢蠢欲动)。英特尔也应该在Atom上成功推出22nm FinFET的产品,高通甚至开始准备全新的骁龙架构,苹果也应该发展出了更替swift架构的新CPU-在如此多新CPU的环伺下,Cortex-A12的机会在哪里?

  性价比,显然这三个字会让Cortex-A12获得厂商的青睐。根据ARM的规划,Cortex-A12除了在28nm上使用外.ARM还联合了诸如GLOBALFOUNDRIES、TSMC等厂商规划20nm的产品。如果Cortex-A12使用了20nm工艺的话,面积有望进一步缩减大约60%,这样可以彻底抵消由于规模变大带来的面积增加,以较小的面积和不错的性能占据中低端市场。可以预见的是,在一年多以后的中低端市场,Cortex-A7、Cortex-A5等架构很可能由于性能不足等问题不再被消费者和开发人员接受,这个时候Cortex-A12再加上专为入门级设计的Cortex-A53就能很好地充当起替代者的角色。此时的Cortex-A12实际上也是多能的:它—方面可以使用更优秀的工艺、达到更高的频率在中端手机上使用;一方面也可以在老工艺、低频率下提供给入门级市场的用户。

  总的来说,Cortex-A12并非面向极端性能的产品,极端性能市场还有Cortex-A1 5甚至更新的Cortex-A57,Cortex-A12是一款均衡的、以优异的性能功耗比为重要卖点的架构,它面对的将是普罗大众。经过大幅度改进后,Cortex-A12基本解决了之前CortexA9上的诸多问题,ARM设计出了一个很精彩的、面向未来的架构。它将代替Cortex-A9茌目前市场上的主流地位,为未来一年后的普通用户,提供更强的性能和更优秀的使用体验。

  文图|张平 黄博文

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: