《汇编语言程序设计第2章.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第2章.ppt(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 微处理器的结构及存储器组成第2章 微处理器的结构及存储器组成2.1 80 x86和和Pentium微处理器的结构微处理器的结构2.2 存储器的组织存储器的组织第2章 微处理器的结构及存储器组成2.1 80 x86和和Pentium微处理器的结构微处理器的结构2.1.1 80 x86和和Pentium微处理器的结构微处理器的结构 18086微处理器的结构微处理器的结构Intel8086(简称8086)是在Intel公司的8位微处理器8080与8085的基础上发展起来的一种16位微处理器。它的内部结构是16位的,数据总线也是16条;它能处理16位数据(具有16位运算指令,包括乘法和除法指令
2、),同时也能处理8位数据;它能执行整套8080/8085的指令,所以它在汇编语言上与8080/8085是兼容的。第2章 微处理器的结构及存储器组成图2-18086的功能结构第2章 微处理器的结构及存储器组成BIU负责与存储器接口,即8086CPU与存储器之间的信息传送,都是由BIU进行的。具体地说,BIU负责从内存的指定部分取出指令,送至指令流队列中排队,在执行指令时所需的操作数,也由BIU从内存的指定区域取出,传送给EU部分去执行。EU部分负责指令的执行,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条(或多条)指令,在指令流队列中排队。在一条指令执行完以后就可以
3、立即执行下一条指令,减少了CPU为取指令而等待的时间,提高了CPU的利用率和执行速度,降低了与之相配的存储器对采样速度的要求。第2章 微处理器的结构及存储器组成图2-28086的执行方式第2章 微处理器的结构及存储器组成在8080与8085以及标准的8位微处理器中,程序的执行是由取指和执行指令的循环来完成的,执行的顺序为取第一条指令,执行第一条指令;取第二条指令,执行第二条指令;直至取最后一条指令,执行最后一条指令。这样,在每一条指令执行完以后,CPU必须等待,直到下一条指令取出来以后才能执行。所以,它的工作顺序如图2-3所示。图2-3一般8位机的执行方式第2章 微处理器的结构及存储器组成 2
4、80486微处理器的结构微处理器的结构80486是一种高性能全32位的微处理器。它把构成80386微机系统的主处理器、数值协处理器和一个具有8KB的Cache存储器集成在一块集成电路芯片中。沿用了指令流水线技术,采用RISC思想设计,使用静态高速RAM作为程序和数据共用的Cache,提高了存储器的读/写速度,浮点运算部件FPU集成在片内,提高了浮点运算的速度和能力,它支持多任务处理。第2章 微处理器的结构及存储器组成80486微处理器的基本组成如图2-4所示,包括总线接口部件、指令预取部件、指令译码部件、控制和保护部件、算术与逻辑运算部件、浮点运算部件FPU、分段部件、分页部件和8KB的Cac
5、he部件。这些部件可以独立工作,也能与其他部件一起并行工作。在取指令和执行指令时,每个部件完成一项任务或某一操作步骤,这样既可同时对不同的指令进行操作,又可对同一指令的不同部分并行处理,即采用流水线工作方式。第2章 微处理器的结构及存储器组成80486微处理器的特点有:(1)浮点运算器FPU、8KB程序与数据共用Cache和主CPU集成在同一芯片中,减少了外部数据传送环节,提高了浮点运算及数据处理的能力、速度和可靠性。(2)把分段部件和分页部件有机地结合在一起,建立起完整的存储器管理与保护机构,为存储器管理提供4级保护,对指令的执行进行测试与监督,保证指令的正确执行。(3)采用RISC思想设计
6、,使80486既带有CISC类微处理器的特点,又具有RISC类微处理器的特色,与以往的CISC(80 x86)微处理器兼容。第2章 微处理器的结构及存储器组成(4)在总线接口部件中设有成组控制和Cache控制部件,支持CPU在成组传送周期几乎以每个时钟周期传送一个字(2个字节)的速度连续从主存或外部Cache存储器中选取指令和数据,送入内部Cache存储器。另外还设有总线大小控制部件,控制传送数据的宽度,同时提供数据传送时的奇偶控制。为了使宽总线达到最佳使用效果,在系统总线接口部件中配有写缓冲存储器。第2章 微处理器的结构及存储器组成(5)由预取部件负责从内部Cache中取指令或数据。如果指令
7、或数据不在内部Cache中,则从主存中读取,同时填入内部Cache。预取部件的数据通路为16字节(128位),使指令码和数据传送速度加快。预取指令队列为32字节,可存放更多的指令代码或数据,从而有效地加快了指令执行的速度。许多指令(如寄存器之间的数据传送、加减运算等)可在一个时钟周期内完成。第2章 微处理器的结构及存储器组成图2-480486结构逻辑图第2章 微处理器的结构及存储器组成(6)在内部Cache和浮点运算器FPU之间的内部通路采用64位(两个32位)数据线,使浮点数据的传送及运算速度加快。(7)Cache采用“写贯穿”(WriteThrough)方式,使写入数据不仅写入Cache存
8、储器,同时还要写入主存储器,保证了Cache与主存数据的一致性。(8)采用单倍频时钟,简化了时钟电路,提高了CPU的速度。(9)除了内部Cache和FPU外,支持配置外部Cache和数值协处理器FPU,使系统的性能进一步提高。第2章 微处理器的结构及存储器组成(10)在指令系统方面保持与80386兼容。除了包含80387的浮点运算指令外,还增加了6条新指令,即字节交换指令BSWAP、交换并相加指令XADD、比较并交换指令CMPXCH和Cache指令INVD、WBINVD、INVLPG。其中前3条可在系统软件和应用软件中使用,增强数据运算与处理能力;后3条只能在系统软件中使用,增强对内部Cach
9、e和TLB的管理。第2章 微处理器的结构及存储器组成3Pentium微处理器的结构微处理器的结构图2-5Pentium体系结构示意图第2章 微处理器的结构及存储器组成1)超标量流水线超标量流水线(SuperScalar)设计是Pentium处理器技术的核心。它由U和V两条指令流水线构成,如图2-6所示。每条流水线都拥有自己的ALU(算术逻辑单元)、地址生成电路和与数据Cache的接口。这种流水线结构允许Pentium在单个时钟周期内执行两条整数指令,比相同频率的486DX的CPU性能提高了一倍。Pentium双流水线中的每一条流水线分为5个步骤,即指令预取、指令解码、地址生成、指令执行、回写。
10、当一条指令走过预取步骤,流水线就可以开始对另一条指令进行操作。第2章 微处理器的结构及存储器组成图2-6Pentium超标量流水线结构第2章 微处理器的结构及存储器组成Pentium是双流水线结构,可以一次执行两条指令,每条流水线执行一个。这个过程称为“指令并行”。在这种情况下,要求指令必须是简单指令,且V-流水线总是接受U-流水线的下一条指令。例如,在下述4条指令中MOVAX,5INCBXMOVAX,5INCAX前两条指令可以并行工作,而后两条指令则不行,它会产生结果的冲突,因为后两条指令都在对同一个寄存器AX进行操作。因而,Pentium的有效使用还必须借助于有适用的编译工具,能产生尽量不
11、冲突的指令序列。第2章 微处理器的结构及存储器组成2)独立的指令Cache和数据Cache80486片内有8KBCache,而Pentium则为两个8KB,一个作为指令Cache,另一个作为数据Cache,即双路Cache结构,如图2-7所示。图2-7Pentium双路Cache结构第2章 微处理器的结构及存储器组成图中TLB的作用是将线性地址翻译成物理地址。指令Cache和数据Cache采用328的线宽(80486DX为168线宽),是对Pentium64b总线的有力支持。Pentium的数据Cache有两个接口,分别通向U和V两条流水线,以便能在相同时刻向两个独立工作的流水线进行数据交换。
12、当向已被占满的数据Cache写数据时,将移走一部分当前使用频率最低的数据,并同时将其写回主存,这个技术称为Cache回写技术。由于处理器向Cache写数据和将Cache释放的数据写回主存是同时进行的,所以,采用Cache回写技术可大大节省处理时间。第2章 微处理器的结构及存储器组成指令和数据分别使用不同的Cache,使Pentium的性能大大提高。例如,流水线的第一个步骤为指令预取,在这一步中,指令从指令Cache中取出来,如果指令和数据合用一个Cache,指令预取和数据操作之间很有可能发生冲突。提供两个独立的Cache则可避免这种冲突并允许两个操作的并发执行。第2章 微处理器的结构及存储器组
13、成3)浮点操作Pentium的浮点单元流水分为8级,浮点操作的执行过程分为8级流水,使每个时钟周期能完成一个浮点操作,甚至在一个时钟周期内能完成两个浮点操作。浮点单元流水线的前4个步骤同整数流水线相同,后4个步骤的前两步为二级浮点操作,后两步为四舍五入及写结果和出错报告。Pentium的FPU对一些常用指令如ADD、MUL和LOAD等采用了新的算法,同时,用电路进行了固化,用硬件来实现,提高了速度。第2章 微处理器的结构及存储器组成4)分支预测循环操作在软件设计中使用十分普遍,而每次循环中循环条件的判断占用了大量的CPU时间。为此,Pentium提供一个称为分支目标缓冲器BTB(BranchT
14、argetBuffer)的小Cache来动态地预测程序分支。当一条指令导致程序分支时,BTB记住这条指令和分支目标的地址,并用这些信息预测这条指令再次产生分支时的路径,预先从此处预取,保证流水线的指令预取步骤不会空置。BTB机制如图2-8所示。当BTB判断正确时,分支程序即刻得到解码。从循环程序来看,在进入循环和退出循环时,BTB会发生判断错误,需重新计算分支地址。第2章 微处理器的结构及存储器组成在Pentium中,常用指令如MOV、INC、DEC、PUSH、POP、JMP、CALL(near)、NOP、SHIFT、NOT和TEST等改用硬件实现,不再使用微码操作,使指令的运行得到进一步加快
15、。而其他的微码指令由于运行于双流水线上,速度也得到了提高。第2章 微处理器的结构及存储器组成图2-8Pentium的BTB机制第2章 微处理器的结构及存储器组成2.1.2 80 x86和和Pentium微处理器的寄存器结构微处理器的寄存器结构 18086微处理器的寄存器结构微处理器的寄存器结构8086的寄存器结构如图2-9所示。它能处理16位数,AX、BX、CX和DX这4个寄存器均是16位的数据寄存器,用以暂存16位的操作数。其中AX为累加器,其他3个16位寄存器用以存放操作数,通常的用途如表2-1所示。第2章 微处理器的结构及存储器组成图2-98086的寄存器结构第2章 微处理器的结构及存储
16、器组成表表2-1 8086通用寄存器的用法通用寄存器的用法寄存器通常用途AX字乘法、字除法、字I/OAL字节乘法、字节除法、字节I/O、转移、十进制算术运算AH字节乘法、字节除法BX转移CX串操作、循环次数CL变量移位或循环DX字乘法、字除法、间接I/O第2章 微处理器的结构及存储器组成8086也能处理8位数。图2-9中的4个16位数据寄存器也可作为8个8位寄存器使用。8086中有4个16位的段寄存器,即CS(CodeSegmentRegister)、DS(DataSegmentRegister)、SS(StackSegmentRegister)、ES(ExtraSegmentRegister
17、),使8086能在1MB的范围内对内存进行寻址。8086中的堆栈指针SP(StackPointer)用于确定在堆栈操作时,堆栈在内存中的位置。但在8086中SP还必须与SS(堆栈段寄存器)一起才能确定堆栈的实际位置。第2章 微处理器的结构及存储器组成在8086中有3个16位寄存器,BP(BasePointerRegister)、SI(SourceIndexRegister)和DI(DestinationIndexRegister),寻址方式较多,寻找操作数灵活、方便。8086中的指令指针IP(InstructionPointer)是指向下一次要取出的指令,与CS寄存器相配合才能形成真正的物理地
18、址。8086有一个状态标志寄存器,如图2-9(b)所示。第2章 微处理器的结构及存储器组成280 x86和和Pentium微处理器的寄存器结构微处理器的寄存器结构80 x86和Pentium微处理器的寄存器可以分为基本体系结构寄存器、系统级寄存器和调试与测试寄存器3类。其中基本体系结构寄存器和浮点寄存器应用程序可以直接访问,一般称作程序可见寄存器。其他寄存器在应用程序设计期间不能直接寻址,只有特权级为0级的程序才可以使用它们,一般称为程序不可见寄存器。80486和Pentium微处理器中包含的寄存器有8种:通用寄存器,段寄存器,指令指针寄存器,状态标志寄存器,控制寄存器,系统地址寄存器,调试与
19、测试寄存器和浮点寄存器。第2章 微处理器的结构及存储器组成1)通用寄存器通用寄存器共有8个,如图2-10所示。其中EAX、EBX、ECX和EDX可作为8位、16位或32位寄存器使用,ESI、EDI、EBP、ESP可作为16位或32位寄存器使用,作用如下:EAX:常用作累加器;EBX:常用作基址寄存器;ECX:常用作计数器;EDX:常用作数据寄存器;ESI:常用作源变址寄存器;EDI:常用作目的变址寄存器;EBP:常用作基址寄存器;ESP:常用作堆栈指针寄存器。第2章 微处理器的结构及存储器组成图2-1080486通用寄存器第2章 微处理器的结构及存储器组成2)段寄存器段寄存器有6个,每个16位
20、,其中CS、DS、SS分别作为指令代码段、数据段和堆栈段寄存器,ES、FS和GS作为附加数据段寄存器。在实地址方式和虚拟8086方式下分别存放相应段的基地址;在保护方式下作为选择器,存放相应的选择符,如图2-11所示。每个段寄存器对应一个隐含不可访问的段描述符寄存器,存放由选择符寻址的描述符。选择符的高13位是段描述符表的地址(简称选择码),低3位表示段描述符的类型和特权标志。段选择符与段描述符寄存器如图2-12所示。第2章 微处理器的结构及存储器组成图2-1180486段寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器附加段寄存器附加段寄存器第2章 微处理器的结构及存储器组成图2-12
21、段寄存器与段描述符高速缓冲寄存器第2章 微处理器的结构及存储器组成3)指令指针寄存器指令指针寄存器是一个32位的寄存器,如图2-13所示,用来存放当前代码段中下一条要执行指令的偏移量(或称偏移地址)。在实地址方式和虚拟8086方式下,作为16位指针寄存器使用;在保护方式下,作为32位指针寄存器使用。IP3116150图2-1380486指令指针寄存器第2章 微处理器的结构及存储器组成4)状态标志寄存器状态标志寄存器是一个32位的寄存器,实际使用了15位,用来存放微处理器的状态标志和控制标志。其中部分标志供系统使用,因此也称为系统标志。各位的符号如图2-14所示。第2章 微处理器的结构及存储器组
22、成图2-1480486状态标志寄存器第2章 微处理器的结构及存储器组成FLAGS是16位标志寄存器,由EFLAGS中的D15D0组成,其中包含了两种标志:状态标志(S)、控制标志(C)。SF、ZF、PF、CF、AF和OF组成了状态标志,控制标志由DF、IF和TF构成。EFLAGS是32位标志寄存器,其中包含了3种标志:状态标志(S)、控制标志(C)和系统标志(X)。状态标志报告算术/逻辑运算指令执行后的状态;控制标志仅含一个标志DF,用于控制串操作指令的地址改变方向;系统标志用于控制I/O、屏蔽中断、调试、任务转换和控制保护方式与虚拟8086方式间的转换。第2章 微处理器的结构及存储器组成图2
23、-14给出了EFLAGS各位的标志名,共定义了15位14种标志。其中CF、PF、AF、ZF、SF、TF、IF、DF、OF属于8086的标志位;LF、RF是80286新增的标志位;VM是80386新增的;AC则是80486新增的。各个标志位的功能分述如下:(1)辅助进位标志AF(AuxitiaryCarryFlag)。在字节操作时,由低半字节(一个字节的低4位)向高半字节(一个字节的高4位)进位或借位;在字操作时,低位字节向高位字节有进位或借位,则AF=1,否则为0。这个标志用于十进制算术运算指令中。第2章 微处理器的结构及存储器组成(2)进位标志CF(CarryFlag)。当结果的最高位(字节
24、操作时的D7或字操作时的D15)产生一个进位或借位,则CF=1,否则CF=0。这个标志主要用于多字节数的加、减法运算。移位和循环移位指令也能够把存储器或寄存器中的最高位(左移时)或最低位(右移时)放入标志CF中。(3)溢出标志OF(OverflowFlag)。在算术运算中,带符号数的运算结果超出了8位或16位(带符号数能表达的范围),即在字节运算时结果大于+127或结果小于-128,在字运算时结果大于32767或结果小于-32768,此标志置位。第2章 微处理器的结构及存储器组成溢出和进位是两个不同性质的标志,千万不能混淆了。例如,在字节运算中MOVAL,64HADDAL,64H即011001
25、00+0110010011001000D7位向前无进位,故运算后CF=0;但运算结果超过了+127,此时,溢出标志OF=1。又例如,在字节运算中MOVAL,0ABHADDAL,0FFH即10101011(-85)+11111111(-1)110101010第2章 微处理器的结构及存储器组成D7位向前有进位,故运算后CF=1;但运算的结果又不小于-128,此时,溢出标志OF=0。在字运算中MOVAX,0064HADDAX,0064H即0000000001100100+00000000011001000000000011001000D15位未产生进位,故CF=0;运算结果未超过+32767,故OF
26、=0。第2章 微处理器的结构及存储器组成但若有MOVAX,6400HADDAX,6400H即0110010000000000+0110010000000000 1100100000000000第2章 微处理器的结构及存储器组成D15位未产生进位,故CF=0,但运算结果超过了+32767,故OF=1。又例如:MOVAX,0AB00HADDAX,0FFFFH即:1010101100000000+111111111111111111010101011111111D15位产生进位,故CF=1,但运算结果不小于-32768,故OF=0。第2章 微处理器的结构及存储器组成(4)符号标志SF(SignFla
27、g)。它的值与运算结果的最高位相同。即结果的最高位(字节操作时为D7,字操作时为D15)为1,则SF=1;否则SF0。由于在80X86中符号数是用补码表示的,所以SF表示了结果的符号,SF=0为正,SF=1为负。(5)奇偶标志PF(ParityF1ag)。若操作结果中“1”的个数为偶数,则PF=1,否则PF=0。这个标志可用于检查在数据传送过程中是否发生错误。(6)零标志ZF(ZeroFlag)。若运算的结果为0,则ZF=1,否则ZF=0。80 x86还提供了三个控制标志,它们能由程序来置位和复位,以变更对处理器的操作。第2章 微处理器的结构及存储器组成(7)方向标志DF(DirectionF
28、lag)。若用指令置OF=1,则引起串操作指令为自动减量指令,也就是从高地址到低地址处理字符串;若使OF=0,则串操作指令就为自动增量指令,也就是从低地址到高地址处理字符串。(8)中断允许标志IF(Interrupt-enableFlag)。若指令中置IF=1,则允许CPU去接收外部的可屏蔽中断请求;若使IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用。(9)追踪标志TF(TrapFlag)。置TF标志,使处理进入单步方式,以便于调试。在这个方式中,CPU在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以后进行检查。第2章 微处理器的结构及存储器组成(10)特权级标志IOP
29、L是状态标志寄存器中的D13和D12位。其表示03级的4个I/O特权级,用于保护方式。只有当任务的现行特权级高于或等于IOPL时(0级最高,3级最低),执行I/O指令才能保证不产生异常。(11)任务嵌套标志NT是状态标志寄存器中的D14位。80486/80386/80286的中断和CALL指令可以引起任务转换。NT1表示引起了任务转换,当前任务嵌套在另一任务内,这样,在执行IRET指令时,便返回父任务;NT=0表示没引起任务转换,执行IRET时是进行同任务内的返回,而不发生任务转换。该标志位用来控制被中断的链和被调用的任务。第2章 微处理器的结构及存储器组成(12)恢复标志RF是状态标志寄存器
30、中的D16位。该标志与调试寄存器的代码断点结合使用,以保证不重复处理断点。RF1时,即使遇到断点或调试故障也不产生异常中断。在成功地执行每条指令后,RF将自动复位。80486在响应“断点异常”(中断)时,先将RF位置1,然后将EFLAGS压栈;在断点处理程序结束处,IRET指令将弹出具有RF1的EFLAGS,恢复程序在断点位置的执行,从而保证了代码在断点只执行一次。(13)虚拟8086模式标志VM是状态标志寄存器中的D17位。VM1表示工作在虚拟8086方式。该位只能以两种方式来设置,在保护方式下,由最高特权级(0级)的代码段的IRET指令来设置,或者由任务转换来设置。第2章 微处理器的结构及
31、存储器组成(14)对准检查标志AC是状态标志寄存器中的D18位。该位仅对80486有效。AC1且CR0的AM位也为1,则进行字、双字或四字的对准检查。若处理器发现在访问内存时操作数未按边界对准(所谓对准,是指访问字操作数时从偶地址开始,访问双字数据时从4的整数倍地址开始,访问4字数据时从8的整数倍地址开始),则发生异常。对80386,AC位恒为0,不进行对准检查。EFLAGS的低16位含有80286的全部标志,称为FLAGS标志寄存器。它对于执行8086/80286的代码是很有用的。第2章 微处理器的结构及存储器组成5)控制寄存器控制寄存器为CR0CR3共有4个,各32位,用来存放全局性与任务
32、无关的机器状态,其标志符号如图2-15所示。与80386相比,80486的CR0增加了NE、WP、AM、NW和CD,CR3增加了PWT和PCD。第2章 微处理器的结构及存储器组成图2-1580486控制寄存器第2章 微处理器的结构及存储器组成(1)CR0用来存放系统控制标志或表示处理器的状态,定义了11位,其功能是:PE:保护方式允许位。置1,进入保护方式;清0,进入实地址方式。MP:监控协处理器位。置1,表示有协处理器。若在80486系统中运行80286或80386程序,该位置1;若运行80486程序,该位清0。EM:模拟协处理器位。该位为1,表示软件模拟协处理器,这时若使用协处理器指令将产
33、生协处理器无效异常中断;该位为,允许协处理器指令使用实际的协处理器。在运行80286或80386程序时,该位置1;在80486SX系统中该位也必须置1。第2章 微处理器的结构及存储器组成TS:任务切换位。每次任务转换,该位置1。在解释浮点算术运算指令时,对该位进行测试。清除任务切换标志指令CLTS可将该位清0。ET:处理器扩展类型标志。该位置1,表示配置80387;否则表示未配置。NE:数值异常事故位。该位用来控制浮点运算中未被屏蔽的异常故障。该位置1,允许报告浮点数值错;该位清0且IGNNE输入有效,则不予以报告。当NE清0且IGNNE输入无效时,数值错将会使处理器停止运行,并等待一次中断。
34、第2章 微处理器的结构及存储器组成WP:写保护位。该位用来净化80486的页写保护机构,即保护用户级的那些页。该位置1,禁止管理级的写操作写入用户级的页上;该位清0,管理级可向用户级的页进行写入。AM:对准屏蔽位。该位与状态标志AC配合使用,控制对数据的对准校验。该位置1且AC也置1时,对用户级(CPL3)访问的存储器单元进行对准校验,即边界检查,否则不校验。第2章 微处理器的结构及存储器组成NW:不透明写位。该位也称为不是写贯穿,用来控制Cache操作。该位清0,所有命中Cache的写操作将按写贯穿方式写入Cache,同时写入主存;该位置1且CD位也置1,只写入Cache存储器,而不写入主存
35、。CD:允许Cache位。该位用来控制是否使用片内Cache。该位清0,允许使用内部Cache,这时若不命中,可对片内Cache存储器填充写入;该位置1,又不命中Cache时不能对Cache填充写入。若访问Cache命中,则Cache正常运行;若要彻底禁止Cache,可用专门的指令INVD或WBINVD对片内Cache刷新。刷新就是使片内Cache中的所有数据无效即清0。PG:允许分页位。该位置1,允许分页;该位清0,禁止分页。第2章 微处理器的结构及存储器组成(2)CR1未用。(3)CR2为页故障线性地址寄存器,用来保存最后出现页故障的32位线性地址。只有当CR0中的PG位为1时,CR2才有
36、意义。(4)CR3为页目录基址寄存器。其中高20位存放页目录表的物理基地址。在低12位中用2位作为标志位,其余10位未用。标志位的作用是:第2章 微处理器的结构及存储器组成PCD:禁止页高速缓冲位。该位置1,不对页进行高速缓冲操作。在不分页情况下的总线周期,该信号由PCD引脚输出,控制外部二级Cache的高速缓冲操作。PWT:写贯穿位。在80486内部Cache中使用的是“写贯穿”方式,而外部二级Cache有的使用“写贯穿”方式,有的既可使用“写贯穿”方式又可使用“写回”方式。PWT1,使片外二级Cache采用“写贯穿”方式,否则采用“写回”方式。“写贯穿”就是向Cache写入数据的同时,也写
37、入到主存中;“写回”是只有当Cache中的某一存储块被刷新时,才把这一存储块写回到主存中去。第2章 微处理器的结构及存储器组成6)系统地址寄存器在80486微处理器中设置了4个系统地址寄存器,如图2-16所示。其作用也与80386基本相同,用来在保护方式下管理4个系统表,即引用80486在保护方式下所需要的段表信息。由于只能在保护方式下使用,因此又称为保护方式寄存器。第2章 微处理器的结构及存储器组成图2-1680486系统地址寄存器第2章 微处理器的结构及存储器组成(1)全局描述符表寄存器GDTR,一个48位寄存器,用来存放全局描述符表GDT的32位线性基地址和16位的界限值,在全局描述符表
38、中不仅包括有操作系统使用的描述符,而且还有所有任务使用的公用描述符。(2)中断描述符表寄存器IDTR,一个48位寄存器,用来存放中断描述符表IDT的32位线性基地址和16位的界限值。第2章 微处理器的结构及存储器组成(3)局部描述符表寄存器LDTR,一个16位寄存器,用来存放局部描述符表LDT的16位选择符。另外还有一个隐含的描述符高速缓冲寄存器,用来存放LDT表描述符。(4)任务状态寄存器TR,一个16位寄存器,用来存放任务状态段TSS的16位选择符。与之相应,也有一个隐含的描述符高速缓冲寄存器,用来存放任务状态段TSS的描述符。第2章 微处理器的结构及存储器组成7)调试与测试寄存器(1)调
39、试寄存器。该类寄存器有8个,各32位,如图2-17(a)所示,表示为DR0DR7。其中DR0DR3用作线性断点地址寄存器,可保存4个断点地址,DR6用作断点状态寄存器,用来设置若干个状态标志,其中低4位分别表示4个断点处的调试状态。若进入调试状态,由硬件置1;退出调试状态时应由软件清0。另外还有3位,即BT、BS和BD,其中BT是与任务状态段中调试自陷位T相关的状态标志位,BS是与状态标志寄存器中的自陷标志TF相关的状态标志位,BD是当内部电路仿真使用的下一条指令对8个调试寄存器中的任一个进行读/写时,置1。DR7是断点控制寄存器,用来设置控制标志、控制断点的设置、设置条件、断点地址的有效范围
40、以及是否进入异常中断等。DR4DR5为Intel公司保留。第2章 微处理器的结构及存储器组成图2-17调试与测试寄存器(a)调试寄存器;(b)调试与测试寄存器第2章 微处理器的结构及存储器组成(2)测试寄存器。该类寄存器有4个,各32位,如图2-17(b)所示,表示为TR3TR7。其中TR3TR5用于片内Cache测试。TR6TR7用来控制分页部件中的转换旁视缓冲存储器TLB的工作。TR6作为测试命令寄存器,用来存放测试控制命令,TR7作为数据寄存器,用来存放转换旁视缓冲存储器测试的数据。第2章 微处理器的结构及存储器组成8)浮点寄存器80486微处理器内部的浮点运算器是用于浮点运算的,其内部
41、设有相应的寄存器,包括8个80位通用数据寄存器,一个48位指令指针寄存器、一个48位数据指针寄存器,一个16位控制字寄存器,一个16位状态字寄存器和一个16位标记字寄存器。第2章 微处理器的结构及存储器组成3总线接口部件总线接口部件总线接口部件用来与外部主存、外围设备等部件进行数据传送。80486微处理器内部设有高速算术/逻辑运算器、浮点运算器和Cache存储器,配置了外部Cache,这就要求其能与外存、外设高速成批地进行数据传送,故此对总线接口部件的功能有更高的要求。它在内部通过3条32位总线与内部Cache和指令预取部件连接;在外部通过多种电路与系统总线连接,根据优先级别协调数据输入/输出
42、、指令预取、Cache行的填充等工作。为了支持片内Cache的连贯性,配置了总线监视功能。总线接口部件中各部分的功能是:第2章 微处理器的结构及存储器组成(1)总线大小(也称为宽度)控制。用来控制数据总线的位数,即按32位、16位或8位进行数据传送。(2)奇偶校验控制。数据传送时进行奇偶校验,写操作时产生偶校验,读操作时实施偶校验。如果出错,给出错误信息。(3)地址驱动器。提供所有地址信号A31A2和字节允许信号BE3BE0的功率驱动,其中高28位地址为双向信号。(4)写缓冲存储器。由于外部数据线是32位,为了传送可靠,在接口部件中设有缓冲存储器,以等待总线全部空闲时再进行写入操作。第2章 微
43、处理器的结构及存储器组成(5)数据总线收发器。为32位,用来控制总线数据的接收与发送。(6)总线请求序列发生器。也就是总线周期与总线控制电路,用来产生总线周期的时序及控制信号。其中包括成组和非成组传送、总线请求仲裁、浮点运算、中断以及复位等操作所需要的定时控制信号。(7)成组传送控制。用来控制内部Cache等部件与外部主存之间的成批数据传送。(8)Cache控制。Cache控制电路与成批传送控制配合,对系统Cache存储器实施控制。第2章 微处理器的结构及存储器组成4标志操作指令标志操作指令80 x86中有一部分指令是专门对标志寄存器或标志位进行操作的。包括四条标志寄存器传送指令和标志位操作指
44、令。1)标志寄存器传送指令(1)LAHF(LoadAHwithFlags)格式:LAHF功能:把标志寄存器的低8位(包括符号标志SF、零标志ZF、辅助进位标志AF、奇偶标志PF和进位标志CF)传送至AH的指定位,即相应地传送至位D7、D6、D4、D2和D0。(位D5、D3、D1的内容没有定义),如图2-18所示。这条指令本身不影响这些标志位。第2章 微处理器的结构及存储器组成图2-18LAHF指令示意图第2章 微处理器的结构及存储器组成(2)SAHF(StoreAHintoFlags)格式:SAHF功能:这条指令与上一条的操作刚好相反,它是把寄存器AH的指定位传送至标志寄存器的低8位的SF、Z
45、F、AF、PF和CF标志。因而这些标志的内容就要受到影响,这取决于AH中相应位的状态,但这条指令并不影响溢出标志OF、方向标志DF、中断屏蔽标志IF和追踪标志TF,即不影响标志寄存器的高位字节。第2章 微处理器的结构及存储器组成(3)PUSHF(PushFlags)格式:PUSHF功能:把整个标志寄存器FLAGS推入至栈指针所指的栈的顶部,同时修改栈指针,即SP-2SP。这条指令不影响标志位。第2章 微处理器的结构及存储器组成(4)POPF(POPFlags)格式:POPF功能:把现行栈指针所指的一个字,传送给标志寄存器FLAGS,同时相应地修改栈指针,即SP+2SP。这条指令执行后,80X8
46、6的标志位就取决于原栈顶部的内容。PUSHF和POPF这两条指令可保存和恢复标志寄存器。在子程序调用和中断服务中可利用这两条指令来保护和恢复标志位。另外,这两条指令也可以用来改变追踪标志TF。在80X86的指令系统中,没有直接能改变TF标志的指令,故若要改变TF标志,先用PUSHF指令把标志位入栈,然后设法改变栈顶存储单元的D8位(把整个标志看成一个字),再用POPF指令恢复。这样其余的标志不受影响,而只有TF标志按需要改变了。第2章 微处理器的结构及存储器组成(5)PUSHFD格式:PUSHFD功能:PUSHFD为标志寄存器入栈指令,用于将32位EFLAGS的内容压入堆栈。操作后,使(E)S
47、P减4。第2章 微处理器的结构及存储器组成(6)POPFD格式:POPFD功能:POPFD为标志寄存器出栈指令,用于将栈顶32位数弹出到EFLAGS中。说明:EFLAGS的恢复标志RF(D16)和虚拟8086方式标志VM(D17)不受POPF和POPFD指令的影响;I/O特权级标志IOPL(D13、D12)只有在当前代码段的特权级为0时才受影响;中断标志IF(D9)只有在当前特权级至少等于I/O特权级时才受影响。当压入堆栈的是8位数时,执行上述指令(其操作数宽度属性隐含为16位或32位)应对8位带符号数扩展到16位或32位。第2章 微处理器的结构及存储器组成2)标志位操作指令80 x86有7条
48、直接对标志单独进行操作的指令。其中三条是针对进位标志CF的,两条是针对方向标志DF的,两条是针对中断标志IF的。(1)CLC(ClearCarryFlags)格式:CLC功能:标志CF清0,即0CF。第2章 微处理器的结构及存储器组成(2)CMC(ComplementCarryFlags)格式:CMC功能:标志CF取反,即若CF=0,则1CF;若CF=1,则0CF。(3)STC(SetCarryFlags)格式:STC功能:标志CF置1,即1CF。第2章 微处理器的结构及存储器组成(4)CLD(ClearDirectionFlag)格式:CLD功能:标志DF清0,即0DF,则在串操作指令时,使
49、地址增量。(5)STD(SetDirectionFlag)格式:STD功能:标志DF置1,即1DF,则在串操作指令时,使地址减量。第2章 微处理器的结构及存储器组成(6)CLI(ClearInterruptenableFlag)格式:CLI功能:中断允许标志IF清0,即0CF,于是在80X86系统中,外部装置送至可屏蔽中断INTR引线上的中断请求,CPU就不予以响应,即中断屏蔽。但此标志对于非屏蔽中断NMI引线上的请求以及软件中断都没有影响。第2章 微处理器的结构及存储器组成(7)STI(SetInterrupt-enableFlag)格式:STI功能:标志IF置1,即1IF,则CPU就可以响
50、应出现在INTR引线上的外部中断请求。上述7条指令除对指定的标志位进行操作外,对其他标志位皆无影响。第2章 微处理器的结构及存储器组成2.2 存储器的组织存储器的组织2.2.1 基本概念基本概念 1常用的术语常用的术语1)位(bit)计算机中存储信息的基本单位是一个二进制位,简称位,是计算机所能表示的最基本最小的数据单元,英文为bit,可用小写字母b表示。一位可存储一位二进制数,它只能有两种状态,即“0”和“1”。由若干个二进制位的组合就可以表示各种数据、字符等。第2章 微处理器的结构及存储器组成2)字节(Byte)相邻的8位二进制数称为一个字节(1Byte8bit),英文为Byte,可用大写