Loading
1

CPU核心数量不一定越多越好

CPU核心数量不一定越多越好

最近关注小米、华为、联想和神舟的手机大战,感慨颇多。就目前的手机硬件竞赛来看,千元机的配置是八核CPU+2GB内存+1300万像素镜头+5寸以上的屏幕。很不可思议啊,记得这款真八核CPU可以与目前最快的Tegra4、骁龙800等一战的,算得上最快的手机芯片之一了。搭载Tegra4/骁龙800的小米3卖到1999,红米note一辈却只能卖到799,同一水平的机型怎么会如此贱卖呢?

小背景:

Tegra4(小米3),4核心,Cortex-A15架构,频率1.8GHz,效能比3.5,单核心性能3.5*1800=6300 MIPS,四核心性能 6300*4=25200 MIPS(官方数据)

MT6592(红米note),8核心,Cortex-A7架构,频率1.4GHz,效能比1.9,单核心性能1.9*1400=2660 MIPS,八核心性能8*2660=21280 MIPS (官方数据)

一个是有4颗强大内“芯”的Tegra4,一个是单核心虽弱、但核心数量较多的MT6592,这两颗CPU的官方数据看起来基本在同一水平上,可实际跑应用又是什么情况呢?

今天刚刚了解到一个叫做“阿姆达尔定律”的东东,它提出了处理器平行运算之后效率提升的能力。加速比S=1/(a+(1-a)/n),其中a是指代码中不能并行运算的比例,n是并行处理节点数。举个例子,如果一段代码可并行运算部分占80%,这段代码在一颗四核心CPU上运行,其加速比为S=1/(0.2+0.8/4)=2.5;若让这段代码在一颗八核心CPU上运行,其加速比S=1/(0.2+0.8/8)=3.3。

好了,现在我们将这一结论拿来比较Tegra4(四核A15)和MT6592(八核A7)。对于Tegra4来说,单核心性能6300 MIPS,乘以加速比2.5,得到的结果是15750;而MT6592,单核心性能2660 MIPS,乘以加速比3.3,得到的结果是8778。哇,这一对比就太明显了,运行同样的一段代码,Tegra4(4核A15)要比MT6592(8核A7)快接近一倍。

阿姆达尔定律为我解开这一困惑,想想也确实很有道理,双核心性能肯定达不到单核心性能的两倍。同样的道理,八核心性能也肯定达不到单核心性能的八倍。会不会有这么一个疑问:多核心性能到底能提升多少呢?那不妨再把阿姆达尔定律搬出来算一算:(还是假设代码的可并行运算部分为80%)

单核:S=1/(0.2+0.8/1)=1

双核:S=1/(0.2+0.8/2)=1.67

四核:S=1/(0.2+0.8/4)=2.5

六核:S=1/(0.2+0.8/6)=3

八核:S=1/(0.2+0.8/8)=3.3

十六核:S=1/(0.2+0.8/16)=4

正无穷核:S=1/(0.2)=5 (极限)

到这里就可以推算一下,这个8核A7架构1.4GHz的MT6592大概体验如何,经过一番计算得出一系列数据:8核A7架构1.4GHz=4核A15架构1.0GHz=4核A9架构1.4GHz=4核A7架构1.9GHz=双核A15架构1.5GHz=双核A9架构2.1GHz。A9架构一般在1.0-1.5GHz之间,A15架构一般在1.5GHz以上,所以这个MT6592最接近四核A9或者双核A15的体验,也就是相当于Tegra3或者MSM8960。

这么说联发科新搞出来的这个八核,虽然其目标是要干掉骁龙600,力争战平骁龙800。可实际用起来还真达不到那个水平,八核也只是一个噱头而已,有些跑分党可能要喷了,这里要提醒一下,对跑分应该有个合理的认识。跑分软件是近乎完全并发的测试,而平时使用手机不但没有这么高的并发计算,相反还有很多仅支持单线程的情况。跑分软件是个非常非常理想的情况下出现的成绩,实际使用中根本不会出现,说的通俗点就是手机软件对多核优化的不好。

从以上那些数据中还可以读出一些东西:核心数量越多,增加核心所能带来的加速效果越差;当核心数量增加到一定程度时,增强单核心性能比增加核心数量更有效果。

到这里就可以引伸到台式机了,为什么AMD八核推土机干不过Intel四核E3 1230v2?AMD工艺还停留在32nm,Intel早已进入22nm时代,再加上AMD的架构也不如Intel,导致的单核性能差距比较大。AMD靠堆核心数量来和Intel竞争,这样做的结果就是八核干不过四核,因为八核的加速比3.3比四核的2.5多不了多少,单核性能差距比较大的话核心数量多一倍也还是不行,所以那一句“E3V2默秒全”就说的这事儿了。

标题中那个问题自然就有了答案,CPU核心数量越多越好吗?

本文出自 FROYO's Blog