手机里塞两个处理器芯片运算能力会不会翻倍?
保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/42/ )。
就是想到现在手机厂商都在比处理器运算能力,骁龙,麒麟,苹果几乎每年都要更新高端处理器,那在一个手机里放两个处理器,是不是就两倍欢乐了?
该提问中提到的“运算能力”是一个比较模糊的概念,具体而言,存在两种理解:
- 第一种理解:计算能力是处理器的一种内在属性,就像质量、体积一样,不需要对外表现。例如,时钟频率、MIPS都是其典型的衡量指标,这些指标侧重衡量处理器的内在属性。
- 第二种理解:计算能力是处理器的一种外在表现,要展现出来,比如能够在更短的时间内解决一个计算问题。例如,PDR、所有的基准测试程序法都是在衡量处理器的外在表现,基本是让处理器解决一组特点问题来判断其性能好坏。
因为“运算能力”是一个模糊的概念,没有明确的定义,因此这两种理解没有对错之分。事实上,时钟频率、MIPS、PDR、许多基准测试程序法都是衡量处理器性能的指标,也没有进行太明确的区分。
如果题主问的是第一种理解,那显然。放两个就翻倍,再放两个再翻倍。线性增长关系。
如果题主问的是第二种理解,那就不是翻倍了,做不到。
而且考虑到在题目描述中,题主问“是不是就两倍欢乐了”,那题主应该是在侧重询问外在表现。因为,通常觉着手机用起来更欢乐了,应该是手机更流畅了,而不是得知手机CPU的晶体管数目增加了……
其实,一般情况下,消费者看重的是第二种理解。举例子:
- “手机晶体管数多了,我真欢乐!”× 感觉这人不太聪明的样子
- “手机变得更流畅了,我真欢乐!”√ 感觉像个正常人了
所以,我们就按照第二种理解详细回答这个问题。
首先我们不考虑CPU,先考虑人。
是想本来打扫卫生的活是你自己完成,用时为10分钟。
然后假设是你和你同桌完成,你俩干活一样麻利,那用时就是5分钟?
注意:这里每个人都不能一边干活一边说话,而且如果想看下对方正在干什么,也要停下手中的活。这样是为了确保每个人都是单核的,每个时刻只能干一件事,就和单核CPU一样。
那4个人呢?8个人呢?是不是隐隐感觉不对了?
那如果这样,直接找600个人,1s钟完成教室打扫工作?!
显然不是。
两个人的时候,你们俩要协调分工,讨论下谁扫地谁整理桌子。这样多出来了一些协调工作,最终会大于5分钟,所以达不到翻倍的效果。
CPU也一样啊,需要将任务进行并行拆分,然后并行计算,然后再合并结果。其中并行拆分和合并结果部分,是相比单核结算多出来的工作。是会额外消耗时间的。
而且,这还是理想的情况。因为有些任务无法进行并行拆分。
想当年,矩阵的并行计算,学术界和工程界可是费了老大劲的。矩阵的并行计算解决,才能使用多核来实现高效的协同推荐等工作啊!(这个具体我记不太清了,似乎是谷歌在这方面做了不少工作,欢迎补充)
好了,以上都是定性的思考。接下来我要请出阿姆达尔了!
Gene Amdal 在1967提出了阿姆达尔定律。
阿姆达尔定律(英语:Amdahl’s law,Amdahl’s argument),一个计算机科学界的经验法则,因吉恩·阿姆达尔而得名。它代表了处理器平行运算之后效率提升的能力。
首先定律中提出了加速比的概念:
然后定律讨论了升级某个模块后,系统的总执行时间:
当然,这里有一点要注意:这是一个经验法则,不是绝对的,但是相对准确的。
那我们再回到这个问题,假设手机任务中,必须串行计算的任务占比\(n\) ,则 \(0<n \leq1\) 。
\( 0<n \) 是因为即使是完全可并行的任务,也需要进行任务拆分与汇总,因为手机的设备不是并行的。例如,计算完成后,必须通过唯一的显示屏进行显示,其中必定涉及到CPU串行汇总的工作,不可能两个核同时控制一个显示屏。 \( n \leq1 \) 是因为可能存在完全串行的任务,这在理论和实践中都是可能的。例如我写了一个没有进行多核优化的程序,而现在手机只运行了这一个程序。则此时,其他的核都闲着。电脑也一样,为啥玩游戏主要看单核性能?因为许多游戏没进行多核优化,其计算没办法拆解到多个核中并发,所以,核再多也没用,一个在拼命干活,其他在……闲着…… 那么,由单核升级为多核后,则升级比例为 \( 1-n \) ;一核变两核,则加速比为 \( 2 \) ,那么有:
$$ 总加速比=\frac{1}{n+\frac{1-n}{2}} ,0<n\leq 1 $$
则显然有
$$ 1\leq总加速比<2 $$
所以,手机里塞两个处理器芯片运算能力可能会提升,但是不会翻倍。
更经典的是,这个问题可以扩展到软件开发管理领域,甚至人力资源管理领域。
例如在软件开发管理领域,我们知道两个程序员的产出不会达到一个程序员的两倍(他们总得拿出一些时间来协si调bi)。
那就出现几个问题:如果我有一个大项目,是人越多干的越快么?如果项目很大,必须要多人完成,该如何进行分工?
解决以上这些问题在工程实践中十分有意义。而,著名书籍《人月神话》就是在讨论这些。
对,“人月”指的是“每个人每个月的工作量”,是衡量人的工作能力的单位。不是“人类登月”,也不是“人要坐月子”……
对这些问题感兴趣的同学,推荐去看一下。
可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。