3.7.4 技术特征
1)工作模式
X86处理器有三个主要的操作模式:保护模式、实地址模式和系统管理模式。此外保护模式下存在虚拟8086模式。
保护模式是处理器的原生状态,在这种模式下所有的指令和特性都是可用的。分配给程序的独立内存区域被称为段,而处理器会阻止程序使用自身段范围之外的内存。
(1)虚拟8086模式。保护模式下,处理器可以在一个安全环境中,直接执行实地址模式软件。换句话说,如果一个程序崩溃了或是试图向系统内存区域写数据,就不会影响同一时间内执行的其他程序。现代操作系统可以同时执行多个独立的虚拟8086模式。
(2)实地址模式。实地址模式实现的是早期Intel处理器的编程环境,但是增加了一些其他特性,如切换到其他模式的功能。当程序需要直接访问系统内存和硬件设备时,这种模式就很有用。
(3)系统管理模式。系统管理模式向操作系统提供了实现诸如电源管理和系统安全等功能的机制。这些功能通常是由计算机制造商实现的。
2)寄存器组织形式
X86架构具有16个宽度为256位的浮点寄存器,每个寄存器分为低位和高位,由于X86架构的向后兼容性,寄存器中的低位128位又可作为128位的浮点寄存。此外X86-64 Haswell架构还提供17个64位通用寄存器,同时支持32位(或16位)工作模式,对原来17个64位通用寄存器的低位进行操作。
3)X86内存管理
在32位保护模式下,一个任务或程序最大可以寻址4 GB的线性地址空间。从P6处理器开始,一种被称为扩展物理寻址的技术使得可以被寻址的物理内存空间增加到64 GB。与之相反,实地址模式程序只能寻址1 MB空间。如果处理器在保护模式下运行多个虚拟8086程序,则每个程序只能拥有自己的1 MB内存空间。
X86处理器在基本操作模式下来管理内存,保护模式是最可靠、最强大的。但它对应用程序直接访问系统硬件有着严格的限制。在实地址模式中只能寻址1 MB内存,处理器只能一次运行一个程序,但是可以暂时中断程序来处理来自外围设备的请求(称为“中断”)。应用程序被允许访问内存的任何位置,包括那些直接与系统硬件相关的地址。在变化模式中,处理器可以同时运行多个程序,它为每个进程(运行中的程序)分配总共4 GB的内存。每个程序都分配有自己的保留内存区域,程序之间禁止任意访问其他程序的代码和数据。
4)中断和异常管理
8086/8088把中断分为内部中断和外部中断两大类。为了支持多任务和虚拟存储器等功能,80386把外部中断称为“中断”,把内部中断称为“异常”。与8086/8088一样,80386通常在两条指令之间响应中断或异常。80386最多处理256种中断或异常。
(1)中断。对80386而言,中断是由异常的外部事件引起的。外部事件及中断响应与正执行的指令无关。
外部硬件在通过INTR发出中断请求信号的同时,还要向处理器给出一个8位的中断向量。处理器在响应可屏蔽中断请求时,读取这个由外部硬件给出的中断信号。处理器对这个中断向量号并没有规定。但在具体的微机系统中,系统必须通过软件和硬件的配合设置,使得给出的这个中断向量号不仅与外部中断源对应,而且要避免中断向量号使用冲突情况的出现。可编程中断控制器芯片8259A可配合80386工作,能够根据设置向处理器提供上述中断向量号,还能处理中断请求的优先级。每个8259A芯片可以支持8路中断请求信号,如果使用9个8259A芯片(1个主片、8个从片),就可使80386在单个引脚INTR上接收多达64个中断源的中断请求信号。
(2)异常。异常是80386在执行指令期间检测到不正常的或非法的条件所引起的。异常与正执行的指令有直接的联系。例如:①执行除法指令时,除数等于0;②执行指令时发现特权级不正确。当发生这些情况时,指令就不能成功完成。软中断指令也归类于异常而不称为中断,这是因为执行这些指令时产生了异常事件。
80386识别多种不同类别的异常,并赋予每种类别不同的中断向量号。异常发生后,处理器就像响应中断那样处理异常,即根据中断向量号转换相应的中断处理程序。
(3)优先级。在一条指令执行期间,如检测到不止一个中断或异常,那么按表3-6所列优先级通知系统。把优先级最高的中断或异常通知系统,其他优先级较低的异常被废弃,而优先级较高的中断则保持悬挂。
表3-6 中断优先级