在幕后,同时多线程是如何工作的

主要观点

  • 介绍同时多线程(SMT)及其工作原理、实现方式和性能影响等。
  • SMT 可让处理器同时处理两个不同线程的指令,旨在提高处理器资源利用率和指令吞吐量。
  • 从前端、后端和退休单元等方面阐述 SMT 在处理器微架构层面的实现细节。
  • 讨论了 SMT 对性能的影响,包括共享资源导致的潜在性能降低、线程缓存访问模式等。
  • 提及 SMT 存在安全问题,专家建议在安全关键系统中禁用 SMT。

关键信息

  • SMT 由硬件设计师复制处理器架构状态实现,将单个物理处理器呈现为两个逻辑处理器。
  • 前端包含指令指针、追踪缓存等用于获取和解码指令,追踪缓存动态共享。
  • 后端通过寄存器重命名、指令调度等执行指令,资源如寄存器、缓存等在逻辑处理器间分配。
  • 运行两个线程时需考虑缓存访问模式,若线程竞争缓存会降低性能,合作则可能提高性能。
  • 仅一个线程运行时 SMT 可能存在资源浪费和性能影响,英特尔某些处理器已改进。
  • SMT 存在安全漏洞,可能导致敏感数据泄露,专家建议在安全系统中禁用。

重要细节

  • 不同处理器模型可支持相同指令集架构,但微架构不同。
  • 指令流水线通过将指令执行分解为多个阶段提高资源利用率。
  • 现代处理器多为超标量,可同时发出多条指令,但实际达到最大利用率较难。
  • 水平浪费是处理器无法找到足够独立指令使发射宽度饱和,垂直浪费是因程序中后续指令依赖当前执行指令而无法发射。
  • 传统多线程可避免垂直浪费但仍可能有水平浪费和上下文切换开销。
  • SMT 无需上下文切换即可同时为多个线程发射指令,实现资源充分利用,但英特尔 SMT 限制每个核心两个线程。
  • 处理器的转换后备缓冲器(TLB)、各级缓存等在逻辑处理器间动态共享或私有。
  • 退休单元按程序顺序提交指令结果,在 SMT 中交替处理两个逻辑处理器的指令。
阅读 29
0 条评论