当我们拥有支持多线程的CPU时,每个逻辑CPU都有自己的一组寄存器(至少包括CR3寄存器)。当执行不同的线程且上下文切换不发生(即在同一进程的不同线程之间切换时,TLB缓存也不会失效)时,由于我们正在处理同一进程的虚拟地址空间,那为什么需要在逻辑CPU中使用CR3寄存器去指向页表和页目录呢?这个值难道不总是与物理CPU的CR3寄存器中的值相同吗?
由于在执行不同的线程时,我们正在处理同一进程的虚拟地址空间
这还不是HT所能做到的全部。我认为你混淆了“硬件线程”(执行上下文/逻辑核心)和“软件线程”。
两个逻辑核心运行在一个物理核心上,有一个物理iTLB / dTLB / L2TLB。逻辑核心非常独立,不必运行来自同一进程的线程。
这是像Intel的HT这样的SMT设计中的一个理想属性:如果操作系统必须小心避免将具有不同页表的线程调度到同一物理核心的不同逻辑核心上,则需要更多的核间同步。