本文将记录下作者对intel 超线程(Hyper-Threading)技术的理解。

Overview



根据sdm的描述,同一个core上的两个超线程其实是共享execution engine的。


每个超线程拥有独立的通用寄存器。每个超线程的具体资源状态需要查询spec,本文不在此赘述。

Execution Engine


Execution Engine涉及到具体的微架构。接下来将以Ice Lake Client microarchitecture为例来介绍下Execution Engine。


Execution Unit是需要额外关注的。由上图可知,在一个Execution Engine内拥有4个ALU,1个Slow Int。

  • 同一个core上的两个超线程想同时执行add指令,这理论上是可行的,因为Execution Engine中有四个ALU Execution Unit(ALU可运行add指令)。
  • 同一个core上的两个超线程想同时执行mul指令,这理论上是不可行的,因为Execution Engine中只有一个Slow Int Execution Unit(Slow Int可运行mul指令)。

参考资料:

  1. Intel® 64 and IA-32 Architectures Optimization Reference Manual
  2. Meltdown: Reading Kernel Memory from User Space
  3. Intel SDM Vol3