超线程和多核之间有什么区别?


42

在与网络管理员的对话中,我提到我的机器是双核的。他告诉我不是。我调出任务管理器,转到“性能”选项卡,并告诉他有两个单独的CPU使用率图。我家里有一台四核计算机,它有四个图形。他告诉我,由于超线程,该特定机器上有两个图形。我以前曾经有过超线程的pentium 4处理器,但是我从来没有完全理解它的含义。那么,超线程和双核之间有什么区别?你怎么知道你有哪一个呢?

Answers:


20

超线程为单个物理 CPU内核公开了多个逻辑内核。简而言之,超线程使每个CPU内核的上下文切换效率更高。

另一方面,双核芯片实际上具有两个物理CPU内核,可以同时执行不同的进程。

还有其他多核芯片具有两个以上的内核,而且-正如Svish提到的-英特尔最新的多核产品还支持所有内核上的超线程。

您可以使用CPU识别实用程序(如CPU-Z)来确定您拥有多少个内核。如您在屏幕快照底部附近所见,在这种情况下,CPU具有2个物理内核。如果线程数大于内核数,则启用超线程。迄今为止,所有具有超线程功能的面向消费者的CPU每个内核都有2个线程,因此,如果启用HT,则线程数将是内核数的2倍。

在此处输入图片说明

如果您有Intel CPU,则可以下载Intel的CPU ID实用程序


以及支持超线程的多核芯片,因此您获得的逻辑核数量是原来的两倍。
Svish

谢谢!我如何(从OS内)知道我拥有哪种类型的CPU?
乔什·斯托多拉

3
UltraSparc T2 +具有8个核心,每个核心支持8个线程,从而使其在单个芯片上成为64个虚拟CPU:en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre 2010年

知道您拥有的CPU的方式取决于您正在运行的OS。
jlliagre 2010年

@jilliagre:太好了!

16

超线程是您的处理器假装有2个物理处理器核心的地方,但只有1个和一些额外的垃圾。

超线程的要点是,当您在处理器中执行代码时,很多时候处理器的某些部分处于空闲状态。通过包括一组额外的CPU寄存器,处理器可以像具有两个内核一样工作,因此可以并行使用处理器的所有部分。当两个内核都需要使用处理器的一个组件时,那么一个内核当然会等待。这就是为什么它不能替代双核等处理器。

另请参阅:这个问题


6

超线程是拥有双核的一种更便宜,更慢的选择

英特尔手册卷3系统编程指南- 325384-056US 2015年9月 8.7“英特尔超线程技术架构”描述HT简单。它包含下图:

在此处输入图片说明

TODO在实际应用中的平均速度要慢百分之几?

超线程是可能的,因为现代的单CPU内核已经通过指令流水线https://en.wikipedia.org/wiki/Instruction_pipelining一次执行了多条指令

指令流水线是单个内核内部功能的分离,以确保在任何给定时间使用电路的每个部分:读取存储器,解码指令,执行指令等。

超线程通过使用以下方法进一步分离功能:

  • 一个后端,它实际上通过其管道运行指令。

    双核有两个后端,这说明了更高的成本和性能。

  • 两个前端,它们采用两条指令流,并通过避免危险的方式对它们进行排序,以最大程度地利用单个后端的流水线使用方式。

    双核还将有2个前端,每个后端一个。

    在某些情况下,指令重新排序没有任何好处,从而使超线程变得毫无用处。但是,它的平均水平有了显着提高。

与仅共享L3的两个不同内核相比,单个核心中的两个超线程共享更多的缓存级别(TODO多少?L1?),请参见:

每个超线程提供给操作系统的接口都类似于实际内核的接口,并且可以分别控制两者。这样就cat /proc/cpuinfo显示了4个处理器,即使我只有2个内核,每个内核有2个超线程。

但是,操作系统可以利用知道在同一内核上的哪些超线程来在单个内核上运行给定程序的多个线程的优势,这可能会提高缓存的使用率。

此LinusTechTips视频包含轻松的非技术性说明:https : //www.youtube.com/watch?v= wnS50lJicXc


1
您要回答“ TODO”问题吗?
pacoverflow

1
@pacoverflow,如果我有一天会知道答案,或者有人会为我编辑答案:-)
Ciro Santilli新疆改造中心法轮功六四事件
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.