Cortex-A15架构解析:它为什么这么强(转)-飞外

今年的新手机趋势无异是全面向四核靠拢,不过同样是四核,在实际的性能上其实是千差万别。例如针对入门级主流市场的四核手机普遍采用的都是Cortex-A7以及 Cortex-A9 级别的CPU内核,这类内核性能、成本以及发热都会较低,因此在入门市场上大行其道。
而在高端智能手机中则出现了一些新的变化,除了去年就已经崭露头角的高通Krait系列架构四核外,ARM正统的Cortex-A15也开始走上了四核手机的舞台,例如三星的Exynos 5 Octa、NVIDIA 的Tegra 4。
Cortex-A15是ARM Cortex-A家族中目前最强劲的CPU内核架构,发布时间为2010年,德州仪器是最早(2011年)投产基于该架构处理器(型号为OMAP 5)的授权厂商。
和ARM的Cortex-A7、Cortex-A9等微架构相比,Cortex-A15有很大的不同。
A15和A9同样具备乱序执行,但是Cortex-A15具备(两倍)的指令发射端口和执行资源,指令解码能力也要高出50%,动态分支预测能力更强(采用了多层级分支表缓存),指令拾取带宽更强(128 bit vs 64 bit),这些都能让A15的流水线执行具备更高的效率。除此以外,A15采用了VFPv4浮点单元设计,能执行FMA指令以及硬件除法指令,相较而言A9的峰值向量浮点性能基本上只有A15的一半。
不过在现实中,A15 的对手应该是高通自行设计的 ARMv7A 兼容处理器架构 Krait。高通对 Krait 的架构细节透露并不是很多,大致上就是 3 个指令解码端口(和 A15 一样)、7个指令发射端口(A15 是8个)、4个发射端口(A15 是8个),具备4KB+4KB的单周期时延L0 Cache设计。
如果采用老掉牙的Dhrystone DMIPS/MHz作为性能衡量指标,Krait 是3.3,A9 是2.5,而A15则是3.5,从纸面上看Krait的确非常适合作为A15的对手。
不过Dhrystone的缺点是显而易见,它是完全可以塞进CPU的L1 cache里执行,这就意味着无法以此对L2 cache(A15是一体化设计,Krait是分离式设计,一体化设计可以减少内存交换导致的大量时延)、乱序执行的硬件效率/复杂性、内存子系统单元(A15的内存单元可以实现在一定条件下预执行一条加载指令,而Krait能否具备这样的能力尚不清楚)等诸多体系架构区别对实际性能的影响作出有价值评估。
当然,ARM采用的DMIPS指标实际上并非28年前的那个Dhrystone,而是来自EEBMC Coremark(其实 Coremark 就是前者的改善版本,主要是为了减少预优化、对测试有比较严格的规则),但是CoreMark同样可以塞进现今大多数处理器的L1 cache里,Dhrystone不能反映现今移动设备真实应用的问题在这里依然存在。
由于应用环境日趋复杂,要正确评估一个移动设备处理器的性能变得越来越复杂,因为现在的移动设备跑的网页浏览、三维游戏、音视频、人工智能等都不可能可以完全塞进L1 Cache里,因为这些应用牵涉到大量的数据处理。
这时候,人们在台式机性能评估上学到的经验和测试办法就可以在移动设备上采用了。对CPU测试来说,最合理的测试方式是采用多种计算规模的真实应用源代码以本机代码进行编译再进行测试,在这样的情况下移动设备的计算单元、内存单元都得以充分考验,测试结果最具参考价值。
能够获得业界(计算机工业、学术科研)官方认可的CPU测试当属SPEC.org的SPEC CPU,它就是采用源代码方式,让测试人员可以编译为本机代码来测试,许多处理器在研发伊始就采用SPEC CPU作为最重要的性能评估指标。
SPEC CPU的最新版本为CPU2006,但是CPU2006针对的是当前的台式机、工作站、服务器处理器应用环境,内存容量(CPU2006 支持多线程测试,因此要求的内存容量相当高,8线程处理器用16 GB内存也是有点勉强)和自身存储空间(未编译时就要数GB空间,编译后就要占用1xGB了)要求都较高,因此采用CPU2006对目前的移动设备来说是不太现实的。
SPEC CPU是每隔几年就更新一次,在CPU2006之前的旧版本为CPU2000,它的speed整数性能测试完全可以在1GB级别的移动设备上运行,在以前甚至有一些 CPU2000的测试被移植到GPU上做加速性能测试。
ARM阵营极少公布SPEC CPU测试结果,这当然也是有原因的,因为在过去的不少时间里,ARM针对的设备大都只有几百兆内存空间,塞进操作系统后,留给程序运行的空间就更少,此外由于省电先决的考量ARM处理器的性能其实真的不怎么样。
不过有意思的是,今年ARM阵营里的NVIDIA在发布Tegra 4的时候公布了CPU2000INT的测试结果:在1.9GHz 频率设定的NVIDIA参考平台里,Tegra 4的SPEC PU2000int_base 为1168。这个测试结果相当于2003年的情况,里面包含很多图文的信息,刷的时候速度快的处理器能够很快地显示出内容,而速度较慢的处理器则需要等待一段时间。
刷完以后CPU总的占有率会骤然降低,之后都是一些单线程的程序让个别内核处于较饱满的负载状态。
真正需要CPU高负荷的时间占总时间的比例很低,甚至连1%都远远不到,但是这个时间虽说很短,却往往是影响用户体验的一个非常重要的因素。
因此,CPU的峰值性能的重要性毋庸置疑。此外,现在有一种趋势,移动处理器面对的屏幕分辨率甚至普遍比笔记本电脑甚至台式机更高,这意味着界面的处理压力越来越高。
界面的刷新和网页刷新的情况类似,对CPU的性能要求高,但是时间短,用户的体验感受很直接。
因此更高的处理器速度也将是一种硬性的需求,而不是可有可无的摆设。但是对于性能和功耗的评估需要有理性的分析,有一些人一味强调拷机软件下的CPU频率过热降频情况对手机用家来说其实是某种程度的误导,这和实际的应用情况完全不一样。

多核处理器的意义更多在于多任务的情况。Android和Windows都是典型的多任务操作系统,多核处理器在处理多任务的时候大大提升了多个程序同时运行时的处理和响应速度。
不过,多任务对于核心数量的需求是有限的,PC CPU和移动处理器主流的核心都是两到四核,这不是偶然的。
虽然系统中有多个线程和多个任务同时存在,但是出于活跃状态的往往也就少数几个,因此更多的CPU核心意义是不大的。现在有些厂商推出的所谓八核Cortex-7的处理器,在绝大部份的情况下性能一定还不如双核Cortex-A15。
ARM推出A12就等于否定A15?

ARM是一家非常纯粹的设计公司,它并不向终端消费者、厂商出售任何处理器,而是提供授权给第三方公司,让其自行设计或者堆砌出自己的处理器。
这样的好处是它可以节省掉一大笔行销上的资源,ARM设计一款处理器内核并不会产生任何库存压力,它只消告诉厂商这个处理器如何做对接以及可以用来干嘛就可以了,接下来就是等着收钱了。
在这样的情况下,ARM可以做到非常灵活多变,当看到市场上(也许是将会)存在空挡时候,就能很快推出相应的 产品 。按照时间来看,Cortex-A12的推出其实就是瞄准了Cortex-A7/A53和Cortex-A57之间的空隙,属于未来一年后的中端偏低市场的主力。
在Cortex-A12推出后,有些人就马上下结论,这代表了ARM对Cortex-A15在手机应用上的否定。
如果以big.LITTLE布局来看Cortex-A12属于ARM产品规划中的big,也就是偏向性能先决的内核,目前确定的制程包括了GlobalFoundries的SLP-28和台积电的28 HPM。Cortex-A12和Cortex-A9一样是双发射乱序执行,但是和A9相比,A12的乱序执行不仅限于整数流水线,而是浮点流水线和内存操作都具备了乱序执行。
此外 A12实现了VFPv4浮点单元并且将Neon向量单元列为标准配备,Coremark测试可以做到单核3.0 DMIPS/MHz,相比之下A9 和A15 分别是2.5和35。
所以很明显,A12性能处于A9和A15性能之间,这对ARM来说是很正常不过的事情。事实上ARM在发布A12的同时还更新了A9,提到A9 r4版的性能更新,按照幻灯片,对分支预测和内存子系统作改进后的r4在IPC 上能做到初版A9 的1.4倍左右。

Cortex-A9至今已经有多个版本,见上图的r1-r4描述
如果单看IPC的话,A9 r4是不是和A12很类似?那如果按照某些人的思维,A9 r4岂不是可以用来否定A15?
目前A9 r4已经在NVIDIA Tegra 4i里面采用,按照NVIDIA的数据,在BBench中相比A9 r1有25%的性能提升,而在SPECint 2000中也有15%的性能提升,基于Tegra 4i的终端很可能会在明年第一季度就能看到,而A12还没有任何厂商宣布采用,A15即使退下火线也未必是因为A12的出现,因为A15的定位接替者其实是基于ARMv8的 A57。
余论与后记

看到这里,相信大家已经基本了解了Cortex-A15大致架构和性能、定位,而配备四核Cortex-A15的三星Galaxy S4手机已经取得了非常瞩目的成功。
不同厂商、不同型号的四核Cortex-A15处理器在很多方面都存在不少的差别,这些差别或因为设计意念、经验,或因为各自在某领域的优势,或因为产品定位,或因为制程,这些差别让我们不能简单地类比,例如直接把某型号的Cortex-A15四核处理器在性能、功耗的指标类推到另一型号上。
手机性能测试是比较特殊的,它是一个封闭的东西,从硬件角度看,绝大多数情况下你不能把里面的东西卸下来拿到另一部不同型号的手机里测试来验证不同硬件组合下的影响,从软件角度看,目前缺乏足够的工具和经验了解在测试的时候到底发生了什么,到底是广谱的优化还是定制优化非知情者是很难了解的。
对于手机来说,单线程的性能同样不容忽视,这和多线程代码编写的难度有直接关系,现实中许多应用还是基于单线程的,在此时Cortex-A15的单线程性能优势就能体现出来。
在日常应用中没有多少应用会像拷机程序那样长时间持续的四核全部跑满,尤其是在手机应用中,在手机测试中采用这类程序到底有多少意义是令人怀疑的,手机用家真的会整天没事呆看手机跑StabilityTest之类的东西吗?
Cortex-A12上市的时间点可能是明年下半年以后的事情,它的性能定位就是接替Cortex-A9,而Cortex-A15的接替者将会是Cortex-A57,Cortex-A12在此时(A57时代)扮演的就是中阶偏低的角色。
总之,我相信在未来的一年里,Cortex-A15四核版的手机将会越来越多,相应的芯片型号也会层出不穷,其中应该不乏成功的产品

http://laoyaoba.com/ss6/html/06/n-435506.html