版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.6 80X86 32位编程结构 1985年80386处理器应用于PC机,微型计算机进入了32位数据处理的时代,一直到2005年以前个人电脑都是以32位数据处理为主。 2.6.1 32位微处理器虚拟存储器管理 虚拟存储器(VM,Virtual Memory) 虚拟存储器是一种存储管理技术,它提供比物理内存大得多的存储空间,使程序设计人员编写的程序不考虑实际内存容量,从而可以编写出远大于实际内存容量应用程序。 虚拟存储器地址是一个概念性的逻辑地址,它与内存物理地址之间通过一个转换表对应。只有虚拟存储器地址中的内容被读入内存后,虚拟存储器地址才有对应的物理地址填入转换表,当虚拟存储器地址中的内容
2、未读入内存时,与之对应的内存物理地址为空。 32位80X86虚拟存储器管理结构 按照内存与外存之间信息交换时传送单位的不同,虚拟存储器可分为段式虚拟存储器、页式虚拟存储器和段页式虚拟存储器三种。1)段式虚拟存储器 段是按照程序逻辑结构划分的一种方式,段的大小是不确定的,它由段中内容决定。 优点: 段是程序自然分界的描述,与程序结构的一致性好;段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享;某些类型的段(如堆栈、队列等)具有动态可变长度,允许自由调度以便有效利用主存空间。 缺点: 段的长度各不相同,在分配和管理上具有一定难度,而且段的长度相对较大,在内存分配时容易产生一些空余的
3、小空间造成内存资源浪费。 在段式虚拟存储器中,程序访问的逻辑地址以“段号+段内偏移地址”的形式给出。“段号”是一个16位数值,它表示该段在段表中的序号,被称为段选择子(Selector,又称选择符)。选择子指向的记录被称为描述子(Descriptor 又称描述符),用于描述该段的相关信息 描述子共64个比特,主要包括三个方面内容。 一是段的基地址(共32位),用于表示段在内存中的起始位置; 二是段限(共20位),用于描述段的大小; 三是段的属性,包括段类型、访问权限、段是否已加载到内存、段限的单位(字节/页)等1514131211109876543210段基地址(2431)GDOAVL段限(1
4、619)6PDPLDT段类型段基地址(1623)4段基地址(015)2段限(015)0段式虚拟存储器地址转换过程如下图所示: 2)页式虚拟存储器 页是一个固定长度的信息描述单位,一个程序可以被分为若干页。如果将内存空间也按照页的大小分成若干个固定大小的存储块,则该存储块被称为页面。 优点: 在页式管理中由于页面大小固定,进行内存分配时,不考虑分配信息的逻辑关系等因素,因此对页面的管理将变得十分方便。由于页面的大小通常较小(如4KB),浪费只是在最后一个页面中的零头产生,因此页式管理具有较高的内存利用率。 缺点: 由于页不是逻辑上独立的实体,因而处理、保护和共享等方面都不如段式方便。 程序访问的
5、逻辑地址可以由“逻辑页号页内偏移地址”构成。逻辑页号用于表示在页表中该地址所在的页表记录项的序号,页表记录项中存放着页的物理起始地址,它与逻辑地址的“页内偏移地址”相加得到实际要访问的物理地址。 存放页起始地址的项放在一起构成页表,每个页表占用4个字节,用于存放20位的页起始地址和页属性。页式虚拟存储器地址转换过程如下: 由于每一页只4KB大小,如果只使用一级页地址转换最多会有220个页表项,这需要占用很大的连续存储空间,如果分为两级,则可以将页表变小,从而更加灵活。因此80X86使用的是两级页表结构。两级页表转换过程:第一次转换查页目录表,找到二级页表的起始地址第二次转换查页表,找到数据所在
6、页的起始地址起始地址+偏移找到对应的数据 3)段页式虚拟存储器 为了克服段式和页式存储器管理各自的缺点,可以将这两种管理方式结合成段页式管理。段页式管理首先将程序按照模块分段,段内再分页,分配内存以页为单位进行,而管理以段为单位进行。这样就结合了这两种管理方式的优点。 首先查段表项找到对应的段内线性地址根据段内线性地址查两级页表找到数据所在页的起始地址+偏移地址得物理地址2.6.2 基本结构寄存器 80X86/32位微处理器有16个基本结构寄存器,这16个寄存器按其用途可分为8个通用寄存器、2个专用寄存器和6个段寄存器。 高16位低16位EAX累加器AXAHALEBX基址寄存器BXBHBLEC
7、X计数寄存器CXCHCLEDX数据寄存器DXDHDLESP堆栈指针SPEBP基址指针BPESI源变址寄存器SIEDI目的变址寄存器DI 1. 通用寄存器(General Purpose Registers) 分别是累加器EAX、基址寄存器EBX、计数寄存器ECX、数据寄存器EDX、堆栈指针ESP、基址指针EBP、源变址寄存器ESI及目的变址寄存器EDI。 这些32位的通用寄存器可以用来保存数据和地址,支持1、8、16和32位的数据操作数,132的位字段以及16位或32位的地址操作数。在这8个32位寄存器中,8个16位寄存器AX、BX、CX、DX、SP、BP、SI和DI可以存放16位信息,8个8
8、位寄存器AH、AL、BH、BL、CH、CL、DH和DL可以存放8位信息。 寄存器隐含使用规则EAX32位乘/除指令中用作累加器32位I/O指令中用作数据寄存器间接寻址时用来保存偏移地址(用作基址和变址寄存器)EBX间接寻址时用来保存偏移地址(用作基址和变址寄存器) ECX循环指令LOOPD中用作计数器间接寻址时用来保存偏移地址(用作基址和变址寄存器) EDX在32位乘/除指令中用作辅助寄存器间接寻址时用来保存偏移地址(用作基址和变址寄存器) EBP间接寻址时用来保存偏移地址(用作基址和变址寄存器)ESP堆栈指针间接寻址时用来保存偏移地址(用作基址寄存器)ESI串操作中用来访问源串数据EDI串操
9、作中用来访问目的串数据 通用寄存器具有一些隐含的用法,常用规则如下: 2. 专用寄存器(Special Registers) 80X86/32位CPU的专用寄存器有指令指针EIP和标志寄存器EFLAGS 高16位低16位EIP指令指针IPEFLAGS标志寄存器FLAGS 1) 指令指针EIP 指令指针指向要执行的下一条指令的偏移地值,该偏移地值为相对于指令所在代码段的基地址(段起始地址)。 2) 标志寄存器EFLAGS 32位标志寄存器EFLAGS用于指示微处理器的状态,并控制其操作。8048680386802868088,8086,80186Pentium/Pentium Pro151413
10、1211109876420NTIOPLIOPLODITSZAPC3122212019181716IDVIPVIFACVMRF各标志位在标志寄存器的位置如下:标志位功 能 描 述IOPL(Input/Output Privilege Level)IO特权级标志用以指示I/O设备的特权级别,IOPL共2位产生0-3共4级特权级。如果现行特权有CPL(Current Privilege Level)高于IOPL则I/O指令顺利执行,否则产生中断(异常13故障),使任务挂起。IOPL=00为最高优先级,IOPL用于保护模式。NT(Nested task) 嵌套任务标志用以指示该任务是否嵌套于另一个任务
11、中执行的状态。该位置位和复位通过向其它任务的控制转移来实现,NT的值由IRET指令检测,以确定执行任务间返回还是任务内返回,NT用于保护方式。RF(Resume)恢复标志RF标志同调试寄存器断点一起使用,断点处理前在指令边界上检查该位,当RF被置位(“1”)时,下一条指令的任何调试故障都被忽略。然后,在每条指令成功的执行完毕(未通知出现故障)后RF位自动被复位(但IRET、POPF以及引起任务切换的JMP、CALL和INT指令除外,这些指令将RF置成存储器映象指定的值)。VM (Virtual8086 Mode)虚拟8086方式VM标志提供保护方式中的虚拟8086方式。当该位在保护方式时置位(
12、“l”)时,即转换到虚拟8086方式,像8086那样处理段装入,但产生特权操作码的异常13故障,VM位只能在保护方式中由IRET指令置位(如果现行特权级=O),以及在任何特权级上通过任务切换而置位。部分286以上CPU使用的标志位功能如下:标志位功 能 描 述AC(Alignment Check)对界检查在进行字或双字访问时,用以指示地址是否处于字或双字边界上的状态。当AC位置位时,地址不处于字或双字的边界上。AC标志仅用于80486sx微处理器,供协处理器80487sx使用,用作同步。VIF(VirtualInterrupt)虚拟中断标志在虚拟方式下中断允许标志位的复本(Copy),仅用于P
13、entium及Pentium Pro微处理器。VIP (Virtual Interrupt Pending)虚拟中断挂起在虚拟方式下提供有关中断的信息,在多任务环境下,为操作系统提供虚拟中断标志和中断挂起信息,仅用于Pentium及Pentium Pro微处理器。ID(Identification)标识标志用以指示Pentium/Pentium Pro微处理器对CPUID指令的支持状态。CPUlD指令为系统提供了有关Pentium/Pentium Pro处理器的信息,诸如型号及制造商。仅用于Pentium及Penfium Pro微处理器。 3. 段寄存器 80X86系列的32位微处理器中有6个
14、16位段寄存器,其中CS、DS、ES、SS寄存器功能与16位微处理器的功能基本相同,只是在保护模式下访问空间更大。而FS、GS段寄存器是在80386及其以后的微处理器特有的,这两个段寄存器均为附加段寄存器,用于描述两个不同数据段的起始地址。 在保护模式下,段寄存器中并不存放段的实际起始地址,而是保存要访问段的选择子。通过选择子可以找到该段的描述子,进而找到对应物理段的起始地址。 为了提高对描述子的访问速度,在微处理器中还设置了段描述子高速缓存寄存器,用于存放每个段的描述子。段寄存器段描述子高速缓存寄存器(系统自动装入)段基址段限段属性CS选择子SS选择子DS选择子ES选择子FS选择子GS选择子
15、16位32位20位12位2.6.3 系统寄存器 80X86/32位微处理器中有一组系统级寄存器,包括:5个控制寄存器CR0CR4和4个系统地址寄存器GDTR、IDTR、LDTR、TR。如图2.37所示1控制寄存器(Control Registers) 80X86/32位微处理器有5个控制寄存器,实现对微处理器的多种功能的控制与选择(其中CR1寄存器保留未使用)。 1)CR0 Pentium Pro微处理器的CR0定义了11个控制位 位置及名称功 能 描 述PE(0位)允许保护PE位允许段使用保护机制。PE=1,允许保护;PE=0,以实方式工作。MP(1位)监控协处理器MP位同TS位一起使用,用
16、来确定WAIT指令是否自陷。MP=1(且IS=1)执行WAIT指令产生异常7。EM(2位)仿真协处理器EM位用以确定浮点指令是被自陷,还是被执行。EM=1,所有浮点指令将产生异常7。 Ts(3位)任务切换TS位用以指出任务是否切换,执行任务切换操作时,TS=l。TS=1时,执行浮点指令将产生异常7。ET(4位)处理器扩充类型ET位用于80386微处理器,标志系统中采用的协处理器的类型。ET=1,采用80387协处理器;ET=0,采用80287协处理器。大多数80386系统中以及80486以上系统ET置1。NE(5位)数字异常NE位控制是由中断向量16还是由外部中断来处理未屏蔽的浮点异常,NE=
17、0,处理器同IGNNE(ignore numeric error,忽略数字错)输人引脚和FEPR(floating point error,浮点错)输出引脚配合工作;NE=1,在执行下一条非控制浮点指令或WAIT指令之前,任何UFPE(unmasked floating point exceptions,未屏蔽的浮点异常)将产生软件中断16。位置及名称功 能 描 述WP(16位)写保护WP用来保护管理程序写访问用户级的只读页面。WP=1时,强制一个由任一特权级写入只读页面的故障。WP=0时,允许只读页面由特权级0-2写入。AM(18位)边界对齐屏蔽AM控制标志寄存器中对界检查位(AC)是否允许
18、对界检查。AM=1,允许AC位; AM=0,禁止AC位。NW(29位)通写控制NW用来选择片内数据Caehe的操作模式。NW=1,禁止通写,写命中不修改主存;NW=0,允许通写。CD(30位)Cache控制CD用来控制允许或禁止向片内Caehe填充新数据。CD=l,当Cache未命中时,禁止填充Cache;CD=0,未命中时,允许填充Cache。PG(31位)分页使能控制PG用来控制是否允许分页。PG=1,允许分页;PG=0,禁止分页。2) CR2 页故障线性地址寄存器CR2用来保存发生页故障中断(异常14)之前所访问的最后一个页面的线性页地址。 3) CR3 页目录基地址寄存器CR3,用来存
19、放页目录表的物理基地址。由于页目录表是按页对齐的(4KB),因而CR3通过高20位来实施这一要求,低12位用作其它功能,已定义的有7位。 CR3为80386以上微处理器才被定义和使用,其中PWT和PCD两位为80486以上的微处理器才具有的新控制标志。 位置及名称功 能 描 述P(0位)存在位P位指出页面目录或页表条目是否可用于地址转换。P=1,该条目可用于地址转换P=0,该条目不可用于地址转换,所有其余各位均可供软件使用。R/W、U/S(1,2位)读/写、用户/超级管理员控制R/W、U/S位用于页面级保护。为最低的级特权级3设置分页优先级保护。特权级3的存取保护为:U/SR/W特权级3存取
20、0 0 无 0 1 无 1 0 只读 l 1 读/写PWT(3位)页面通写控制PWT用于指示是页面通写还是回写。PWT=1,外部cache对页目录进行通写PWT=0,进行回写PCD(4位)页面cache控制PCD用于指示页面cache工作情况。PCD=l,禁止片内cachePCD=0,允许片内页cacheA(5位) 被访问D(6位) 被修改在对该页面目录或页表条目所覆盖的某一地址进行读或写访问之前,将A位置位;在对页表条目所覆盖的某一地址进行写人之前将D位置位;对于页面目录条目,D位未定义。4) CR4 CR4是Pentium以上处理器中新增加的控制寄存器,已定义了8位。位置及名称功 能 描
21、述VME(0位)虚拟方式扩充位VME=1,允许虚拟8086方式扩充VME=0,禁止虚拟8086方式扩充PVI(1位)保护方式虚拟中断位PVI=1,允许保护方式虚拟中断PVI=0,禁止保护方式虚拟中断虚拟中断标志位VIFTSD(2位)时间戳控制位TSD=1,且当前特权级不为0时,禁止RDTSC(读时间戳计数器)指令;TSD=0,RDTSC将在所有特权级上执行DE(3位)调试扩充DE用来控制是否支持I/O断点DE=1时,允许I/O断点调试扩充;DE=0时,禁止I/O断点调试扩充。PSE(4位)页尺寸扩充控制位PSE=l,允许页面大小扩充;PSE=0,禁止页面大小扩充。在Pentium中设置时允许4
22、MB,而Pentium Pro为2MBPAE(5位)页地址扩充位PAE=1,允许页地址扩充;PAE=0,禁止页地址扩充;当使用Pentium Pro中由PSE控制的新寻址方式时允许使用A35A32MCE(6位)机器检查使能控制位MCE=I,允许机器检查异常;MCE=0,禁止机器检查异常PGE(7位)页尺寸扩展控制位PGE同PAE和PSE一起设置时,用于控制新的64GB的寻址方式2. 系统地址寄存器(System Address Registers) 在保护模式下,存储器操作数所在的段的性质由一个称为“描述子”(Descriptor)的数据结构来描述。所有段的描述子存放在一个或几个称为“描述子表
23、”的存储区中。为了寻址和定义这些描述子表的地址,80X86(80286以上)中包含有4个系统地址寄存器:全局描述子表寄存器GDTR 中断描述子表寄存器IDTR 局部描述子表寄存器是 LDTR任务状态段寄存器 TR 1)GDTR(Global Descriptor Table Register) 全局描述子表寄存器GDTR是一个48位字长的寄存器。包括两部分:一部分是全局描述子表的32位段基址,另一部分是全局描述子表的16位段限。2) IDTR(Interrupt Descriptor Table Register) 中断描述子表寄存器IDTR也是一个48位字长的寄存器,同样包括32位中断描述子
24、表的段基址和16位段限。 3) LDTR(Local Descriptor Table Register) 局部描述子表寄存器是一个16位的寄存器,用于存放局部描述子表的选择子。操作系统为每个任务创建一个局部描述子表(LDT),用于存放该任务使用段的描述子。 4) TR(Task State Segment Register) 任务状态段寄存器是一个16位的寄存器。TS的功能是为了实现任务或进程之间的快速切换。每个任务都必须有一个与其相关联的TSS(任务状态段,Task State Segment)。现行的TSS由任务状态段寄存器TR来标识。 2.6.4 调试和测试寄存器 80386以上的处理
25、器中还有调试寄存器和测试寄存器,用于排除故障、测试分页和Cache状态等。 调试寄存器线性断地址0DR0线性断地址1DR1线性断地址2DR2测试寄存器线性断地址3DR3Cache测试数据TR3Intel保留DR4Cache测试状态TR4Intel保留DR5Cache测试控制TR5断点状态DR6TLB测试控制TR6断点控制DR7TLB测试状态TR71. 调试寄存器(Debug Registers) 80386以上的微处理器中定义了6个用于调试的寄存器,命名为DR0DR5,其中DR0DR3指定了4个线性断点地址,DR7为调试控制寄存器,用于设置断点,DR6为调试状态寄存器,用于显示断点的当前状态。
26、这是一组32位的寄存器,是程序员可访问的,提供片上调试支持。 2. 测试寄存器(Test Registers) 80386中定义了2个测试寄存器,分别命名为TR6和TR7,用于测试TLB(Translation Lookaside Buffer,转换后备缓冲器)。TLB中保存着最常用的页表地址转换关系。TR6是TLB的命令测试寄存器,指示读写TLB的入口,TR7是TLB的数据寄存器,保存TLB的测试数据。 80486处理器中增加了3个用于调试片上Cache的测试寄存器TR3、TR4和TR5,其中TR3为Cache数据寄存器、TR4为Cache状态寄存器,TR5为Cache控制寄存器。 Pent
27、ium处理器中取消了测试寄存器组TR,测试寄存器的功能由一组“模型专用寄存器”MSR(Model Special Registers)实现。Pentium处理器中专门使用两条指令来访问MSR寄存器,RDMSR指令和WRMSR指令。 2.6.5 浮点寄存器 从80486处理器开始,80X86系列微处理器在片内都集成了FPU(Floating Processing Unit,浮点处理部件),从而使CPU的运算能力得了极大提高。这些浮点运算部件使用专门的浮点寄存器 。 这些寄存器包括:8个数据寄存器、1个标记字、1个控制寄存器、1个状态寄存器、1个指令指针以及1个数据指针 。数据寄存器标记字7978 6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 库存管理与库存控制
- 药学健康指导课件
- 电力安全生产标准化讲解
- 饮用水池防水施工工艺
- 2025年银行岗位题库检测试题及答案详解
- 混凝土裂缝粘贴钢板加固法施工工艺
- 2026年全国农产品质量安全考试题库及答案
- 高三语文“探究文本观点与迁移运用”专题复习教学设计
- 小学四年级班队活动教学设计:传统节日里的文化密码与传承行动
- 2026年全国工业锅炉G1证考试题库(含答案)
- 2026年科研伦理与学术规范期末试题附答案详解(典型题)
- 2026年湖南湘潭市大学生乡村医生招聘11人笔试参考题库及答案详解
- 2026年项目管理(PMP考试)真题试卷及答案
- 2026 年国庆少年心怀家国梦砥砺奋进新征程课件
- 食品委托经营合同模板
- 2024江苏南京证券校园招聘129人高频500题难、易错点模拟试题附带答案详解
- 凝中国心铸中华魂铸牢中华民族共同体意识-小学民族团结爱国主题班会课件
- 季节性安全教育培训
- 江口县官和乡100万羽蛋鸡养殖基地项目环评报告
- 普通高中数学课程标准(实验)doc
- 电子警察相机调试培训
评论
0/150
提交评论