第十一章从 80286到 Pentium
80286是一种超级 16位微处理器,具有 24根
AB线和 16根 DB线。
保护虚拟地址方式
(保护方式)
实地址方式
(与 8086兼容)
寻址空间为 1MB
寻址为 224=16MB
物理存储器 (16MB)
虚拟存储器( 1GB)
80286保护方式下,支持对虚拟存储器的访问。
虚拟存储器是程序可占有的空间,这个空间是由磁盘等外部存储器来实现的;物理存储器是 CPU可以访问的存储器 。
虚拟地址(逻辑地址)转换为物理地址,称为映射利用段描述符实现转换所谓虚拟存储器的管理,就是将较小的物理存储空间分配给较大的虚拟存储空间,可实现多用户,
多任务管理,这就是操作系统所解决的问题。
一个 16位机器状态寄存器( MSW)
它用于表示 80286当前所处的工作方式与状态,
80286只用到该寄存器的低 4位,其它 12位为内部保留。
PE(实地址方式与保护方式转换位):当
PE=1时,表示 80286已从实地址方式转换为保护方式,且除复位外,不能被清除; PE=0时,表示
80286当前在实地址方式下操作。
MP (监控协处理器位 ):当 MP=1时,表示协处理器 80287在工作;否则协处理器未工作。
EM(协处理器仿真状态位):当 MP=0,而
EM=1时,表示没有协处理器可供使用,系统要用软件仿真协处理器的功能,当 MP=1,而 EM=0时表示系统有协处理器。
TS (任务转换位 ):每当进行两个任务之间转换时就把 TS=1,一旦任务转换完成,则 TS=0。在 TS=1
时,不允许协处理器工作。只有任务转换完成后,协处理器方可在下一个任务中工作。
任务寄存器( TR)
64位的寄存器,只能在保护方式下使用,用于存放表示当前正在执行的任务的状态。当进行任务切换时,就用它来自动地保存和恢复机器状态。
描述符表寄存器
( LDTR,GDTR,IDTR)
LDTR:局部描述符表寄存器,64位,用来存放局部描述符表的段地址信息。由 CPU自动装入。
GDTR:全局描述符表寄存器,40位,用来存放全局描述符表的段地址信息。由操作系统初始化时自动装入。
IDTR:中断描述符表寄存器,40位,用来存放中断描述符表的段地址信息。由 CPU自动装入。
1.描述符描述符是现代微机重要特征之一,现代微机是利用描述符对存储器进行管理的。不了解描述符就不能说了解现代微机。
全局描述符局部描述符门描述符代码段( CS) 数据段( DS)
附加段( ES) 任务状态段( TES)
描述符表段( GDT,LDT,IDT)
每一段的段基地址、段限以及存储器的保护特性(指存储器是否可读、写、可执行、访问权级别等)
等称为段描述符段限占第 0,1字节,可取值为 1~FFFFH可变长度实模式下为固定值,FFFFH
段基地址占 2~4字节,24位,用来表示物理地址( 16M)的段首地址访问权字节占第 5字节;
Intel公司保留了 6,7字节。
若 P=1,表示该段已在物理存储器中,否则不在
DPL占位 6、位 5,表示该段的特权属性( 0~3
级),用于对该段的访问特权测试,利用该功能可以很方便的将系统程序与用户的应用程序划分开,
不能破坏系统程序,起保护作用。
位 4为 S,S=1表示该段为代码段或数据段的描述符,S=0表示非代码段或数据段的描述符。
TYPE占位 3~1,表示段描述符的类型
E=0表示是数据段的描述符;
E=1表示是代码段的描述符。
位 2为 ED,是访问扩展位,ED=0,表示数据段向上扩展,即偏移量必须小于或等于段限(偏移量为 16位),ED=1,表示数据段向下扩展,即偏移量必须大于段限(偏移量为 32位)。
位 1为 W,表示写保护特性,W=1,表示数据段允许写入,否则不允许。
位 0为 A,表示存取特性,A=1,表示段选择字已被装入段选择寄存器或已被指令使用过,否则表示该段未被访问过。
80286保护方式采用 32位地址指针寻址(称为虚地址指针),其低 16位仍表示偏移量,而高 16
位不再表示段基地址,而是一个指针(索引),它表示一个 16位的段选择字(也称为段选择符)
段选择符的高 13位是某段选择符在描述符表中的偏移地址左移3位后与段基址相加,便得到描述符在描述符表中的物理地址可寻址 213=8K个描述符
TI=0时,表示访问全局描述符
TI=1时,表示访问局部描述符寻址 16K个描述符
80286的最大虚拟空间为
16K× 64K=1GB
RPL表示访问某段时所请求的特权层的级别,
其定义同 DPL
保护方式下寻址是一种利用描述符数据结构的间接寻址。用户程序在寻址时由 CPU得到虚拟地址指针。
描述符表将每个段描述符存于一个表中,称为描述符表全局描述符表( GDT)
局部描述符表( LDT)
存放全局描述符的表称为全局描述符表 (GDT),存放局部描述符的表称为局部描述符表 (LDT),另外还有中断描述符表 IDT
全局描述符表和中断描述符表在系统中只有一个,
为所有的任务所共有,而局部描述表,每个任务占有一个,并且每个 LDT的属性又以描述符的格式存放在
GDT中。
80286将 1GB的逻辑空间分为两部分:全局地址空间 0.5GB(TI=0)和局部地址空间 0.5GB(TI=1)。每个任务的最大虚拟地址空间可达 1GB。
从实地址方式转入保护方式之前由操作系统用装载指令对 GDTR进行初始设置,或从板上 ROM中复制。
全局地址空间为所有的任务所共有,这样可以避免对相同的系统服务程序产生不必要的重复,因为这个空间装有操作系统的软件和库程序,以及公用系统服务程序中的过程调用和数据等。
局部地址空间是为每个任务分别独立占有的地址空间,存放每个任务所固有的代码和数据。采用这种方法,可以实现任务之间在虚拟地址空间上相互分离,在任务转换时,也实现局部地址空间的地址转换。
GDT的基地址和段限由全局描述符表寄存器 GDTR
( 40位)提供,而局部描述符表寄存器 LDTR的高 16
位(段选择寄存器)提供被访问任务的 LDT在 GDT 中的偏移地址。
LDTR的段选择器中的 TI位必定为 0,以指向
GDT,在 GDT中查到被访问的 LDT的属性(段描述符)装载到 LDTR的高速缓存器( LDT-cache),并根据 LDT-cache,访问相应的 LDT,再由 LDT中查到的被访问的操作数段的段描述符,形成操作数的物理地址。
LDTR的高 16位字段中保存了用于选定当前 LDT段的 16位选择符 (TI=0),该选择符用于在 GDT中去查找
LDT的描述符,其值是由当前任务的任务状态段 (Tss)
提供。
将 GDT中的某 LDTn之描述符自动装入 LDT-CACHE
由 LDT-CACHE的基地址字段确定 LDTn的基地址。
由 LDT-CACHE的段限字段确定 LDTn的段限由虚地址指针的高 13位提供 LDT的偏移地址,左移 3位后与段基址相加虚拟存储器管理
80386高性能全 32 位微处理器
32条数据总线
32条地址总线寻址 232=4GB的物理空间寻址 64TB的虚拟空间支持多任务模式,按 流水线 方式工作,硬件支持段式管理和页式管理,易于实现虚拟存储系统实地址方式、保护方式和虚拟 8086方式 (V86方式 )
80486 第二代 32 位微处理器
“精简指令集计算” RISC技术
(Reduced Instruction Set Computing)
80486内含 8KB cache(称为一级 cache),用于对频繁访问的指令和数据实现快速的混合存放。
80486内部数据总线宽度为 64位,CPU与 cache之间的数据通道为 128位,并支持多处理器系统支持外部 cache (称为二级 cache)
虚拟地址与物理地址及地址重定位虚拟地址 物理地址地址重定位静态重定位动态重定位固定定位 (51单片机 )
虚拟存储器当一个程序所需的地址空间大于内存可用空间时,该程序就不能装入内存去运行,就需要借助于大容量的辅存实现虚拟存储器管理术。
部分程序 内存 执行辅存计算机系统向用户提供了一个容量极大的“主存”
段、页式管理机制
80386及其以后的微处理器为了实现虚拟存储器管理,增加了段页式管理机制段页式存储器管理的基本思想是将面向用户的程序地址空间按其逻辑功能分为长短不一定相等的逻辑段 。
物理存储空间,可分为相等的若干块(称为页),80386系统中,4K字节为一页,每页的首地址都能被 4K整除。
一个逻辑段装入内存后,可占用若干个不一定连续的若干页,页的划分可充分利用内存中出现的
“碎片”。
逻辑地址 线性地址 物理地址
SU PU
物理地址 =F(线性地址)
分页部件提供了对物理空间的管理,程序和数据均以页为单位实存,分段部件对逻辑地址空间进行管理,每段可包含若干页,每段的地址空间可达 4GB。
段限值为 20位,使逻辑段的长度由 64KB增加到
1MB,段基地址占 32位,可寻址 4GB物理空间,所以,可得到的最大虚拟空间为 64TB。
80386/80486采用两级页表结构,即页目录表和页表。
页目录表是用来存放每个页表的描述符,称为
“页目录描述符”。
页表是用来存放每页的“页描述符”
段表(段描述符表)用来存放每个逻辑段的描述符,称为“段描述符”