想象一下一个CPU(或核心)是超标量的(具有多个执行单元),并且也支持超线程(SMT)。
为什么CPU实际可以并行执行的软件线程数量通常由它拥有的逻辑核数(即所谓的硬件线程)而不是它拥有的全部执行单元的数量来确定?
如果我理解正确,SMT实际上并没有使真正的并行执行成为可能,而是通过复制某些部分的CPU(存储体系结构状态但不包括主要执行资源的部分)使上下文切换变得更快/更高效。另一方面,超标量架构允许在每个时钟周期内真正同时执行多条指令,因为CPU具有多个执行单元,即多个并行流水线,每个流水线可以以真正并行的方式处理一个单独的线程。
因此,例如,如果一个CPU有2个核心,并且每个核心有2个执行单元,那么它的硬件并发性(它可以真正并行执行的线程数)不应该是4吗?为什么它的硬件并发性取决于逻辑核心的数量,而SMT实际上并没有使真正的并行执行成为可能呢?