Chapter 9 处理器管理和初始化

Chapter 9 处理器管理和初始化

本章介绍了用于管理处理器位的功能和初始化处理器的功能。涵盖的主题包括:处理器初始化,x87 FPU初始化,处理器配置,功能确定,模式切换,MSRs(在Pentium-奔腾,P6系列,Pentium 4和Intel Xeon-至强处理器中)和MTRRs(在P6系列,Pentium 4和Intel Xeon处理器中)。

译注:MTRRs-memory type range registers,内存类型范围寄存器

9.1 初始化概述

上电或RESET#引脚置位后,系统总线上的每个处理器都会执行处理器的硬件初始化(称为硬件复位)和可选的内置自检(BIST)。硬件重置会将每个处理器的寄存器设置为已知状态,并将处理器置于实模式。它还会使内部缓存,旁路转换缓冲(TLB)和分支目标缓冲区(BTB)无效。此时,所采取的措施取决于处理器系列:

关于TLB请参考 TLB

  • Pentium 4 处理器(CPUID DisplayFamily 0FH)—— 系统总线上的所有处理器(包括单处理器系统中的单个处理器)都执行多处理器(MP)初始化协议。通过这个协议选择的处理器作为引导处理器(BSP),然后立即开始执行当前代码段中的软件初始化代码,从EIP寄存器中的偏移处开始。当BSP执行初始化代码时,应用程序(非BSP)处理器(APs)进入等待启动IPI (SIPI)状态。有关详细信息,请参见第8.4节“多处理器(MP)初始化”。注意,在单处理器系统中,单个Pentium 4或Intel Xeon处理器自动成为BSP。

  • IA-32和Intel 64处理器(CPUID DisplayFamily 06H)—— 所采取的操作与奔腾4处理器相同(如前一段所述)。

9.9 模式切换

要在硬件或软件复位后以保护模式使用处理器,必须从实模式执行模式切换。一旦进入保护模式,软件通常不需要返回到实模式。要运行以实际地址模式(8086模式)编写的软件,通常在虚拟8086模式下运行软件比切换回实模式更方便。

9.9.1 切换到保护模式

在从实模式切换到保护模式之前,必须将至少的一组系统数据结构和代码模块加载到内存中,如第9.8节“保护模式操作的软件初始化”所述。一旦创建了这些表,软件初始化代码就可以切换到保护模式。

保护模式是通过执行设置CR0寄存器的PE标志的MOV CR0指令来进入的。(在同一指令中,可以将寄存器CR0中的PG标志设置为启用分页。)在保护模式下执行从CPL 0开始。

Intel 64和IA-32处理器对切换到保护模式的要求略有不同。为了确保向上和向下的代码兼容Intel 64和IA-32处理器,我们建议您遵循以下步骤:

  1. 禁用中断。CLI指令可以禁用可屏蔽的硬件中断。外部电路可以使NMI中断失效。(软件必须保证在模式切换操作期间不产生任何异常或中断)
  2. 执行LGDT指令,将GDT的基地址装入GDTR寄存器。
  3. 执行MOV CR0指令,该指令设置控制寄存器CR0中的PE标志位(或者可选的PG标志)。
  4. 紧接MOV CR0指令之后,执行远跳转JMP或远调用CALL指令。(这个操作通常是对指令流中下一条指令的远跳转或调用)
  5. MOV CR0指令之后的JMP或CALL指令立即更改执行流程并序列化处理器。
  6. 如果启用了分页,MOV CR0指令和JMP或CALL指令的代码必须来自标识映射的页面(即,跳转之前的线性地址与启用分页和保护模式之后的物理地址相同)。JMP或CALL指令的目标指令不需要进行标识映射。
  7. 如果要使用本地描述符表,请执行LLDT指令将LDT的段选择子加载到LDTR寄存器中。
  8. 执行LTR指令,将带有段选择子的任务寄存器加载到初始保护模式任务或可写内存区域(可用于在任务切换上存储TSS信息)。
  9. 进入保护模式后,段寄存器继续保持其在实地址模式下的内容。步骤4中的JMP或CALL指令将重置CS寄存器。执行下列操作之一,以更新其余段寄存器的内容。
  • 重新加载段寄存器DS、SS、ES、FS和GS。如果不使用ES、FS和/或GS寄存器,则使用空选择符加载它们。
  • 对新任务执行JMP或CALL指令,这将自动重置段寄存器的值并跳转到新的代码段。
  1. 执行LIDT指令,将保护模式下的IDT的地址和界限加载到IDTR寄存器中。
  2. 执行STI指令以启用可屏蔽的硬件中断,并执行必要的硬件操作以启用NMI中断。

如果上述步骤3和4之间存在其他指令,则可能会发生随机故障。 在某些情况下,例如在系统管理模式下在步骤3和4之间插入引用内存的指令时,很容易出现故障。

+++++++++++++++++++++++++++++++++++++++++++++++
未完待续…

翻译是用有道+谷歌翻译的,自己翻译太慢了,如果有翻译的不准确的地方,请留言指出来,我会修正,谢谢~

发布了42 篇原创文章 · 获赞 18 · 访问量 7535

猜你喜欢

转载自blog.csdn.net/weixin_44395686/article/details/105193487