为什么是多核处理器?

rkr*_*ter 16 cpu multi-core computer-architecture

为什么芯片包含越来越多的内核?为什么不制造更大的单核处理器?制造起来容易吗?是否允许程序使用单独的内核进行多线程?

小智 25

多核的趋势是一种工程方法,可帮助 CPU 设计人员避免随着频率缩放不断增加而出现的功耗问题。随着 CPU 速度上升到 3-4 Ghz 范围,加快速度所需的电量开始变得令人望而却步。造成这种情况的技术原因很复杂,但热损失和漏电流(功率只是通过电路而没有做任何有用的事情)等因素都会随着频率的升高而增加得更快。虽然构建 6 GHz 通用 x86 CPU 当然是可能的,但事实证明,高效地这样做并不经济。这就是开始转向多核的原因,也是为什么我们会看到这种趋势至少持续到并行化问题变得无法克服的原因。

作为一个实际示例,E5640 Xeon(4 核 @ 2.66 GHz)具有 95 瓦的功率包络,而 L5630(4 核 @ 2.13 GHz)仅需要 40 瓦。对于大部分功能兼容的 CPU,这意味着 137% 的电力增加了 24% 的 CPU 功率。X5677 将速度提升至 3.46 GHz,并具有更多功能,但处理能力仅增加 60%,而电力增加 225%。

现在将 X5560(2.8 GHz,4 核,95 瓦)与较新的 X5660(2.8 GHz,6 核,95 瓦)进行比较,插槽中有 50% 的额外计算能力(假设Amdahl 定律对我们有利现在)而不需要任何额外的电力。与 2400\8400 系列相比,AMD 的 6100 系列 CPU 在总体性能方面有类似的提升,同时保持电力消耗持平。

对于单线程任务,这是一个问题,但如果您的要求是向分布式处理集群或虚拟化集群提供大量聚合 CPU 能力,那么这是一种合理的方法。这意味着对于当今的大多数服务器环境来说,横向扩展每个 CPU 中的内核数量是比尝试构建更快\更好的单核 CPU 更好的方法。

这种趋势将持续一段时间,但也存在挑战,并且不断扩展内核数量并不容易(随着内核数量的增加,保持足够高的内存带宽和管理缓存变得更加困难)。这意味着当前每个插槽核心数量的爆炸性增长将不得不在几代后放缓,我们将看到其他一些方法。

  • 我无法告诉你我已经多少次试图向那些仍然认为 5 年前的 3.6GHz CPU 比采用最新技术的 2.8GHz CPU 更快的人解释这一点。真气人。我讨厌兆赫的神话。 (3认同)
  • @ldigas 那些程序员关心单核指令执行率,而不是核心时钟速度。现代 CPU 具有更高的单核指令执行率,即使时钟速度较低。 (3认同)

Ron*_*tol 5

让它们有用地更快变得太难了。

问题是,您需要一次处理一堆指令,当前的 x86 cpu 一次处理 80 条或更多指令,这似乎是极限,因为它被 P4 击中了,哎呀, Pentium Pro 在 1995 年做到了 40。典型的指令流是不可预测的(你必须猜测分支、内存访问等)来一次执行多条指令(486 做到了 5,奔腾做到了 10,几乎没有) .

因此,虽然您可以使它们更宽(更多功能单元来执行每条指令)、更长(更深的管道以隐藏延迟),但它似乎并没有多大好处。而且我们似乎也遇到了时钟速度的问题。而且我们的内存仍在运行。所以分裂成许多cpu似乎是一种胜利。另外,他们可以共享缓存。

这还有很多,但归结为传统程序无法在我们可以想象如何设计和构建的任何硬件上显着更快地运行。

现在,如果可预测性不是问题,例如,许多科学问题和图形(它们通常归结为将这组数字乘以那组数字),则情况并非如此,因此英特尔 IA64 的流行( Itanium) 和 GPU,它们只会变得越来越快,但它们不会帮助您更好地运行 Word。