为什么我的双核CPU被识别为四核CPU?


Answers:


43

如前所述,您有一个双核系统,每个核有2个线程。

这是由英特尔作为超线程销售的,并且多年来由各种不同的制造商以各种方式进行。

为了以最简单的形式对其进行解释,每个CPU内核均包含一个“内核”以及围绕该内核的各种体系结构,该体系结构保留每个线程的状态和进程信息。单线程内核的体系结构可一次保留1个线程的状态信息,而超线程内核则保留两组不同的状态信息,只要它们需要内核的不同部分,就可以同时运行两个单独的进程(这是很可能发生的,因为核心由多种不同类型的处理单元的多个单元组成)。

为了简化系统中如何看待CPU的方式,每个超线程都被视为一个单独的CPU,因此,双核,每线程2个线程的处理器显示为四核处理器。

操作系统也可以使用Core-parking(较新的Intel处理器中的一项功能)允许操作系统挂起一半的超线程内核,这样,当不需要额外的超线程处理能力时,单线程性能即可。由于内核不再在2个线程之间共享其缓存,因此可以增加,现在可以将内核上的缓存完全分配给单个线程。


感谢您的解释。那么,我们可以在这里说线程对核心来说就像处理器对内核一样吗?
严重dev11年

2
在某种程度上,是的。操作系统可以看到处理器,知道该处理器上有多少个内核,每个内核又支持多少个线程,因此您看到的CPU使用率现在是“按线程”而不是“按核”。这不是简单(因为每个线程实际上不会出现非超线程感知OS作为一个完全成熟的CPU内核),但是这是它的总体思路。
Mokubai

@Mokubai核心停车链接不起作用。
Biswapriyo

49

原因是处理器支持的超线程。超线程并不等同于额外的处理器,但确实可以提高多线程应用程序的性能。对于物理上存在的每个处理器核心,操作系统将寻址两个虚拟处理器,并在可能时共享它们之间的工作负载。


7
这是物理内核还是逻辑内核?
xdumaine 2011年

11
是的,物理核心是-物理... 您可以触摸它。超线程核心不真实,因此合乎逻辑。您也可以通过虚拟化将物理核心分解为逻辑核心。
凯尔塔里(Keltari)2011年

3
@Keltari实际上,它有一个物理部分……超线程是CPU内核中的硬件组件(只能在硬件级别上禁用)。有关详细信息,请参阅此英特尔白皮书。基本上,它在两个物理执行单元之间共享核心资源。从技术上讲,操作系统在超线程内核中看到的两个内核都是“逻辑的”,而不是物理的和逻辑的。
突破

1
的确,超线程是处理器的物理部分,而不是物理核心。
凯尔塔里(Keltari)2011年

1
想到HT的最好方法是“半核心”,它与兄弟共享比单独的核心更多的资源。但是,它能够“独立”执行线程,并且OS将其视为线程执行单元(与内核关联的线程执行单元)。
crasic 2011年

12

事情比每个时钟周期只有一条CPU指令的日子要复杂得多。

现在,每条指令都有一个流水线,包括许多步骤。我听说多达41个,尽管那是前一段时间,我也不知道当前的CPU管道是什么样的。我确实知道,如果流水线足够长,则可以在最后一条指令完成之前(有时是在同一时钟周期内)在流水线下开始一条新指令,这样您的单个内核实际上就可以同时执行两项操作。

不过,这里有一个窍门。您不能仅仅使用它来加快处理器通过特定程序的指令进行咀嚼的速度。涉及一个正确性问题:下一条指令可能取决于上一条指令的尚未确定的结果。为了安全地利用长流水线,该芯片将向操作系统调度程序提供两个单独的处理器内核,并向每个内核发送备用指令,从而使同一“内核”的两条指令永远不会在同一时间流水线。这样,我们可以确保同时执行的任何指令都不会相互干扰。这称为超线程

这里值得一提的是,尽管超线程可以显着增加您从cpu中获得的工作量,但远不及拥有那么多物理核那么好。根据您的工作量,这可能意味着少改善15%或少改善40%。在某些情况下,您甚至可能希望禁用该功能,以便其余内核具有对该内核的L1 / L2缓存的完全独占访问权限(有时是通过专用数据库服务器完成的)。

当您的芯片宣称自己拥有2个带有4个线程的内核时,这意味着它是一个支持超线程的双核处理器。


2

一下此intel页面 -它有许多动画,显示超线程如何加快您的任务速度。

Utilization of Processor Resources是最好的动画片,看它和他们点击“前进”按钮。


1

为什么是这样?是否因为每个内核有2个线程,将CPU分为4个处理单元?

简单地说,答案是肯定的。CPU的每个核心可以支持两个独立的线程,因此总共有4个线程。但这并不意味着它具有与四核单线程cpu相同的性能。实际上,双核双线程cpu的性能要比四核单线程cpu的性能低。就像AMD Phenom X4。


你知道为什么吗?
严重dev11年

1
原因是在双线程内核中,硬件资源(如重排序缓冲区)在两个线程之间共享,而在单线程cpu中,所有资源都专用于一个内核。值得一提的是,拥有多线程核心可以提高硬件利用率和吞吐量,但对延迟不利。涉及许多折衷。因此,“性能”一词在这里确实很模糊。对于普通人来说,这意味着单个线程的延迟。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.