超线程CPU是实现并行还是并发?

时间:2015-10-27 01:25:02

标签: cpu computer-architecture hyperthreading

超线程CPU是实现并行还是仅实现并发(上下文切换)?

我的猜测是没有并行性,只有上下文切换的并发性。

2 个答案:

答案 0 :(得分:5)

具有超线程的单个物理CPU 核心显示为操作系统的两个逻辑CPU 。 CPU仍然是一个单独的CPU,所以它有点“作弊” - 虽然操作系统看到每个核心有两个CPU,但实际的CPU硬件只有单组执行资源< / strong>为每个核心。 CPU假装它拥有比它更多的内核,它使用自己的逻辑来加速程序执行。超线程允许两个逻辑CPU核心共享物理执行资源。这可以加快速度 - 例如,如果一个虚拟CPU停止并等待,另一个虚拟CPU可以借用其执行资源。此外,可以利用免费资源来同时执行其他任务。 超线程可以帮助您加快系统速度,但它远远不如拥有额外的核心。除非您考虑使用超标量体系结构,否则在单核处理器上实际意义上的并行性(在GPGPU体系结构或多个物理内核中独立执行)无法实现

来自: https://en.wikipedia.org/wiki/Superscalar_processor

  

超标量处理器与多核处理器的不同之处在于,多个执行单元不是整个处理器。单个处理器由更细粒度的执行单元组成,例如ALU,整数乘法器,整数移位器,FPU等。每个执行单元可以有多个版本,以便能够并行执行许多指令。这与多核处理器不同,多核处理器同时处理来自多个线程的指令,每个处理单元一个线程(称为&#34;核心&#34;)。它也不同于流水线处理器,其中多个指令可以同时处于执行的各个阶段,以流水线方式。

来自: http://www.cslab.ece.ntua.gr/courses/advcomparch/2007/material/readings/HYPERTHREADING%20TECHNOLOGY%20IN%20THE%20NETBURST%20MICROARCHITECTURE.pdf

enter image description here

  

超线程技术使单个物理处理器看起来像是多个逻辑处理器。 每个逻辑处理器都有一个架构状态副本,这些处理器共享一组物理执行资源。从软件或架构的角度来看,这意味着操作系统和用户程序可以安排进程或线程到逻辑处理器,就像它们在多处理器系统中的传统物理处理器上一样。 从微体系结构的角度来看,这意味着来自逻辑处理器的指令将在共享执行资源上持续存在并执行。这可以极大地提高处理器资源利用率。 Netburst微体系结构上的超线程技术实现在每个物理处理器上有两个逻辑处理器。图1显示了具有超线程技术功能的处理器的概念视图。每个逻辑处理器都维护一套完整的架构状态。架构状态包括寄存器,包括通用寄存器,用于控制的寄存器,高级可编程中断控制器(APIC),以及一些用于机器状态的寄存器。 从软件的角度来看,架构状态的重复使得每个物理处理器看起来都是两个处理器。每个逻辑处理器都有自己的中断控制器或APIC,它只处理发送到其特定逻辑处理器的中断

注意:对于使用超标量核心的同时多线程(即每个周期可以发出多个操作的核心),执行过程会有很大不同。

答案 1 :(得分:1)

  • 并发是任务执行的一种方式。它的替代是顺序执行。
  • 并行性是设计任务的一种方式。它的替代品是Serial。
  • 超线程是硬件辅助的执行机制,其中处理器的某些部分(即硬件)被复制以允许更快的执行 1 。它的替代品可以是90年代的任何旧硬件(超线程首次出现在2002年2月 2 )。

如果没有超线程硬件,我们可以拥有并发性,前提是确实有多个任务可以同时执行。怎么样?采用过程P 1 和P 2 ,可以安全地同时执行并取一个核心(称为 C )。 P 1 C 上运行1次量子,然后P 2 C 上运行另一个时间量子,接着是P 1 C 上运行下一次量子点,依此类推。

只有一个核心 C - 没有超线程 - 我们并发执行P 1 和P 2

如果没有超线程硬件,我们可以拥有并行性,如果有一个可以并行执行的任务,并且我们有多个核心可以并行运行该任务。 Take Map部分Mapreduce。

假设您有两个要读取的文本文件,您已经启动了两个映射器,并且您有两个非超线程物理内核。在这种情况下,您可以(并且可能会)并行运行映射器,而不需要任何超线程。每个映射器将从其自己的文本文件中读取,将在其自己的核心上运行,并将生成其自己的映射输出。

有2个核心 - 没有超线程 - 我们并行执行任务。

结论:超线程是一项硬件改进,可以成功地从并行性和并发性中断开。

1 减少复制所需的数据量,以便有效地执行上下文切换。

2 It first appeared in February 2002 on Xeon server processors and in November 2002 on Pentium 4 desktop CPUs

* A good SO answer about Parallelism and Concurrency表示并发就像让一个变戏法者玩弄很多球。无论看起来如何,这个变戏法者一次只能抓住/投掷一个球。平行主义有多个变戏法者同时玩弄球。