自上世纪中期以来,台式机 CPU 一直在一个封装中提供多个 CPU 内核。 这是一个多核处理器。 虽然早期设计仅限于两个或四个 CPU 内核,但现代 CPU 在单个 CPU 上提供多达 64 个物理内核。 高核心数不是桌面 CPU 的标准,通常保留给高端工作站或服务器。 现代台式机 CPU 的典型核心数在 4 到 16 个之间。但是,多核 CPU 是什么让它们在现代计算机中占据主导地位?
单核
从历史上看,单核 CPU 仅限于一次仅执行一项任务。 这带来了一系列问题。 为了 example,在现代计算机上,有大量后台进程正在运行。 如果一个 CPU 一次只能处理一件事,这意味着这些后台进程必须从前台进程中占用处理时间。 此外,缓存未命中意味着需要从相对较慢的 RAM 中检索数据。 在从 RAM 中获取数据期间,处理器只是处于空闲状态,因为它在获取数据之前无法做任何事情。 这会阻止正在运行的进程以及等待它完成的任何其他进程。
虽然由于预算多核 CPU 的兴起,现代单核处理器并不是真正的东西,但它们将能够使用其他现代技巧来更快地运行。 流水线将允许同时使用处理指令的每个不同部分,与每个时钟周期只使用流水线的一个阶段相比,提供了显着的性能提升。 宽流水线将看到每个时钟周期的每个流水线阶段能够处理多条指令。 乱序处理将允许以更省时的方式安排指令。 分支预测器将能够预测分支指令的结果并抢先运行假定的答案。
所有这些因素都会很好地发挥作用并提供一些性能。 然而,添加一个或多个内核可以实现所有这些,并且一次可以同时处理两倍的数据。
多核
添加第二个核心听起来应该会使原始性能翻倍。 不幸的是,事情比这更复杂。 程序逻辑通常是单线程的,这意味着程序在任何时候都只尝试做一件事。 然而,可能发生的是其他进程可以同时使用另一个核心。 虽然大多数单个程序没有内在的性能提升,但提供额外的处理资源有效地减少了对有限资源的竞争,这确实提供了性能提升。 这种性能提升,仅仅来自于减少 CPU 时间的竞争,在从单核 CPU 跳转到双核 CPU 时最为明显,进一步增加核心数量会带来递减的回报,尽管通常越多越好。
为了充分利用多核系统并实际看到可靠的性能提升,需要对程序进行编程以使用多个处理线程。 众所周知,多线程逻辑很难可靠地执行,因为它通常难以学习并且存在许多潜在的陷阱。 一 example 陷阱被称为竞争条件。 在竞态条件下,一个进程假设它启动的另一个进程将顺利运行,然后它会尝试做一些依赖于另一个进程顺利运行的事情。 为了 example,想象一个进程启动另一个进程 close 一个文档并打开另一个。 如果原始流程未正确检查第二个流程是否已完成,则可能会导致意外结果。 如果关闭第一个文档时出现问题,对于 example,当原始进程只是向它写入更多数据时,它可能仍然是打开的。
散热问题
多核处理器最终面临的最大问题之一是热量。 虽然一个 CPU 内核不会输出那么多热量,但两个会释放更多热量。 在高核数 CPU 中,这种热量集中会导致较低的升压时钟,因为 CPU 会管理其温度。 较低的升压时钟将导致单线程应用程序的性能降低。 这通常可以在游戏性能基准测试中看到。 视频游戏通常高度依赖于单个线程。 因此,单线程性能通常对游戏至关重要。 像 16 核数模型这样的高核数 CPU 通常来自高性能箱。 尽管如此,在单线程基准测试中,通常会发现它们的性能优于内核数量较少的“较小”CPU。 这个问题在 64 核 AMD Threadripper 等超高核心数 CPU 中更为明显,其时钟速度明显低于高端台式机 CPU。
成功
许多应用程序能够正确使用多个 CPU 内核。 为了 example, CPU 渲染是一项相对容易并行化的任务。 可以看到性能提升一直到 64 核,甚至更高,尽管目前没有单个 CPU 提供超过 64 核。 许多应用程序根本不能是多线程的,因为它们依赖于顺序逻辑。 虽然这些看不到多线程程序的加速,但多线程程序和其他单线程程序可以使用其他 CPU 内核这一事实确实释放了处理器时间,从而获得更好的性能。
架构选项
在台式机处理器中,多核 CPU 中的每个 CPU 内核通常都是相同的。 这种同质性使得内核上的调度工作变得简单。 使用相同的重复设计也有助于降低开发成本。 然而,移动处理器长期以来一直使用异构核心架构。 在这种设计中,CPU核心有两层甚至三层。 每一层都可以运行相同的进程,但是,有些是为提高能效而设计的,而另一些则是针对性能进行调整的。 这已被证明是电池供电设备成功的秘诀,因为许多任务可以使用速度较慢且能效更高的内核,从而延长电池寿命,同时在需要时仍可以高速运行高优先级进程。
台式机 CPU 架构也在朝着异构核心设计的方向发展。 英特尔的 Alder Lake 第 12 代酷睿 CPU 系列是第一个做到这一点的台式机 CPU。 在这种情况下,较小内核的主要驱动因素不一定是功率效率,而是热效率,尽管它们是同一枚硬币的两个方面。 拥有多个强大的核心可以提供高性能,而许多高效的核心可以处理后台任务而不会过多影响主核心。
结论
多核 CPU 是一种在单个封装中具有多个处理内核的 CPU,通常但不完全位于同一个芯片上。 多核 CPU 不会为许多程序提供太多直接的性能提升,但是,通过增加内核数量,单线程程序不需要为 CPU 时间竞争太多。 有些程序可以充分利用多个内核,直接使用尽可能多的内核。 这提供了很大的性能提升,尽管由于热和功率限制,这种提升不一定是通过双倍内核实现的直接性能翻倍。