过去有一种叫做超线程的东西,其中一个CPU内核就像两个内核一样工作。
但是,是否可以将两个CPU内核合并为一个内核,以提高未适当使用多个内核的程序的性能?(从旧游戏到X Plane 11)
简短答案:不可以。
答案更长一些:多核芯片上的内核基本上是单独的物理处理器。超线程允许您将一个物理核心拆分为例如两个线程。这样做的好处是,单个内核可以在线程之间来回交换,以便当一个线程正在等待(例如,对于I / O)时,另一个线程可以恢复。一个超线程核心上的两个线程共享资源,从而允许在线程之间进行非常有效的上下文切换。
那你为什么不能做相反的事情呢?好吧,只是想象一下。您有两个物理核心,但只有一个进程。有两种可能的方案:
执行代码可以并行运行。在这种情况下,您只有两个线程,每个线程一个。这样,两个线程可以同时运行。
执行代码不能并行运行。这就是您要问的问题。在这种情况下,您只有一个线程。因为代码不能并行运行,所以您不能同时在两个单独的处理器上运行它。要在两个内核上运行单个线程,您只需在两个内核之间来回切换线程即可。这不会提高性能,并且实际上会由于不必要的上下文切换而损害性能。
这是多核系统的不幸缺点。您只有在应用程序可以并行执行多个任务并被编写为执行此任务时,才能看到性能提高。即使这样,增益也不与内核数成正比(请参阅阿姆达尔定律)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句