四核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 的架构特点以及和它的一些竞争对手在性能上的区别有大致的了解,不过这样的旗舰级处理器在智能设备的实际应用情况又如何呢?