Del*_*orm 2 cpu cpu-usage multi-core threading threads
过去有一种称为超线程的技术,其中单个 CPU 核心的作用就像两个核心一样。
但是是否有可能将两个 CPU 核心合并为一个,以提高未充分使用多核心的程序的性能?(从老游戏到X Plane 11)
简短回答:不。
更长的答案:多核芯片上的核心基本上是独立的物理处理器。超线程允许您将一个物理核心拆分为两个线程。这样做的优点是单核可以在线程之间来回交换,以便当一个线程正在等待(例如 I/O)时,另一个线程可以恢复。一个超线程核心上的两个线程共享资源,从而可以在线程之间进行非常高效的上下文切换。
那么为什么不能做相反的事情呢?好吧,想象一下。您有两个物理核心,但只有一个进程。有两种可能的情况:
执行代码可以并行运行。在这种情况下,您将只有两个线程,每个核心一个。这样,两个线程就可以同时运行。
执行代码不能并行运行。这就是你要问的问题。在这种情况下,您有一个线程。由于代码无法并行运行,因此您无法同时在两个单独的处理器上运行它。要在两个核心上运行单个线程,您只需在两个核心之间来回切换线程即可。这不会产生任何性能增益,而且实际上会由于不必要的上下文切换而损害性能。
这是多核系统的一个不幸的缺点;只有当应用程序可以并行执行多个任务并且被编写为这样做时,您才会看到性能提升。即使如此,增益也不与核心数量成正比(参见阿姆达尔定律)。
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |