多线程和超线程有什么区别?[关闭]


10

我听说过术语“超线程”和“多线程”,但是它们之间到底有什么区别?哪种英特尔处理器使用它们?


2
您正在尝试比较无法直接比较的事物。刚刚相关。就像在问“脚和鞋子有什么区别?” 除此之外,您的研究到目前为止揭示了什么?根据互联网上容易收集的定义,您到底挂在哪里确定差异?
Ƭᴇcʜιᴇ007


1
我不知道多线程还是超线程都不要求我认识他们
上升

1
堆栈溢出纳粹已经关闭了主题为“题外话” ......这是一个非常好的问题,很受欢迎,不应该关闭..
Robbo_UK

Answers:


19

多线程是指在一个操作系统中运行多个执行线程的一般任务。多线程是更一般称为“多处理”,其中可以包括多个系统进程(Windows上的简单的例子是,例如,运行Internet Explorer和Microsoft Word在同一时间),或者它可以由具有多一个进程的线程内它。

多线程(或者应该说多处理)是一个软件概念。实际上,即使计算机只有一个CPU内核并且该内核不支持超线程,任何具有Turing功能的CPU都可以执行多线程。为了支持多处理,CPU将交错执行的不同线程的执行,先执行一个,然后执行另一个,再执行另一个,操作系统将可用时间划分为多个“切片”,并给与大致相等的时间。每个线程(时间不必相等,但这通常是完成线程的方式,除非进程请求更高的优先级)。

注意,只要在任何给定时间要执行的执行软件线程多于可用的硬件(同时)执行线程,则这些软件线程将在可用内核之间“交织”。对于“单处理器”(一个没有超线程的CPU内核),如果您有多个软件线程,它们将始终被交错。如果您有一个带超线程的4核CPU,则为8个“硬件线程”,这意味着CPU可以同时执行8个同时执行的线程,因此,如果您有8个要尝试运行的软件线程,它们可以一次运行; 但是如果您有9个软件线程,则其中一个硬件线程将必须交织一对线程(所选择的确切线程对将取决于操作系统的调度程序实现)。


另一方面,超线程是指英特尔创建的一种非常特定的硬件技术,它允许单个处理器内核更有效地交错执行的多个线程。换句话说,具有超线程的CPU将提供的性能要比没有使用超线程的CPU更高,因为超线程CPU能够同时平衡两个(有时更多,但是超线程通常为2-方式)在给定内核上执行的线程。

但是,超线程比具有完全独立的物理核心的速度严格慢,因为有些类型的操作可能会破坏超线程的性能优势,而有更少的操作可能导致具有完全独立的核心的此类事件。

以下面的示例为例,其中假定“ 1核”在所有示例中的性能完全相同:

示例1:2个内核,没有超线程。
示例2:4个内核,没有超线程。
示例3:2个具有超线程的内核。
示例4:4个具有超线程的内核。

在这种情况下,示例4将始终是最快的。在极不适合利用超线程优化的工作负载上,示例2有时可能与示例4一样快。

另一方面,有时示例3在超线程最有利的工作负载上,几乎与示例2一样快,即使它的物理核心数量只有一半。

示例1在所有示例中当然是最慢的,但是在运行不适合超线程的工作负载时,示例3有时可能与示例3一样快。

在使用现代Intel CPU的现实基准测试中,我们通常会发现,与没有超线程相比,超线程通常可以将性能提高20%到40%(通过在测试中禁用超线程功能来对“无超线程”情况进行基准测试) BIOS)。有时,在某些工作负载中,禁用超线程会显示性能优势,但是这些工作负载在实际使用中很少见。但是,如果我可以在4个具有超线程的内核或8个内核之间进行选择,假设每个内核本身具有相同的性能,那么我每次都会选择8个内核的CPU。


2
确切地说,多线程和多处理不是一回事。线程与它们所关联的进程共享执行上下文,而进程具有自己的执行上下文。但是,对于此答案,这种区别不是那么重要。
Tero Kilkanen 2014年

1
超线程技术不是“英特尔创造的”。对于主线x86,它只是同时多线程的商标名称。如果生产出Alpha 21464,它将是SMT的首批重要用户之一。英特尔确实在某些奔腾4s上首次发布了SMT的发布使用(可能不包括鲜为人知的处理器),但基本思想不是英特尔的发明。
Paul A. Clayton

2
Quibble:超线程并不严格比单独的内核慢。可以设计(人工的)情况,即共享L1缓存比充分利用内核的资源要大得多。另一个特殊情况可能是一个线程持续活动,而另一个线程短暂地处理间歇性事件。间歇性唤醒内核比唤醒活动内核上的线程要昂贵。对于ILP极低的线程,如果不存在缓存争用问题,则使用单个内核的更高能效可以实现更大的涡轮增压(更好的性能)。
Paul A. Clayton 2014年

3
答案在SU上是可编辑的,因此,如果您想改进它,请放心。另外,请记住OP的明显知识水平;即使我自己回答,也可能比他们预期或想要的技术要多。我特意掩饰了一些细节,以便于解释。我怀疑OP是否会很快设计处理器,并且迫切需要了解所有这些细节。尽管如此,有趣的评论。
allquixotic 2014年

1
可能会拒绝更改内容的建议编辑(即,不只是语法/打字错误更正或为了清楚起见,重新命名)。
保罗·克莱顿

4

多线程是在操作系统级别进行并行处理的术语。处理器与多线程无关。

超线程是Intel的一个概念,可在单个处理器内核中实现多个线程的“同时”处理。操作系统有两个处理器核心,尽管只有一个物理核心。

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.