我的处理器是Intel Core i3-380m。如您所见,它是2个核心和4个线程。
尽管Ubuntu 11.04和Windows 7似乎都认为它是四核CPU:
为什么是这样?是否因为每个内核有2个线程,将CPU分为4个处理单元?
我的处理器是Intel Core i3-380m。如您所见,它是2个核心和4个线程。
尽管Ubuntu 11.04和Windows 7似乎都认为它是四核CPU:
为什么是这样?是否因为每个内核有2个线程,将CPU分为4个处理单元?
Answers:
如前所述,您有一个双核系统,每个核有2个线程。
这是由英特尔作为超线程销售的,并且多年来由各种不同的制造商以各种方式进行。
为了以最简单的形式对其进行解释,每个CPU内核均包含一个“内核”以及围绕该内核的各种体系结构,该体系结构保留每个线程的状态和进程信息。单线程内核的体系结构可一次保留1个线程的状态信息,而超线程内核则保留两组不同的状态信息,只要它们需要内核的不同部分,就可以同时运行两个单独的进程(这是很可能发生的,因为核心由多种不同类型的处理单元的多个单元组成)。
为了简化系统中如何看待CPU的方式,每个超线程都被视为一个单独的CPU,因此,双核,每线程2个线程的处理器显示为四核处理器。
操作系统也可以使用Core-parking(较新的Intel处理器中的一项功能)允许操作系统挂起一半的超线程内核,这样,当不需要额外的超线程处理能力时,单线程性能即可。由于内核不再在2个线程之间共享其缓存,因此可以增加,现在可以将内核上的缓存完全分配给单个线程。
原因是处理器支持的超线程。超线程并不等同于额外的处理器,但确实可以提高多线程应用程序的性能。对于物理上存在的每个处理器核心,操作系统将寻址两个虚拟处理器,并在可能时共享它们之间的工作负载。
事情比每个时钟周期只有一条CPU指令的日子要复杂得多。
现在,每条指令都有一个流水线,包括许多步骤。我听说多达41个,尽管那是前一段时间,我也不知道当前的CPU管道是什么样的。我确实知道,如果流水线足够长,则可以在最后一条指令完成之前(有时是在同一时钟周期内)在流水线下开始一条新指令,这样您的单个内核实际上就可以同时执行两项操作。
不过,这里有一个窍门。您不能仅仅使用它来加快处理器通过特定程序的指令进行咀嚼的速度。涉及一个正确性问题:下一条指令可能取决于上一条指令的尚未确定的结果。为了安全地利用长流水线,该芯片将向操作系统调度程序提供两个单独的处理器内核,并向每个内核发送备用指令,从而使同一“内核”的两条指令永远不会在同一时间流水线。这样,我们可以确保同时执行的任何指令都不会相互干扰。这称为超线程。
这里值得一提的是,尽管超线程可以显着增加您从cpu中获得的工作量,但远不及拥有那么多物理核那么好。根据您的工作量,这可能意味着少改善15%或少改善40%。在某些情况下,您甚至可能希望禁用该功能,以便其余内核具有对该内核的L1 / L2缓存的完全独占访问权限(有时是通过专用数据库服务器完成的)。
当您的芯片宣称自己拥有2个带有4个线程的内核时,这意味着它是一个支持超线程的双核处理器。
看一下此intel页面 -它有许多动画,显示超线程如何加快您的任务速度。
该Utilization of Processor Resources
是最好的动画片,看它和他们点击“前进”按钮。
为什么是这样?是否因为每个内核有2个线程,将CPU分为4个处理单元?
简单地说,答案是肯定的。CPU的每个核心可以支持两个独立的线程,因此总共有4个线程。但这并不意味着它具有与四核单线程cpu相同的性能。实际上,双核双线程cpu的性能要比四核单线程cpu的性能低。就像AMD Phenom X4。