80X86 和 Pentium—Pentium II
系列各个成员的概况 。
80X86的三种工作模式及寻址原理 。
80386的内存分页管理机制 。
80386具有保护功能的指令 。
本章内容
了解 80X86和 Pentium—Pentium II系列各成员的基本特点 。
掌握 80X86的三种工作模式 (实模式,
保护模式及虚拟 86模式 )及寻址原理 。
掌握 80386的内存分页管理机制 。
了解 80386具有保护功能的指令 。
学习目的特点
12.1 80X86 和 Pentium—Pentium
II系列各个成员概况一,8086 和 8088
(1) 16位 CPU。
(2) 2.5 MIPS (即每秒执行 250万条指令 )。
(3) 20位地址,可寻址 1MB地址空间。
(4) 属于 CISC(Complex instruction set
computers,复杂指令集 )。
二,80286 微处理器
(1) 16位 CPU。
(2) 4.0 MIPS,改进了指令执行部分,速度提高了 8倍 。
(3) 24位地址,可寻址 16MB地址空间。
(4) 比 8086增加了几条指令 。
特点三,80386 微处理器
(1) 32位 CPU,数据线为 32位。
(2) 32位地址,可寻址 4GB物理地址空间
(1GB=1024MB)
(3) 适合 GUI(graphical user interface,图形用户接口 )的软件系统要求 。
(4) 32位数据传送只需要 1个读写周期 。
(5) 包含了存储器管理部件,使效率得到了提高 。
特点四,80486微处理器
(1) 一片集成块中包含了 80386,80387,8KB
/16KB高速缓冲存储器 。
(2) 有大约一半的指令只在一个时钟周期内完成 。
特点
(3) 50MHZ时为 50MIPS。
(4) 采用倍频技术 (66MHZ/33MHZ,100MHZ/
33MHZ,120MHZ/40MHZ),使 CPU处理速度加快 。
五,Pentium 处理器
(1) 66MHZ时,速度 110MIPS; 100MHZ时,
速度为 150MIPS。
(2) 8KB的指令高速缓冲存储器和 8KB数据高速缓冲存储器 。
(3) 64位数据总线宽度特点
(5) 两个独立的整数处理器 (超标量技术 ),允许每个时钟周期执行 2条指令 。
(6) 包含转移预测技术 。
(4) 多媒体扩展的附加指令 (MMX指令 )
六,Pentium Pro 处理器
(1) 150MHZ和 166MHZ时钟频率。
(2) 除 16KB的一级 (L1)高速缓冲存储器 (8KB
用于数据,8KB用于指令 )以外,还有
256KB的二级 (L2) 高级缓冲存储器 。
(3) 三个执行部件,可同时执行三条指令。
(4) 36位地址总线,可寻址 64GB存储器。
特点七,Pentium II 和 Pentium II Xeon微处理器
(1) 总线频率 66MHZ时,时钟频率为 266~ 333MHZ;
总线频率 100MHZ时,时钟频率为 350MHZ、
400MHZ,450MHZ。
(2) 32KB一级 (L1)高速缓存,512KB二级 (L2)高速缓存 。
(3) Pentium II 400MHZ时,速度达 440MIPS。
特点
2001年,Intel推出 64位和 128位宽的数据总线微处理器,Merced,包含 128个通用整数寄存器,128个浮点寄存器,64个判定寄存器和多个执行部件,为软件提供了充足的硬件资源 。
CPU 算术协处理器
8KB
L1
CPU1 CPU2 算术协处理器
16KB
L1
80486DX Pentium
算术协处理器CPU1 CPU2CPU3
16KB L1
256KB L2
Pentium Pro
算术协处理器CPU1 CPU2 CPU3
32KB L1
512KB L2
Pentium II
12.2 80X86的三种工作模式及寻址原理一、实地址模式
80286 以上 CPU采用 8086/8088的工作方式称为实地址模式 。
(1) 80386开机启动时,自动进入实地址模式。
(2) 实地址模式与 8086/8088的寻址原理一致,
即采用段基址:偏移量形成物理地址。
(3) 8086/8088的指令向上兼容。
1.特点
(4) 实地址模式下的寻址范围可扩大到
1MB+64KB- 16B的范围。 (需开通 A20地址线 ) (0000,0000H~ FFFFH,FFFFH)
(5) 在实地址模式下可以用软件指令切换到保护模式。
386增加了四个控制寄存器 CR0,CR1,
CR2,CR3。 这些控制寄存器均为 32位,主要用于保护模式和分页管理 。
CR0的第 0位称为 PE位 (保护激活位 )。 在实模式下,PE = 0;当用指令使 PE = 1时,
进入保护模式 。
二、保护模式
386工作在保护模式下,能够真正实现多用户,多任务的要求,能利用全部 32根地址线,物理地址范围可达 4GB(232)。
在保护模式下,仍然使用偏移地址访问位于存储器段内的信息 。 但是,保护模式下的段地址不再像实模式那样由段寄存器提供 。
描述符 (descriptor)描述存储器段的位置,长度和访问权限 。
在原来放段地址的段寄存器里含有一个选择子 (selector),用于选择描述符表内的一个描述符 。
1,选择子和描述符
(1) 选择子在保护模式下,段寄存器作为选择子从全局描述符表或局部描述符表中选择
8192个描述符中的一个 。
选择子
15 3 2 1 0
TI RPL
13位选择子,从 8192个全局描述符或者 8192
个局部描述符中选择一个描述符 (213 = 8192)。
TI =
0 全局描述符表 GDT
1 局部描述符表 LDT
RPL =
请求者特权级
00为最高级,11为最低级
(2) 描述符表和描述符
a,描述符表保护模式下,系统内存中设置了一个全局描述符表 GDT和若干个局部描述符表 LDT,每个描述符表包含 8192个描述符 。
段寄存器既可以访问全局描述符表,也可以访问局部描述符表。
b,描述符每个描述符长 8个字节。其格式如下图:
界限 (L15 ~ L0)
基地址 (B15 ~ B0)
访问权限 基地址 (B23 ~ B16)
基地址 (B31 ~ B24) G D O A 界限V (L19 ~L16)
1
3
5
7
0
2
4
6
字节序号 字节序号
基地址( B31~ B0),32位,指明本存储器段的起始地址。可以起始于任意地址。
界限 (L19 ~ L0):指明本存储器段的长度。
段的最大长度,对 286CPU,为 1MB;对
386以上 CPU,则为 1MB× 4KB=4GB,即偏移量为 32位。
G,D,O,AV及访问权限,说明段的边界是以字节还是页为单位,段的特权级等。
段描述符:包含一个存储器段的基地址
(B31~B0),界限 (L19 ~L0),访问权限以及其它一些标志 。
系统描述符:包含某一个 LDT的基地址,
界限,访问权限等 。
c,描述符的种类位于全局描述符表中的描述符为全局描述符,它包含适用于所有程序的段定义 。
而局部描述符通常用于惟一的应用程序 。
(3) 描述符寄存器系统只有一个全局描述符表,它包含
8192个全局描述符,每个描述符占 8个字节,
故描述表的最大长度 = 8192?8 =64KB,界限为 16位 (第 0个全局描述符不能使用 )。
a,全局描述符表寄存器 GDTR(48位 )
GDTR即是用来存放全局描述符表本身在内存中的基地址和界限 。 可以用指令对 GDTR
进行操作 。
b,局部描述符表寄存器 LDTR
局部描述符表的位置是由全局描述符表中某个系统描述符确定的 。 将选择子装入 LDTR,再配合 GDTR,在全局描述符表找到该系统描述符 。
2,寻址原理
(1) 全局任务寻址装入段寄存器中 D2位数据 TI=0时,表明是一次全局任务寻址 。
DS=0000000000001000=0008H
选择子 (13位 ) RPL=00级
TI=0
例,
数据段
+
取出段的基地址如 00001000H
EA(32位 )
32位偏移量全局描述表的基地址界限
+
DS
高 13位?8
8
字节全局段描述符全局描述符表基地址
031
15 0
GDTR
被寻址单元
0008
a,由 GDTR确立全局描述符表的基地址,
该基地址加上 DS高 13位乘以 8得到的位置找到所对应的全局描述符
b,从全局描述符中取出存储器数据段的基地址,基地址加上指令中给出的 32位偏移量 EA,
c,最后可得寻址的物理地址。
步骤:
为加快每次寻址的速度,CPU内设置了若干个 描述符高速缓冲器 。
当一个新的 段号 放入段寄存器时,CPU就访问一个 描述符表,并把描述符装入描述符高速缓冲器中 。
这个描述符一直保存在此处,并在访问存储器段时使用,直到 段号 再次变化 。
这就允许 CPU重复访问 一个内存段时,不必每次都去查询描述符表,以提高寻址速度 。
(2) 局部任务寻址
TI=1时,为 局部任务 寻址 。 这时 GDTR
仍然存放有全局描述符表的基地址,这个基地址加上由 LDTR构成的位置,找到表中某一个系统描述符,该系统描述符中含有 LDT的基地址 和 界限 。
设 DS=0000000000001100=000CH
a,由 LDT(局部描述符表 )中的 基地址,加上
DS高 13位?8构成的 位置,得到本次寻址所需的 段描述符 ;
b,从段描述符中取出段基地址,再与指令中给出的 32位偏移地址 相加,得到被寻址单元的物理地址 。
步骤:
基地址界限,.,全局段描述符系统描述符 (指示局部描述符表 )
数据段被寻址单元取出段基地址 +
32位
EA
局部段描述符
+
+000CDS
高 13位?8
15 0
015
LDTR
选择子
GDTR
31 0
取出 LDT基地址局部描述符表 LDT
全局段描述符表 GDT
为加快速度,由选择子找到系统描述符之后,CPU将系统描述符内的局部描述符表的基地址,界限和访问权限装入 CPU内的
LDTR高速缓冲器中 。
另外,在得到局部段描述符之后,CPU
也将其放入描述符高速缓冲器中,并将其一直保存到下一次局部描述符改变之前 。
保护模式下,每个任务可寻址 8192个全局段和 8192个局部段,每个段的最大长度为 4GB,则一个任务最大的寻址范围是:
8192?4GB+8192?4GB=64TB
三、虚拟 86模式在保护模式下执行指令 IRETD,则进入 虚拟 86模式 。
虚拟 86模式内存寻址与实模式相同,
不用描述符,每个任务最大的寻址空间为:
1MB+64KB–16B。
虚拟 86模式是多任务的,具有 386全部的保护功能,既可以执行 8086程序,也可以执行 386程序 。
保护模式
PE=1
PE=0
实地址模型
RESET
RESET
虚拟 86
模式
IRETD指令中断三种工作模式的切换
13.3 80386的内存分页管理机制一,线性地址在保护模式下,由段寄存器 (选择子 ),
段描述符和偏移地址形成了 32位全地址,
这个全地址称为 线性地址 。
不分页时,32位线性地址就是实际的物理地址,该地址通过 32根地址线送出 。
分页管理下,32位线性地址将通过内页分页管理机制转化为另外的物理地址 。
分页管理 机制是 80386以上 CPU一个重要的特色 。 因为在程序运行时,有时选择的线性地址在物理存储器系统中并不存在,但通过分页管理,可以将实际存在的 物理地址赋给不存在的 线性地址 。
例如,程度要访问 20000000H~200003FFH
的 线 性 地 址 区 域,但 物 理 存 储 器 只 存 在
12000000H~120003FFH的页,则通过 分页 可以将存在的 物理页 赋给 线性地址 区域 。
当 386控制寄存器 CR0的 PG被置成 1时,
则进入分页管理 。
分页管理时,32位的 线性地址 被分成三个部分:
例,线性地址 20000000H=
0010 0000 0000 0000 0000 0000 0000 0000
页目录地址 页表地址 页内偏移地址页目录地址 页表地址 页内偏移地址
31 22 21 12 11 0
10位 10位 12位二、页目录表和页表在分页方式下,CPU在内存中开辟了两个区域,用于存放页目录的基地址和页的基地址 。 这两个区域分别称为 页目录表 和 页表 。
目录 0的基地址目录 1的基地址
………………..
目录 1023的基地址页 0的基地址页 1的基地址
………………..
页 1023的基地址
…………….
页页表页目录表目录地址页表地址页内偏移地址
4096
页目录表和页表都有 1024个项,每项占 4个字节,共占 4096个字节 。 每页亦占 4096个字节 。
三、分页机制在分页方式下,页目录表本身的基地址保存在控制寄存器 CR3中 。 该基地址起始于任意 4KB的边界 。
CR3 的内容页目录地址?4
+ 找到某个目录项步骤 1
从该目录项中取出目录基地址页目录地址? 4
+ 找到某个页项步骤 2
从该页项中取出页基地址页内偏移地址
+ 物理地址 (32位 )
步骤 3
基地址页目录表 页表
+ + +
页目录地址 页表地址 页内位移地址
4?4
物理地址
CR3
线性地址
PG=1
分页
PG=0
禁止分页 物理地址虚拟 86模式也启用了 386的分页功能 。
由于虚拟 86 模式下任务的寻址范围是
1MB+64KB–16B,故线性地址的 31~21位全为 0,剩下低 21 位 (20~0) 对应
1MB+64KB–16B的地址空间 。
13.4 80386具有保护功能的指令一、保护模式下的寄存器通用寄存器都扩展为 32位,分别记为
EAX,EBX,ECX,EDX,ESP,EBP,
ESI,EDI。 指令指针寄存器 EIP。
特点
(2) 增加了两个段寄存器 FS和 GS,四个控制寄存器 CR0,CR1,CR2,CR3。
(1) 可以执行 32位 的乘除运算。
(3) 标志寄存器扩展为 32位 。
二、保护模式下的指令功能,调整选择子的 RPL字段 。
目的,防止系统软件用较高的特权级获得对子程序的访问权 。 执行该条指令必须满足一定的条件 。
1,APRL指令
2,对系统表进行操作的指令将存储器中表的 物理地址 和 界限 分别加载到 GDTR (全局描述符寄存器 )和
IDTR (中断描述符寄存器 )。
(1) LGDT/LIDT存储器的地址把 GDTR或 IDTR寄存器的内容保存到存储器中 (连续的 48位 )。
(2) SGDT/SIDT存储器地址把 选择器 的值 作 为操 作 数加 载到
LDTR,再把选择器指示的 描述符 从 GDT加载到描述符高速缓存器 。 LTR对应 TR (任务寄存器 )。
(3) LLDT/LTR选择器的值选择器描述符缓存器
LLDT
GDT
LDTR
SLDT/STR则传送选择器的值送入 16位操作数 。
3,VERR和 VERW指令
VERR是校验段的读取权的指令 。
VERW是校验段的写入权的指令 。
4,LAR和 LSL指令
LAR为加载访问权字节的指令 。
LSL为加载段边界指令 。
5,只有在特权级 0才可以执行的指令
(1) LMSW:把 16位数据加载到 MSW寄存器 。 MSW
(机器状态字 )为 CR0的 D15~D0位 。
(2) CLTS:复位 TS位 。
(3) HLT:暂停指令 。
(4) MOV CRn,r32;把数据写入到控制寄存器 。
(5) MOV r32,CRn;读控制寄存器另外,还有读写测试寄存器和调试寄存器的指令 。