当前位置:文档之家› 微处理器存储器管理技术

微处理器存储器管理技术


在保护模式下,当寻址内存中的数据和程序时,仍然 使用偏移地址访问位于存储段内的信息。区别是,保护模 式下的段地址不再像实模式那样由段寄存器提供。在原来 存放段地址的段寄存器里含有一个选择子,用于选择描述 表内的一个描述符。描述符描述存储器段的位置、长度和 描述存储器段的位置、 描述存储器段的位置 访问权限。两种模式之间的区别是微处理器访问存储段时 访问权限 两种模式之间的区别是微处理器访问存储段时 对段寄存器的解释不同。 对段寄存器的解释不同。
退出
二、描述符
图2.5表示80286、80386~PentiumⅣ的描述符格式。 2.5表示80286、80386~PentiumⅣ的描述符格式。 表示80286 的描述符格式 注意每个描述符长8个字节, 注意每个描述符长8个字节,所以全局和局部描述符表每 个最长为64KB 64KB。 个最长为64KB。 例2-1 如果段的基地址为10000000H,界限为001FFH, 如果段的基地址为10000000H,界限为001FFH, 10000000H 001FFH 位为0 求段的结束地址; 位为1 G位为0时,求段的结束地址;若G位为1时,求段的结束地 址。 base=10000000H G=0 End=Base+Limit=10000000H+001FFH=100001FFH G=1 End= Base+Limit=10000000H+001FFFFF=101FFFFFH
12







页表地址或页地址
P P D A C W U W P D T
图2.9 页目录项和页表项格式
退出
通写式高速缓冲存储器,在CPU向Cache写入的同时, 也把数据写入相应内存单元。保证Cache和内存中相应单 元数据的一致性。通写式速度慢,而且有些操作是不必要 的,比如CPU连续多次更新一个Cache单元的内容,将导致 相应内存单元连续多次被写入,而效果其实和写入最后一 次更新是一样的。
退出
2.2.2
禁用高速缓冲位PCD:如果PCD位被清除为0, 则页表或页面可用高速缓存;若PCD置位,禁用高 速缓存。 访问位:A=1,表示已访问过对应的物理页。 脏位:对于页目录项,D位是未定义。对于页 表项,D位用来记录页表项所描述的页是否进行过 数据写入,D=0 该页中的内容没有被改动过。D=1 该页中的内容已经被改动过了(被写过)。
通写式高速缓冲存储器 回写式高速缓冲存储器
退出
2.2.2
四、转换后备缓冲区
因为进行4KB存储器重新分页的操作要求使用存储 器内的页目录和页表,所以Intel构造一个称为TLB的高 速缓冲存储器。在80486微处理器中,TLB保存了32个最 近使用的页转换地址。因此如果访问某个存储区,其地 址已经在TLB中,就不需要在访问页目录和页表,这样 加速了程序的执行。如果一个页表转换不在TLB中,则 必须访问页目录和页表,这就需要额外的执行时间。 (本章结束)
退出
2.2.2
三、页目录项和页表
页目录项和页表项的格式是相同的,如图2.9所示。 存在位:若P=1,该页被映射到物理内存,可以使用进 行地址的转换;若P=0,该页没有被映射到物理内存,则不 能进行地址转换。 写位:W位指示该表项所指定的页是否可读、写或执行。 若W=1,对表项所指定的页可进行读、写或执行;若W=0,对 表项所指定的页可读或执行,但不能对该指定的页写入。用 户/超级用户位:指示该表项所指定的页是否是用户级页。 若U/S=1,表项所指定的页是用户级页,可由任何特权级下 执行的程序访问;如果U/S=0,表项所指定的页是系统级页, 只能由系统特权级0、1和2上执行的程序访问。通写位:如 果PWT置1,相关页使用通写策略。否则,采用回写策略。
退出
31
12 11
0
M C E 页目录基地址 页故障线性地址 未用 P C N G D W A M
18
P S E P C D
T P V D S V M E D I E P W T
CR4
CR3
CR2
CR1
W P
16
N E T E MP E T S MP E
CR0
图2.8 微处理器控制寄存器结构
退出
31
5
5 3 1
访问权限
基(B23-B16) 4
2 0
基(B15-B0) 界限(L15-L0)
2 0
3 1
基(B15-B0) 界限(L15-L0)
图2.5 80286和80386~PentiumⅣ微处理器的描述符格式 和 Ⅳ
退出
退出
图2.6 80286~PentiumⅣ 描述符中 Ⅳ 的访问权限字节
D S 寄 存 器 从 全 局 描 述 符 表 中 选 择 一 个 描 述 符
微处理器存储器管理技术(6学时 学时) 第二章 微处理器存储器管理技术 学时
知 识 概 述 学时) 实模式存储器寻址(2学时 第一节 实模式存储器寻址(2学时) 学时) 第二节 保护模式存储器寻址 (4学时 学时
退出
第一节 实模式存储器寻址
80286及其以上的微处理器可工作于实模式或者保护 模式,而8086只能工作于实模式。 实模式只允许微处理器寻址第一个1MB内存空间,即 使是PentiumⅣ微处理器也是如此。 DOS操作系统要求微处理器工作于实模式。 实模式操作是允许为8086编写的应用软件不用修改就 可以在80286及更高型号的微处理器中运行。 在任何情况下,这些微处理器每次加电或复位后都默 认地以实模式开始工作。
Байду номын сангаас
退出
通写式高速缓冲存储器
回写式高速缓冲存储器,CPU修改了Cache的内容 后,并不立即修改内存中相应的单元。只有当回写操作 被执行的时候,才修改相应内存单元。比如该Cache单 元的内容从Cache中撤销时触发回写操作。回写式速度 快,也避免了一些不必要的操作。
退出
回写式高速缓冲存储器
知 识


基本概念:实模式,实空间,段地址,偏移地址, 保护模式,虚拟存储空间,段选择子,描述符 重点:实模式存储器寻址,默认的段加偏移,保 护模式下的存储器寻址 难点:保护模式下分页机制的存储器寻址
退出
退出
2.1.1
段地址和偏移地址
图2.1说明了段加偏移的寻址机制如何选择内存单元。 1. 逻辑地址:用冒号连接段地址和偏移地址,即段地址: 偏移地址。 2. 物理地址:物理地址=段的起始地址+偏移地址=段地址 ×10H+偏移地址。
退出
2.1.2
默认段和偏移寄存器
微处理器有一套规则,用于每次访问内存段,这套规 则既适合于实模式也适合于保护模式,规则如下: 1. 用CS:IP或CS:EIP定位微处理器执行的下一条指令。 2. 用SS:SP或SS:ESP寻址存储器堆栈段中的数据。 3. 用DS或ES寻址存储器的数据段中的数据。 8086~80286允许访问4个存储段,80386~PentiumⅣ允 许访问6个存储段。注意内存段可以相邻甚至重叠,如果 一段不需要64KB内存,则它可与其它段重叠。 例如某个应用程序的代码需要1000H个字节的内存, 数据需要190H个字节的内存,堆栈需要200H个字节的内存, 这个应用程序不需要附加段。图2.3表示了DOS是如何装入 应用程序的。
退出
2.1.3
程序重定位问题的实现
1. 可重定位程序:是一个可以放在内存任何区域,不加修 改而仍能执行的程序。 2. 可重定位的数据:是可以放在内存任何区域,且不需要 修改就可以被程序应用的数据。 段加偏移寻址机制允许程序和数据不需要任何修改, 而使程序和数据重定位。
退出
第二节
保护模式存储器寻址
一、分页寄存器
分页机制的启用是由微处理器中控制寄存器的内容 控制。控制寄存器CR CR0 CR3的内容见图 控制。控制寄存器CR0到CR3的内容见图2.8。
退出
二、分页机制的存储器的组织
1. 物理内存分页:一个物理页的大小为4KB,页与页互不重 叠,只需要32bit的地址中高20bit来寻址物理页。 2. 页表:页表中的每一项的内容(每项4个字节,32位)高 20位用来存放一个物理页 用来存放一个物理页的起始物理地址,低12bit放着 用来存放一个物理页 一些关于该页的其它信息。 3. 页目录:页目录中的每一项的内容(每项4个字节)高 20bit用来存放一个页表 用来存放一个页表的起始物理地址,低12位存放该 用来存放一个页表 页表的其它信息。 4. 从前面的讲解可以知道,对于80386~PentiumⅣ系统,页 目录的物理地址放在CPU的CR3寄存器中高20位。 其寻址过程是:CR3→页目录→页表→物理内存分页。
退出
2.2.2
退出
图2.1 实模式内存的寻址机制
退出
图2.3 应用程序装入DOS 内存系统示意图
退出
图2.4 保护模式下段寄存器的内容
80286描述符
80386~PentiumⅣ
7
000000 00 访问权限
000000 6 00 基(B23B16)
4
界限 ( 7 基(B31-B24 G D 0 A 6 V L19) L16)
退出
2.2.1分段存储器管理 分段存储器管理
一、选择子
在保护模式下,段寄存器的功能如图2.4所示,段寄 存器包括13位的选择子字段、表指示器位(table indicator,TI)和请求优先级(requested privilege level, RPL)字段。其中13位的选择子可从描述符表的 213=8192个描述符中选择一个。TI位选择全局描述附表 (TI=0)或局部描述附表(TI=1)。 1. 对于286由于偏移地址是16位长,所以一个段的最 大容量为64KB。因此逻辑空间,也即虚拟空间为 214×216=230=1GB。 2. 而对于80386~PentiumⅣ,它的偏移地址为32位长, 所以一个段的最大容量为4GB。因此虚拟地址空间为 214×232=246=64TB。
相关主题