版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.1概述8.280486微处理器的逻辑结构8.3虚拟存储器的实现机制8.4多任务系统的实现机制8.5保护功能8.68086微处理器家族其它成员指令介绍8.7存储器管理技术第8章高档微机的某些新技术返回主目录8.1概述第8章高档微机的某些新技术返回1第8章高档微机的某些新技术
8.1概述目前世界上有许多种型号的微型计算机系统在运行。其中大多数微型计算机系统的微处理器属于Intel公司的8086微处理器家族。各种微机系统的兼容性,即可以运行同一目标代码的可执行程序,且得到相同的结果,都是建立在8086微处理器家族成员具有相同的基本体系结构基础之上的。8086家族成员相同的基本体系结构部分就是由8086微处理器和8087数学协处理器组成的体系结构。这就是说,Intel8086家族的其它成员在体系结构上可以有许多新发展,但必须包括8086和8087微处理器的基本体系结构的功能,这就是兼容性的基础。第8章高档微机的某些新技术
2由微处理器8086和8087组成的最早微机系统是IBMPC系列机中的PC/XT机。本书前面各章的讨论主要是以PC/XT为背景的,从中可以学习到计算机系统,特别是微型计算机系统的基本组成和工作原理。但是,从Intel公司的8086、8087微处理器和IBMPC/XT微机系统问世以来近20年时间里,与计算机相关的各个技术领域,集成电路技术、计算机体系结构、系统软件技术等,都经历了飞速的发展。就微处理器而言,Intel公司的产品已形成了8086微处理器家族。家族成员,除8086和8087之外,包括80186、80286、80287、80386、80387、80486、奔腾Pentium(80586)和PentiumⅡ、Ⅲ等。8086微处理器是以Intel公司的8位微处理器8080的体系结构为基础开发出来的真正16位微处理器。由微处理器8086和8087组成的最3如前已经讨论的那样,8086的内部寄存器均为16位宽,其中有些寄存器还可以当作两个8位寄存器独立访问。16位的寄存器结构很容易构成访问216=65536个地址空间的存储器方案。但这样容量的存储空间太小了,是就选择了能扩大存储空间容量又以16位寻址为基础的寻址机制。8086(包括8088)的寻址空间为220B=1MB地址。为了实现由20位决定的1MB的地址空间能被由16位(因为寄存器为16位)的地址码来访问,整个地址空间划分成段,每段216}=64KB地址。CPU可以在任何时候直接访问4个这样的段,这4个段的地址分别由4个专用的段寄存器的内容给出。如前已经讨论的那样,8086的内部寄存器均为4段寄存器是这样指明在1MB地址空间中的地址的:段寄存器内容乘以16(即左移4位)就是这个段的开始地址。这样,一个段内的一个字节单元的地址由这个段的开始地址和相对于开始地址的16位偏移量两部分给出。在不修改段寄存器内容的情况下,CPU可以直接访问4个段的地址范围,每段为64KB;为了访问1MB的全部地址空间,段寄存器的内容必须加以改变。这样的分段的编址和寻址体系结构是8086微处理器家族的存储器管理的核心内容。由于8086芯片开发时,芯片封装对引脚数量有所限制,最多只能有40个引脚,所以数据总线和地址总线分时复用共用的芯片引脚。这样虽然节省了芯片的引脚,但使逻辑变得复杂,速度也降低了。段寄存器是这样指明在1MB地址空间中的58086微处理器开始开发时就准备与辅助处理器协同工作,以达到在某些特殊的应用时有更好的性能。最早就考虑到同时开发专用于数学计算的协处理器8087,把它加到8086的微机系统中,使浮点运算得到了专用硬件的支持。当时把整数运算和浮点运算分配在两个芯片里完成,这是由于早期集成电路技术和经济原因造成的,直到家族成员80486问世才结束了两个芯片分立的状态,集成到了一个芯片里。其它家族成员组成的微机系统中,也有高效率高精度的浮点运算能力,这是依靠每个系统机的主板上都有一个插座可以插入相应协处理器而实现的。Intel公司的微处理器家族的最早成员是8086和8088。8086微处理器开始开发时就准备与辅助处理6随着在一个芯片内集成更多电路并具有更多的功能成为可能,Intel8086体系结构沿着两个方向发展:一个方向发展的结果是开发出80186(和80188);另一方向发展的结果是开发出80286和后来的80386、80486等等。开发80186、80188的指导思想是在一个微处理器芯片里同时集成更多的把处理器组合成一个计算机系统所必需的辅助电路,成为一个单片计算机,并且增加某些指令和改善指令的功能。80286及以后的微处理器是沿着另一个指导思想开发出来的,其着眼点是扩大CPU(中央处理单元)本身的功能,从而使体系结构发生了很大变化,使整机的功能大大增强。开发80286时就提出了几个设计目标,解决8086存在的问题。首先,1MB的存储器地址空间在很多应用中显得太小了(当然DOS的早期版本也是限制存储器地址空间的因素)应该扩大。随着在一个芯片内集成更多电路并具有更多的功能7其次,8086的硬件不适合在系统中同时运行多道程序、执行多个任务。但是,由于技术的发展,微处理器的硬件能像小型计算机、甚至大型计算机那样,用于多任务也是可能的。所以要求新开发的8086后继者能适应多任务的要求。第三,由于已经存在相当数量的软件在8086系统机上运行,为了不遗弃这些软件资源,要求开发的后继者与8086兼容。8086的分段寻址结构不能直接扩大存储器地址空间,也不适应多任务的要求。为了达到上述设计目标,80286被设计成能在两种不同的工作模式下工作的混合型微处理器。这两种模式是:实地址模式和保护的虚地址模式,简称保护模式。其次,8086的硬件不适合在系统中同时运行多880286工作在实模式时,对于程序员来说,只相当于工作速度快的8086,寄存器结构和寻址方式与8086相同。不同的是20位地址总线和16位数据总线不再分时复用芯片的引脚,并且增加了某些新指令。但原来在8086上运行的程序都可在80286的系统上运行。速度的提高有几个因素:取指令特别是指令译码操作与前面指令执行的操作有相当程度的并行是因素之一;许多指令的执行达到最佳是另一因素;当然,地址总线与数据总线在芯片引脚上分开,使得地址码和数据码可以同时出现,也对提高速度有益。80286的另一工作模式,即保护模式提供了许多新的功能。与实模式相比,最明显的差别是存储器空间扩大到16MB,对应于24位地址总线。从CPU内部来看,这么大的存储器空间显然仍由段寄存器来控制,但段寄存器的作用已经改变。80286工作在实模式时,对于程序员来说,9段寄存器的内容不再是段开始地址的指针,而是用作由“虚拟段”组成的表的指针。80286CPU内还包括很多硬件逻辑支持保护功能和多任务功能。虚拟的编址寻址机制、支持保护功能机制和多任务功能机制,是80286与8086的主要差别,也是其先进之处。但是,8086的分段寻址体系结构中,段内用16位偏移量编址,在80286中保持不变。与80286配合使用的数学协处理器是80287,它基本与8087相同,但适应80286的两种工作模式。由于80287与存储器之间交换数据时需要80286来控制,使得80286效率稍有降低。Intel公司8086微处理器家族成员中,第一个属于真正的32位微处理器,是继80286之后开发的80386。微处理器32位意味着数据总线和内部寄存器都是32位结构。段寄存器的内容不再是段开始地址的指针,而是10从原理上,8086(和80286)中原始的分段编址方案,以16位码对段内偏移编址,在80386中已经没有必要。因80386中的32位寄存器自然能形成32位偏移地址,而32位地址直接编址的空间为2{32}B=4GB。但是,与8086家族早期成员8086和80286的兼密性是必须保证的。按照这种指导思想开发出来的80386有3种工作模式:实模式。复位后自动进入这一模式,其工作模式与8086相同,地址总线仍为20位,数据总线为32位不与地址总线分时复用,内部寄存器主要作为16位使用,也可以按32位使用。保护模式又分两种:一种为286模式,即与80286的保护模式相同,尤其指操作数和段内偏移地址保持为16位;另一种是386的保护模式,操作数和段内的偏移地址都是32位,地址总线也是32位,物理地址空间为232B=4GB。从原理上,8086(和80286)中原始的分段11对于80386,在保护模式下的分段寻址体系,与操作系统相配合可以组成虚拟存储器系统,而且虚拟地址(即逻辑地址——编程使用的地址)空间远远大于物理空间,一个任务的最大虚拟空间可达246=64TB(1TB=1024GB)。与80286相比,在实现虚拟存储器系统方面,80386的另一进步是包括支持分页功能的硬件。分页功能使组成的虚拟存储器系统更完善。与80386相配合的数学协处理器为80387。从程序设计的角度看,它与8087、80287相似,但速度快得多且增加一些新指令。对于80386,在保护模式下的分段寻址体系,1280486微处理器可以看作是速度更快的80386。这就是说,从逻辑功能上看它的工作模式与80386相同,速度更快的原因之一是数学协处理器已经集成于80486芯片内部,所以没有“80487”。速度更快的其它重要原因是CPU逻辑设计时采用了许多RISC(ReducedInstructionSetComputer)技术,其中包括流水线技术和CPU片内集成高速缓冲存储器(Cache,80486内有8KCache)。8086微处理器家族中,80486的后继成员为80586。由于部分厂商担心80X86的品牌会为Intel公司一家所独有,而逼得Intel公司将80586改名为Pentium,译为“奔腾”。Pentium与8086家族的其它成员完全兼容,这是Intel公司推出新微处理器的首要特点。与80386、80486相比较,除了64位数据线宽度之外,Pentium的主要特点是速度快。这是由于采用了以下新技术:80486微处理器可以看作是速度更快的813(1)采用全新设计的增强型浮点运算器,浮点运算速度比80486DX要快3至5倍。(2)利用超标量流水线(SuperScalerPipeline)结构理论,组成两条流水线:U指令流水线和V指令流水线。在最佳状态下,Pentium可在一个时钟周期内执行两条指令。而80486只有一条指令流水线,最佳状态只能一个时钟周期执行完一条指令。(3)采用双重分离式高速缓冲存储器(DualOnBoardCaches),把指令高速缓存和数据高速缓存分离,各自拥有8KB的高速缓存,使其同时工作,减少等待时间和数据搬移的次数。(4)采用了转移目的缓冲器(BranchTargetBuffer)预测转移指令。在指令流水线技术中,重要的问题是如何处理转移指令。(1)采用全新设计的增强型浮点运算器,浮14假设在80486的指令流水线中,如果一条指令已经执行到第一阶段(解码阶段),发现这是一条转移指令,但此时相邻的下一条指令已进入取指令阶段,那么这条指令必须取消而更改到转移的目的指令。这样的过程会使整个流水线混乱而停顿。Pentium中采用转移目的缓冲器,在转移指令进入流水线之前,预先安排指令的顺序,不致使流水线的运行混乱或停顿。在Pentium之后,Intel公司又推出了高能奔腾处理器PentiumⅡ。它的数据总线和寄存器宽度与Pentium一样,分别是64位和32位。地址总线宽度又增宽了4位,成为36位,物理地址空间也增大了16倍为64GB。它还采用了一些新技术,这里不介绍了。假设在80486的指令流水线中,如果一15以上我们介绍了Intel公司推出的8086微处理器家族以及后续各成员的基本情况。本书作为微型计算机原理与应用课的教材,没必要也不应该对80286及以后的微处理器及系统逐个详细讨论。我们把这些微处理器及其组成的系统的几个先进的方面,着眼于其逻辑功能,进行综合后在本章讨论。这些先进方面是:以80486为代表的逻辑结构、虚拟存储器的实现机制、多任务系统的实现机制和保护功能的实现机制。在介绍了一些新指令的功能之后,我们还介绍了内存管理技术,目的在于理解系统设置时经常遇到的关于扩充内存和扩展内存的概念。以上我们介绍了Intel公司推出的8086168.280486微处理器的逻辑结构
微处理器的逻辑结构是微处理器功能和性能的基础。在计算机系统中,硬件和软件具有互相支持关系。有些功能既可以通过软件来完成,又可以通过硬件来完成。这就存在一个问题,在系统总的功能目标下如何合理地把功能分配给硬件和软件,使它们的互相支持达到最佳程度。80286及以后的微处理器与8086相比,最基本的特点是支持多任务。为了支持多任务就必须有大的存储器空间,必须支持虚拟存储器系统;为了支持多任务就必须有保护功能。多任务要求操作系统是多任务的操作系统。同时,也就要求微处理器以特殊的硬件逻辑支持多任务操作系统。本节以80486为代表,介绍其逻辑结构。以后各节,实际上是对逻辑结构的进一步分析,看看它们是如何支持多任务的。8.280486微处理器的逻辑结构
17
8.2.180486的寄存器组织要理解微处理器的工作原理,首先要了解微处理器内的寄存器功能。80486内寄存器可分为以下几组。基本体系结构寄存器组:包括通用寄存器、指令指针、标志寄存器和段寄存器。可以看出,8086中也有这些寄存器,它们是任何微处理器不可缺少的。还将看到80486中的这些寄存器与8086中的还是有些不同。系统级寄存器组:包括控制寄存器和系统地址寄存器。这些寄存器是实现保护模式功能的基础,控制着新的存储器管理方式、多任务切换等功能的实现。8.2.180486的寄存器组织18浮点寄存器组:包括数据寄存器、标志字寄存器、状态字寄存器、指令和数据指针、控制字寄存器。80486微处理器内包括数学计算协处理器(相当于80387),这组寄存器用于实现协处理器功能。调试和测试寄存器:这些寄存器用于测试芯片逻辑、高速缓冲存储器及页面翻译缓存,和用于调试微码执行、数据访问的断点自陷。浮点寄存器组:包括数据寄存器、标志字寄存器19图8.1给出了80486CPU内的属于基本体系结构的寄存器。它和8086的寄存器相比较有以下差别:(1)8个通用寄存器的位数扩展为32位。前4个寄存器中的每一个在编程时可按位数不同分离为4个寄存器。以第1个为例,寄存器AL是指32位中的位0~位7,寄存器AH是指32位中的位8~位15,寄存器AX是指32位中的位0~位15,而寄存器EAX则指32位的全部。与此相似,SI、DI、BP和SP是指32位的低16位部分,分别扩展成的ESI、EDI、EBP和ESP为32位的全部。(2)指令指针EIP为32位寄存器,存放下一条要执行指令的地址的偏移值,这个偏移值总是相对于代码段的基地址值而言的。EIP的低16位称为IP,用于偏移值为16位的情况。图8.1给出了80486CPU内的属于20微型计算机原理与应用第8章高档微机的某些新技术课件21(3)标志寄存器也从8086的标志寄存器(FLAGS)16位扩展为32位,称为EFLAGS。其中包括CF、PF、AF、ZF、SF、TF、IF、DF、OF状态标志和控制标志位。此外,还定义了一些新的状态标志和控制标志,是高档微处理器特有的,在以后的有关讨论中介绍。(4)段寄存器增加为6个,除原来的CS、DS、ES和SS外,增加了FS和GS段寄存器也是用于定义数据段。它们都是16位。段寄存器在CPU处于保护模式时寄存的内容称为选择符,所以有时也称段寄存器为选择器。选择符的值不再是段地址的基值,而是获得关于段地址基值和段的其它信息的指针。这就是说,沿着选择符的指引可以从存储器中取出8个字节的数据,其中包括段的基地址和段的长度等有关信息。(3)标志寄存器也从8086的标志寄22在实模式下,与8086相同,段的最大长度为64KB。在保护模式下,段的最大长度可达整个机器的物理地址空间4GB。显然,段寄存器仍然是存储器划分为段和按段访问存储器的硬件基础。(5)段描述符高速缓冲寄存器。如图8.2所示,段描述符高速缓冲寄存器可以看作是段寄存器的延伸,每个段寄存器“配”有一个这样的缓冲寄存器64位,(8个字节)。值得说明的是这组寄存器是“隐蔽”的,没有指令能直接访问它们。那么,它们的内容是如何装入和更新的呢?前面已经说过,沿着段寄存器内的选择符的指引,可以从存储器中取出8个字节的数据,其中包括段的基地址和段的长度等信息。在实模式下,与8086相同,段的最大长23微型计算机原理与应用第8章高档微机的某些新技术课件24这8个字节一组的数据称为一个段的描述符(Descriptor)。在存储器里,若干个段的描述符汇集在一起就可以组成一个描述符表,用汇编语言的数据定义伪指令很容易建立这样的表。表中的每一项8个字节,每一项的开始地址对应一个选择符。请特别注意,当把一个选择符用指令或其它操作装入某个段寄存器(如DS)时,这个选择符所对应的在描述符表里的一个描述符8个字节就会自动地(硬件逻辑有此功能)被装入这个段寄存器对应的段描述符高速缓冲寄存器。硬件逻辑中有描述符高速缓冲寄存器的优点是使访问存储器的速度更快。这8个字节一组的数据称为一个段的描述符25
2.系统级寄存器图8.3给出了系统级寄存器的基本结构。这组寄存器包括3个控制寄存器和4个段基址寄存器。1)控制寄存器3个控制寄存器分别为CR0、CR2和CR3(CR1留给后代CPU使用),这是8086中所没有的。CR2、CR3的控制功能以后介绍,这里只介绍CR0的功能。CR0的低16位又称机器状态字,可以用指令装入内容。其中控制位的功能还可以分为5类:(1)对CPU工作方式进行控制的有两位:PE(位0)为保护模式允许位,该位置1,使CPU转移到保护模式;该位为0时,为实模式。2.系统级寄存器26微型计算机原理与应用第8章高档微机的某些新技术课件27PG(位31)为分页功能允许位。分页是在保护模式下对存储器管理的一种方式(以后详细说明),可以利用这种方式,也可以不用这种方式。该位置1,表示利用这种方式,使CPU的有关逻辑按分页方式连接。(2)对CPU内高速缓冲存储器Cache操作方式进行控制的有两位:CD(位30)为高速缓存禁止(即不允许)位。该位置1,表示片内高速缓冲的功能处于不允许状态,不把主存内容拷贝到高速缓存器。只有该位复位为0,高速缓存功能才处于允许状NW(位29)为高速缓存通写方式禁止(即不允许)位。PG(位31)为分页功能允许位。分页是在保28为了保持高速缓存的内容与它对应的主存储器部分内容相同,在改变了高速缓存中的数据后,有两种方法修改主存中的数据。一种方法为写回(writeback)法,另一种称为通写(writethrough)法。NW位置1,意味着不用通写法;NW位为0,用通写法。(3)与协处理器或浮点运算部件有关的控制位有TS、EM、MP和NE,这里不介绍。(4)对界屏蔽位AM。对界是指访问存储器时数据类型与在存储器内起始地址的关系:如果访问存储器中字型数据时其起始地址为奇地址,或访问双字型数据时,起始地址不是4的倍数的地址,或者访问4字型数据时起始地址不是8的倍数的地址,都是未对准界限,或简称未对界。为了保持高速缓存的内容与它对应的主存储器部分29在前面介绍的标志寄存器EFLAGS中,有一个控制标志位AC(位18),称为对界检查标志。该位设置为1,意味着要进行对界检查,并且当检查出未对界发生时,CPU将产生一类型号为17的异常中断;AC位0时,意味着访问内存时不进行对界检查。CR0中的AM位对FLAGS中的AC位进行控制:如果AM位置1,使AC位具有所指定的控制作用;AM为0,表示AC位不再起控制作用,也就不会有类型号为17的异常中断产生。(5)写保护控制位WP。在对存储器管理采用分页方式时,WP对只读页面提供保护控制功能。如果设定WP位为1,在管理程序中出现了对只读页面写操作时将自动产生故障中断(类型号14);当WP为0时,允许有条件地对只读页面写操作。在前面介绍的标志寄存器EFLAGS中,有302)系统地址寄存器为了实现保护模式的功能,系统软件(操作系统)需要在存储器内定义4种表或段。它们是:全局描述符表GDT,只有一个。中断描述符表IDT,只有一个。局部描述符表LDT,每个任务一个。任务状态段TSS,每个任务一个。在CPU芯片内,支持这种机制的4个寄存器分别为全局描述符表寄存器GDTR、中断描述符表寄存器IDTR、局部描述符表寄存器LDTR和任务状态段寄存器TR,如图8.3所示。2)系统地址寄存器31其中GDTR和IDTR有相同的结构,分为两个字段:32位线性基地址部分,直接指明GDT表段和IDT表段在存储器的开始地址,和16位表段的长度。LDTR和TR也是唯一的,但LDT和TSS却有多个。从另一意义上说,每个LDT和TSS都是由软件定义的段,也有自己的选择符和描述符。这就要求从概念上把一个LDT本身的描述符(描述LDT)和它(作为存储器中的表)内部包含的描述符区别开来。所以LDTR和TR的结构与段寄存器(CS、DS等)相似,可以由指令访问的只有16位,即选择器部分,用以寄存正在执行任务的LDT描述符(局部描述符表的描述符)的16位选择符和正在执行任务的TSS描述符(任务状态段的描述符)的16位选择符。其中GDTR和IDTR有相同的结构,分为两个字32LDTR和TR也有相应的描述符高速缓冲寄存器部分。当某个LDT(或TSS)的选择符装入LDTR(或TR)的选择器部分时,将自动地把这个LDT(或TSS)的描述符部分装入相应的描述符高速缓冲寄存器部分。关于浮点寄存器组和测试调试寄存器组本书不讨论。LDTR和TR也有相应的描述符高速缓冲寄33
8.2.2RISC介绍在80486CPU芯片里包含有相当于80387的浮点协处理器,包含有8K字节的数据和指令混合型的高速缓存器(Cache),以及采用了某些RISC技术,这是80486速度提高的最重要的三项技术措施。关于协处理器和Cache的概念已经介绍过。这里介绍RISC技术的基本原理。RISC是ReducedInstructionSetComputer(精简指令系统计算机)的缩写。CISC是ComplexInstructionSetComputer(复杂指令系统计算机)的缩写。CISC和RISC是促进处理器体系结构发展的两种不同的理论或指导思想。CISC理论比RISC理论的历史要悠久。80286以前的微处理器是按CISC理论设计的。CISC理论的要点如下:8.2.2RISC介绍34(1)增强单条指令的功能,使指令系统中不仅有许多常用指令,还包括功能很强的特殊指令。微处理器功能和性能的提高,依赖于增加指令系统中指令的条数和指令的功能。这样做的结果虽然可以缩减程序的长度以提高效率,但对于功能复杂指令的执行却加重了微处理器的负担,倒成了降低效率的因素。(2)具有种类多且复杂的存储器寻址方式。其结果一方面增加了寻址功能,但另一方面使操作数有效地址的计算变得复杂。(1)增强单条指令的功能,使指令系统中不仅35(3)采用微程序结构。微程序控制的概念可简要说明如下:在CPU中,任何一条指令的功能都分若干步完成,每一步又包括若干个基本操作,这些基本操作称为微操作。在采用微程序控制的CPU结构中,把同时(即同一步)发出的控制信号所执行的一组微操作称为微指令。也就是说,把一条指令分解成若干条微指令,按顺序执行这些微指令,就可以实现这条指令的功能。计算机的程序由指令序列构成,而每条指令的功能又由微指令序列解释完成,这些微指令序列的集合称为微程序。微程序控制器的组成和操作过程可用图8.4来说明。图8.4表示微程序控制器由指令寄存器IR、操作译码器、控制存储器和微指令寄存器组成。(3)采用微程序结构。微程序控制的概念可36微型计算机原理与应用第8章高档微机的某些新技术课件37从存储器取来的指令码寄存于指令寄存器IR中。操作译码器只对指令的操作码部分译码。由于控制存储器中每个地址存储着一条微指令的控制信号字段和下址字段(即相邻下一条微指令在控制存储器的地址),所以操作译码器只需译出指令的首条微指令在控制存储器的地址,这样便可相继取出一条指令的所有微指令到微指令寄存器执行。微指令的控制字段的每一位都是完成特定操作控制信号的控制位。该位设置为1,将控制对应信号产生。操作译码器和控制存储器都用只读存储器实现。从存储器取来的指令码寄存于指令寄存器IR中。3880386及以后的微处理器的设计逐渐接受了RISC的指导思想。RISC理论的要点如下:(1)减少指令系统中的指令条数,只使用应用频率高的简单指令;指令长度固定,指令格式种类少,寻址方式种类少。这样可以简化指令的存取,缩短指令码译码及执行的时间。显然这是针对CISC的缺点想出的办法。当然,这样设计指令系统必将使程序包含的指令条数增多。这个问题由下面所说的技术克服。(2)采用指令流水线技术,扩大并行处理范围。在CISC技术中,指令的执行是逐条相继完成的,一条指令所包括的所有步(即所有微指令序列)执行之后才能取下条指令并开始执行。RISC技术虽然也把一条指令分成若干步,例如分为取指令(F1)、译码(D)、取操作数(FO)、执行(E)和写结果(W)5步。80386及以后的微处理器的设计逐渐接受了39但由于采用并行处理,指令的执行时间就可如图8.5所示那样,一条指令的各步操作在不同的部件中完成,同一时间(如同一时钟)各部件执行着不同指令的操作,平均下来,一条指令占用的时间就大大缩短了。80486CPU采用了指令流水线技术,在最佳状态下,一条指令平均一个时钟周期完成。但由于采用并行处理,指令的执行时间就可如图40微型计算机原理与应用第8章高档微机的某些新技术课件41(3)增加CPU内通用寄存器的数量,这样就可以实现,除从存储器取数和向存储器存数两条指令访问存储器之外,其余指令的操作都只在寄存器之间进行,大部分指令都可在一个机器周期内完成。(4)以硬布线控制逻辑为主,不用或少用如CISC中介绍的微程序控制所需的用只读存储器方式实现的译码器和控制存储器。以上是RISC技术的要点,80386及以后的CPU已利用了其中的某些技术,从而大大提高了运行速度。(3)增加CPU内通用寄存器的数量,这样就428.3虚拟存储器的实现机制虚拟存储器是通过管理把主存储器(常称为内存)和辅助存储器(常称为外存,例如磁盘)有机的结合起来,使得程序员可以按比主存储器容量大得多的空间编制程序。这时,把程序员编程可用的空间称为虚拟空间,把主存储器的实际空间称为物理空间。虚拟存储器的实现,允许同一程序的一部分在主存储器中,其它部分在辅助存储器里。运行时,可能频繁地进行着辅存部分装入主存,主存部分传至辅存。这就要有一套技术进行管理。根据主存和辅存之间传送信息的基本单位不同,可以把虚拟存储器的管理分为分段管理、分页管理和分段分页相结合三种管理方式。8.3虚拟存储器的实现机制虚拟存储器43虚拟存储器的管理是依靠软件和硬件互相支持共同实现的。如果在CPU内有专门适用于虚拟存储器管理的硬件,就可减轻软件的负担,使存储器的访问速度大大加快。这是改善整机系统性能的重要因素。80486CPU有存储器的分段管理模块和分页管理模块。在保护模式下,可以采用分段管理方式,也可采用分段分页结合方式实现虚拟存储器的管理。所以在保护模式下,虚拟存储空间最大可达246B(64TB),是物理存储空间232B(4GB)的214倍。虚拟存储器的管理是依靠软件和硬件互相支持共44
8.3.1虚拟地址、物理地址和线性地址对于80486CPU的保护模式,有虚拟地址、线性地址和物理地址三种存储器地址空间。虚拟地址(即逻辑地址)和物理地址的概念在第3章已经介绍过了。在实模式下,和8086CPU相同,一个虚拟地址,即逻辑地址,是用它的段地址和段内偏移地址两部分表示的。由于任何由程序访问内存的操作,总是要指明段地址和段内偏移地址,所以也可以这样理解虚拟地址:虚拟地址是程序访问存储器时由程序指明的地址。物理存储器是CPU可以访问的存储器。物理存储器空间的大小由CPU具有的地址总线的位数决定。8.3.1虚拟地址、物理地址和线性地址45对于8086CPU,地址总线为20位,其物理存储空间为220B,即1MB地址。由8086CPU内部逻辑决定的由虚拟地址变换成物理地址的规则是,16位段地址(在段寄存器中)左移4位与16位偏移地址相加,得到20位地址,即是物理地址。80486CPU保护模式下,虚拟地址仍由程序指明段的基地址(即段地址)和偏移地址两部分表示,也就是说任何由程序指明的访问存储器操作,必须指明一个段的基地址和一个偏移地址。80486与8086的逻辑地址相比较,有以下不同之处:(1)段的基地址和偏移地址不再是16位,而是32位。对于8086CPU,地址总线为20位,其物理存46(2)段的基地址不直接由16位的段寄存器(CS,DS,ES,SS)提供,而是含在段的描述符(Descriptor)中。每个段描述符由8个字节组成,其中32位是这个段的基地址。段的描述符存储于称为描述符表的专门定义的存储区内。(3)16位的段寄存器,在保护模式下称为段选择器,其中寄存的内容称为段的选择符。16位段选择符中的14位用作索引号,依据索引号可以找到在描述符表中对应的段描述符,进而在段描述符中获得段的基地址。这就形成了一个(存于段寄存器的)段选择符与(存储于描述符表的)段描述符及段基地址的一一对应关系。可见,原来的实模式下直接寄存段地址的16位段寄存器,在保护模式下仍然是存储器分段管理的基础。(2)段的基地址不直接由16位的段寄存47图8.6是80486CPU在保护模式下访问存储器的基本寻址关系。从图中可以看出,要访问存储器时,程序或指令按指令寻址方式的规则,总能产生32位(也允许16位)段内偏移地址和16位的段选择符。由选择符中的14位索引(Index)值指向由操作系统定义的段描述表中的某一个描述符,取出该段描述符中的32位段基地址,这就得到了构成一个虚拟地址的两部分:段基地址和段内偏移地址。由于虚拟地址是由程序或指令指明的,所以虚拟地址空间的大小也是由程序决定的。一个程序能占用的最大的虚拟存储器空间是这样计算出来的:由于段选择符中有14位索引号(Index),就说明它最多可以定义214个段。图8.6是80486CPU在保护模式下访48微型计算机原理与应用第8章高档微机的某些新技术课件4980486CPU的地址总线为32位,决定了物理存储器地址空间为232B(4GB)。一个程序要占用的虚拟存储器空间大于CPU可以直接访问的物理存储器空间,这就出现了矛盾,这个矛盾的解决是虚拟存储器空间可以扩展到磁盘上。这就是说,虚拟存储器空间是由磁盘等外部存储器支持实现的。一个占用虚拟存储器空间大于物理存储器空间的程序,先存储于磁盘上,在执行时不能一次全部装入物理存储器中,而是根据需要动态地部分装入内存或写回磁盘。这种存储器管理或存储器分配一般是由操作系统进行的,但CPU内部结构必须支持存储器管理功能。80486CPU的地址总线为32位,决定5080486CPU内的分段存储管理机制和分页管理机制为操作系统的虚拟存储器管理提供了必要的硬件支持。线性地址的定义是:段的基地址与偏移地址之和称为线性地址。由于段基地址和偏移地址都是32位,所以线性地址也是32位。80486CPU中,对于存储器管理除分段机制外,还有分页机制。在前节介绍的控制寄存器CR0中的PE位就是分页机制控制位,该位设置为1,意味着分页机制被使用;该位设置为0,表示分页机制不使用。在分页机制不被使用的方式下,段基地址与偏移地址相加产生的线性地址就是访问存储器的物理地址。在分页机制被使用的情况下,有一个线性地址变换成物理地址的过程,将在后面讨论。80486CPU内的分段存储管理机制和分页管51
8.3.2存储器的分段管理对于程序而言,80486系统的任何信息(包括程序本身)都是分段存储的。概括地说,存储分段管理就是:任何信息都定义在某一段中;任何段都有说明本段情况的描述符;描述符定义在描述符表中,描述符表是特殊的段;在描述符表中的每一描述符,有一个选择符与其相对应。这就是说,通过选择符,可以找到它对应的段描述符,从段描述符中可取出该段的基地址、段的长度和关于该段的其它信息。支持这些操作的硬件,大部分是不可见(不是程序员编程直接控制)的逻辑,可见的逻辑主要是一组系统地址寄存器:GDTR、LDTR、IDTR和TR。为了理解分段管理,必须讨论段的种类、段描述符、描述符表、描述符的选择符,以及系统地址寄存器。8.3.2存储器的分段管理52
1.段的种类和段描述符在8086系统中,信息也是按段存储的,但段的种类很少,只有代码段、数据段和堆栈段。而在80486系统中,保护模式下段的种类增多了,可用表8.1来概括。代码段、一般数据段和堆栈段的意义与8086系统相同,不再说明。在系统段中,全局描述符表GDT、局部描述符表LDT和中断描述符表IDT是这样特殊的段:它们具有表的结构特点,表的每一项为一个描述符,每个描述符有8个字节。所以表的长度是所包含的描述符数乘以8。GDT和IDT在全系统中只能各有一个,而LDT则可能有多个。1.段的种类和段描述符53微型计算机原理与应用第8章高档微机的某些新技术课件54描述符不是8位代码的字符,只是由于它的英文为Descriptor,以or结尾,很多人把它翻译成描述符。实际上描述符是一组8个字节的信息。描述符的分类有两种方法:一种分类方法是把描述符分为段描述符和门描述符两大类。这两大类描述符的主要区别是,在8个字节的描述符格式中,段描述符有32位段的基地址,门描述符中有16位的指向其它描述符的选择符。这是合理的,段描述符描述段的特征,其中最重要的两个特征是段的基地址和段的长度,它们为访问段内信息提供了基础。描述符不是8位代码的字符,只是由于它的英55如获取代码段内的指令码、访问数据段内的数据、从描述符表(描述符表也是段)中获取另一描述符等,都必须知道段的基地址。门描述符也简称门,用于间接地控制转移或任务切换。这里的“间接”意味着多一次从选择符找到描述符的过程。所以门描述符中包含一个16位的段描述符的选择符。图8.7是这两类描述符的简化格式。图8.7中(a)、(b)的共同点是字节5都是访问权字节。图8.7(a)的段描述符中字节2、3、4、7组成了32位段的基地址。字节0、1和字节6的低4位,共20位给出段的界限,即段的长度。如获取代码段内的指令码、访问数据段内的数据56
57字节6的位7(G位)是界限的辅助说明位,若G=0,则界限值的单位为字节,此时段的长度最大值为220,即1MB;若G=1,则界限值的单位为4KB,此时段的长度的最大值为232,即4GB。字节6的位6(D位)用于指明操作数和有效地址的长度:D=1,采用32位操作数和32位寻址方式;D=0,采用16位操作数和16位寻址方式。在80286系统产生的代码段在80486上运行时,D取0。图8.7(b)中字节2、3是16位的选择符,用于选择一个段的描述符,进而获得段的基地址。字节0、1、6、7的32位偏移值与获得的段的基地址相结合,形成一个将要访问的逻辑地址。字节6的位7(G位)是界限的辅助说明位58另一种描述符分类方法是按描述符访问权字节(字节5)和字节6的高4位中有关字段分类的。字节5位4标为S位,它的两个状态把描述符分为两大类:S=1为代码段、数据段和堆栈段描述符;S=0,则是系统段和门描述符。按S位把描述符分为两大类后,访问权的TYPE字段(3位或4位)又把它们区分开具体类型。图8.8是两大类访问权字节的格式。S=1时TYPE字段的3位(位3~位1)组合指明代码段、数据段和堆栈段的不同类型。表8.2给出了位组合与类型关系。位3标以E,用于区别代码段和数据段。另一种描述符分类方法是按描述符访问权字节(字59微型计算机原理与应用第8章高档微机的某些新技术课件60在表8.2代码段(E=1)时,位2、位1标以C和R,用于保护控制。在数据段(E=0)时,位2标以ED,用以区别一般数据段(ED=0)和堆栈段(ED=1),位1标以W,也用于保护控制。关于保护功能在8.5节讨论。S=0时TYPE字段为4位(位3~位0)组合。这4位组合代表的描述符又分为两类:系统段系统段(LDT、TSS)描述符和门,如表8.3所示。图8.8中访问权字节的P位,对于段描述符和门意义不同。在段描述符中的P位,指明该段当前是否在内存中,P位为1表示该段在内存中;P位为0,表示该段不在内存,而在辅助存储器(磁盘)中。在表8.2代码段(E=1)时,位2、位61微型计算机原理与应用第8章高档微机的某些新技术课件62微型计算机原理与应用第8章高档微机的某些新技术课件63访问权字节的DPL(位6、位5)字段指明描述符特权级,用于系统保护,将在8.5节讨论。图8.8(a)中访问权字节位0标以A,借助对A位的操作,可以统计出近期该段被访问的频繁程度。每当这个代码段或数据段描述符被访问时,这个描述符(在描述符表中)的A位被置1。操作系统按一定周期查看记录A位的状态并使A位复位为0。在一段时间内(当然要大于查看A位的周期)对A位状态的统计,就可以知道近期内该段被访问的频度。在虚拟存储器系统中,随着程序的运行,把存于磁盘上的段装入内存是常有的操作,自然也有从内存中删除某些段操作。根据什么原则从内存中删除某些段?一般的原则是删除近期访问频度低的段。这就是A位的意义。访问权字节的DPL(位6、位5)字段指64
2.描述符表描述符表是在存储器中定义的用于存储描述符的特殊的段。有三种描述符表,它们可以存储的描述符种类如表8.4所示。全局描述符表GDT,存储着系统中所有任务都可使用的描述符(除中断门和陷阱门描述符)。每个系统只有一个GDT。通常,GDT包含操作系统使用的代码段和数据段描述符,还包含各个任务的局部描述符表的描述符,以及各个任务状态段TSS的描述符。由于GDT只有一个,也就没有GDT描述符存于某个描述符表中。后面将看到,GDT的“描述符”信息直接存于GDTR的高速缓存器中。2.描述符表65微型计算机原理与应用第8章高档微机的某些新技术课件66
后面将看到,GDT的“描述符”信息直接存于GDTR的高速缓存器中。局部描述符表LDT,存放只属于某个任务的描述符。多任务操作系统管理的每一个任务常常由两部分组成:一部分是与其它任务共用的部分;另一部分是本任务独有的部分。反映在描述符表上,一部分描述符在全局描述符表GDT内,另一部分在局部描述符表LDT内。所以每个任务都有一个LDT,每个LDT有一个LDT描述符,LDT描述符只能在GDT内。GDT和LDT的长度是可变的,最多可容纳8192个描述符(64KB)。表内的每个描述符有一个索引号,索引号乘以8是该描述符在表内的起始地址。索引号的编码为13位(213=8192)。后面将看到,GDT的“描述符”信息直接存于67中断描述符表IDT全系统只有一个。其作用和8086系统中的中断向量表相对应。中断向量表中的每一项是4个字节的一个中断向量:中断服务程序入口的段地址和段内偏移地址。IDT中的每一项是一个8个字节的描述符。可能的描述符有中断门描述符、陷阱门描述符和任务门描述符。中断门和陷阱门描述符中包含的选择符将指向段描述符,从而获得中断服务子程序入口的段地址;门描述中包含的偏移量即是中断服务子程序入口的段内偏移地址。这样就获得了中断服务子程序入口的逻辑地址。任务门描述符中的选择符将选出一个新任务的任务状态段TSS,从而切换到新任务去。IDT最多可容纳256个描述符(中断类型号0~255),最多含2KB。中断描述符表IDT全系统只有一个。其作用和68IDT中的每个描述符有一个索引号,索引号乘8就是该描述符在表内的偏移地址。内、外中断(包括INT指令)形成的中断类型号将作为访问IDT内描述符的索引号。
3.段选择符、段寄存器和系统地址寄存器GDT和LDT表内的每一个描述符都有一个对应的选择符。选择符有16位,分为三个字段:高13位(位15~位3)为对应描述符在描述符表内的索引号。位2称为表指示位TI,TI=0,指向GDT:TI=1,指向LDT。段选择符与描述符表的关系如图8.9所示。选择符的位1和位0为请求者特权级RPL,后面讨论。IDT中的每个描述符有一个索引号,索引号69图8.9选择符与描述符表的关系图8.9选择符与描述符表的关系70从以上的讨论可以得出这样的逻辑关系:无论为取指令访问内存还是读写数据访问内存,总要首先获得段的开始地址(即基地址)和段内偏移地址。段内偏移地址可由EIP提供或按指令的寻址方式计算产生,而获得段的基地址却要经过这样的过程:按段的选择符访问描述符表找到段描述符,从描述符中获得段基址。这就是说,为了获得段的基地址似乎要经过复杂的多次访问内存的操作。若真是这样,访问内存的速度就要低了。事实上,80486CPU内部硬件逻辑,保证了在大多数访问存储器的操作时,由寄存器提供段基址,从而大大加快了访问存储器的速度。这部分硬件逻辑主要是段寄存器和系统地址寄存器。系统地址寄存器有全局描述符表寄存器GDTR和中断描述符表寄存器IDTR(见图8.3),它们分别寄存GDT和IDT的表基址和其长度。从以上的讨论可以得出这样的逻辑关系:无论为71这两个寄存器都有两个字段:32位的表基地址和6位的表长度。由于系统工作时只有一个GDT和一个IDT,所以在系统初始化阶段,在转入保护模式之前可以定义GDT和IDT并用指令LGDT和LIDT分别向GDTR和IDTR置入48位(32位表基址和16位表长度)初值,而且不再改变。这就为GDT和IDT定了位。如果某个段描述符的选择符是指向GDT的(T1=0),选择符中的13位索引号乘以8就是对应的段描述符在GDT内的偏移地址。这里说的段寄存器包括代码段寄存器CS,数据段寄存器DS、ES、FS、GS,堆栈段寄存器SS和系统寄存器LDTR、TR(即TSSR)。这些段寄存器在结构上和操作上都有共同特点。
这两个寄存器都有两个字段:32位的表基72在结构上,如图8.10所示,每个段寄存器都由两部分组成:一部分为16位,寄存段描述符选择符,可以用指令访问,用指令装入段选择符(CS除外);另一部分为64位,称为描述符高速缓冲寄存器,寄存前一部分选择符对应的段描述符。在操作上,描述符高速缓冲寄存器是“程序员不可见的”,就是不能用指令直接向其中赋值。描述符高速缓冲寄存器是在向寄存器的16位部分装入描述符选择符时,自动地把选择符对应的段描述符装入其中的。它隐含地包括这些操作:当向段寄存器的16位部分装入选择符时,要依其TI位决定是访问GDTR还是LDT。选定GDT或LDT之后,由GDT或LDTR提供GDT或LDT的基地址。这个基地址与选择符中13位索引号乘以8相加,便得到了所选描述符的开始物理地址。在结构上,如图8.10所示,每个段寄存器73微型计算机原理与应用第8章高档微机的某些新技术课件74把这一地址开始的连续8个字节的内容取出,装入对应的描述符高速缓冲寄存器。这一系列操作是由硬件自动完成的。代码段寄存器CS不能用传送指令修改其内容,但JMP、CALL、IRET、INT指令和中断操作等可以改变CS内容。无论因什么改变CS的内容,都只能把某个代码段描述符的16位选择符置入CS。至于DS、ES、GS、FS和SS,则可用MOV指令(如:MOVDS,AX)修改其内容。同样,它们的修改值必然是数据段或堆栈段描述符的选择符。系统寄存器LDTR和TR,分别可用LLDT和LTR指令向其中装入LDT描述符的选择符和TSS描述符的选择符,或者在任务切换过程(下节讨论)中,向LDTR和TR装入选择符。把这一地址开始的连续8个字节的内容取出75系统寄存器LDTR和TR,分别可用LLDT和LTR指令向其中装入LDT描述符的选择符和TSS描述符的选择符,或者在任务切换过程(下节讨论)中,向LDTR和TR装入选择符。在多任务情况下,各种段(包括LDT和TSS)可能有多个,但是只有上述段寄存器选择的段才是当前处于活动状态的段。段寄存器CS、LDTR或TR内容的修改,要么是程序进行段间转移,要么是任务之间的切换。上面的讨论回避了一个问题,就是保护功能。存储器的访问和段寄存器内容的修改,都必须符合一定的规则,受一定的限制,这样才能使任务之间隔离,应用程序不至于破坏操作系统,这就是保护的意义。8.5节将专门讨论保护功能及实现方法。系统寄存器LDTR和TR,分别可用LLDT76存储分段管理小结:(1)系统中任务信息都是分段存储的。除了代码段、数据段和堆栈段之外,保护模式下还有些特殊的段:一个GDT段、一个IDT段、多个LDT段和多个TSS段。(2)任何段的定义,都必须同时定义一个属于它的段描述符,并把描述符置于描述符表中。段描述符包含这个段的基地址、长度和其它属性信息。除了GDT和IDT段之外,其它所有的段,每个段的描述符都有一个选择符,用以指明描述符在描述符表中的地址和访问特权。存储分段管理小结:77(3)CPU内的段寄存器及隐蔽伴随的描述符高速缓冲寄存器,寄存着当前活动段的描述符和描述符选择符,从而使访问内存的操作保持高速度。更换当前活动的段,是通过用指令(有些是中断操作)修改段寄存器中的选择符来实现的。(4)存储器的寻址(在指令中体现出来的)等效成段选择符和偏移地址两部分,其中的选择符隐含地给出段的基地址。(3)CPU内的段寄存器及隐蔽伴随的描述符78
8.3.3存储器的分页管理多任务操作系统需要虚拟存储器管理机制的支持。除了前面讨论的分段管理之外,80486CPU还支持分页管理。分段管理是把程序、数据和其它信息(如描述符表等)都定义成长度不定的段。根据需要,操作系统可以把完整的段从磁盘装入内存,或从内存传到磁盘把该段在内存的位置空闲起来。这就是说,在内存和磁盘之间交换信息时,段作为独立的逻辑单位。分段管理的优点是段的分界和程序的自然分界相对应;段的逻辑独立性使它易于编译、管理、修改和保护,也便于多任务共享。分段管理的缺点来自于段长度不固定不相同。段的起点和终点不定,对内存空间分配带来不便,每次对内存清除腾空的段长度必须大于将要从磁盘装入的段,在内存与磁盘多次交换段之后,内存中将出现许多空余的零碎存储空间无法利用而浪费。8.3.3存储器的分页管理79分页管理将克服单纯分段管理的缺点,把虚拟存储空间和内存物理空间都划分长度为4KB的页,页的起点地址和终点地址都是固定的。无论是程序还是数据,在内存中存储和在内存与磁盘之间交换时都以4KB的页作为单位来进行。这就是说,一个程序或一个段都可以划分为多个页,在划分为多个页时,这些页在内存中不一定是地址相邻的。在从磁盘向内存调入一页时,只要内存有空闲页就可容纳。唯一可能造成浪费的存储空间是程序最后一页所留下的剩余空间。好在一页的字节数只有4KB,所以剩余空间必然小于4KB。
80486CPU在保护模式下,首先利用分段管理机制,形成线性地址,然后由分页机制把线性地址变换成物理地址。分页管理将克服单纯分段管理的缺点,把虚拟存储80分页机制的使用是可选的。在控制寄存器CR0中,设置PG位(位31)为1时,使分页机制工作;设置PG位为0时,分页机制不工作。图8.11是80486CPU使用分页机制时的寻址过程。分页机制的使用是可选的。在控制寄存器CR081微型计算机原理与应用第8章高档微机的某些新技术课件82
1.分页时存储器的组织存储器的组织必须利于寻址。在分页情况下,存储器如何编址和寻址?其方法可以概括为以下几点:(1)把存储器的物理空间划分为每4KB为1页,页与页互不重叠,页的开始地址必须是地址码低12位为全0,页的最高地址必然是地址码的低12位为全1。(2)任一个存储单元的地址一定在某一页内,而页本身的地址是通过二级表结构给出的,这二级表结构分别为页表和目录,一个页表也占4KB的一页,页表中的项称为页表项。每一页表项占4个字节单元,这4个字节中用20位给出一页的开始地址(页的开始地址低12位为全0,只需给出高20位),其余12位给出关于该页的其它信息。1.分页时存储器的组织83可见一个页表包含1024个页表项,每项对应1页。若访问任何一页,必须先获得这个页对应的页表项所在的页表的地址和这个页表项在页表中的偏移地址。目录是存储页表的表。目录也是占4KB的页,目录中的项称为目录项。每一目录项也是4个字节,其中20位是一个页表的开始地址,其余12位是关于该页表的其它信息。可见每个目录项对应一个页表,共有1024个目录项。(3)CPU内的控制寄存器CR3是目录的物理基地址寄存器,它寄存着目录的物理起始地址。CR3用其32位中的高20位给出目录的起始地址(低12位全0)。可见一个页表包含1024个页表项,每项对84从以上所述可以看出,对任何一个存储单元的编址包含三部分信息:这个单元在页内的地址、对应的页表项在页表中的地址以及对应页表在目录中的地址。在使用分页功能时,80486CPU分段机构形成的32位线性地址分成三个字段:位11~位0,共12位,指明页内的偏移地址;位21~位12,共10位,作为页表项在页表内的索引号,这个索引号乘以4,就是页表项在页表内的偏移地址;位31~位22,共10位,作为目录项在目录中的索引号,这个索引号乘以4,就是目录项在目录内的偏移地址(已经说明目录的起始地址在CR3中)。图8.12给出了上述分页机制的寻址关系。从以上所述可以看出,对任何一个存储单元的编址85微型计算机原理与应用第8章高档微机的某些新技术课件86
2.目录项和页表项目录项和页表项的格式是相同的,如图8.13所示。但它们描述的对象是不同的:目录项描述的是一个页表,而页表项描述的是一页。除了位31~位12(共20位)给出了页表或页的起始地址的高20位(低12位全0)外,位11~位0给出了有关信息:P(Present)位表示该项是否正确可用。P位为1,表示该目录项或该页表项正确,可在线性地址到物理地址变换中使用;P位为0,表示该项不可用,此时,其它位已无意义。A(Access)位的意义和前面讨论描述符内的A位意义相同:在程序对该目录项或页表项描述的地址区域进行访问时,CPU的固件将A位置1,由软件(操作系统)周期性地将A位复位为0,这样,对A位为1状态的统计可以知道该页的活动情况。D(Dirty)位在目录项中无意义,在页表项中,当程序向对应页写入数据时,使D位置1。2.目录项和页表项87图8.13目录项和页表项格式图8.13目录项和页表项格式88和A位一样,D位只能由操作系统复位为0,所以D位用于描述对应页被写入的情况。U/S(User/Suppervisor)位和R/W(Read/Write)位用于支持页保护功能。标有AVL(位11~位9)留给操作系统定义和使用。
3.TLBTLB是TranslationLookasideBuffer的缩写,译为转换旁视缓冲器。TLB是80486CPU支持分页管理机制的一部分硬件,具有高速缓冲存储器结构。TLB有32个项,如图8.14所示。每一项有两个字段。一个字段存储前面说明过的页表项,包括一页的物理开始地址和相关信息。另一个字段为标记(Tag),存放该页表项对应的线性地址的高20位(位31~位12)。TLB内存放的页表项被认定为将要频繁访问页的页表项。和A位一样,D位只能由操作系统复位为0,所89微型计算机原理与应用第8章高档微机的某些新技术课件90很显然,TLB的机制使得在线性地址变换成物理地址进程中,减少了访问内存的目录和页表的操作,而访问目录和页表操作是相当费时间的,从而大大提高了访问的速度。很显然,TLB的机制使得在线性地址变换成物918.4多任务系统的实现机制8.4.1多道程序和多任务的基本概念任务(Task)是操作系统的最重要的概念,在很多资料中称作进程(Process)。任务(或进程)有许多定义,从不同侧面说明了它的含义。1978年全国操作系统会议上,对进程的描述是:“进程是一个具有独立功能的程序对于某个数据集合的一次运行活动。”这说明,任务与程序有关,又与程序不同。任务的概念出现于多道程序之后。为了充分利用系统资源,出现了主存储器中同时存放并运行多道程序的系统。例如,对实时性要求很高的系统中,常常把数据输入、数据处理和数据输出划分为三个独立的程序模块(任务),借助中断机制,使它们“同时”运行。8.4多任务系统的实现机制8.4.1多道92又如,在一个多用户系统中,主计算机连接多个终端,每个用户在自己的终端上输入命令,主计算机为每个用户执行“自己”的程序。多道程序系统的操作系统设计十分复杂,不仅要考虑到多道程序在系统中的并行性(并行运行)、相互依赖和相互的制约性(资源的竞争和协调),还要处理好系统内部状态不断变化的动态性(有的程序在处理器上运行,有的程序等待某个事件的发生而无法运行)。正是由于在多道程序系统中,程序之间有了并行、依赖制约和动态的特性,使得原来的程序概念不能很好反映系统中的情况了。原来程序的概念只是完成某个功能的指令的集合,为静态概念。所以,出现了进程(任务)的概念,用以描述多道程序系统中程序运行的动态特点。又如,在一个多用户系统中,主计算机连接多个终93任务(进程)是程序的执行,是一次运行活动,从开始运行到运行完成,是一个生命过程。一个程序可能对应多个进程。例如同一个Fortran编译程序可以对多个Fortran源程序同时进行编译,可以看作是该编译程序在多个数据集(源程序)上运行,是多个不同的进程。如果把程序分为主程序和多个子程序(过程),主程序执行过程中调用了子程序,从这一意义上,一个进程,即“一次运行活动”,可以包含多个程序。在多道程序系统中,进程的概念引入后,从编程的意义上一个重要的变化是:不仅要编排指令序列、定义数据和变量,而且要为每个进程定义一个进程控制块。进程控制块是在内存中定义的存储格式确定的存储区域,用于记录进程的有关信息。任务(进程)是程序的执行,是一次运行活动,94任务(进程)是程序的执行,是一次运行活动,从开始运行到运行完成,是一个生命过程。一个程序可能对应多个进程。例如同一个Fortran编译程序可以对多个Fortran源程序同时进行编译,可以看作是该编译程序在多个数据集(源程序)上运行,是多个不同的进程。如果把程序分为主程序和多个子程序(过程),主程序执行过程中调用了子程序,从这一意义上,一个进程,即“一次运行活动”,可以包含多个程序。在多道程序系统中,进程的概念引入后,从编程的意义上一个重要的变化是:不仅要编排指令序列、定义数据和变量,而且要为每个进程定义一个进程控制块。进程控制块是在内存中定义的存储格式确定的存储区域,用于记录进程的有关信息。任务(进程)是程序的执行,是一次运行活动,95CPU中的寄存器LDTR(及其高速缓冲器)寄存着当前任务的LDT描述符,它提供了当前LDT的基地址。在任务切
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论