x86-64 CPU寄存器是否在多个核之间共享?

x86-64 CPU寄存器是否在多个核之间共享?,x86,x86-64,intel,cpu-architecture,X86,X86 64,Intel,Cpu Architecture,我试图阅读有关CPU寄存器的英特尔文档,但出现了一个我似乎找不到答案的问题 例如,所有可用寄存器: GPR(通用寄存器) 控制寄存器:RIP、EFLAGS、CR0-CR15、EFER、MSR等 GDTR、IDTR、TR等 它们都是在多个CPU核心之间共享的,还是每个核心都有特定的副本?每个核心都有自己的副本,否则它们将无法独立执行。@Banex:谢谢。但是,例如,如果我为不同的内核设置不同的中断描述符表寄存器(使用不同的IDT基指针),会发生什么呢。根据哪个内核接收到中断,相同的中断号会由不

我试图阅读有关CPU寄存器的英特尔文档,但出现了一个我似乎找不到答案的问题

例如,所有可用寄存器:

  • GPR(通用寄存器)
  • 控制寄存器:RIP、EFLAGS、CR0-CR15、EFER、MSR等
  • GDTR、IDTR、TR等

它们都是在多个CPU核心之间共享的,还是每个核心都有特定的副本?

每个核心都有自己的副本,否则它们将无法独立执行。@Banex:谢谢。但是,例如,如果我为不同的内核设置不同的中断描述符表寄存器(使用不同的IDT基指针),会发生什么呢。根据哪个内核接收到中断,相同的中断号会由不同的程序提供服务吗?@MikeF:Yes。我不确定这是否有用;更有用的是将一种中断更多地导向某些内核,而将其他类型的中断导向其他内核,这样它们的处理程序代码和相关数据结构可能在缓存中保持热状态。但我认为你是用APIC做的;您通常仍然希望每个核心共享相同的IDT。除非每个核心都有一个定时器中断,核心编号硬编码为立即数,这样每个核心都会增加自己的本地计数器。