为什么高端服务器 CPU 通常单线程性能较慢?

为什么高端服务器 CPU 通常单线程性能较慢?

我多次看到并被多个基准测试证实的情况是:Xeon CPU 和更普遍的面向服务器市场的 Intel CPU 的每线程性能比 CoreX CPU 慢。
即使是 117 美元的 22nm Core i3 Ivy Bridge CPU 通常也能比 2000 美元的 10nm Xeon Cannon Lake CPU 更快地运行 Python 工作负载。甚至没有启用 Turbo Boost 模式!

除了 Python 的情况(该语言没有适当的多线程支持)之外,服务器工作负载比个人运行的游戏和工作负载更加多线程和多进程,这解释了为什么他们愿意牺牲单线程性能来获得更多的核心。

虽然我们已经知道英特尔和其他硬件制造商无法再使用单核设计来提高性能,什么(详情)对于相同的微架构,降低每个线程的性能会带来什么为什么不继续以同样的价格在每个芯片上增加更少但更快的内核呢?

答案1

(这篇文章旨在征求猜测,我很乐意满足您的要求。)

为什么不继续以相同的价格在每个芯片上添加更少但速度更快的核心呢?

问题是,当前的技术已经达到了极限,因此现在只能实现很小的性能改进。10-20% 的改进听起来不太有说服力。

另一方面,制造商也不想落后 摩尔定律,指出计算机芯片性能大约每18个月翻一番(功耗不增加)。这需要100%的改进系数,而这样的单核技术根本不存在。

解决方案:将核心数量增加一倍,并将它们的总容量相加,以证明性能进步足够快 100%。

在现实生活中,理论上增加核心数量并不能保证提高总体性能,因为某些计算机资源是共享的,可能会成为瓶颈,例如 RAM、总线和磁盘。

对于相同的微架构来说,每线程性能的降低会带来什么?

增加核心数量并非无限,尤其是考虑到电力消耗。核心要工作得更快,就需要更多的电力。这意味着核心越多,每个核心所占总可用电力的比例就越小,因此工作速度就越慢。

解决方案是使用 turbo 模式,即一个核心获得大部分可用电力供应。因此,您有一个快速核心,其他核心要么关闭,要么减速。但由于一个核心无法无限期地支持该模式,因此解决方案是轮流为多个核心打开 turbo 模式。

一般而言,对于同类技术,核心数较少的 CPU 可能比多核 CPU 更快(核心数与核心数的比较)。其他因素也可能影响速度,但在核心数和单核性能之间做出选择往往是个问题。Turbo 模式对工作负载的适用性是另一个问题。

答案2

为什么不继续以相同的价格在每个芯片上添加更少但速度更快的核心呢?

AMD 确实以相似的价格提供了更少的内核以实现更高的时钟速度,但由于工程限制,它们的价值主张很差。

EPYC 72F3 是 8 核,调频至 3.7/4.1GHz,而 EPYC 7543P 是 32 核,调频至 2.70/3.70Ghz,价格相似。

整个 EPYC 系列包括大量调整和核心数,适用于不同的价格和功率点。

我认为英特尔也提供了类似的 CPU 选择以满足不同的需求。

工程限制:

  1. 改进每个时钟的指令是一项不简单的工程任务,需要花费数年时间来改进旧设计。

  2. 光速,光在 3.2GHz 下完成一个时钟周期所需的时间内只能移动约 10cm,这为大核/宽核的时钟速度设置了上限,Apple 的 M1/M2 核速度极快且节能,但在 3.5GHz 时达到上限,而 AMD 更精简的 Zen 可以在相同的 5nm 工艺上实现 5.7GHz,但代价是功耗增加 10 倍。

  3. 高端功耗随着时钟速度的平方而增加,单个 100Mhz 的步骤可以使您的功率预算增加 50%,并且增加对冷却的需求超出合理预期,相反,时钟下降 300mhz,可以使您的核心数量在相同的功率预算下增加一倍。

  4. 热量的局部性是一个巨大的限制因素,增加核心数量也会增加芯片的表面积,使您能够连接更好的空气冷却解决方案,相反,增加时钟速度只会增加局部区域的热量,因为 IHS 和硅的热限制,您需要更多特殊的冷却方法,如水或液氮,以保持适当的热梯度,以克服热导率的限制。

  5. 产品变化,当你制造出细至 5nm 的线时,你会发现它们在特定电压下处理时钟速度的能力会发生很大变化,像高端 Xeon 这样的巨型芯片总是带有至少一个“有缺陷”的核心,需要在相同电压下降低时钟速度,另一方面,AMD 拥有围绕 8 核芯片构建的小型模块化设计,具有不错的成品率(> 90%),允许他们出售带有禁用核心的缺陷部件,或以不同的布局降低时钟速度。

例如,Ryzen 7900 和 7900X 之间的性能差异为 10-20%,但 7900X 的功耗为 200w,而7900 仅耗电 85w电力消耗增加了整整120%。

相关内容