JILK - CPU - (3) - CPU的操作模式

IA-32架构支持三种CPU操作模式(operating mode):实地址模式、保护模式和系统管理模式。到了Intel 64架构时,又增加了一种IA-32e模式,而IA-32e可分为两种子模式:兼容模式和64位模式。因此Intel CPU可处于五种操作模式下,而从一个汇编程序员的角度来看,不同的操作模式提供了不同的CPU处理环境和指令集。

1)实地址模式(Real-address mode)。该模式提供了Intel 8086的CPU环境,除此之外,还提供了一定的扩展,如从实地址模式切换到保护模式(protected mode)或系统管理模式(system management mode)。在加电或重启之后,CPU将会进入该模式。

2)保护模式(Protected mode)。这是IA-32架构上最为基础的模式。该模式支持模拟出虚拟8086模式(virtual-8086 mode),也就说可以为每个8086的应用程序模拟出实地址模式的环境,从而让该应用程序认为其是在8086的环境上运行的。

3)系统管理模式(System management mode,SMM)。当CPU的SMM中断引脚(SMI#)或从APIC(高级可编程中断控制器)里传来SMI中断,CPU将会进入该模式。在进入该模式之前,CPU会将当前执行的上下文(包括各寄存器的值等)保存起来,然后切换到另外一个独立的地址空间去,然后执行该模式下相关的代码,譬如可用来实现一些与平台相关的功能,如电源管理,系统安全等。当在系统管理模式执行完后,CPU再将进入模式之前的上下文调出,并恢复执行之前未完成的程序或任务。

4)兼容模式(Compatibility mode, sub-mode of IA-32e mode)。这是Intel 64架构下的IA-32e模式下的子模式。这是一个与保护模式非常相似的模式,它允许16位和32位的应用程序不用重编译就可以运行在64位的操作系统下,这是因为兼容模式和64位模式的区别粒度可以去到代码段的粒度上,因此在一个代码段上启用兼容模式,而在另一个代码段上启用64位模式。与保护模式不同的是:能够在虚拟8086模式下运行的或在借助硬件的任务管理运行的应用程序在兼容模式下将无法运行。兼容模式和保护模式一样,支持的线性地址空间只能去到4G,但它们都支持PAE(Physical address extensions)。

5)64位模式(64 bit mode, sub-mode of IA-32e mode)。顾名思义,64位模式支持64位的线性地址空间。除此之外,其可用的通用寄存器和SIMD所能用的寄存器也有所增加,通用寄存器的位宽也扩展到64位。在64位模式下,默认的地址为64位,数据为32位。


发布了34 篇原创文章 · 获赞 2 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章