在刚刚过去的 CES 2013 上,近年来顺风顺水的高通代替微软做了主题演讲并发布了新一代的 Krait 系列核心,不过没想到很快就被三星那颗惊世骇俗的 Exynos 5 Octa 八核处理器抢去了风头。也许是对此心有不甘,高通 CEO 前些天评价这颗处理器“把缺点当卖点”,认为“核战争没有意义,消费者需要的是体验”。这番言论到底是真知灼见呢,还是酸葡萄心理呢?仔细看一看这两颗芯片就能明白。
Exynos 5 Octa:哪儿来的八个核心?
在这个 P C都没普及八核心的年代,手机和平板居然闹着要上八核心,这的确是一件让人匪夷所思的事情。真有那么大的性能需求,让手机连四个核心都不够用,非要上八个?当然不是这样。Exynos 5 Octa 虽然号称八核心,但实际上是由两组四核处理器组成的,一组是四核 Cortex A15,一组是四核 Cortex A7,利用 ARM 最新发布的 CCI-400 连在一起工作。为什么要这么费劲,归根到底一句话,Cortex A15 实在是太太太太费电了。其实费电倒不是什么问题,降频就是了,问题是 Cortex A15 吃掉的电力远远大于输出的性能:在 32nm HKMG 工艺下一颗 1.5GHz 的Cortex A9 只需要大约 450mW 的功耗,但是 Cortex A15 一下子蹦到了 2W 左右,足足翻了四倍还不止——性能提升可远远没这么多,充其量也就是两倍了不得了。这样的东西别说给手机用,即便是给平板都显得很 没竞争力,别忘了那厢的 Intel 可虎视眈眈呢,SoC化的 Atom 在能耗比上居然已经超越了曾经以省电著称的 ARM,配上 X86 架构兼容和30年来海量 的应用资源(跑步跑得动另说),Cortex A15 可谓鸭梨山大,平板不够强,手机不够省。所以ARM才捣鼓出这么一个叫 big.LITTLE 的技术,额外设计一个性能差但是很省电、架构又完全兼容 的 Cortex A7,把它和 Cortex A15 两两配对,需要高性能的时候开启 A15,不需要的时候开启 A7,取长补短,又强大又省电,看起来忒厉害。Exynos 5 Octa 就是第一个实现了这个技术的处理器。
那这能叫八核处理器嘛!
说的也是,高负载开 A15,低负载开 A7,这就像干活用电脑,上网用平板,两个东西又不能结合起来用,叫双核不是拿人开涮吗?别急,在这点上可以说三星也没完全忽悠我们。虽然 big.LITTLE 技术主要的设计目的是在不同的负荷下启用不同的核心组,实现功耗和性能的最优化配置,但是这个技术还有第二个工作模式,那就是让两组处理器同时开启,用异步非对称多处理器模式组成一个整体,让比如说轻负载的线程跑在 A7 上,重计算的线程跑在 A15 上。怎么样,这就是货真价实的八核了吧?虽然必须承认的是,这种模式很显然是不可能在手机上用的(两组核心加起来功耗铁定破 10W,哪怕电池撑得住,外壳也受不了),所以虽然八核心不算是胡扯,但至少也是个大忽悠。高通可能就是看不爽这一点才嘲讽的。
那这就是个完美的设计咯?
商业世界,你要是相信厂家的 PPT,年可是都会过错的。换了你,你也会拼命吹嘘技术美好的地方,之于不怎么美好的地方嘛……反正只要让你掏了钱,剩下的就不重要了。big.LITTLE 技术的实际远不如看起来那么美好,问题的关键就在于切换这个过程上。把正在运行的系统和程序从一个 CPU 完整的转移到另外一个 CPU,不是一个想象中那么简单的事情,这涉及到处理器电源状态的切换、内部所有私有状态的复制和转移、部分内存数据的更新,有可能还要涉及到中断系统, 而且还不太方便做到对上层代码透明。在 ARM 的设计中,大小组的切换需要用到额外的指令,需要系统告诉 CPU “该切换了”才可以执行(似乎 nVIDIA 的 vSMP 就可以做到全透明,但好像代价是两组处理器必须完全一样),这需要对系统核心做出修改才能实现。而且一个 CPU 不论是打开还是关闭,都需要时间, 这也就必然会导致切换指令发出以后,需要等待另一个 CPU 就绪才可以开始切换,这会导致不小的开销。当然,设计这套系统的ARM 不可能不考虑这些问题,因此在一个 CPU 收到切换指令以后,实际上并不会立刻把自己冻结,而是再发一个指令告诉即将切换的那个CPU首先启动,然后一边运行代码,一边等待另外一个 CPU 就绪,当一切搞定以后,再进行状态复制等操作。因此,ARM 声称,一次切换的时间损失在频率为 1GHz 的时候大约只有20微秒,这足以让两组 CPU 在一秒内切换1000次以上,依然无法让用户察觉。
到现在为止一切看起来都还很美好,但残酷的现实来了:状态切换不包括 L2 数据的复制,而由于 L2 缓存在 A15 和 A7 的系统中都是紧密耦合的,因此不可能做到共享,那么只有两个选择:在切换的时候通过 CCI400 将 L2 数据复制一次,或者干脆 丢弃所有的 L2 内容。第二种看起来显然不是什么好主意,但可惜的是第一种也不是:如果我没记错,复制一次 L2 缓存耗时大约20毫秒——比切换开销大了3个数量级。这就意味着如果这套系统真要在实际工作中发挥出应有的效能,那么就必须要频繁切换,而频繁切换的结果是 L2 缓存成为废物,结局就是性能一塌糊涂。
所以……
可以这么说,与普通的四核 Cortex A15 处理器相比,big.LITTLE 的引入的确让 Exynos 5 Octa 可以塞进手机,只是不出意外它会彻底变成一颗四核 A7 产品—— MTK6598 么?不过对于一些人和绝大多数厂家而言,这样也就够了,毕竟它们需要的只是八核的幌子。而面对用户的质疑,它们会说“我这是为了你的用户体验,你希望手机和锅炉一样吗?”于是用户掏了四核 A15 的钱卖到了四核A7的产品, 厂家又卖掉了大把大把的硅片,皆大欢喜,皆大欢喜,不是吗?
好吧,那看来还是高通好?
看过了三星,你可能会觉得雅各布说的果然没错嘛,高通果然还是很站在用户角度思考的啊,三星你这完全就是坑爹,手机要那么多核心干什么?我还是买高通好了,那么强大的 Krait,四个核心还不费电,真不错这下我可以开3个 QQ 和美女聊天了……如果你这么想,恭喜你,你又被高通忽悠了。虽然嘴上高通嘲讽三星嘲讽地头头是 道,但实际上高通做的也没比三星更高明多少,或者说,这几年来最大的忽悠一直是高通。
问问你:手机要多核心干啥?
这还不简单吗?当然是为了多任务啊!君不见 Android 身为一个真·多任务的系统,无时无刻都有好几个程序在前台后台的跑,至于IOS什么的@#@¥#¥%!#¥……
没错。我们要多核处理器,自然是为了多任务的,毕竟谁没事干成天用手机去算 Linpack 或者折叠蛋白质呢?于是最大的问题就来了,高通的多核心处理器,真的有对应的多任务性能吗?这就必须再一次把高通“引以为豪”的异步多核心架构拿出来再鞭一次尸了。众所周知异步电路的好处就是可以跑不同的频率,但是问题来了:高通的异步架构,随着核心数量的增加,提升的只是 CPU 的绝对运算性能,并不会同比提升 CPU 的吞吐量,这就导致了一个问题,如果运行的都是没有多少计算量,而偏重于 IO 的任务,那么不论有多少个核心,性能都和一个核心没什么两样——不幸的是,手机里恰好几乎都是轻计算重 IO 的任务,除了 Benchmark 以外。
所以很多购买了高通 CPU 手机的人都会感觉,为什么我手机跑分那么高,世界第一,用起来却还是不太流畅,尤其是在多个 APP 之间切换或者游戏载入呢?很简单:虽然你有四个核心的运算量,但只有一个核心的吞吐能力,要知道不是所有的内存操作都可以用 DMA 完成,这时候的瓶颈就是吞吐量,有多少个核心都白搭——得不到数据,CPU 只能等待,流水线只能空转,虽然高通的异步技术可以让这个时候的 CPU 降频使用,但这实在是让人觉得像是先打你一巴掌再给你揉揉——搞个四核当单核用,这不是有必应(误,应该是病)那是有啥?
光说不练自然不行,好在已经有测试可以验证了。兔子跑分在一项没有公开的测试中使用了 Nexus 4 和 Nexus 10 进行对比,结果是在纯粹的计算性能上,拥有四个Krait核心的高通APQ8064,性能完胜拥有两个 Cortex A15 核心的 Exynos 5 Dual,领先幅度大约有5成:
但是在多任务测试中,情况却完全逆转,拥有四个核心的 Nexus 4 居然只比拥有两个核心的 Nexus 10 的一半快一点:
四核只比双核的一半快一点是什么意思?那就是说四核 Krait 的多任务性能也就只比单核A15强一点而已。这就回到了第一个问题:如果四核的多任务性能只有单核水平,那我要四核干什么,我又不是职业跑测试的对不对。
至于 Krait 核心自己,一开始高通各种暗示是 Cortex A15 级的产品,后来忽悠不过去了就绝口不提了,事实上 Krait 除了 vFPv4 带来的浮点性能领先以外,并没有比 Cortex A9 强多少,最多强三成,但是功耗却几乎是 Cortex A9 的两倍——虽然这是因为工艺烂,但谁叫你有好工艺不用呢?毕竟我们看的是产品。所以这次虽然在CES 2013上带来了号称性能提升75%的新 Krait 800 系列,但只要高通一天不解决异步吞吐问题,再强也就是个单核。
写在最后
虽然高通讽刺三星看起来大义凛然,但实际上两家都没做到站在体验上说话。一个做的是四核性能的八核,另一个做的是单核性能的四核,可谓天下乌鸦一般黑,谁都没好到哪儿去。那么到底怎样才是站在用户角度说话呢?很简单,让用户付出的每一分钱都能得到对应的体验,这才是站在用户角度。用户不需要最高的跑分,用户只需要最流畅的使用;用户希望做到以前做不到的事情,用户不希望手机像个火炉一样用两小时就没电。手机产业的核战争,看起来轰轰烈烈,现在走在大街上没个四核手机都不好意思说自己是发烧友,但究竟有多少四核手机的性能是用户能用上,敢用上的呢?这个问题恐怕绝大多数消费者都没想过。其实,如果你现在的手机 里有因为功耗或者续航或者架构原因而用不到的性能,那么这部分性能就永远也用不到——别认为虽然用不到,但今天购买一个四核手机可以让我三年不淘汰,等到三年后真需要用到四核的性能了,看到人家1x纳米工艺的新手机轻松跑出你两倍的性能还只有你一半的耗电,你难道还认为自己三年前的那笔投资物有所值吗?
好好想想吧,核战争、性能战争、配置战争,究竟有几个是真正有意义的,我们为产品内每一个部分付出的每一分钱,究竟有哪些是真正能感受到的?只有想通这个问题,这个可以说变态的时代才有救。