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

Tim*_*Tim 3 cpu computer-architecture hyperthreading

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

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

Cra*_*akC 5

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

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

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

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

在此输入图像描述

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

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

  • 同时多线程不需要一个线程停止以使另一个线程处于活动状态(即使是细粒度多线程也没有这个要求).SMT需要一个超标量核心(即每个循环可以发出多个操作的核心),因为线程可以同时执行**.FGMT允许管道内的并发(即,多个线程可以同时使用管道的不同阶段处于活动状态).(顺便提一下,超线程也指Itanium的事件多线程切换;对于x86,它只用于SMT.) (3认同)
  • @CrakC [Netburst 微架构中的超线程技术](http://www.cslab.ece.ntua.gr/courses/advcomparch/2007/material/readings/HYPERTHREADING%20TECHNOLOGY%20IN%20THE%20NETBURST%20MICROARCHITECTURE.pdf)。检查图 1 和图 2。除了几个微体系结构单元之外,您还需要为每个逻辑核心复制体系结构状态。许多结构_可以_在线程之间共享,但不是所有结构(否则 SMT 将与上下文切换相同)。 (2认同)