[导读] A15和A9同样具备乱序执行,但是Cortex-A15具备(两倍)的指令发射端口和执行资源,指令解码能力也要高出50%,动态分支预测能力更强(采用了多层级分支表缓存),指令拾取带宽更强(128 bit vs 64 bit),这些都能让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年第四季度 SPEC.org 上公布的AMD K8 Sledgehammer 2GHz测试结果。
NVIDIA还进行了在小米手机2(采用高通 Snapdragon S4 Pro 即 APQ8064 1.7GHz)上的CPU2000测试,并且根据高通公布的S800相对S600在IPC(每周期指令)和频率上的变化幅度而估算出来的S800的CPU2000测试结果:
从图表来看,S600的CPUINT2000_base测试结果相当于Tegra 4的一半不到,这在很大程度上反映了Cortex-A15相对Krait系处理器的真实应用差别。
需要指出的是,双方的测试平台本身也是有一些影响的,例如小米手机2执行这个测试的时候,CPU频率是否存在降频现象,NVIDIA对此没有说明。
一般来说,像APQ8064在四核全速运行的时候,会在一段时间内由于过热而导致频率从最高的1.7GHz开始下降。当然,NVIDIA在这里公布的是speed模式下的CPU2000INT测试结果,这个模式下是单线程的测试,只有一个CPU内核会被使用。
比较遗憾的是高通对这个测试结果尚未提出异议(据说高通对于处理器性能的孰高孰低并不十分看重,他们戏称是卖基带送CPU),而CPU2000的配置对一般人来说是相当复杂的事情,所以这个测试暂时没有第三方使用同样的平台测试佐证。
威盛电子在发布Nano X2处理器的时候曾经公布过一份文件,里面也有采用CPU2000对Nano X2 1.2+GHz和Atom D525进行测试,其中gcc编译器出来的CPU2000 INT成绩分别为799和582,采用Intel编译器出来的成绩分别是955和725。
NVIDIA的Tegra 4的CPU属于ARMv7A指令集,因此编译器很可能是armcc或者gcc,NVIDIA新近收购的PGI是一家老牌编译器厂商,也许它能提供内部测试版给 NVIDIA,只是PGI过往从未发布过ARM系编译器。
到这里,大家应该对Cortex-A15的架构特点以及和它的一些竞争对手在性能上的区别有大致的了解,不过这样的旗舰级处理器在智能设备的实际应用情况又如何呢?
有采用四核Cortex-A15手机了吗?
这个问题其实来自于一些人的猜测,我们看见一些文章认为Cortex-A15的性能高但是功耗大,并不一定适用于手机。
这个问题放在一年前的话可能会有各种不同的答案,但是现在是2013年8月下旬,答案已经非常清晰:已经有采用四核Cortex-A15的手机上市,而且会有更多的采用Cortex-A15的手机上市,这也为Cortex-A15是否适用于手机的争论画上了一个句号。目前,明确可用于手机的Cortex-A15架构的四核移动处理器主要有两种,一种是三星的Exynos Octa,另外一种是NVIDIA Tegra 4。
三星公司在4月27日上市的Galaxy S4有多个型号,但是从处理器来分,就分为两种机型:高通Snapdragon 600和三星Exynos 5410。
S600其实类似于去年大红大紫的APQ8064,CPU微架构为Krait 300,相对APQ8064的Krait微架构来说,它增加了硬件数据预取器,能预先将数据从内存中抓到L2 cache里。除此以外Krait 300还改善了分支预测的准确度,这些变化能改善Krait 300的IPC(每周期指令)大约15%,加上最高频率提升至1.9GHz(取决于手机厂商,像HTC One就选择了较低的或者说和APQ8064上限一样的1.7GHz),因此可以认为S600的CPU性能比之前的S4 Pro最多提升了大约28.5%左右,更接近于Cortex-A15的性能,不过它使用的制程和S4 Pro一样依然是28nm LP,这个制程没有在漏电流上作优化,因此在耗电方面S600比S4 Pro更大。
为什么三星不选择单一型号处理器的方式呢?首先三星肯定要支持自家研发的处理器,这是毫无疑问的,因此基于Cortex-A15的E5410自然成了配置之一;其次是三星作为一家韩国公司,同时也是一家跨国公司,产品需要卖向全球,有些的确已经迈向了4G LTE,有些则还是3G时代,面对世界各地的通信制式、合作运营商的要求以及全球行销的潜规则,高通方面的产品是不得不考量的,因此在这里也把定位比较接近的S600作为另一种配置以支持LTE。
三星Galaxy S4 GT-I9500主电路板正面
三星Exynos 5410管芯图,深色部分是四核A15区域,粉红色部分是四核A7区域
在国际版的GT-I9500(以及中国大陆区的联通版、电信版)采用的三星Exynos 5 Octa内部型号为Exynos 5410,CPU部分是一组四核Cortex-A15加另一组四核 Cortex-A7的搭配方式。不过Exynos 5410只支持big.LITTLE模式里的IKS(核内切换器),不支持GTS(全局任务调度)模式,因此看上去虽然有物理上的八个内核,但是本质上同一时间内最多只能实现同时使用四核A15或同时使用四核A7,如何切换则是由根据当前任务的负荷性质决定。
NVIDIA Tegra 4推出多个月后,除了自家的SHIELD和HP、华硕以及东芝等厂商的笔记本电脑外,还会被用于一些手机里面,目前已经公布的有中兴的U988S,据闻还会有更重量级的手机随后出来。
NVIDIA Tegra 4管芯图,橙色区为4+1Cortex-A15核心,绿色小方块区域为GPU
Tegra 4和三星Exynos 5410的主CPU都采用了四核Cortex-A15,不过NVIDIA没有采用ARM的big.LITTLE结构,而是采用自己4+1核的结构,4+1 中的“1”被称作伴侣核。
“伴侣核”是一个采用省电设计、运行在较低频率下的Cortex-A15内核,用于处理负载较轻的任务以达到省电的目的,一旦负载较重就会切换到主CPU核上。
和Cortex-A15+Cortex-A7的big.LITTLE相比,这样的设计据称有两个好处:
首先,是由于“伴侣核”与主CPU核心架构完全一样,CPU切换时(或者说程序执行的现场切换)的时间比Cortex-A15切换到Cortex-A7的方式快很多,这是因为不用进行复杂的映射;
其次,Cortex-A15的单核性能比Cortex-A7高很多,因此大多数一般的应用中并不需要频繁切换到主CPU,从而达到更省电的目的。当然,具体的耗电情况需要等到设备出来后进行详细测试。
在商业社会里衡量一款产品是否成功,关键的指标之一自然是出货量。按照Digitimes援引TrendForce(集邦科技)在今年七月末的一份研究报告,三星Galaxy S4的出货量将会达到2300万部的总出货量,而在更早之前已经有媒体报道指出三星Galaxy S4的出货量“已经”达到两千万台。
如果只是靠品牌知名度和好不好看的话,任何产品也不可能做到快速的大量出货,Galaxy S4作为旗舰级产品,它的规格配置在吸引力方面起到了很大的作用,四核Cortex-A15或者四核S600的采用是它成功的关键因素之一,这些成功反过来也会对人们的品牌认受度产生正面印象。
上图就是我们前面提及的预期购买手机品牌调查百分比,可以看到在三星发布了Galaxy S4第一季度到第二季度变化值是呈上升态势,而苹果方面则是依然不断地下滑。
所以从这一小节中我们可以得出结论,市场上已经有四核Cortex-A15手机上市,而且从市场趋势来看这样的产品已经获得了实质性的认可。
不同型号的Cortex-A15芯片设计是否一样呢?
ARM的实验室里虽然也有自己开发的处理器实体,但是这些处理器是作为研发之用,不会拿出来卖给最终消费者的,市场上的“ARM”处理器都是ARM透过架构授权或者内核授权的方式由第三方厂商开发或者拼凑而成。
因此在市场上你会看到五花八门、各式各样的ARM处理器,它们来自不同的芯片设计公司、不同的制造厂商,由于设计技术水平、经验以及制造厂的制程不同,实际上出来的芯片在一些指标、功能上会有不可忽视的区别。
就譬如我们这里提到过三星Exynos 5410和NVIDIA Tegra 4,CPU都采用了四核Cortex-A15,但是两者的区别其实多,例如:
1、Exynos 5410采用三星的28nm LP HKMG制程,最高频率设定是1.6GHz,Tegra 4采用台积电的28nm HPL制程,最高设定频率为1.9GHz;
2、Exynos 5410采用了A15*4 + A7*4的设计,Tegra 4 采用了高频A15*4+低频(700~800MHz)低耗电A15*1的设计;
3、两者的GPU截然不同,Exynos 5410采用了ImgTec授权的PowerVR SGX544MP3 (tri-core) @480MHz,Tegra 4 采用的是NVIDIA自己开发的GPU架构,几何单元为单精度浮点,像素单元为20位浮点,这应该是吸取了当年GeForce FX世代受挫的经验而特别炮制的平衡设计。
4、两者的die size(管芯尺寸)不一样,Exynos 5410按照EDN的说法应该是122mm^2,而Tegra 4大约是80mm^2,后者比前者小了大约33%,Tegra 4的设计目标更偏向于性能、耗电、成本三者的平衡,而三星由于采用的PowerVR是属于分块式延后渲染器(TBDR),因此片上需要有TBDR独有的电路,这些电路会增加不少面积。
从这一小节我们可以看出,同样是采用四核A15的处理器,在很多方面都是完全不一样的,这将对处理器的功能、性能、耗电构成不少的影响,最终反映到终端设备——手机、平板电脑上的表现也会有一定的差别。
同一款处理器不同版本在耗电上一样吗?
NVIDIA在较早之前发布的SHIELD采用的是前面提到的Tegra 4处理器,这是NVIDIA的第四代Tegra处理器,和其他手机SoC芯片厂商有多款不同芯片供选择不同的是,NVIDIA这几年走的都是单芯片多型号路线,也就是把芯片单纯按照频率、GPU使能规模来划分多个型号供客户选择。
SHIELD 采用的Tegra 4具体型号是T40,是Tegra 4的顶级性能版本,最高频率设定为1.9GHz,GPU规模使能规模为72 core但是频率多少并不清楚,Tegra 4 GPU的文档有提到在672MHz时候的性能规格,但是这不代表T40的GPU就是这样的规格。
不过手机显然不会上这样规格的Tegra 4,因为SHIELD的形制较大,可以塞进风扇辅助散热,电池容量也可以支持这样规格跑接近10小时的游戏,即使是旗舰级别手机的个头只有它的三分之一不到。
NVIDIA提供的手机版Tegra 4型号为AP40,这个版本在多个方面做了精简,例如T40有很多的I/O口,AP40只保留了必要的,温控的策略也会有不同。
从一些厂商提供的消息,经过这些精简后,AP40的TDP(热设计功率,代表能让设备低于结温所需的散热能力)从T40的8-10瓦降低到了3瓦级别,这相当降低到了1/3不到,变化非常大。
那么功率降低到这么多,性能是否会有大的下降呢?这是一个有趣的问题。不同的厂商会采用不同的功耗控制策略。 一般在多核心同时高负荷工作下,手机的处理器工作速度会随着温度的上升而降低,从而把总的功耗降到较低的水平。
不过,单核心工作的时候,频率的下降速度就会慢很多。而且大部分的情况下,CPU高负荷的往往是间歇性的,对于大部分的应用,实际的性能应该不会有什么影响。
CPU性能的重要性
Cortex-A15 相对于S600、S800、Cortex-A9、Cortex-A7 等“对手”来说优势就是具备更强的单核心性能。在多线程程序并不十分普及的情况下,单核心性能的重要性是毋庸置疑的。
其实无论是手机还是我们的台式机、笔记本电脑,日常的不少程序都采用单线程代码。多线程程序的开发需要比较复杂的代码编写、经验以及调试,而且很多任务并不容易做到并行化,因此经过很多年以后,实际上真正的多线程重负荷的程序即使在PC上也并不普遍,在移动平台上就更少了。
除了一些专门用来烧机的软件外,能让多核尤其是四核手机老是处于跑满状态的应用可说是少之又少,更常见的情况是某些高计算负荷的任务让四核冲起来一下就跑完了。
举个简单的例子,例如刷微博或者刷网页的情况,里面包含很多图文的信息,刷的时候速度快的处理器能够很快地显示出内容,而速度较慢的处理器则需要等待一段时间。
刷完以后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四核版的手机将会越来越多,相应的芯片型号也会层出不穷,其中应该不乏成功的产品