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

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

一些关键语录:


我们习惯于看到500MHz CPU取代1GHz CPU让位给2GHz CPU,依此类推。今天,我们在主流计算机上处​​于3GHz范围内。

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

...由于不仅是一个物理问题,而且还涉及多个物理问题,尤其是热量(太
太多,很难消散),功耗(太高)和
电流泄漏问题。

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

...多核是关于在一个芯片上运行两个或多个实际CPU。明白为什么。我
对硬件的工作方式只有非常模糊的想法。

我过于简化的观点是“将更多处理能力打包到同一空间变得越来越困难”(由于热量,功耗等)。我
会得出这样的结论:“因此,我们将不得不拥有更大的计算机或在多台计算机上运行我们的程序。” (事实上​​,分布式云计算是我们正在听到的更多信息。)但是,解决方案的一部分似乎是多核体系结构。除非计算机
增大(它们没有增大),否则这似乎是另一种说法
“将更多的处理能力打包到同一空间中”。 “添加更多内核”是否与“使CPU更快”面临相同的物理限制? :)

评论

电机工程领域还有一些相关问题:electronics.stackexchange.com/q/122050/34550 electronics.stackexchange.com/q/76580/34550

zh.wikipedia.org/wiki/Moore%27s_law值得一读-因为我们在谈论两种不同的事物。摩尔定律与时钟速度无关-与晶体管计数有关

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

@NathanLong,但是要获得更多的空间(用于更多的计算机)比获得更快的计算机要容易得多。

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

#1 楼

摘要


经济学。设计具有更多内核而不是更高时钟速度的CPU便宜且容易,原因是:
功耗大大增加。随着时钟速度的增加,CPU功耗迅速增加-在散热空间中,时钟速度提高25%所需的内核数量可以降低一倍。四倍,达到50%。
还有其他方法可以提高顺序处理速度,CPU制造商可以充分利用它们。在我们的姐妹SE网站之一上回答此问题。因此,请对其进行投票!


时钟速度限制

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



传输时间

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

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


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

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

显然,要抽出更多功率可以加快开关速度,但这会导致功耗和散热问题。此外,更多的功率意味着您需要能够处理而又不会损坏的笨重的导线管。这是大个子。引用Fuzzyhair2的回答:最近的处理器是使用CMOS技术制造的。每次有一个时钟周期,都会消耗功率。因此,更高的处理器速度意味着更多的散热。


AnandTech论坛线程进行了一些漂亮的测量,甚至得出了功耗的公式(与热量并存生成):

归功于Idontcare

我们可以在下图中直观地看到它: />如您所见,随着时钟速度增加到特定点,功耗(和所产生的热量)急剧增加。

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



更多的内核?好吧,我无法确切回答。您必须问英特尔和AMD的员工。但是,您可以从上面看到,对于现代CPU,在某些时候提高时钟速度变得不切实际。但却巧妙地避免了传输时间和切换延迟问题。而且,从该图可以看出,您可以轻松地使现代CPU的内核数量增加一倍,而热量消耗却与时钟速度提高25%相同。有些人已经做到了-当前的超频世界纪录仅略低于9 GHz。但是,在保持功耗在可接受范围之内的同时,这是一项重大的工程挑战。设计师在某个时候决定,在大多数情况下,添加更多内核以并行执行更多工作将在大多数情况下更有效地提高性能。时间,制造起来就不那么复杂了)。而且很容易推向市场-谁不喜欢全新的八核芯片? (当然,我们知道当软件不使用多核时,多核几乎没有用...)

多核有一个缺点:您需要更多的物理空间来放置额外的核。但是,CPU进程大小不断缩小,因此有足够的空间放置先前设计的两个副本-真正的权衡是无法创建更大,更复杂的单核。再说一次,从设计的角度来看,增加内核的复杂性是一件坏事-更多的复杂性=更多的错误/错误和制造错误。我们似乎找到了一种快乐的介质,它具有高效的内核,该内核足够简单,不会占用太多空间。当前的流程规模。我们可能会达到极限,可以很快缩小范围。下一个是什么?我们需要更多吗?不幸的是,这很难回答。这里有谁是千篇一律的人?而且,更多的内核还有另一个缺点-即,只有在运行于其上的软件可以使用它们时,它们才有帮助。在相同的时钟速度下,现代CPU如何比旧CPU快得多?

时钟速度实际上只是CPU内部工作的一个非常粗略的近似值。并非CPU的所有组件都以这种速度工作-某些组件可能每两个滴答声运行一次,等等。对于单个CPU内核可以完成多少,这是一个更好的衡量标准。一些指示;有些会花一个时钟周期,有些会花三个时钟周期。例如,除法比加法要慢得多。

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

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


1

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

评论


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

–意大利Matteo
14年8月15日在16:59

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

–鲍勃
2014年8月15日在17:01



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

–朱利奥·穆斯卡洛洛(Giulio Muscarello)
2014年8月15日17:45



如果存在完全正确的关系词(二次,三次等),请不要使用“指数”。

–奥利弗·查尔斯沃思(Oliver Charlesworth)
14年8月15日在21:54

@OliCharlesworth请阅读脚注。这就是为什么脚注存在的原因,以及为什么在所有使用指数的地方都引用它的原因。这是该词的完全有效用法,与该答案的切线相切,以致于陷入数学细节的泥潭。如果您确实想尝试对其进行“更正”,请随时提出修改建议。只要您不显着改变含义,它就不会由我决定。

–鲍勃
2014年8月16日在2:03



#2 楼

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

原始时钟速度毫无意义。我的旧Pentium M大约是当代台式机CPU的时钟速度的一半(并且在许多方面还更快),而现代系统几乎没有达到10年前的系统速度(并且显然更快)。在许多情况下,基本上“仅仅”提高时钟速度并不能真正提高性能。它可能在某些单线程操作中有所帮助,但是最好将设计预算用于提高其他方面的效率。无需等待下一件事就可以完成。从短期来看,您可以简单地将两个现有内核放入同一个程序包中(例如,使用Pentium D及其MCM(这是过渡设计)),而您的系统则要快两倍。当然,大多数现代实现的确共享诸如存储器控制器之类的东西。 ARM做的是Big-Little,它具有4个“弱”低功耗内核以及4个更强大的内核,因此您可以两全其美。英特尔让您降低油门(以提高电源效率)或超频特定内核(以提高单线程性能)。我记得AMD对模块做了一些事情。

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

这样的多核可让计算机以所有这些方式更智能地工作。

评论


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

–user2366842
2014年8月15日14:41



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

–游侠怪胎♦
2014年8月15日14:44

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

–巴西那个家伙
2014年8月15日15:31



奔腾Ds基本上是en.wikipedia.org/wiki/Pentium_D

–游侠怪胎♦
14年8月15日在15:33

仅此一项就怪异的量子废话+ 1!

–戴夫
14年8月16日在7:07

#3 楼

简单答案
问题的最简单答案

为什么“增加更多的内核”与“使CPU更快”没有相同的物理限制?

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

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

本质上,多个内核就像是在同一设备上具有多个“计算机”。
复杂的答案
“内核”是计算机中实际处理指令(加,乘,和“ ing”等)。内核一次只能执行一条指令。如果您希望计算机“功能更强大”,则可以执行以下两项基本操作:

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

#1的物理限制主要是由于处理和电路中电子的速度而散发热量。一旦将其中一些晶体管拆分为一个单独的内核,就可以在很大程度上缓解散热问题。
#2存在一个重要限制:必须将问题分解为多个独立的问题,然后结合答案。在现代的个人计算机上,这并不是一个真正的问题,因为无论如何,都有大量独立的问题都在争夺计算时间。但是,当进行密集的计算问题时,只有在问题可以并发的情况下,多核才真正有用。

评论


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

–内森·朗(Nathan Long)
14年8月15日在18:27

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

–詹姆斯
2014年8月16日下午4:57

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

–Rob
2014年8月18日在14:49

#4 楼


为什么“添加更多的内核”与“使CPU更快”没有相同的物理限制?设计为我们提供了一些呼吸空间,然后再撞到其中一些。同时,由这些限制引起的其他问题也出现了,但更容易克服。

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

事实2:购买第二个CPU并以1 GHz运行两个CPU将使您的计算能力提高一倍。两个运行1 GHz的CPU可以处理与一个2 GHz CPU相同的数据量,但是每个CPU只能消耗20 W的能量,总共40W。时钟频率为我们节省了一些能量,而且我们没有像以前那样接近“频率障碍”。
如果您可以在可接受的时间内解决此问题,并且所消耗的能源少于刚刚节省的能源,那么多使用多个CPU就可以使您受益匪浅。

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

评论


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

–罗斯托尔
2014年8月16日在3:04



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

–gronostaj
2014年8月16日上午10:46

#5 楼

长话短说:加速单核已达到极限,因此我们会不断缩小并增加更多,直到达到极限为止,否则我们可以更换更好的材料(或实现突破现有技术的根本突破,例如我认为这个问题是多维的,需要花一些文字才能描绘出更完整的图景:


物理限制(由实际物理学施加):像光速,量子力学一样。与原材料有关的问题,用于建造电路的材料,耐久性。
建筑问题:发热量,推断,功耗等。
经济问题:为用户提供更多性能的最便宜方法是什么?
用例和用户对性能的理解。

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

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

因此,您可以加快CPU速度,以便在相同的时间内执行更多操作。但是正如您所说:热量和功率消耗。这就是我们涉及原材料的地方。硅随着变热而变得更具导电性,这意味着当您加热时,更多的电流流经该材料。随着晶体管开关速度的加快,晶体管的功耗会更高。同样,高频会使短导线之间的串扰更糟。如此看来,提速方法将导致“崩溃”。只要我们没有比硅更好的原材料或比晶体管更好的原材料,我们就只能以单核速度停留在原处。并行完成工作。让我们添加另一个核心。现在,我们实际上可以同时做两件事。因此,让我们稍微冷却一下,然后编写可以将其工作划分为两个功能更弱但功能更多的内核的软件。这种方法有两个主要问题(除了软件世界需要时间才能适应):1.使芯片更大,或者使单个内核更小。 2.有些任务根本无法分为同时运行的两个部分。只要可以增加它们的芯数,就可以不断添加芯子,或者使芯片变大,并避免散热问题。哦,别忘了客户。如果我们更改用例,则行业必须适应。查看移动部门提出的所有闪亮的“新”事物。这就是为什么移动部门被认为如此重要,每个人都想得到它的原因。

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

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

#6 楼

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

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

#7 楼

CPU =发动机:制造具有16个气门的更强大的汽车,即兰博基尼,要比拥有一个大气门/汽缸的10万转的高转速汽车容易。在物理和化学上,需要用计算火箭燃料代替硅以改变堆芯数量与堆芯速度之间的平衡。

#8 楼

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

添加额外的内核并不能使处理器更快,尽管它可以使处理器在相同的时间内进行更多处理。 。这句话在这里尤其有意义:


也可能会限制一公斤重,一升容积的相当实用的“最终笔记本电脑”的理论性能。这是通过考虑光速,量子尺度,重力常数和玻耳兹曼常数完成的,在大约1031位上每秒可实现5.4258⋅1050逻辑运算的性能。

评论


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

–鲍勃
2014年8月15日14:43



我知道我不敢表现出我对物理学的一点了解。 :)感谢您对此进行纠正/告知我。

– jredd
2014年8月15日14:44



同样,传播速度将产生重大影响的实际时钟速度大约在10+ GHz附近。还有其他原因导致现代处理器更倾向于使用多个内核而不是更高的时钟。

–鲍勃
2014年8月15日14:51



#9 楼

长话短说:

我们真的不需要更快的CPU。除了一些高度专业化的用途之外,* CPU多年来一直不是瓶颈-内存,存储和网络等所有外围设备通常使CPU等待数百万个时钟周期,在此期间它可以执行其他操作。第二个内核可以做更多的“其他事情”,从而给用户带来更高的性能感知。如果您的主要客户在1.3GHz上运行3.5GHz ARM内核,则没有太多动机。




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


评论


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

–Rob
2014年8月18日在15:26

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

–内森·朗(Nathan Long)
2014年8月19日13:40



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

–彼得
2014年8月20日在2:05

#10 楼

简短的答案:

为什么不从1辆卡车拖运货物到100辆卡车拖运100倍的卡车,面临着与从1辆卡车以100mph行驶到1卡车以相同的速度行驶一样的物理限制10,000英里/小时?

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

#11 楼

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

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

#12 楼

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

#13 楼

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