四核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 个),具备 4KiB + 4KiB 的单周期时延 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 GiB 内存也是有点勉强)和自身存储空间(未编译时就要数 GiB 空间,编译后就要占用 1x GiB 了)要求都较高,因此采用 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 CPU2000int_base 为 1168。这个测试结果相当于 2003 年第四季度 SPEC.org 上公布的 AMD K8 Sledgehammer 2GHz 测试结果。
NVIDIA 还进行了在小米二手机(采用高通 Snapdragon S4 Pro 即 APQ8064 1.7GHz)上的 CPU2000 测试,并且根据高通公布的 S800 相对 S600 在 IPC(每周期指令)和频率上的变化幅度而估算出来的 S800 的 CPU2000 测试结果:
从图表来看,S600 的 CPUINT2000_base 测试结果相当于 Tegra 4 的一半不到,这在很大程度上反映了 Cortex-A15 相对 Krait 系处理器的真实应用差别。
需要指出的是,双方的测试平台本身也是有一些影响的,例如小米二手机在执行这个测试的时候,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 的性能高但是功耗大,并不一定适用于手机。
这个问题放在一年前的话可能会有各种不同的答案,但是现在是 2013 年 8 月下旬,答案已经非常清晰:已经有采用四核 Cortex-A15 的手机上市,而且会有更多的采用 Cortex-A15 的手机上市,这也为 Cortex-A15 是否适用于手机的争论画上了一个句号。目前,明确可用于手机的 Cortex-A15 架构的四核移动处理器主要有两种,一种是三星的 Exynos Oct,另外一种是 NVIDIA Tegra 4。
三星公司在四月二十七日上市的 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 1.6GHz 加另一组四核 Cortex-A17 1.2GHz 的搭配方式。不过 E5410 只支持 big.LITTLE 模式里的 IKS(核内切换器),不支持 GTS(全局任务调度)模式,因此看上去虽然有物理上的八个内核,但是本质上同一时间内最多只能实现同时使用四核 A15 或同时使用四核 A7,如何切换则是由根据当前任务的负荷性质决定。
NVIDIA Tegra 4 推出多个月后,除了自家的 SHIELD 手持游戏机和 HP、华硕以及东芝等厂商的笔记本电脑外,还会被用于一些手机里面,目前已经公布的有中兴的 U988S,据闻还会有更重量级的手机随后出来。
NVIDIA Tegra 4 管芯图橙色区为 4+1 Cortex-A15核心,绿色小方块区域为 GPU Tegra 4 和三星 E5410 的主 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 后的第一季度到第二季度变化值是呈上升态势,而苹果方面则是依然不断地下滑。
所以从这一小节中我们可以得出结论,市场上已经有四核 Cortex-A15 手机上市,而且从市场趋势来看这样的产品已经获得了实质性的认可。
ARM 的实验室里虽然也有自己开发的处理器实体,但是这些处理器是作为研发之用,不会拿出来卖给最终消费者的,市场上的“ARM”处理器都是 ARM 透过架构授权或者内核授权的方式由第三方厂商开发或者拼凑而成。
因此在市场上你会看到五花八门、各式各样的 ARM 处理器,它们来自不同的芯片设计公司、不同的制造厂商,由于设计技术水平、经验以及制造厂的制程不同,实际上出来的芯片在一些指标、功能上会有不可忽视的区别。
就譬如我们这里提到过三星 Exynos 5410 和 NVIDIA Tegra 4,CPU 都采用了四核 Cortex-A15,但是两者的区别其实多,例如:
1、Exynos 5410 采用三星的 28nm LP HKMG 制程,最高频率设定是 1.6GHz,Tgera 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) @ 480 MHz,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 高负荷的往往是间歇性的,对于大部分的应用,实际的性能应该不会有什么影响。
Cortex-A15 相对于 S600、S800、Cortex-A9、Cortex-A7 等“对手”来说优势就是具备更强的单核心性能。在多线程程序并不十分普及的情况下,单核心性能的重要性是毋庸置疑的。
其实无论是手机还是我们的台式机、笔记本电脑,日常的不少程序都采用单线程代码。多线程程序的开发需要比较复杂的代码编写、经验以及调试,而且很多任务并不容易做到并行化,因此经过很多年以后,实际上真正的多线程重负荷的程序即使在 PC 上也并不普遍,在移动平台上就更少了。
除了一些专门用来烧机的软件外,能让多核尤其是四核手机老是处于跑满状态的应用可说是少之又少,更常见的情况是某些高计算负荷的任务让四核冲起来一下就跑完了。
举个简单的例子,例如刷微博或者刷网页的情况,里面包含很多图文的信息,刷的时候速度快的处理器能够很快地显示出内容,而速度较慢的处理器则需要等待一段时间。
刷完以后 CPU 总的占有率会骤然降低,之后都是一些单线程的程序让个别内核处于较饱满的负载状态。
真正需要CPU高负荷的时间占总时间的比例很低,甚至连 1% 都远远不到,但是这个时间虽说很短,却往往是影响用户体验的一个非常重要的因素。
因此,CPU 的峰值性能的重要性毋庸置疑。此外,现在有一种趋势,移动处理器面对的屏幕分辨率甚至普遍比笔记本电脑甚至台式机更高,这意味着界面的处理压力越来越高。
界面的刷新和网页刷新的情况类似,对 CPU 的性能要求高,但是时间短,用户的体验感受很直接。
因此更高的处理器速度也将是一种硬性的需求,而不是可有可无的摆设。但是对于性能和功耗的评估需要有理性的分析,有一些人一味强调拷机软件下的 CPU 频率过热降频情况对手机用家来说其实是某种程度的误导,这和实际的应用情况完全不一样。
多核处理器的意义更多在于多任务的情况。Android 和 Windows 都是典型的多任务操作系统,多核处理器在处理多任务的时候大大提升了多个程序同时运行时的处理和响应速度。
不过,多任务对于核心数量的需求是有限的,PC CPU 和移动处理器主流的核心都是两到四核,这不是偶然的。
虽然系统中有多个线程和多个任务同时存在,但是出于活跃状态的往往也就少数几个,因此更多的 CPU 核心意义是不大的。现在有些厂商推出的所谓八核 Cortex-A7 的处理器,在绝大部份的情况下性能一定还不如双核 Cortex-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 和 3.5。
所以很明显,A12 性能处于 A9 和 A15性能之间,这对 ARM 来说是很正常不过的事情。事实上 ARM 在发布 A12 的同时还更新了 A9,提到 A9 r4 版的性能更新,按照幻灯片,对分支预测和内存子系统作改进后的 r4 在 IPC 上能做到初版 A9 的 1.4 倍左右。
Cortex-A9 至今已经有多个版本,见上图的 r1-r4 描述图片来源: anandtech
如果单看 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 的 Galaxy S4 联通版
不同厂商、不同型号的四核 Cortex-A15 处理器在很多方面都存在不少的差别,这些差别或因为设计意念、经验,或因为各自在某领域的优势,或因为产品定位,或因为制程,这些差别让我们不能简单地类比,例如直接把某型号的 Cortex-A15 四核处理器在性能、功耗的指标类推到另一型号上。
手机性能测试是比较特殊的,它是一个封闭的东西,从硬件角度看,绝大多数情况下你不能把里面的东西卸下来拿到另一部不同型号的手机里测试来验证不同硬件组合下的影响,从软件角度看,目前缺乏足够的工具和经验了解在测试的时候到底发生了什么,到底是广谱的优化还是定制优化非知情者是很难了解的。
对于手机来说,单线程的性能同样不容忽视,这和多线程代码编写的难度有直接关系,现实中许多应用还是基于单线程的,在此时 Cortex-A15 的单线程性能优势就能体现出来。
在日常应用中没有多少应用会像拷机程序那样长时间持续的四核全部跑满,尤其是在手机应用中,在手机测试中采用这类程序到底有多少意义是令人怀疑的,手机用家真的会整天没事呆看手机跑 StabilityTest 之类的东西吗?
Cortex-A12 上市的时间点可能是明年下半年以后的事情,它的性能定位就是接替 Cortex-A9,而 Cortex-A15 的接替者将会是 Cortex-A57,Cortex-A12 在此时(A57 时代)扮演的就是中阶偏低的角色。
总之,我相信在未来的一年里,Cortex-A15 四核版的手机将会越来越多,相应的芯片型号也会层出不穷,其中应该不乏成功的产品。■<