在超线程处理器上禁用中断

disabling interrupts on hyperthreaded processor

假设我有一个超线程处理器,OS 将它们视为两个不同的虚拟处理器 vp1 和 vp2。现在在 vp1 上的 LWP1 中,我禁用硬件中断中断。这是否等于说除非启用,否则两个虚拟处理器都不会获得任何中断?如果这是真的,那也应该意味着在另一个处理器 vp2 上启用另一个 LWP2 返回的中断也会在 vp1 上启用中断吗?我假设禁用内核中断,只会在本地处理器上禁用它。

请解释这是如何工作的。

超线程处理器的两个逻辑核心有自己的APIC ID,所以就中断而言,它们是独立的CPU。 (在 Knight's Landing / Xeon Phi,四个逻辑核心)

这使得可以在内核模式下使用 cli / sti 独立于任何其他逻辑内核禁用中断。一切都与非 SMT 多核系统完全相同,因为这就是超线程设计的工作方式。

任何其他事情都会带来不便和怪异,并且有时会禁用它正在等待的中断,从而增加其他逻辑核心的延迟,所以很明显,这是英特尔设计它的明智方式。