570 likes | 796 Views
第三章 80486 微处理器. 80486 是 Intel 1989 年 4 月推出的 32 位微处理器。 在 Intel32 位微处理器的体系演化过程中,具有承上启下的地位。 32 位微处理器 是指在微处理器内部以 32 位寄存器为单位 进行数据处理。 而在 数据传送时 ,根据发送端与接受端处理数据的速度不同, 可能在 128 位、 64 位、 32 位、 16 位或 8 位二进制位为单位 ,进行数据的传送。 但在 内存中 总是以 8 位二进制位为单位 来存放数据。. 本章内容. 3 . 1 80486 的内部结构
E N D
第三章 80486微处理器 80486是Intel 1989年4月推出的32位微处理器。 在Intel32位微处理器的体系演化过程中,具有承上启下的地位。 32位微处理器是指在微处理器内部以32位寄存器为单位进行数据处理。 而在数据传送时,根据发送端与接受端处理数据的速度不同,可能在128位、64位、32位、16位或8位二进制位为单位,进行数据的传送。 但在内存中总是以8位二进制位为单位来存放数据。
本章内容 3.1 80486 的内部结构 3.2 80486的工作模式介绍 3.3 80486的外部引脚介绍
3、1 80486 的内部结构 3、1、1 基本结构介绍 7大部分组成: 总线接口部分 指令预取部分 译码部分 运算部分 存储管理部分 高速缓冲存储器
执行部件 ③ ② 浮点数部件 ⑤ ④ ⑦ ⑥ ①
1、运算部分——核心部件 • 包括执行部件或称定点运算部件(算术逻辑单元ALU、移位器和寄存器组)和浮点运算部件(浮点运算单元PLU、浮点寄存器组)。 • 执行部件负责从译码器队列取出指令的微指令地址,并解释执行该指令的微指令。
2、存储管理部分——为实现虚拟存储器而设置。2、存储管理部分——为实现虚拟存储器而设置。 组成:分段部件和分页部件 (1)分段部件提供对内存分段管理的硬件支持,可直接把指令指定的逻辑地址变换为物理地址,只实现对内存分段管理。也可以把指令指定的逻辑地址变换为线性地址,传送到分页部件,实现对内存的分段分页管理。它包含有CS,DS,SS,ES,GS,FS共6个段寄存器。 分段部件在地址变换过程中实现任务间的隔离保护以及虚拟内存技术。
(2)分页部件提供对内存分页管理的硬件支持,可直接把指令指定的逻辑地址变换为物理地址,只实现对内存分页管理;也可以将段部件输出的线性地址转换为物理地址,实现对内存的分段分页管理。当设置分页部件不工作时,段部件形成的线性地址就是物理地址。(2)分页部件提供对内存分页管理的硬件支持,可直接把指令指定的逻辑地址变换为物理地址,只实现对内存分页管理;也可以将段部件输出的线性地址转换为物理地址,实现对内存的分段分页管理。当设置分页部件不工作时,段部件形成的线性地址就是物理地址。 (3)虚拟内存是指以少量内存模拟大容量内存,以提高内存利用率。
3、高速缓存部件(Cache)——用于减少微处理器对内存的访问次数,提高程序运行速度。3、高速缓存部件(Cache)——用于减少微处理器对内存的访问次数,提高程序运行速度。 • 片内集成8KB容量的高速缓冲存储器,用来存放最近要使用的指令和数据。 • Cache系统截取80486对主存的访问,查询这次访问的数据或指令是否驻留在Cache中。如果查询到了,称为“命中”,CPU不必去访问片外的主存,而是直接从Cache中获得数据或指令。如果“未命中”CPU就必须访问主存获得数据或指令,将它们拷贝到Cache中。 • 在Pentium机型中,有二个高速缓存部件,一个用于存放程序,称程序缓冲器;一个用于存放数据,称数据缓冲器。 。
4、指令预取部件——对代码做取入、排队分析、分解等译码的前期准备工作。4、指令预取部件——对代码做取入、排队分析、分解等译码的前期准备工作。 • 代码预取操作是利用总线空闲周期,不断将后续指令从高速缓存中或内存中取入,放置在指令队列中,直到装满为止。 • 该部件有两个16字节的队列寄存器,它与Cache之间有一条128位(8*16)宽度的通道,因此,每次从cache最多可取16字节的信息。 • 这种指令的取入和分析执行的并行操作,避免了译码部件因总线忙碌不能及时取入后续指令,而暂时停机的可能性。
5、指令译码部件——把指令含义转换成相应的内部控制总线信号,指挥各部件协同工作。5、指令译码部件——把指令含义转换成相应的内部控制总线信号,指挥各部件协同工作。 • 从指令预取队列中取出指令进行译码。 • 将指令转换成微指令入口地址。 • 而将指令寻址信息送存储器管理部件,指挥各部件协同工作。
6、控制部件——产生微指令,对运算部件、存储管理部件、指令译码器发控制信号。6、控制部件——产生微指令,对运算部件、存储管理部件、指令译码器发控制信号。 • 微处理器的每一条指令都有一组相应的微指令,存放在控制ROM中,它们作为可以为机器识别的命令,用来产生对各部件实际操作所需的一系列控制信号。 • 译码器产生的微指令入口地址就是指向该组命令的地址。
7、总线接口部件——实现内部总线与外部总线的联系。7、总线接口部件——实现内部总线与外部总线的联系。 • 在内部时序信号控制下,将内部总线上的数据、控制信号或者地址送到外部总线; • 接收外部数据总线上的数据、控制信号,并可根据接收到的控制信号,产生总线周期输出相应的外部控制信号,又称握手联络信号。 • 支持突发总线控制,对主存中进行连续多个数据单元的传输加快数据的读写。 • 所谓突发总线控制是指在一个总线传送周期只进行一次寻址,然后连续传送多个数据单元的方式。
下图描述了32位微处理器内部的基本逻辑部件之间的基本联系、各部件的主要功能、数据在微处理器中的主要流动趋向。下图描述了32位微处理器内部的基本逻辑部件之间的基本联系、各部件的主要功能、数据在微处理器中的主要流动趋向。 所有部件都挂接在内部总线上,通过内部总线交换数据,也可以按粗尖头所示方式与相邻部件交换数据。每个部件都有自己的寄存器。
3.1.2 寄存器组 分4类: 基本结构寄存器 浮点寄存器 系统级寄存器 调试和测试寄存器 应用程序可访问 系统可访问
1.基本结构寄存器 • (1)通用寄存器——用于存放数据或地址,可进行32位、16位、8位、1位运算。 • 8个32位的: • EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP • 其低16位可独立使用,称:AX,BX,CX,DX,SI,DI,BP,SP。 • 可作为8位寄存器使用是:AH,AL,BH,BL,CH,CL,DH,DL。 • 它们之间的关系如图3.2(a)
8位 8位 累加器 基址 计数 数据 源变址 目标变址 基址指针 堆栈指针 返回 返回 返回
(2)段寄存器——指出代码和数据所用的存储空间。有6个16位的。(2)段寄存器——指出代码和数据所用的存储空间。有6个16位的。 • 代码段 CS——指示存放程序代码的地址空间 • 数据段DS,ES,FS,GS——指示数据的地址空间 • 堆栈段 SS——指示存放程序执行的中间结果的地址空间 见图3。2(b)
(3)指令指针——放相对于代码段基址的偏移量,指向计算机即将执行的指令。(3)指令指针——放相对于代码段基址的偏移量,指向计算机即将执行的指令。 32位的寄存器,称EIP,其低16位可独立使用,称IP。 在实模式下,IP 与CS组合后,形成20位的物理地址。 图3。2(C) (4)标志寄存器 EFLAGS:32位,各位可分为:(具体的在4.3节介绍) 标志位——指明程序执行时微处理器的实时状态。如:进位、溢出等。 控制位——由程序设计者设置,以控制8048进行某种操作。 其低16位可独立使用,称FLAGS,实模式下很有用。 图3。2(d)
2、系统级寄存器 控制着80486微处理器的片内cache、运算部分的浮点部件以及存储管理部件。含有4个控制寄存器和4个系统地址寄存器。(系统程序使用)。
(1)控制寄存器——CR0,CR1,CR2,CR3 为32位的。见书 P.20如图3.3(a) CR0——保存系统的控制和状态信息。 CR1——Intel为以后开发保留 CR2——保留了所检测到的上一个页面故障的32位线性地址。 CR3——保留页目录表的物理基址。 (2)系统地址寄存器——又称保护方式寄存器(仅在保护模式下使用)。见书 P.20图3.3(b) 全局描述符表寄存器——GDTR 中断描述符表寄存器——IDTR 局部描述符表寄存器——LDTR 任务状态寄存器——TR
3、调试与测试寄存器见图3.4(P.22) • 调试寄存器 DR0~DR3——用于设置数据存取断点和代码执行断点。 • 调试断点寄存器:DR6——指明断点的当前状态。 • 调试控制寄存器 DR7——选择调试功能和设置断点。 DR4,DR5保留。 • 测试寄存器 TR3~TR7(5个)——用于测试片内cache和用旁视缓冲区TLB。(P.317)
3.1.3 80486微处理器的地址空间 1.存储地址空间分为: 虚拟空间(又称逻辑空间),其地址为虚拟地址或逻辑地址,可达246字节(64TB) 线性空间:通过分段部件把虚拟空间变换为32位的线性空间。若分页部件未被选用,线性地址就是物理地址。 物理空间(又称主存空间):主存的实际空间,其地址称作物理地址或主存地址。可达232字节(4GB)。 地址变换如图3。5(P。22)
2.I/O地址空间 • 由216(64K)个地址(0000,0000H~0000,FFFFH)组成。与存储地址不重叠。 • 由M/IO(80486微处理器芯片)引脚区分。
3.2 80486的工作模式介绍 二种工作模式: • 实地址模式 • 保护虚拟模式 三种工作方式 • 实地址方式(REAL) • 保护方式(PROTECTED) • 虚拟8086方式 (VIRTUAL8086)
3.1.1 实地址模式 80486在加电和复位后就进入实地址方式,使80486与8086有相同的基本体系结构,功能增强。 1.存储空间及实地址模式下的编址 存储空间为220字节,即1M字节,线性地址就是物理地址。采用分段方式,每段大小固定为64K字节,存储段可以彼此覆盖,即一个64K字节的段如未用完,另一个段可以覆盖未用的存储区 (1) 物理地址的形成:
物理地址=段基址*16+偏移地址 左移4位有效地址 例:CS内容为1000H,IP为8888H,则实模式下的物理地址是 10000H+8888H=18888H 段基址:CS、DS、ES、SS。 偏移地址:IP、DI、SI、BP、SP等。 4位 16位 段寄存器值 16位 + 偏移量 20位 存储器物理地址的计算方法 物理地址
(2)段寄存器和偏移地址寄存器组合关系 CS 0000 代码段 IP DS或ES 0000 数据段 SI、DI或BX SS 0000 堆栈段 SP或BP 存储器
2.保留的地址空间 • (1) 中断向量区:地址为0000,0000H~0000,03FFH,每一个中断向量占4个字节。 • (2) 系统初始化区: • 地址为FFFF,FFF0H~FFFF,FFFFH。 • 当加电和复位时,物理地址自动置为FFFF,FFF0H,程序就从此地址开始执行。 • 当首次遇到段间转移或调用指令时,物理地址又自动置为000X,XXXXH,进入实地址方式下的物理地址空间。
3、在实地址方式下,运行的程序不分特权等级,实际上,实地址方式下的程序相当于工作在特权级0,除保护虚地址方式下的一些专用指令外,所有其他指令都能在实地址方式下运行。3、在实地址方式下,运行的程序不分特权等级,实际上,实地址方式下的程序相当于工作在特权级0,除保护虚地址方式下的一些专用指令外,所有其他指令都能在实地址方式下运行。 4、在实地址工作方式下,将CR0中PE位置1,80486就转移到保护模式。
3.2.2 保护虚拟地址模式(简称保护模式) 特点——支持多用户操作系统,能快速的进行任务切换和任务保护环境,同时也向下兼容。 1.保护概念 • 目的——避免程序间的相互干扰。 • 存储器分段分页管理机制不仅为存储保护和共享提供了硬件支持,而且,为实现虚拟存储器提供了硬件支持。 • 多种保护方式,最突出方式为环保护方式——在程序间及操作系统间实现隔离,即分配不同的虚地址空间。 • 实现方法——设立特权级。特权级分为4级(0~3),值越小,特权越高。图3。6 • 特权规则: 特权级P存储的数据,由≥P级的特权级进行访问 具有特权级P的程序和过程,只能由≤P级上执行的任务调用。
系统和应用程序分离 常用扩展程序 应用程序 系统服务程序 内核 0级 1级 3级 2级 返回
2.存储空间 (1)物理空间:在保护方式下,全部32根地址有效,可寻址达4G字节。 (2)虚拟存储地址空间:在物理上是由外存与内存结合提供,最大为246 =64TB的逻辑空间(编程空间)即 允许程序在246字节(64TB)的逻辑空间内运行。(一个任务可运行多达16KB个段,每个段最大可为4G字节,故一个任务最大可达64MM(TB)字节的虚拟地址)
段寄存器不再直接存放段基址,而是存放指示段基址的选择符。段寄存器中的T1位决定一个任务(程序)可以拥有一个全局描述符表和一个局部描述符表。段寄存器不再直接存放段基址,而是存放指示段基址的选择符。段寄存器中的T1位决定一个任务(程序)可以拥有一个全局描述符表和一个局部描述符表。 选择符用于选择某个描述符表中的描述符。13位选择码决定了每个描述符表中最多有213个描述符。因此一个任务可拥有的描述符数目最多为2×213个(即16KB个段)。 每个描述符指示存储器的位置、长度和访问权限等。当描述符中的G位为1时,相应的段长度为220×212 (即4GB)字节 故一个任务最多可拥有的编程空间为: 2×213×220×212=246=64TB
3、保护方式下的物理地址形成 用户使用的逻辑地址由一个16位的段选择符和一个32位的段偏移量(由指令寻址方式决定)组成。 在保护方式下,一个存储单元的地址也是由段基地址和段内偏移量两部分组成 。 在保护方式下,段基地址也是32位的,所以就不能由段寄存器的内容直接形成32位的段基地址,而是要经过转换。于是在内存中就有一个表,每一个内存段对应着表中的一项,此项中包含32位的段基址。 在80x86中,一个段用一个8字节的描述符来描述,多个描述符构成一个表,称为描述表。 由描述符中所规定的段基地址加上32位的段内偏移量就可以寻址一个存储单元,如图所示:
段寄存器 偏移量 段界 存储器操作数 }选择段 大到4GB 访问权 段内基址 界 限 基地址
3.2.3 虚拟8086方式 • 当标志寄存器中位VM置1时,进入虚拟8086方式。 • CPU的工作过程与保护方式下的工作过程相同。 • 允许同时执行8086的操作系统及应用程序以及486的操作系统及486应用程序,因此,多用户可同时使用一台486微处理器,用32位机的代码去模拟运行16位机的程序 。 • 与实方式相同的形式使用段寄存器,以形成线性基地址(即寻址的地址空间为1MB,段长64KB,段寄存器存放段基址)。通过分页功能,可把虚拟86下的1MB地址空间映象到486微处理器的4GB的物理空间的任意位置。
3.3 80486的外部引脚介绍 80486有168条引脚,采用网格阵列(PGA)封装,根据功能分为三大类: 数据线类 地址线类和 控制线类。 如图3.8
3.3.1 数据线类(D0~D31) • 32位(4个字节)双向和三态特性: • D0~D8 是最低字节 • D24~D31是最高字节。 • 可用BS8和BS16信号控制,可实现8位或16位的数据传送。
3.3.2 地址线类(A2~A3,A4~A31,BE0~BE3) • 1、A2~A31具有三态特性。 • 2、A2~A31和BE0~BE3(字节使能)构成32位的地址线。 • 指明某一个4字节(32位)存储单元地址或I/O端口(可寻址4GB的物理存储空间和64KB的I/O地址空间)。其中: • A0,A1由BE0~BE3的组合得到。见表3.1 • BE0~BE3指明是访问该4字节中那些字节,他们分别对应数据线: BE0 —— D0~D7 • BE1 —— D8~D15 • BE2 —— D16~D23 • BE3 —— D24~D31 见表3.2
8086对应的数据线 D0~D7 D8~D15 D0~D15 D0~D7 D8~D15 D0~D15 D8~D15 D0~D15 D8~D15 D0~D15 80486对应的数据线 D0~D7 D8~D15 D0~D15 D16~D23 D8~D23 D0~D23 D24~D31 D16~D31 D8~D31 D0~D31
8086存储 (L ,L) D0~D15 (L,H) D0~D7 (H,L) D8~D15 (H,H) 不使用 与8086的兼容性: 8086的两个引脚A0、BHE(数据线高位D8~D15的使能引脚),二者的组合确定存取数据线D0~D15的信息: (A0 BHE) n 80486由BE0~BE3的组合状态产生A0,A1及BHE。见表3.2
3、3、3 控制线类 • 1.时钟(CLK) • 是CPU的主频,为CPU提供基本的定时和内部工作频率。 • 所有外部的定时参数都是以CLK的上升沿为基准而确立的。 • 输入信号为TTL电平。 • 2、数据奇偶校验位组(DP0~DP3,PCHK) • (1)DP0~DP3为“数据奇偶校验位”输入输出引脚,分别对应数据线的4个字节。 • 当数据写入存储时,分别对每个字节加入偶校验位(有偶数个“1”为高电平); • 当从存储器读出数据时,自动对每个字节的数据进行偶校验。
(2)PCHK为“奇偶校验状态”输出,用于指示奇偶校验是否出错,该引脚为低电平时表示数据线有奇偶校验错。(2)PCHK为“奇偶校验状态”输出,用于指示奇偶校验是否出错,该引脚为低电平时表示数据线有奇偶校验错。 3、数据线宽度的控制组(BS16,BS8) 为输入引脚 BS8位低电平时,32位——>8位数据线。 BS16为低电平,BS8为高电平时,数据线宽度为16位。 此时,80486微处理器将数据变换为宽度比较小的数据多次传送。同时,BE0~BE3也会作出相应变化,以适应所确定的数据线宽度。
4、总线周期定义组(M/IO,D/C,W/R,LOCK,PLOCK)4、总线周期定义组(M/IO,D/C,W/R,LOCK,PLOCK) (1)总线周期——CPU对存储器或I/O端口完成一次读/写操作所需的时间。一个总线周期至少由两个CLK(时钟周期)组成。 (2)W/R:用来区别读还是写周期 (3)D/C:用来区别数据和控制周期 (4)M/IO:用来区别内存和IO周期 (5)LOCK:“总线锁定”输出,有效时,80486独占系统总线,不允许外信号打断当前总线周期的操作。 (6)PLOCK:“锁定”信号。有效时,微处理器可自动读、写大于32位的存储器操作(如访问浮点长字和对cache的操作),可由多个总线周期完成交换。 三者的组合决定当前的总线周期见表3.3 下一页
5、总线控制组(ADS,RDY)和基本时序 (1)ADS,RDY信号指明总线周期从何时开始,到何时结束ADS:“地址状态”输出。有效时,标志着一个总线周期的开始。该信号在本周期的第一个时钟被激活,后续时钟变为无效。 RDY:“已准备”输入,低电平指明当前的总线周期已结束 响应读请求时,该信号有效表明外部设备已在数据引脚上放好了数据。 响应写请求时,该信号有效表明外部设备已收到了80486的数据。
(2)基本时序 总线时序——指完成总线操作有关的地址线、数据线、读写控制线和时钟线等总线信号相互间的定时关系。 无等待状态的时序(2-2周期) 在T1期间,CPU发出ADS为低电平时,表示开始了一个总线周期,此时地址线及周期定义信号生效。如果外部已把有效数据放在数据线上以响应CPU的读请求,或者外部已接收了一个数据以响应CPU的写请求,则会在T2结束前发RDY信号。如图3.9(a) 插入等待状态的时序(3-3周期) 当 存储器或I/O的速度跟不上总线操作速度时,就不发出RDY信号,此时,CPU自动插入等待状态。如图3.9(b)