在SoC中,“核”的数量通常代表集成多少个通用处理器(CPU)。在这种情况下,为了让名称有意义,构成X-核的所有核心必须是同类的。例如,英伟达Tegra 4芯片打着“四核”标签,尽管它实际上有5个处理器(其中1个只在低功率模式下运行)。目前高通骁龙芯片则有四个“Krait”核心,Krait是一项与ARM兼容的定制设计。
核越多越好?未必 “常识”告诉我们,核越多越好。毕竟,如果我们需要更多计算资源,增加核心数量不是很符合逻辑吗?可惜事实并非如此。
一个“无限快”的单核处理器会很棒
在一个不受已知物理定律约束的理想世界里,一个无限快的单核处理器与无限快的存储和内存相连接,会是一个完美的组合。它更符合“人类”软件工程师的天然思维方式(线性而非并行),能够加快任何软件的运行。长期以来PC一直以这种方式演进。
当奔腾4达到功率和热量极限时
事实上,在一个具体问题发生之后,多核才真正得到消费者认可:当奔腾4处理器(P4)达到极限。最初的奔腾4设计采用一种很长的执行管线,希望让未来同样架构的版本达到4GHz (当时只有1.4GHz)。但由于热量和功率消耗问题,奔腾4永远无法接近该预想主频。因此,为了维持性能的不断提高,采用多核,每个核心消耗较少功率并产生较少热量,是短期内唯一可行的解决方案。
不是每个软件都能随着核心的增加而扩展
多核只有都用得上才算厉害。多核不错,但并非万能药。如今,工程师们不得不将程序执行分割组合,以便通过多线程在多个核心上同时执行和同步。这听起来不算坏,再加上一些巧妙的设计,能取得比较可观的效果,但是——
对于并行计算来说,最重要的是“任务性质”。当数据能够独立处理时,多线程运行良好,性能也能随着核心数量的增加而增强。但是当数据处理依赖之前的结果时,程序将无法进一步分割,核心只能保持空闲状态。简而言之,一些应用并不适合多核环境,而且并行计算仍然是研究热点。更多核心是很不错,但前提是让它们都保持充分运转。
“更多”并不总是“更好”
为了找到一个更实用的答案,让我们看看PC领域:毕竟,它与移动领域较为接近。在PC上,几乎没什么动机去增加更多的核心(4个以上),因为很多应用并不需要那么多核。增加核心只会增加硅片面积(成本),也可能会消耗更多功率——而并没有带来性能的额外提升。
合理的方式是根据实际用途,只在必要时增加核心数量。目前的业界共识似乎是4个工作核心就是最佳数量。将来可能发生变化,但是没有显著证据表明8个工作核心会引起性能的大幅提升,除了Antutu等基准测试的跑分数更高。从这种意义上说,8个工作核心可能的确是一件蠢事。
增加更多核心恐怕只会造成虚拟的基准测试结果与用户实际使用感受之间更大的差异。
功率效率考虑与GPU计算
最后,请注意移动终端上正出现OpenCL等“计算”应用程序接口(API)。它们使编程人员能够使用专门的处理器(如GPU)阵列,以比CPU更高的功率效率执行一般的数学运算。由于大多数“本质上并行”的任务能够卸载到更高功效的处理器上,没有明显的理由去增加CPU处理器的数量。
最后,异构计算(使用许多不同类型的核心)很可能是多核策略的真正答案。
结论:不要让“核心”成为新的“百万像素”
有一件事很明确:手机还不“够快”,人们对其下一个手机速度能快一倍的概念感到兴奋。这是一个了不起的目标,值得去投资,但是简单地说“核越多越好”是十分“愚蠢”的。
计算性能是很多因素的综合结果:核心、处理器、频率和内存子系统。关注现实世界的性能和功率效率,要比关注这其中任何单一元件更为明智。
如果“核心”成为了新的“百万像素”,那真是件憾事。如果这样,我们肯定会陷入跟摄影界相同的营销泥潭:业内人人都知道增加像素并不意味着提高图像质量,但是大家都投入时间和资金去推销这个指数,只因为它传递的信息更简明。虽然这对拍照功能的营销很有效,但这的确很不幸。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)