【发布时间】:2019-04-11 15:48:02
【问题描述】:
想象一个超标量(多个执行单元)并支持超线程 (SMT) 的 CPU(或内核)。
为什么 CPU 可以真正并行执行的软件线程数通常由其拥有的逻辑内核(即所谓的硬件线程)数给出,而不是它拥有的执行单元总数?
如果我的理解是正确的,SMT 实际上并没有启用真正的并行执行,它只是通过复制 CPU 的某些部分(那些存储架构状态而不是主要执行资源的部分)来使上下文切换更快/更有效。另一方面,超标量架构允许每个时钟周期真正同时执行多条指令,因为 CPU 有多个执行单元,即多个并行管道,每个管道都可以以真正的并行方式处理单独的线程。
那么举个例子,如果一个 CPU 有 2 个核心,每个核心有 2 个执行单元,那么它的硬件并发(它真正可以并行执行的线程数)不应该是 4 吗?为什么 SMT 并没有真正实现真正的并行执行,而它的硬件并发性却是由逻辑内核的数量决定的?
【问题讨论】:
标签: cpu hyperthreading superscalar