首页/计算机组成原理/中央处理器/硬件多线程 🔗 在 Obsidian 中打开
计算机组成原理 · 中央处理器

硬件多线程

重要度 ⭐⭐⭐中央处理器多线程硬件多线程SMT细粒度CPU
速查
硬件多线程在流水线停顿时切换到其他线程以提高利用率。三种方式:粗粒度(长延迟才切换,需冲刷)、细粒度(每周期轮转)、SMT(同周期并行发射,Intel 超线程即此)。

速查

项目
目的提高流水线利用率,隐藏延迟
粗粒度遇到长延迟事件才切换线程
细粒度每个时钟周期切换线程
同时多线程 SMT同一周期内多条指令来自不同线程
Intel 超线程SMT 的商业实现

核心概念

为什么需要硬件多线程?

流水线中经常出现停顿(Cache 未命中、分支冒险等),导致功能部件空闲。硬件多线程通过在停顿时切换到其他线程执行,提高流水线利用率

三种硬件多线程方式

1. 粗粒度多线程(Coarse-grained)

  • 只在长延迟事件(如 Cache 未命中)发生时切换线程
  • 切换时需冲刷流水线
  • 优点:切换开销相对小;缺点:不能消除短停顿的影响

2. 细粒度多线程(Fine-grained)

  • 每个时钟周期轮流发射不同线程的指令
  • 交替执行,无需等待长延迟
  • 优点:能隐藏各种延迟;缺点:单个线程执行速度变慢

3. 同时多线程 SMT(Simultaneous Multithreading)

  • 超标量处理器上,同一周期内同时发射来自不同线程的指令
  • 结合了超标量和多线程的优点
  • Intel 超线程(Hyper-Threading)是 SMT 的典型实现
  • 优点:最大程度利用功能部件;缺点:硬件复杂度高

对比

方式切换时机流水线冲刷利用率提升
粗粒度长延迟事件
细粒度每个周期
SMT每个周期(并行)最高

关键性质

性质说明
粗粒度切换长延迟事件(Cache miss)时切换
细粒度切换每个时钟周期轮转
SMT同一周期内混合发射多线程指令
硬件开销需要多份线程状态(PC、寄存器等)
效果提高吞吐率,但单线程延迟可能增加

常见考法

考法解题套路
三种多线程方式对比粗粒度(事件触发)、细粒度(周期轮转)、SMT(并行发射)
SMT 与超标量的关系SMT 在超标量基础上引入多线程
硬件多线程的目的提高流水线利用率,隐藏延迟
需要的硬件支持多份 PC、寄存器组、TLB 等线程状态
Intel 超线程SMT 的商业实现

易错点

必记
  1. 硬件多线程是单核内的技术,不是多核。
  2. SMT 不是真的"多个 CPU",是共享功能部件的多个逻辑线程。
  3. 细粒度多线程虽然吞吐率高,但单个线程变慢。
  4. 粗粒度多线程切换时需要冲刷流水线(损失已做的工作)。
  5. 硬件多线程不能解决单线程性能问题,只提高总吞吐率。

核心结论

  1. 硬件多线程通过线程切换提高流水线利用率。
  2. 粗粒度:长延迟时切换;细粒度:每周期轮转;SMT:同周期并行。
  3. SMT 是效果最好的方式,结合了超标量和多线程。
  4. 需要多份线程状态(PC、寄存器等)。
  5. 提高吞吐率但可能增加单线程延迟。

记忆卡片

硬件多线程的目的是什么?
提高流水线利用率,在停顿时切换到其他线程。
粗粒度和细粒度的区别?
粗粒度=长延迟时切换,细粒度=每周期轮转。
SMT 是什么?
同时多线程,同一周期内混合发射多线程指令。
Intel 超线程是什么技术?
SMT 的商业实现。
硬件多线程需要什么额外硬件?
多份 PC、寄存器组、TLB 等线程状态。

交互动画 · 三种多线程的时空图

两个线程(T0 橙 / T1 青)在流水线中的占用。切换长延迟 / 每周期轮转 / 同周期并行,对比利用率差异。

手动模式
T0T1 c1c2c3c4c5c6c7
橙色=T0,青色=T1,斜纹=冲刷/停顿(空闲)。

相关知识点

multi-core-processor sisd-simd-mimd instruction-pipeline

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。