| 项目 | 值 |
|---|---|
| 目的 | 提高流水线利用率,隐藏延迟 |
| 粗粒度 | 遇到长延迟事件才切换线程 |
| 细粒度 | 每个时钟周期切换线程 |
| 同时多线程 SMT | 同一周期内多条指令来自不同线程 |
| Intel 超线程 | SMT 的商业实现 |
流水线中经常出现停顿(Cache 未命中、分支冒险等),导致功能部件空闲。硬件多线程通过在停顿时切换到其他线程执行,提高流水线利用率。
| 方式 | 切换时机 | 流水线冲刷 | 利用率提升 |
|---|---|---|---|
| 粗粒度 | 长延迟事件 | 是 | 中 |
| 细粒度 | 每个周期 | 否 | 高 |
| SMT | 每个周期(并行) | 否 | 最高 |
| 性质 | 说明 |
|---|---|
| 粗粒度切换 | 长延迟事件(Cache miss)时切换 |
| 细粒度切换 | 每个时钟周期轮转 |
| SMT | 同一周期内混合发射多线程指令 |
| 硬件开销 | 需要多份线程状态(PC、寄存器等) |
| 效果 | 提高吞吐率,但单线程延迟可能增加 |
| 考法 | 解题套路 |
|---|---|
| 三种多线程方式对比 | 粗粒度(事件触发)、细粒度(周期轮转)、SMT(并行发射) |
| SMT 与超标量的关系 | SMT 在超标量基础上引入多线程 |
| 硬件多线程的目的 | 提高流水线利用率,隐藏延迟 |
| 需要的硬件支持 | 多份 PC、寄存器组、TLB 等线程状态 |
| Intel 超线程 | SMT 的商业实现 |
两个线程(T0 橙 / T1 青)在流水线中的占用。切换长延迟 / 每周期轮转 / 同周期并行,对比利用率差异。
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。