View
143
Download
3
Category
Preview:
DESCRIPTION
第三章 80486 微处理器. 80486 是 Intel 1989 年 4 月推出的 32 位微处理器。 在 Intel32 位微处理器的体系演化过程中,具有承上启下的地位。 32 位微处理器 是指在微处理器内部以 32 位寄存器为单位 进行数据处理。 而在 数据传送时 ,根据发送端与接受端处理数据的速度不同, 可能在 128 位、 64 位、 32 位、 16 位或 8 位二进制位为单位 ,进行数据的传送。 但在 内存中 总是以 8 位二进制位为单位 来存放数据。. 本章内容. 3 . 1 80486 的内部结构 - PowerPoint PPT Presentation
Citation preview
1
80486 是 Intel 1989 年 4 月推出的 32 位微处理器。 在 Intel32 位微处理器的体系演化过程中,具有承上启下的地位。
32 位微处理器是指在微处理器内部以 32位寄存器为单位进行数据处理。
而在数据传送时,根据发送端与接受端处理数据的速度不同,可能在 128 位、 64 位、 32位、 16 位或 8 位二进制位为单位,进行数据的传送。
但在内存中总是以 8 位二进制位为单位来存放数据。
第三章 80486 微处理器
2
本章内容3 . 1 80486 的内部结构 3 . 2 80486 的工作模式介绍 3 . 3 80486 的外部引脚介绍
3
3 、 1 80486 的内部结构 3 、 1 、 1 基本结构介绍7 大部分组成:
总线接口部分指令预取部分译码部分运算部分存储管理部分高速缓冲存储器
4
①
②
③
④⑤⑥ ⑦
执行部件
浮点数部件
5
• 包括执行部件或称定点运算部件(算术逻辑单元 A
LU 、移位器和寄存器组)和浮点运算部件(浮点运算
单元 PLU 、浮点寄存器组)。
• 执行部件负责从译码器队列取出指令的微指令地址,
并解释执行该指令的微指令。
1 、运算部分——核心部件
6
组成:分段部件和分页部件( 1 )分段部件提供对内存分段管理的硬件支持,可直接把指令指定的逻辑地址变换为物理地址,只实现对内存分段管理。也可以把指令指定的逻辑地址变换为线性地址,传送到分页部件,实现对内存的分段分页管理。它包含有 CS , DS , SS , ES , GS , FS
共 6 个段寄存器。分段部件在地址变换过程中实现任务间的隔离
保护以及虚拟内存技术。
2 、存储管理部分——为实现虚拟存储器而设置。
7
( 2 )分页部件提供对内存分页管理的硬件支持,可直接把指令指定的逻辑地址变换为物理地址,只实现对内存分页管理;也可以将段部件输出的线性地址转换为物理地址,实现对内存的分段分页管理。当设置分页部件不工作时,段部件形成的线性地址就是物理地址。( 3 )虚拟内存是指以少量内存模拟大容量内存,以提高内存利用率。
8
。
3 、高速缓存部件( Cache )——用于减少微处理器对内存的访问次数,提高程序运行速度。• 片内集成 8KB 容量的高速缓冲存储器,用来存放最近要使用的指令和数据。• Cache 系统截取 80486 对主存的访问,查询这次访问的数据或指令是否驻留在 Cache 中。如果查询到了,称为“命中”, CPU 不必去访问片外的主存,而是直接从 Cache 中获得数据或指令。如果“未命中” CPU 就必须访问主存获得数据或指令,将它们拷贝到 Cache 中。• 在 Pentium 机型中,有二个高速缓存部件,一个用于存放程序,称程序缓冲器;一个用于存放数据,称数据缓冲器。
9
4 、指令预取部件——对代码做取入、排队分析、分解等译码的前期准备工作。 • 代码预取操作是利用总线空闲周期,不断将后续指令从高速缓存中或内存中取入,放置在指令队列中,直到装满为止。 • 该部件有两个 16 字节的队列寄存器,它与 Cache之间有一条 128 位( 8*16 )宽度的通道,因此,每次从 cache 最多可取 16 字节的信息。 • 这种指令的取入和分析执行的并行操作,避免了译码部件因总线忙碌不能及时取入后续指令,而暂时停机的可能性。
10
5 、指令译码部件——把指令含义转换成相应的内部
控制总线信号,指挥各部件协同工作。
• 从指令预取队列中取出指令进行译码。
• 将指令转换成微指令入口地址。
• 而将指令寻址信息送存储器管理部件,指挥各部
件协同工作。
11
6 、控制部件——产生微指令,对运算部件、存储管理部件、指令译码器发控制信号。 • 微处理器的每一条指令都有一组相应的微指令,存放在控制 ROM 中,它们作为可以为机器识别的命令,用来产生对各部件实际操作所需的一系列控制信号。• 译码器产生的微指令入口地址就是指向该组命令的地址。
12
7 、总线接口部件——实现内部总线与外部总线的联系。• 在内部时序信号控制下,将内部总线上的数据、控制信号或者地址送到外部总线;• 接收外部数据总线上的数据、控制信号,并可根据接收到的控制信号,产生总线周期输出相应的外部控制信号,又称握手联络信号。• 支持突发总线控制,对主存中进行连续多个数据单元的传输加快数据的读写。• 所谓突发总线控制是指在一个总线传送周期只进行一次寻址,然后连续传送多个数据单元的方式。
13
下图描述了 32 位微处理器内部的基本逻辑部件之间的基本联系、各部件的主要功能、数据在微处理器中的主要流动趋向。
所有部件都挂接在内部总线上,通过内部总线交换数据,也可以按粗尖头所示方式与相邻部件交换数据。每个部件都有自己的寄存器。
14
3 . 1 . 2 寄存器组
分 4类:
基本结构寄存器
浮点寄存器
系统级寄存器
调试和测试寄存器
应用程序可访问
系统可访问
15
1 . 基本结构寄存器( 1 )通用寄存器——用于存放数据或地址,可进行 32 位、 16 位、 8 位、 1 位运算。•8 个 32 位的:EAX , EBX , ECX , EDX , ESI , EDI , EBP
, ESP•其低 16 位可独立使用,称: AX , BX , CX , D
X , SI , DI , BP , SP 。•可作为 8 位寄存器使用是: AH , AL , BH , BL
, CH , CL , DH , DL 。它们之间的关系如图 3.2 ( a )
16
8 位 8 位
累加器
基址
计数
数据
源变址
目标变址
基址指针
堆栈指针 返回
返回 返回
17
( 2 )段寄存器——指出代码和数据所用的存储空间。有 6 个 16 位的。• 代码段 CS—— 指示存放程序代码的地址空间• 数据段 DS , ES , FS , GS—— 指示数据的地址空间 • 堆栈段 SS—— 指示存放程序执行的中间结果的地址空间
见图3。2(b)
18
( 3 )指令指针——放相对于代码段基址的偏移量,指向计算机即将执行的指令。
32 位的寄存器,称 EIP ,其低 16 位可独立使用,称 IP
。在实模式下, IP 与 CS 组合后,形成 20 位的物理地址。
图3。2(C)( 4 )标志寄存器
EFLAGS : 32 位,各位可分为:(具体的在 4.3 节介绍)标志位——指明程序执行时微处理器的实时状态。如:进
位、溢出等。控制位——由程序设计者设置,以控制 8048 进行某种操
作。其低 16 位可独立使用,称 FLAGS ,实模式下很有用。
图3。2(d)
19
2 、系统级寄存器
控制着 80486 微处理器的片内 cache 、运算部分的浮点部件以及存储管理部件。含有 4 个控制寄存器和 4 个系统地址寄存器。(系统程序使用)。
20
( 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
21
3、调试与测试寄存器见图 3.4( P.22 )
• 调试寄存器 DR0~DR3—— 用于设置数据存取断点和代码执行断点。
• 调试断点寄存器: DR6—— 指明断点的当前状态。
• 调试控制寄存器 DR7——选择调试功能和设置断点。
DR4 , DR5 保留。
• 测试寄存器 TR3~TR7 ( 5 个)——用于测试片内 cach
e 和用旁视缓冲区 TLB 。( P.317 )
22
3. 1 . 3 80486 微处理器的地址空间 1 . 存储地址空间分为:
虚拟空间(又称逻辑空间),其地址为虚拟地址或逻辑地址,可达 246 字节( 64TB )线性空间:通过分段部件把虚拟空间变换为 32 位的线性空间。若分页部件未被选用,线性地址就是物理地址。物理空间(又称主存空间):主存的实际空间,其地址称作物理地址或主存地址。可达 232 字节( 4GB )。
地址变换如图 3 。 5 ( P 。 22 )
23
2. I/O 地址空间• 由 2 1 6 ( 64K )个地址( 0000 , 0000H~ 00
00 , FFFFH )组成。与存储地址不重叠。•由M/ IO ( 80486 微处理器芯片)引脚区分。
24
3. 2 80486 的工作模式介绍
二种工作模式:
• 实地址模式
• 保护虚拟模式
三种工作方式
• 实地址方式( REAL)
• 保护方式( PROTECTED)
• 虚拟 8086方式 ( VIRTUAL8086 )
25
3. 1 . 1 实地址模式
80486 在加电和复位后就进入实地址方式,使 80486 与 8086 有相同的基本体系结构,功能增强。
1 . 存储空间及实地址模式下的编址
存储空间为 220字节,即 1M字节,线性地址就是物理地址。采用分段方式,每段大小固定为 64K 字节,存储段可以彼此覆盖,即一个 64K 字节的段如未用完,另一个段可以覆盖未用的存储区
( 1 ) 物理地址的形成:
26
物理地址 = 段基址 *16+偏移地址 左移 4位 有效地址例: CS内容为 1000H, IP为 8888H,则实模式下的物理地址是 10000H+ 8888H= 18888H
段基址: CS 、 DS 、 ES 、 SS 。偏移地址: IP 、 DI 、 SI 、 BP 、 SP 等。
段寄存器值
偏移量+
物理地址
16 位 4 位
16 位
20 位存储器物理地址的计算方法
27
CS 0000
IP代码段
DS 或 ES 0000
SI 、 DI 或 BX
SS 0000
SP 或 BP
数据段
堆栈段
存储器
(2
)段寄存器和偏移地址寄存器组合关系
28
2 . 保留的地址空间 ( 1 ) 中断向量区:地址为 0000 , 0000H~ 0000 , 0
3FFH ,每一个中断向量占 4 个字节。( 2 ) 系统初始化区: 地址为 FFFF , FFF0H~ FFFF , FFFFH 。
• 当加电和复位时,物理地址自动置为 FFFF ,FFF0H ,程序就从此地址开始执行。• 当首次遇到段间转移或调用指令时,物理地址又自动置为 000X , XXXXH ,进入实地址方式下的物理地址空间。
29
3 、在实地址方式下,运行的程序不分特权等级,实际上,实地址方式下的程序相当于工作在特权级 0 ,除保护虚地址方式下的一些专用指令外,所有其他指令都能在实地址方式下运行。
4 、在实地址工作方式下,将 CR0 中 PE 位置 1 ,80486 就转移到保护模式。
30
3. 2 . 2 保护虚拟地址模式(简称保护模式) 特点——支持多用户操作系统,能快速的进行任务切换和任务保护环境,同时也向下兼容。
1 . 保护概念• 目的——避免程序间的相互干扰。• 存储器分段分页管理机制不仅为存储保护和共享提供了硬件
支持,而且,为实现虚拟存储器提供了硬件支持。• 多种保护方式,最突出方式为环保护方式——在程序间及操
作系统间实现隔离,即分配不同的虚地址空间。• 实现方法——设立特权级。特权级分为 4 级( 0~3),值越小,特权越高。图 3。 6
• 特权规则: 特权级P存储的数据,由≥P级的特权级进行访问 具有特权级P的程序和过程,只能由≤P级上执行的
任务调用。
31
应用程序
3级
常用扩展程序
内核0级
2级
系统服务程序
1级
系统和应用程序分离
返回
32
( 1 )物理空间:在保护方式下,全部 32 根地址有效,可寻址达 4G 字节。 ( 2 )虚拟存储地址空间:在物理上是由外存与内存结合提供,最大为 246 =64TB的逻辑空间(编程空间)即 允许程序在 246 字节( 64TB)的逻辑空间内运行。(一个任务可运行多达 16KB 个段,每个段最大可为 4G 字节,故一个任务最大可达 64MM ( TB
)字节的虚拟地址)
2 . 存储空间
33
段寄存器不再直接存放段基址,而是存放指示段基址的选择符。段寄存器中的 T1 位决定一个任务(程序)可以拥有一个全局描述符表和一个局部描述符表。
选择符用于选择某个描述符表中的描述符。 13 位选择码决定了每个描述符表中最多有 213 个描述符。因此一个任务可拥有的描述符数目最多为 2×213 个(即 16KB 个段)。
每个描述符指示存储器的位置、长度和访问权限等。当描述符中的 G 位为 1 时,相应的段长度为 220×212 (即 4GB )字节
故一个任务最多可拥有的编程空间为:
2×213×220×212=246=64TB
34
在保护方式下,一个存储单元的地址也是由段基地址和段内偏移量两部分组成 。
在保护方式下,段基地址也是 32 位的,所以就不能由段寄存器的内容直接形成 32 位的段基地址,而是要经过转换。于是在内存中就有一个表,每一个内存段对应着表中的一项,此项中包含 32 位的段基址。
在 80x86 中,一个段用一个 8 字节的描述符来描述,多个描述符构成一个表,称为描述表。
由描述符中所规定的段基地址加上 32 位的段内偏移量就可以寻址一个存储单元,如图所示:
3 、保护方式下的物理地址形成用户使用的逻辑地址由一个 16 位的段选择符和一个 32 位的段偏移量(由指令寻址方式决定)组成。
35
段寄存器 偏移量
访问权
界 限
基地址
存储器操作数
段内基址
段界
} 选择段大到 4GB
36
3. 2 . 3 虚拟 8086方式
• 当标志寄存器中位 VM置 1 时,进入虚拟 8086方式。
• CPU的工作过程与保护方式下的工作过程相同。
• 允许同时执行 8086 的操作系统及应用程序以及 486 的操作系统及 486应用程序,因此,多用户可同时使用一台 486 微处理器,用 32 位机的代码去模拟运行 16 位机的程序 。
• 与实方式相同的形式使用段寄存器,以形成线性基地址(即寻址的地址空间为 1MB,段长 64KB,段寄存器存放段基址)。通过分页功能,可把虚拟 86 下的 1MB地址空间映象到 486 微处理器的 4GB的物理空间的任意位置。
37
3. 2 . 4 三种工作方式的状态转变
38
3. 3 80486 的外部引脚介绍
80486 有 168 条引脚,采用网格阵列( PGA)封装,根据功能分为三大类:
数据线类地址线类和控制线类。
如图3.8
39
40
• 32 位( 4 个字节)双向和三态特性:D0~D8 是最低字节D24~D31 是最高字节。
• 可用 BS8 和 BS16信号控制,可实现 8 位或 16 位的数据传送。
3 . 3 . 1 数据线类( D0~ D31 )
41
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~D 7
BE1 —— D8~D15
BE2 —— D16~D23
BE3 —— D24~D31 见表3.2
42
返回
43
80486 对应的数据线
D0~D7
D8~D15
D0~D15
D16~D23
D8~D23
D0~D23
D24~D31
D16~D31
D8~D31
D0~D31
8086 对应的数据线
D0~D7
D8~D15
D0~D15
D0~D7
D8~D15
D0~D15
D8~D15
D0~D15
D8~D15
D0~D15
44
与 8086 的兼容性: 8086 的两个引脚 A0 、 BHE (数据线高位 D8~D15 的使能引脚),二者的组合确定存取数据线 D0~D15 的信息:
( A0 BHE ) 8086 存储
( L , L ) D0~D15
( L , H ) D0~D7
( H , L ) D8~D15
( H , H ) 不使用
80486 由 BE0 ~ BE3 的组合状态产生 A0 , A1 及 BHE 。见表3.2
45
3 、 3 、 3 控制线类 1 . 时钟( CLK ) 是 CPU 的主频,为 CPU 提供基本的定时和内部工作频率。 所有外部的定时参数都是以 CLK 的上升沿为基准而确立的。 输入信号为 TTL电平。2 、数据奇偶校验位组( DP0~ DP3 , PCHK )
( 1 ) DP0~ DP3 为“数据奇偶校验位”输入输出引脚,分别对应数据线的 4 个字节。• 当数据写入存储时,分别对每个字节加入偶校验位(有偶数个“ 1” 为高电平);• 当从存储器读出数据时,自动对每个字节的数据进行偶校验。
46
3 、数据线宽度的控制组( BS16 , BS8 )
为输入引脚 BS8 位低电平时, 32 位—— >8 位数据线。 BS16 为低电平, BS8 为高电平时,数据线宽度为 16 位。 此时, 80486 微处理器将数据变换为宽度比较小的数据多次传送。同时, BE0~BE3 也会作出相应变化,以适应所确定的数据线宽度。
( 2 ) PCHK 为“奇偶校验状态”输出,用于指示奇偶校验是否出错,该引脚为低电平时表示数据线有奇偶校验错。
47
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
下一页
48
返回
49
5、总线控制组( ADS , RDY )和基本时序
( 1 ) ADS , RDY信号指明总线周期从何时开始,到何时结束 ADS :“地址状态”输出。有效时,标志着一个总线周期的开始。该信号在本周期的第一个时钟被激活,后续时钟变为无效。 RDY :“已准备”输入,低电平指明当前的总线周期已结束
响应读请求时,该信号有效表明外部设备已在数据引脚上放好了数据。
响应写请求时,该信号有效表明外部设备已收到了 804
86 的数据。
50
( 2 )基本时序
总线时序——指完成总线操作有关的地址线、数据线、读写控制线和时钟线等总线信号相互间的定时关系。 无等待状态的时序( 2-2 周期)
在 T1 期间, CPU 发出 ADS 为低电平时,表示开始了一个总线周期,此时地址线及周期定义信号生效。如果外部已把有效数据放在数据线上以响应 CPU 的读请求,或者外部已接收了一个数据以响应 CPU 的写请求,则会在 T2 结束前发 RDY
信号。如图3.9(a)
插入等待状态的时序( 3-3 周期)当 存储器或 I/O 的速度跟不上总线操作速度时,就不发
出 RDY信号,此时, CPU自动插入等待状态。如图3.9(b)
51
返回
52
6 、总线仲裁信号组( HOLD , HLDA , BOFF ,BREQ )——决定总线的控制权
主设备与从设备——谁控制总线,谁为主设备
• 80486 微处理器访问存储器或 I/O 设备时,总线由 80486控
制。
• I/O 设备直接访问存储器,总线由 I/O 设备控制。
当非微处理器设备请求系统总线的控制权时,需要一
个仲裁机构确定总线的控制全交给谁。
53
• HOLD :“总线请求”输入。表示另一个总线主设备请求 CPU交出总线控制权。 。
• HLDA :“总线请求响应”输出。是 HOLD 的应答。表示 C
PU已让出总线控制权
• BREQ :“总线周期请求”信号,有效时,向其它总线主设备告示, CPU当前已提出一个总线请求,并正在占用总线。
• BOFF :“强制让出总线”信号,此信号强制 CPU让出总线控制权, CPU接到此信号时,立即放弃总线控制权,直至此信号无效时, CPU再启动被打断的总线周期。
(参见微型计算机技术及应用 戴梅萼等 清华大学出版社)
54
7、突发(或猝发)总线控制组( BRDY , BLAST ) 目的——为了支持与主存进行快速数据交换。
非突发总线周期方式下,传送一个数据单元,最少需要两个时钟周期。
在突发总线周期方式下,传送第一个数据单元需要 2 个时钟周期,而后传送的每个数据单元只需一个时钟周期。
BRDY 突发总线传送就绪输入信号,用于通知 CPU 当前突发总线传送一个数据单元已经完成。它和非突发传送方式下 RDY信号功能一样。
BLAST 突发总线传送完成输出信号,为低电平,表示突发总线传送方式最后一个数据已传送,当下一个 BRDY信号有效时,突发总线周期完成。
注:若 BRDY 和 RDY 同时出现时, BRDY被忽略,且提前结束突发周期。
55
8 .“地址屏蔽”引脚( A20M ) 80486 工作在实模式时,外部电路使该引脚有效,将使
80486 微处理器对内存的访问封装在低 20 位地址中,仿真 808
6 上的 1M 字节地址环境。
9 .“系统复位”引脚( RESET ) RESET迫使 80486CPU 从一个已知的状态开始工作,将
从 0FFFFFFF0H单元开始执行。复位后,微处理器内部寄存器值见表3.4 10 .“ Cache 使能”引脚( KEN )
该引脚确定当前周期从内存所读数据是否可存入片内 Cache 。其余引脚在后面章节介绍 思考题
56 返回
57
思考题 ( 作业):书 P31
3.4
3.6
3.7
3.10
Recommended