为什么“添加更多的内核”与“使CPU更快”面临相同的物理限制?


110

2014年,我听到许多编程语言因其并发功能而受到吹捧。并发对于提高性能至关重要。

在发表这一声明时,许多人都回过头来引用2005年的一篇文章《免费午餐已经结束:软件并发性的根本转向》。基本论点是,提高处理器的时钟速度变得越来越困难,但是我们仍然可以在芯片上放置更多的内核,并且要获得性能提升,就需要编写软件以利用多个内核。

一些关键语录:

我们曾经看到500MHz CPU让位给1GHz CPU,而让位给2GHz,等等。今天,我们在主流计算机上处​​于3GHz范围内。

关键问题是:什么时候结束?毕竟,摩尔定律预测指数增长,并且显然指数增长不可能在我们达到严格的物理极限之前永远持续下去。光没有变快。增长必须最终放缓甚至结束。

...不仅由于一个物理问题,而且由于几个物理问题,尤其是热量(热量过多,难以散发),功耗(过高)和电流泄漏问题,利用更高的时钟速度变得越来越困难。

...随着芯片公司积极地追求相同的新多核方向,英特尔和大多数处理器供应商的未来都在别处。

...多核是关于在一个芯片上运行两个或多个实际CPU。

本文的预测似乎成立了,但是我不明白为什么。对于硬件的工作方式,我只有很模糊的想法。

我的过于简化的观点是“将更多处理能力打包到同一空间中变得越来越困难”(由于热量,功耗等问题)。我希望得出的结论是“因此,我们将不得不拥有更大的计算机或在多台计算机上运行我们的程序”。(确实,分布式云计算是我们正在听到的更多信息。)

但是解决方案的一部分似乎是多核体系结构。除非计算机的大小增加(他们没有),否则这似乎是“将更多处理能力打包到同一空间中”的另一种说法。

为什么“添加更多的核心”与“使CPU更快”面临相同的物理限制?

请以最简单的方式解释。:)



4
zh.wikipedia.org/wiki/Moore%27s_law值得一读-因为我们在谈论两种不同的事物。摩尔定律是不是时钟速度-其对晶体管数量
中级野人

9
我们假设它是30年前,CPU运行在4.77MHz。为什么即使不可能获得4GHz CPU,也可以在同一房间内放置1000台具有4MHz CPU的计算机?
user20574 2014年

3
@NathanLong,但是(获得更多的计算机空间)比获得更快的计算机要容易得多。
user20574 2014年

5
打个比方:汽车发动机的转速只能达到这么大的转速,但是您可以轻松地将两者固定在一起。
OJFord

Answers:


143

摘要

  • 经济学。设计具有更多内核而不是更高时钟速度的CPU便宜且容易,原因是:

  • 功耗大大增加。随着时钟速度的增加,CPU功耗迅速增加-在散热空间中,以较低速度运行的内核数量可以增加一倍,从而使时钟速度提高25%。四倍,占50%。

  • 还有其他方法可以提高顺序处理速度,CPU制造商可以充分利用这些方法。


在我们的一个姐妹SE网站上,我将大量借鉴有关该问题的出色答案。所以去投票吧!


时钟速度限制

时钟速度有一些已知的物理限制:

  • 传输时间

    电信号通过电路所花费的时间受光速的限制。这是一个硬性限制,没有已知的解决方法1。在千兆赫兹时,我们正在接近这个极限。

    但是,我们还没有。1 GHz表示每个时钟滴答1纳秒。在那个时候,光线可以传播30厘米。在10 GHz时,光可以传播3厘米。一个CPU内核大约5毫米宽,因此我们将在10 GHz以上的地方遇到这些问题。2

  • 切换延迟

    仅考虑信号从一端传播到另一端所花费的时间是不够的。我们还需要考虑CPU中的逻辑门从一种状态切换到另一种状态所花费的时间!随着我们提高时钟速度,这可能会成为一个问题。

    不幸的是,我不确定具体细节,也无法提供任何数字。

    显然,向其中注入更多的功率可以加快开关速度,但这会导致功耗和散热问题。另外,更大的功率意味着您需要能够处理而又不会损坏的笨重的导线管。

  • 散热/功耗

    这是大个子。引用Fuzzyhair2的答案

    最近的处理器是使用CMOS技术制造的。每次有一个时钟周期,都会消耗功率。因此,更高的处理器速度意味着更多的散热。

    此AnandTech论坛主题中进行了一些漂亮的测量,甚至得出了功耗的公式(与产生的热量并存):

    式
    感谢Idontcare

    我们可以在下图中将其可视化:

    图形
    感谢Idontcare

    如您所见,随着时钟速度增加到特定点,功耗(和产生的热量)的增加非常迅速。这使得无限地提高时钟速度是不切实际的。

    功耗快速增长的原因可能与开关延迟有关–仅与时钟速率成比例地增加功率还不够;还必须增加电压以保持较高时钟频率下的稳定性。这可能并不完全正确。请随时指出评论中的更正,或对此答案进行编辑。


更多核心?

那么为什么要增加内核?好吧,我无法确切回答。您必须问英特尔和AMD的员工。但是您可以从上面看到,对于现代CPU,在某些时候提高时钟速度变得不切实际。

是的,多核还会增加所需的功率和散热。但却巧妙地避免了传输时间和切换延迟问题。而且,从图表中可以看到,您可以轻松地将现代CPU中的内核数量增加一倍,而热量开销却与时钟速度提高25%相同。

有些人已经做到了-当前的超频世界纪录仅略低于9 GHz。但是,在保持功耗在可接受范围内的同时,这是一个重大的工程挑战。设计人员在某个时候决定增加更多内核以并行执行更多工作将在大多数情况下更有效地提高性能。

这就是经济的原因-采用多核路线可能更便宜(减少设计时间,制造复杂程度降低)。而且很容易上市-谁不喜欢全新的八核芯片?(当然,我们知道当软件不使用多核时,多核几乎没有用...)

这里一个缺点多:你需要更多的物理空间来把多余的核心。但是,CPU进程的大小不断缩小,因此有足够的空间放置先前设计的两个副本-真正的权衡是无法创建更大,更复杂的单核。再说一次,从设计的角度来看,增加内核的复杂性是一件坏事 -更多的复杂性=更多的错误/错误和制造错误。我们似乎找到了一种快乐的介质,它具有高效的内核,这些内核足够简单,不会占用太多空间。

在当前工艺尺寸下,我们可以装在单个芯片上的内核数量已经达到极限。我们可能会达到极限,可以很快缩小范围。下一个是什么?我们需要更多吗?不幸的是,这很难回答。这里有人千里眼吗?


其他提高绩效的方法

因此,我们无法提高时钟速度。而且,更多的内核还有另一个缺点-即,只有在运行于其上的软件可以使用它们时,它们才有用。

那么,我们还能做什么?在相同的时钟速度下,现代CPU如何比旧CPU快得多?

时钟速度实际上只是CPU内部工作的一个非常粗略的近似值。并非CPU的所有组件都能以这种速度工作-有些组件可能每两秒钟运行一次,依此类推。

更重要的是每单位时间可以执行的指令数。对于单个CPU内核可以完成多少,这是一个更好的衡量标准。一些指示;有些会花一个时钟周期,有些会花三个时钟周期。例如,除法比加法要慢得多。

因此,通过增加每秒可以执行的指令数量,我们可以使CPU性能更好。怎么样?好吧,您可以使一条指令更有效-也许现在除法只需要两个周期。然后是指令流水线。通过将每条指令分为多个阶段,可以“并行”执行指令-但每条指令仍具有明确的,顺序的,前后对应的指令顺序,因此不需要像多核这样的软件支持做。

还有另一种方式:更专业的说明。我们已经看到了SSE之类的东西,它们提供了一次处理大量数据的指令。不断推出具有相似目标的新指令集。这些再次需要软件支持并增加硬件的复杂性,但是它们提供了不错的性能提升。最近,出现了AES-NI,它提供了硬件加速的AES加密和解密,远远快于软件中实现的一堆算法。


1无论如何,并非没有完全深入理论量子物理学。

2它实际上可能更低,因为电场传播的速度不如真空中的光速快。另外,这仅是直线距离-可能至少有一条路径比直线长得多。


22
而且,在许多应用程序中,瓶颈不是计算时间,而是从RAM(或从磁盘禁止使用)获取数据的停顿时间。因此,另一个更大的提速来自更大,更快的处理器缓存。
Matteo Italia

2
@MatteoItalia是的。而且分支预测也有所改进,可能还有更多我所不知道的地方。在处理器之外,我们还具有更快的总线,更快的内存,更快的磁盘和关联的协议等
Bob

2
您提到与光速的“硬限制”有关的问题将在“超过20 GHz的某个地方”发生。您的计算不正确;电信号以低于光速的速度传播,具体取决于电线的几何形状。
Giulio Muscarello 2014年

5
当有完全更正确的话这种关系(二次,三次等)......请不要用“指数”
奥利弗·查尔斯沃思

7
@OliCharlesworth请阅读脚注。这正是为什么有脚注的原因,以及为什么我到处exponential都使用脚注。这是该词的完全有效用法,与该答案的切线相切,陷入了数学上的细节。如果您确实想尝试对其进行“更正”,请随时提出修改建议。只要您不显着改变含义,它是否会被我接受就取决于我。
鲍勃

14

物理就是物理。我们不能永远将更多的晶体管封装在越来越小的空间中。在某些时候,它变得很小,以至于您处理奇怪的量子废话。在某个时候,我们一年内无法包装的晶体管数量是过去的两倍(这是摩尔定律所要解决的问题)。

原始时钟速度毫无意义。我的旧奔腾M大约是现代台式机CPU的时钟速度的一半(并且在许多方面还更快),而现代系统几乎没有达到10年前的系统速度(并且显然更快)。在很多情况下,基本上“仅仅”提高时钟速度并不能真正提高性能。它可能在某些单线程操作中有所帮助,但您最好将设计预算用于提高其他方面的效率。

多核可让您一次完成两项 或多项工作,因此您无需等待下一件事就可以完成。从短期来看,您可以简单地将两个现有内核放入同一个程序包中(例如,使用Pentium D和它们的MCM(这是过渡设计)),而您的系统则要快两倍。当然,大多数现代实现确实共享诸如存储器控制器之类的东西。

您还可以通过不同的方式构建更智能的系统。ARM做的是Big-Little,它具有4个“弱”低功耗内核以及4个更强大的内核,因此您可以两全其美。英特尔让您降低油门速度(以获得更好的电源效率)或超频特定内核(以获得更好的单线程性能)。我记得AMD在模块方面做了一些工作。

您还可以移动诸如内存控制器(这样可以降低延迟)和与IO相关的功能(现代CPU没有北桥)以及视频(对于笔记本电脑和AIW设计而言,这一点尤为重要)之类的东西。做这些事情比“仅仅”不断提高时钟速度更有意义。

在某些时候,“更多”内核可能无法工作-尽管GPU具有数百个内核。

这样的多核技术可以使计算机在所有这些方面都更加智能地工作。


1
应该注意的是,GPU内核是为非常特定的目的而设计的,而CPU内核则更多地是出于通用目的。还应该注意的是,视频卡板要比CPU板大得多(这意味着即使内核没有使用板上的所有空间,它们仍然有更多的散热空间)。
user2366842 2014年

3
是的,但这是一个示例,其中您确实将内核扩展到极致。我很可能会在早上重新审视这个答案
Journeyman Geek

“您可以简单地将两个现有内核弹出到同一程序包中”。但是他们如何在不使用更多内核空间的情况下实现它呢魔法?独角兽?幼犬?(通过您的头像,我怀疑是后者)
巴西人Guy


6
wierd quantum crap仅此一项就加1!
戴夫

9

简单的答案

这个问题的最简单答案

为什么“添加更多的核心”与“使CPU更快”面临相同的物理限制?

实际上是在问题的另一部分中找到的:

我希望得出的结论是“因此,我们将不得不拥有更大的计算机或在多台计算机上运行我们的程序”。

本质上,多个内核就像在同一设备上具有多个“计算机”。

复杂的答案

“核心”是计算机中实际处理指令(加,乘,“与”等)的部分。内核一次只能执行一条指令。如果您希望计算机“功能更强大”,则可以执行两个基本操作:

  1. 增加吞吐量(增加时钟速率,减小物理尺寸等)
  2. 在同一台计算机上使用更多内核

对#1的物理限制主要是由于处理和电路中电子的速度而散发热量的需要。一旦将其中一些晶体管分离为一个单独的内核,就可以在很大程度上缓解热量的问题。

#2有一个重要限制:您必须能够将问题分解为多个独立的问题,然后组合答案。在现代的个人计算机上,这并不是真正的问题,因为无论如何,都有大量独立的问题都在争夺内核的计算时间。但是,当进行密集的计算问题时,只有在问题可以并发的情况下,多个内核才真正有用。


“多核就像在同一设备上拥有多台“计算机”。是的,但我的困惑是,您如何将它们全部放入其中?我认为“我们不能走得更快”是“我们不能再缩减更多东西”的征兆。
内森·朗

多核确实占用更多空间,芯片也越来越大。负担已经从CPU转移到了软件工程师...实际上是在这些巨大的多核cpus之一上运行得更快,因此必须编写软件,以便您可以将其工作量减少一半,并分别完成一半工作。
詹姆斯·詹姆斯

1
一个简单的答案是功耗与时钟速度的立方成正比。随着信号传播距离的增加,单线错觉将变得难以维护。详细的答案:amazon.com/…–
Rob

6

为什么“添加更多的核心”与“使CPU更快”面临相同的物理限制?

它们确实面临相同的物理限制,但是切换到多核设计为我们提供了一些喘息的空间,然后再碰到其中一些。同时,出现了由这些限制引起的其他问题,但更容易克服。

事实1:功耗和散发的热量增长快于计算能力。将CPU从1 GHz推至2 GHZ会将功耗从20 W推至80 W,同时耗散热量。(我只是计算了这些数字,但实际上是这样的)

事实2:购买第二个CPU并以1 GHz的频率运行将使您的计算能力翻倍。运行1 GHz的两个CPU可以处理与一个2 GHz CPU相同的数据量,但是每个CPU仅消耗20 W的能量,即总共40W。

利润:将CPU数目而不是时钟频率加倍可以节省一些能量,而且我们没有像以前那样接近“频率障碍”。

问题:您必须将工作分配到两个CPU之间,然后再合并结果。

如果您可以在可接受的时间内解决此问题,并且所消耗的能源少于刚刚节省的能源,那么多使用多个CPU就可以使您受益匪浅。

现在,您只需要将两个CPU合并为一个双核CPU,就可以回家了。这是有益的,因为内核可以共享CPU的某些部分,例如缓存(相关答案)。


我们一直以1000种不同的方式来突破物理限制,包括裸片的尺寸(对于多核导致更小的制造工艺),主板的尺寸(对于多CPU),通过走线绘制的安培数(两种)。它不像您可以在m-atx上放置2 cpus或在atx板上放置4 cpus,而这些设计需要十进制来更改。我同意其余的观点。
罗斯托尔

@Rostol很好,我已经编辑了答案。
gronostaj 2014年

5

长话短说:加速单核已达到极限,因此我们会不断缩小并增加更多,直到达到极限为止,否则我们可以更换更好的材料(或实现突破现有技术的根本突破,例如家庭大小的实际工作的量子计算)。

我认为这个问题是多维的,需要花一些文字才能描绘出更完整的图景:

  1. 物理限制(由实际物理学施加):像光速,量子力学一样。
  2. 制造问题:我们如何以所需的精度制造更小的结构?与原材料有关的问题,用于建造电路的材料,耐久性。
  3. 体系结构问题:热量,推断,功耗等。
  4. 经济问题:为用户带来更多性能的最便宜方法是什么?
  5. 用例和用户对性能的看法。

可能还有更多。多功能CPU试图找到一种解决方案,将所有这些因素(以及更多因素)打造成一个可批量生产的芯片,以适合市场上93%的对象。如您所见,最后一点是最关键的一点,即客户感知,这直接源于客户使用CPU的方式。

问问自己,您通常的申请是什么?也许:25个Firefox标签,每个标签都在后台播放一些广告,而您正在听音乐时,都是在等待大约2个小时前开始的构建工作时完成。要做很多工作,但是您仍然想要一个流畅的体验。但是您的CPU可以同时处理一个任务!在单件事情上。因此,您要做的是,将事情分解,排成一排,每个人都有自己的一份,而所有人都感到高兴。除了你,因为所有的东西都变得不整齐而且一点也不光滑。

因此,您可以加快CPU速度,以便在相同的时间内执行更多操作。但是正如您所说:热量和功率消耗。这就是我们涉及原材料的地方。硅随着变热而变得更具导电性,这意味着当您加热时,更多的电流流经该材料。随着晶体管切换速度的加快,晶体管的功耗会更高。同样,高频会使短导线之间的串扰更糟。因此,您会看到,加快速度会导致“崩溃”。只要我们没有比硅更好的原材料或比晶体管更好的原材料,我们就会陷入单核速度的困境。

这使我们回到了起点。并行完成工作。让我们添加另一个核心。现在,我们实际上可以同时做两件事。因此,让我们稍微冷却一下,然后编写可以将其工作划分为两个功能更弱但功能更多的内核的软件。这种方法有两个主要问题(除了软件世界需要花费一些时间来适应它):1.使芯片变大,或者使单个内核变小。2.有些任务根本无法分为同时运行的两个部分。只要您可以收缩它们,就继续添加内核,或者使芯片变大,并避免散热问题。哦,别忘了客户。如果我们更改用例,则行业必须适应。查看移动部门提出的所有闪亮的“新”事物。

是的,这种策略将达到其极限!英特尔知道这一点,这就是为什么他们说未来在其他地方。但是,只要价格便宜,有效且可行,他们就会继续这样做。

最后但并非最不重要的:物理。量子力学将限制芯片缩小。光速还不是一个极限,因为电子不能以硅中的光速行进,所以实际上它要慢得多。同样,正是脉冲速度将硬顶置于材料提供的速度上。就像声音在水中传播的速度比在空气中传播的速度快一样,例如电脉冲在石墨烯中的传播速度比在硅中的传播速度快。这导致原材料。就其电性能而言,石墨烯是伟大的。构建CPU的材料将更好,但是很难大量生产。


2

说(作为一个不现实的示例,但应该可以理解),您有一个运行在100F的CPU。多核通常的工作方式是通过获取以100F运行的CPU的时钟频率并将其降低,从而降低速度。由于它不再处于高温状态,因此他们可以在其旁边再放置第二个,第三个甚至第四个,而不会显着影响CPU的整体温度,并从多核中受益。显然,这会带来一些开销,因为内核仍然必须从一个位置控制一个内核。添加的核心越多,开销就越大。至于单核,您提高其速度的时间越多,它们产生的热量就越多。这显然存在身体上的局限性(例如,在某一点之后,它开始对性能产生不利影响,

随着时间的流逝,他们找到了减小CPU物理尺寸的方法,这就是为什么我们还没有真正遇到需要更多空间的要求,但是例如,实际上并不存在16核CPU(由于服务器的物理尺寸限制,在服务器级设备之外),因为服务器级的CPU的物理尺寸明显大于标准消费级的CPU。


2

CPU =发动机:制造具有16个气门的更强大的汽车(即兰博基尼)要比拥有10万转/分钟的大气门/气缸的高转速汽车容易得多。

原因是物理和化学原因,需要用计算火箭燃料代替硅以改变堆芯数量和堆芯速度之间的平衡。


2

我要说的是,计算能力极限的主要限制主要与电子可以通过电路移动的速度(光电子漂移的速度)的极限有关。还有更多类似您提到的因素。

添加其他内核不会使处理器更快,尽管它可以使它在相同的时间内处理更多的信息。

摩尔定律是一本非常有趣且内容丰富的书。这句话在这里特别重要:

一个人也可能会限制一台相当实用的“终极笔记本电脑”的理论性能,该笔记本电脑的质量为一千克,体积为一升。这是通过考虑光速,量子尺度,引力常数和玻耳兹曼常数完成的,在大约10 31位上,每秒可实现5.4258⋅10 50逻辑运算的性能。


2
顺便提及,电子实际上非常缓慢地移动(“漂移速度”),约为每秒IIRC毫米。您更多地是指电场传播的速度。
鲍勃

2
我知道我不应该表现得丝毫不了解物理学。:)感谢您对此进行纠正/告知我。
jredd

同样,传播速度将产生重大影响的实际时钟速度大约在10+ GHz附近。还有其他原因,现代处理器更喜欢多核而不是更高的时钟。
鲍勃

1

长话短说:

我们确实不需要更快的CPU。除了一些高度专业化的用途之外,* CPU多年来一直不是瓶颈-诸如内存,存储和网络之类的所有外设位通常使CPU等待数百万个时钟周期,在此期间它可以做其他事情。第二个核心可以做更多的“其他事情”,从而为用户带来更高的性能。

许多移动设备,笔记本电脑等会降低CPU的频率,以延长电池寿命并降低温度。如果您的主要客户在1.3GHz上运行3.5GHz ARM内核,则没有太多动力去开发它。

  • 那些专门用途不足以证明5GHz内核开发的合理性。他们也不在乎热量或功率-购买最快的风扇,对其进行超频,然后将其固定在烤面包机大小的水冷散热器上。

1
这不是“感知”,而是“更好的延迟”。我认为这是我们面临的主要问题之一;不惜一切代价保持强大的单线程吞吐量。消费者操作系统尚未面向实时,也没有从根本上面向并发或并行性。
罗布

@peter您的观点很不错,感谢您的解释。作为程序员,我需要记住这一点。:)就此问题而言,这仍然是一个附带问题。我的问题是为什么我们不能获得更快的时钟速度?您的答案是关于为什么我们目前不需要的原因。
内森·朗

1
@NathanLong将“不需要”和“不需要”链接在一起。您无法获得更快的处理器,因为没有人愿意投资开发它所需的十亿或五亿美元(无论如何,5 GHz可能会突破物理极限)。没有人愿意投资,因为当整体处理器速度下降时,没有切合实际的市场-一些当前制造的台式机处于1.5GHz级(十年前的最高水平),因为它对于该市场而言足够便宜,凉爽且足够快分割。
彼得2014年

1

简短答案:

为什么不从1辆卡车拖运货物到100辆卡车拖运100倍的卡车,面临着与从1辆以100mph行驶的卡车到1辆以10,000mph行驶的卡车相同的物理限制?

回答该问题,您的问题也将得到回答。概念大致相同。


1

我认为另一个因素是温度。如果增加时钟频率,则核心温度会升高。如果添加更多的核,即使功耗增加,它也会分布在各个核上,因此温度保持不变(例如,如果您以相同的温度相互添加两种热液体,则温度将保持不变)。

另一个原因是,增加时钟频率往往会使功耗增加与增加频率成正比的平方(取决于在给定点遇到的其他障碍)。因此,增加时钟频率会使功耗增加一个平方,而增加核数只会使其线性增加。


0

为什么不“添加更多核心”面临的物理局限性与“使CPU更快”面临的物理局限性的答案是,多核系统面临与单核CPU完全相同的局限性。我们已经到了真正无法选择让单个核心系统运行更快的地步,所以我们做到了,因此我们可以一次做更多的事情。当前,规模和协调方面的挑战比更快地更容易解决。不利的一面是,如果不能将一项任务分解成碎片,那么我们最终可能不会比单个核心系统快得多。


0

您不能仅仅通过增加更多的门来使CPU更快。最终,必须执行指令,并且每条指令都需要几个“切换”操作。存在一些基本的物理限制(量子力学-不确定性原理),这使得很难将CPU的“时钟速度”提高到当前高端系统的速度之外。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.