需要澄清地是,如果问题的计算机不单指PC,问题本身都是不成立的。因为几年前笔者开发BSP时,就有做过多达16x4,即64核的网络交换机方案,而用于超算的大型计算机的核心数目更会惊人。
另外,如果算上GPU,这个问题也可能不成立。
好吧,这里暂且设定背景为手机与PC的CPU吧。
两个领域有非常不同的需求~
PC可以一味地追求高主频,高单核性能,因为它可以安装风扇或者安装很大块的散热装置,可以直接接入家用能源。当然,虽然PC的性能往上涨的空间可以更高,但是这个“一味地”也是有限制的,所以PC在更早以前就在尝试多核了。
但是手持智能设备不可以,它小巧,它随着携带,它要考虑发热,要考虑电池的容量。所以,智能终端的SOC在设计的时候必须在兼顾温控与能耗的情况下。这注定智能终端的SOC要走PC的老路,并且做更多样化的尝试。
就是因为这种差异,导致手持设备SOC的设计厂商在做各种架构,技术与工艺的尝试。
多核只是其中一种尝试。
因为单核在主频上去以后,要求的电压更高,发热严重,而随着发热量的增加,漏电率又会增加,会进一步增加能耗与发热。而这两项恰会影响手持设备的两个重要体验,即续航与温控。
在单核方面,相应的技术改进有HPM,漏电率比LP下降不少,所以同样的主频可以跑在更低的电压上。除此之外,还有一些筛选和区分不同品质晶圆的技术,例如三星的ASV,晶圆质量高的同频下可以跑更低的电压。
与此同时,还有各种类型资源的DVFS支持,idle支持,clock gating,regulator gating,power domain……
好了,那单核的性能努力如何呢?从当前市场上在售的来看:
“Cortex-A57是ARM最先进、性能最高的应用处理器,号称可在同样的功耗水平下达到当今顶级智能手机性能的三倍;而Cortex-A53是世界上能效最高、面积最小的64位处理器,同等性能下能效是当今高端智能手机的三倍。这两款处理器还可整合为ARM big.LITTLE(大小核心伴侣)处理器架构,根据运算需求在两者间进行切换,以结合高性能与高功耗效率的特点,两个处理器是独立运作的。”
而未来联发科上市的全新Helio X20(即MT6797)的大核A72可以到2.5G。
那问题来了,虽然性能很强劲,但是发热的剧增会导致处理器持续高频不了多久。因为外部人体的温度是恒定的,37度,再温一点,42~43度,再热一点45~47度,再就烫起来了。所以这个加上主板的散热结构已经阻止了固定工艺和技术下的性能成长空间。也限制了高频核心的高性能的应用。
而加强手持设备的结构空间限制,又限制了散热技术的应用,这个是PC和服务器根本就不存在的问题。
既然往上涨不了了(实际上还有技术和成本制约),那是不是可以横着涨呢,好了,尝试多核,而多核又有同构多核,异构多核,有真多核还有伪多核。
到这个份上,咱们就可以得到一个初步的结论,多核完全是为了迎合消费者,不是为了迎合和迎合,而是为了给用户更好的体验。
为什么会提供更好的体验?
随着主频的提升,单核的工作能耗会随着指数级上升,相应的热量聚集也会更高。换算到同等计算能力(单位时间内可执行的指令数)的多核,能耗上升呈线性关系,热量聚集会明显降低。具体量化起来,得画个图表,把频率,核数和能耗关系绘制出来,这里先省掉。大家可以看下百科上的一篇推导:www.baike.com/wiki/多核
先来介绍一下这种换算的实际场景限制:
1,对于远古时代的单一任务系统,多核是没有意义的。任务的工作量没有办法分派给其他核心执行。并行不起来。
2,现今的系统,包括Android等手持设备的系统默认任务数量已经非常多,具体数量会有差异。稍微看了下MX3,有100+,实际线程数只会更多。
3,多核相比单核,无用的任务context switch会减少,能耗利用率会提高,任务的响应能力(最高频率满足条件下)也响应会增加。甚至对于一些关键的任务,可以通过独占某一个核心获得最好的响应能力。
那核数是不是越多越好呢?是不是100个任务就开100个核呢?肯定不是,首先有硬件成本的限制,其二,核数多了以后,负载均衡,任务迁移,甚至任务同步也是很大一笔开销。
本文来源:不详 作者:佚名