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

Nat*_*ong 111 cpu cpu-architecture

2014 年,我听到很多编程语言因其并发特性而受到吹捧。据说并发对于性能提升至关重要。

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

一些关键引述:

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

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

... 开发更高的时钟速度变得越来越困难,不仅是因为一个而是几个物理问题,特别是热量(热量过多且难以散热)、功耗(太高)和电流泄漏问题。

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

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

这篇文章的预测似乎站得住脚,但我不明白为什么。我对硬件的工作原理只有非常模糊的想法。

我过于简单化的观点是“将更多的处理能力装入同一空间变得越来越难”(因为热量、功耗等问题)。我希望结论是“因此,我们必须拥有更大的计算机或在多台计算机上运行我们的程序。” (事实上​​,分布式云计算是我们听到更多的事情。)

但部分解决方案似乎是多核架构。除非计算机的尺寸变大(它们没有变大),否则这似乎只是“将更多处理能力装入同一空间”的另一种说法。

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

请用最简单的语言解释。:)

Bob*_*Bob 144

概括

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

  • 用电量显着增加。随着时钟速度的提高,CPU 功耗会迅速增加 - 您可以在将时钟速度提高 25% 所需的热空间中将以较低速度运行的内核数量增加一倍。四倍 50%。

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


我将在我们的一个姊妹 SE 网站上大量借鉴这个问题的出色答案。所以去给他们点赞吧!


时钟速度限制

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

  • 传输时间

    电信号穿过电路所需的时间受到光速的限制。这是一个硬性限制,没有已知的方法可以绕过它1。在千兆赫兹时钟,我们正在接近这个极限。

    然而,我们还没有做到。1 GHz 表示每个时钟滴答一纳秒。那时,光可以传播 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它实际上可能更低,因为电场传播的速度不如真空中的光速。此外,这仅适用于直线距离 - 很可能至少有一条路径比直线长得多。

  • 此外,在许多应用程序中,瓶颈不是计算时间,而是从 RAM(或者,上帝保佑,从磁盘)获取数据的停顿时间;因此,另一个主要的加速来自更大、更快的处理器缓存。 (23认同)
  • @OliCharlesworth 请阅读脚注。这*正是*为什么脚注在那里,以及为什么我在所有使用“指数”的地方都引用了它。这是对这个词的完全有效的使用,并且与这个答案的要点相切,陷入数学细节的困境。如果您真的想尝试“纠正”它,请随时提出编辑建议。只要你不显着改变意义,它是否被接受就不会由我决定。 (7认同)
  • 当这种关系有完全正确的词(二次、三次等)时,请不要使用“指数”... (5认同)
  • @MatteoItalia 是的。还有分支预测的改进,可能还有更多我不知道的。在处理器之外,我们还有更快的总线、更快的内存、更快的磁盘和相关协议等。 (2认同)
  • 您提到与光速“硬限制”相关的问题将发生在“超过 20 GHz 的某个地方”。你的计算不正确;电信号以低于光速的速度传播,这取决于电线的几何形状。 (2认同)
  • 软件质量通常也是一个巨大的瓶颈。您可以通过 a) 编写更好的软件和 b) 改进语言和编译器来减少_完成工作_所需的指令数量。b 更容易实现。 (2认同)

Jou*_*eek 15

物理学就是物理学。我们不能永远将更多的晶体管装入越来越小的空间中。在某些时候,它变得如此之小,以至于您可以处理奇怪的量子垃圾。在某些时候,我们无法在一年内包装两倍于过去的晶体管(这就是摩尔定律的意义所在)。

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

多核让您可以同时做 件事或多件事,因此您无需等待一件事情完成后再做下一件事情。从短期来看,您可以简单地将两个现有内核放入同一个封装中(例如使用Pentium D和它们的 MCM,这是一种过渡设计),并且您的系统速度是原来的两倍。当然,大多数现代实现确实共享诸如内存控制器之类的东西。

您还可以通过不同的方式构建更智能的产品。ARM 有大有小 – 有 4 个“弱”低功耗内核与 4 个更强大的内核一起工作,因此您可以两全其美。英特尔允许您降低油门(以获得更好的电源效率)或超频特定内核(以获得更好的单线程性能)。我记得 AMD 用模块做了一些事情。

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

在某些时候,“更多”内核可能不起作用——尽管 GPU 有数百个内核。

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

  • `奇怪的量子废话` + 1 仅此而已! (6认同)
  • 是的,但这是一个示例,您将内核扩展到一个极端的数量。我可能会在早上重新审视这个答案 (3认同)

小智 9

简单的回答

最简单的问题答案

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

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

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

从本质上讲,多核就像在同一设备上拥有多台“计算机”。

复杂的答案

“核心”是计算机中实际处理指令(加、乘、“与”等)的部分。一个内核一次只能执行一条指令。如果你想让你的电脑“更强大”,你可以做两件基本的事情:

  1. 提高吞吐量(提高时钟频率、减小物理尺寸等)
  2. 在同一台计算机中使用更多内核

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

#2 有一个重要的限制:你必须能够将你的问题分成多个独立的问题,然后组合答案。在现代个人计算机上,这不是真正的问题,因为无论如何都有大量独立的问题都在与内核争夺计算时间。但是在处理密集型计算问题时,只有当问题适合并发时,多核才真正有帮助。


gro*_*taj 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 的能量,总共 40 W。

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

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

如果您能在可接受的时间内解决这个问题,并且使用的能源比刚刚节省的少,那么您就因为使用多个 CPU 而获利。

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


gil*_*ath 5

长话短说:加速单核已经达到极限,所以我们不断缩小它们并增加更多,直到达到极限,或者我们可以改用更好的材料(或实现颠覆现有技术的根本性突破,例如家庭大小,实际工作,量子计算)。

我认为这个问题是多维的,需要一些写作来描绘更完整的画面:

  1. 物理限制(由实际物理强加):比如光速、量子力学等等。
  2. 制造问题:我们如何以所需的精度制造更小的结构?原材料相关问题,用于构建电路的材料,耐用性。
  3. 架构问题:热量、推理、功耗等。
  4. 经济问题:为用户提供更多性能的最便宜的方法是什么?
  5. 用例和用户对性能的感知。

可能还有更多。多用途 CPU 正试图找到一种解决方案,将所有这些(以及更多)因素整合到一个适合市场上 93% 主题的可批量生产的芯片中。如你所见,最后一点是最关键的一点,客户感知,直接来源于客户使用CPU的方式。

问问自己你通常的应用是什么?也许:25 个 Firefox 标签,每个标签在后台播放一些广告,当你听音乐时,一直在等待你大约 2 小时前开始的构建工作完成。这是很多工作要做,但您仍然希望获得流畅的体验。但是您的 CPU 可以同时处理一项任务!在单一的事情上。所以你要做的是,你把事情分开,排长队,每个人都有自己的份额,所有人都很高兴。除了你,因为所有的事情都变得迟缓而且根本不顺利。

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

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

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

最后但并非最不重要的:物理学。量子力学将限制芯片收缩。光速还不是极限,因为电子不能以光速在硅中传播,实际上它比光速慢得多。此外,脉冲速度也限制了材料提供的速度。正如声音在水中比在空气中传播得更快一样,电脉冲在石墨烯中的传播速度也比在硅中快。这导致回到原材料。就其电气特性而言,石墨烯非常棒。这将是构建 CPU 的更好材料,不幸的是,它很难大量生产。