主要观点:
- 介绍同时多线程(SMT)及其工作原理、实现方式和性能影响等。
- SMT 可让处理器同时处理两个不同线程的指令,旨在提高处理器资源利用率和指令吞吐量。
- 从前端、后端和退休单元等方面阐述 SMT 在处理器微架构层面的实现细节。
- 讨论了 SMT 对性能的影响,包括共享资源导致的潜在性能降低、线程缓存访问模式等。
- 提及 SMT 存在安全问题,专家建议在安全关键系统中禁用 SMT。
关键信息:
- SMT 由硬件设计师复制处理器架构状态实现,将单个物理处理器呈现为两个逻辑处理器。
- 前端包含指令指针、追踪缓存等用于获取和解码指令,追踪缓存动态共享。
- 后端通过寄存器重命名、指令调度等执行指令,资源如寄存器、缓存等在逻辑处理器间分配。
- 运行两个线程时需考虑缓存访问模式,若线程竞争缓存会降低性能,合作则可能提高性能。
- 仅一个线程运行时 SMT 可能存在资源浪费和性能影响,英特尔某些处理器已改进。
- SMT 存在安全漏洞,可能导致敏感数据泄露,专家建议在安全系统中禁用。
重要细节:
- 不同处理器模型可支持相同指令集架构,但微架构不同。
- 指令流水线通过将指令执行分解为多个阶段提高资源利用率。
- 现代处理器多为超标量,可同时发出多条指令,但实际达到最大利用率较难。
- 水平浪费是处理器无法找到足够独立指令使发射宽度饱和,垂直浪费是因程序中后续指令依赖当前执行指令而无法发射。
- 传统多线程可避免垂直浪费但仍可能有水平浪费和上下文切换开销。
- SMT 无需上下文切换即可同时为多个线程发射指令,实现资源充分利用,但英特尔 SMT 限制每个核心两个线程。
- 处理器的转换后备缓冲器(TLB)、各级缓存等在逻辑处理器间动态共享或私有。
- 退休单元按程序顺序提交指令结果,在 SMT 中交替处理两个逻辑处理器的指令。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。