是否可以合并CPU核心?

Del*_*orm 2 cpu cpu-usage multi-core threading threads

过去有一种称为超线程的技术,其中单个 CPU 核心的作用就像两个核心一样。

但是是否有可能将两个 CPU 核心合并为一个,以提高未充分使用多核心的程序的性能?(从老游戏到X Plane 11)

Lay*_*rdo 6

简短回答:不。

更长的答案:多核芯片上的核心基本上是独立的物理处理器。超线程允许您将一个物理核心拆分为两个线程。这样做的优点是单核可以在线程之间来回交换,以便当一个线程正在等待(例如 I/O)时,另一个线程可以恢复。一个超线程核心上的两个线程共享资源,从而可以在线程之间进行非常高效的上下文切换。

那么为什么不能做相反的事情呢?好吧,想象一下。您有两个物理核心,但只有一个进程。有两种可能的情况:

  1. 执行代码可以并行运行。在这种情况下,您将只有两个线程,每个核心一个。这样,两个线程就可以同时运行。

  2. 执行代码不能并行运行。这就是你要问的问题。在这种情况下,您有一个线程。由于代码无法并行运行,因此您无法同时在两个单独的处理器上运行它。要在两个核心上运行单个线程,您只需在两个核心之间来回切换线程即可。这不会产生任何性能增益,而且实际上会由于不必要的上下文切换而损害性能。

这是多核系统的一个不幸的缺点;只有当应用程序可以并行执行多个任务并且被编写为这样做时,您才会看到性能提升。即使如此,增益也不与核心数量成正比(参见阿姆达尔定律)。