IA-32处理器基本运行环境介绍

IA-32处理器基本运行环境介绍,第1张

  任何程序跑在IA-32处理器上都需要一个特定的环境来支持,比如程序代码的读取,数据的存储和状态的保存等。这些资源组成IA-32处理器基本的运行环境,这些资源主要包括:

  地址空间(Address Space)。任何程序跑在IA-32处理器上的时候都可以看到一个线性地址空间,该地址空间大小为2的32次方。该线性地址空间需要通过分页机制映射到物理地址,该线性地址空间让程序以为自己可以访问到系统中的任何地址。

  基本的程序执行寄存器。主要包括8个通用寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP),6个段寄存器(CS、DS、ES、SS、FS和GS),标志寄存器EFLAGS和指令指针寄存器EIP。

  x87 FPU寄存器。主要包括8个数据寄存器,1个控制寄存器,1个状态寄存器,1个Tag寄存器,1个 *** 作数寄存器,1个指令指针寄存器和1个数据指针寄存器。

  8个MMX寄存器,用于支持64-bit的SIMD(Single InstrucTIon MulTIple Data)指令。

  8个XMM寄存器,用于支持128-bit的SIMD指令。

  8个YMM寄存器,用于支持256-bit的SIMD指令。

  4个边界寄存器(Bounds registers)。BND0-BND3寄存器存放的是内存缓冲区的上限指针,这些寄存器用于支持MPX指令。

  BNDCFGU和BNDSTATUS寄存器,可以看出一个是配置寄存器,一个是状态寄存器,用于支持MPX指令。

IA-32处理器基本运行环境介绍,第2张

  以上的运行环境是在IA-32 CPU core级别的环境,另外IA-32处理器还提供了下列系统级别的运行环境,在多核处理器的环境中,处理器内部的多个CPU core共享这些运行环境。这个系统级别的运行环境主要包括:

  控制寄存器。包括5个控制寄存器CR0 - CR4,这些控制寄存器控制着当前的运行模式,并且是否使能处理器的某些功能。

  内存管理寄存器。其中包括GDTR、IDTR、任务寄存器(task register)和LDTR,这些寄存器用来指明在保护模式下,内存中数据结构的位置。

  Debug寄存器。包括8个Debug寄存器DR0 - DR7。

  内存类型和范围寄存器(MTRR,Memory Type Range Register)。用于指明系统内存的类型和区间。

  MSR(Machine Specific Register)寄存器。MSR寄存器主要用于控制处理器的配置并且汇报处理器的状态,每个CPU Socket中都包含了大量的MSR寄存器。

  Machine Check寄存器。Machine Check寄存器主要用于硬件错误的检测,它其实也是属于MSR寄存器。

  性能监测寄存器(Performance monitoring counters)。顾名思义,主要用于监测处理器的性能。

  64-bit模式类似于IA-32的模式,只是在这的基础上做了一些扩展:

  地址空间从,原来是32位的地址,现在扩展成64位的,所以地址空间也从2的32次方扩展成2的64次方。

  基本的程序执行寄存器从原来的8个扩展为16个,并且从原来的32位扩展为64位。

  XMM和YMM寄存器也从原来的8个扩展到16个。

  控制寄存器CR0 - CR4从原来的32位扩展到64位,并且多添加了一个控制寄存器CR8(task priority register)。

  Debug寄存器也从32位扩展为64位。

  描述表寄存器(Descriptor table register)。GDTR、LDTR、IDTR和TR都扩展了,从而可以保存64位的地址。

IA-32处理器基本运行环境介绍,第3张

  在虚拟化的过程中,如果要模拟CPU,就需要记录下每个被模拟的CPU的状态,而前面讨论的运行环境就是CPU的状态信息,这些信息将会在VMCS(Virtual Machine Control Structure)中被记录下来。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2716827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存