第 2章 典型微处理器第 2章 典型微处理器
2.1 微处理器的基本结构
2.2 8088/8086微处理器
2.3 80X86/Pentium微处理器返回主目录第 2章 典型微处理器第 2章 典型微处理器
2.1微处理器的基本结构微处理器 ( Microprocessor) 简称 μP,是采用大规模或超大规模集成电路技术做成的半导体芯片,上面集成了计算机的主要部件:控制器,运算器和寄存器组 。 整个微型计算机硬件系统的核心就是微处理器,所以它又称为中央处理器
( Central Processing Unit),即 CPU。 若字长 8位,即一次能处理 8位数据,称为 8位 CPU,如 Z80CPU; 字长为 16位的,
即一次能处理 16位数据,称为 16位 CPU,如 8086/8088、
80286等 。
图 2 1 是一个典型的 8位微处理器的内部结构,它一般由算术逻辑运算单元,寄存器组和指令处理单元等几个部分组成 。
第 2章 典型微处理器图 2-1 8位微处理器内部结构指令寄存指令译码时序和控制逻辑通 用寄存器组地 址寄存器组地址总线控制数据总线控制内部数据总线暂存器 累加器 标志寄存器
A L U
控制总线地址总线数据总线第 2章 典型微处理器
1,算术逻辑运算单元 ALU( Arithmetic Logic Unit)
算术逻辑运算单元实际上就是计算机的运算器,负责
CPU进行的各种运算 。 它们包括:
算术运算:加,减,增量 ( 加 1),减量 ( 减 1),比较,
求反,求补等运算,有些微处理器还可以进行乘,除运算 。
逻辑运算:逻辑与,逻辑或,逻辑非,逻辑异或,以及移位,循环移位等运算和操作 。
第 2章 典型微处理器
ALU的基本组成是一个加法器 。 在 ALU所进行的运算中,多数操作需要两个操作数,比如,加,和,逻辑与,
运算 。 但是,也有些运算只要一个操作数,比如,增量,
和,逻辑非,运算 。
对 8位 CPU来说,由累加器提供其中的一个操作数,
另一个操作数通过暂存器来提供 。 运算后,运算结果被返回到累加器,运算中状态的变化和运算结果的数字特征则被记录在标志寄存器中 。 根据运算后各个标志位的情况来决定程序下一步走向 。
第 2章 典型微处理器
2,寄存器组 ( RegisterSet)
寄存器是 CPU内部的高速存储单元,不同的 CPU配有不同数量,不同长度的一组寄存器 。 有些寄存器不面向用户,
我们称为,透明,寄存器,对它们的工作,用户不需要了解有些寄存器则面向用户,供编程序用,这些寄存器在程序中频繁使用,被称为可编程寄存器 。
由于访问寄存器比访问存储器快捷和方便,所以各种寄存器用来存放临时的数据或地址,具有数据准备,数据调度和数据缓冲等作用 。 从指令角度看,一般在含有两个操作数的指令中,必有一个为寄存器操作数,这样可以缩短指令长度和指令的执行时间 。
从应用角度看,可以将寄存器分成以下三类:
第 2章 典型微处理器
① 通用寄存器:在 CPU中数量最多 。 它们既可以存放数据,又可以存放地址,使用频度非常高,是调度数据的主要手段 。 其中,累加器的寻址手段最多,功能最强,使用最频繁 。
② 地址寄存器:主要用来存放地址,用于存储器的寻址操作,因而也称为地址指针或专用寄存器 。 如编址寄存器,堆栈指针,指令指针等 。 地址寄存器的功能比较单一,
在访问内存时,可以通过它形成各种寻址方式 。
③ 标志寄存器:用来保护程序的运行状态,也称为程序状态字寄存器 ( PSW) 。 在标志寄存器中 。 有些标志位反映运算过程中发生的情况,如运算中有无进位或借位,
有符号数运算有无溢出等 。 有些标志位反映运算结果的数字特征,如结果的最高位是否为 1,结果是否为 0等 。
第 2章 典型微处理器
3,指令处理单元指令处理单元是计算机的控制器,负责对指令进行译码和处理 。 它一般包括:
① 指令寄存器:用来暂时存放从存储器中取出来的指令 。
② 指令译码逻辑,负责对指令进行译码,通过译码产生完成指令功能的各种操作命令 。
③ 时序和控制逻辑:根据指令要求,按一定的时序发出,接收各种信号,控制,协调整个系统完成所要求的操作 。 这些信号包括:一系列定时控制信号,CPU的状态和应答信号,外界的请求信号和联络信号 。
第 2章 典型微处理器
2.2 8088/8086微处理器
2.2.1 8088微处理器的内部结构上一节讨论了 8位微处理器的基本组成和各部分的功能,这里将介绍 16位微处理器,如 Intel公司的 8088和 8086
微处理器 。 在 IBM公司设计微型计算机 IBM PC和 IBM
PC/XT时,8088被选作它们的 CPU。
严格说来,8088微处理器是一个准 16位微处理器,其内部数据处理为 16位字长,但其外部数据总线的宽度只有
8位 。 所以当它和外界发生数据交换时,每次只能输入或输出一个字节 。
第 2章 典型微处理器图 2 2 8088的内部结构图 2-2 是 8088的内部结构,可以分成总线接口单元
( BIU) 和执行单元 ( EU) 两大模块 。
AH AL
BH BL
CH CL
DH DL
SP
BP
SI
A L U
暂存器地址加法器
CS
DS
SS
ES
IP
内部通信寄存器
AX
BX
CX
DX
通 用寄存器地 址寄存器
DI
标志寄存器
EU
控制电路
1 2 3 4
指令队列
A L U
数据总线总线控制逻辑地址总线
20
8
数据总线
8 0 8 8
总线执行单元 EU 总线接口单元 B I U
16
第 2章 典型微处理器总线接口单元 BIU( Bus Interface Unit) 负责管理系统总线和长度为 4个字节的预取指令队列 。 CPU的所有对外操作均由 BIU负责进行,包括预取指令到指令队列,访问内存或外设中的操作数,响应外部的中断请求和总线请求等 。
执行单元 EU( Excution Unit) 负责指令的译码和执行 。
该单元无直接对外的接口,要译码的指令将从 BIU的指令队列中获取,除了最终形成 20位物理地址的运算需要 BIU
完成功能外,所有的逻辑运算,包括形成 16位有效地址 EA
的运算均由 EU来完成 。
第 2章 典型微处理器以上两个单元相互独立,构成两条作业流水线 。 在很多时候,两条流水线可以并行工作 。
8088与 8位的 CPU相比较,后者在指令译码前必须等待取指令操作 ( 简称取指 ) 的完成,而对于 8088来说,
要译码的指令已经预先取到 CPU的指令队列,所以不需要等待,取指,。 由于取指是 CPU最频繁的操作,每条指令都要取指一到数次 ( 与指令长度有关 ),所以 8088
的这种结构和作业方式节省了 CPU大量的取指等待时间,
提高了它的工作效率 。
第 2章 典型微处理器
2.2.2 总线接口单元 ( BIU)
总线接口单元由指令队列,指令指针 ( IP),段寄存器,
地址加法器和总线控制逻辑等构成 。 该单元管理 8088与系统总线的接口,负责 CPU对存储器和外设进行访问 。
1.
8088所连接的总线由 8位双向数据总线,20位地址线和若干控制线组成 。 CPU的所有对外操作必须通过 BIU和总线来进行 。 在 8088系统中,除了 CPU使用总线外,连在该总线上的其他总线请求设备,如 DMA控制器和协处理器等,也可以申请占用总线 。 所以,
第 2章 典型微处理器
① 取指操作,当指令队列有空缺或程序转移需要形成新的指令队列时,BIU通过总线进行取指 。
② 取指以外的其他总线访问,包括读写存储器操作数,
输入输出,响应中断时向 CPU传送中断向量等,这些操作应指令或外设的要求,由 BIU负责进行 。
③ 总线空闲:当指令队列已满,CPU又在进行内部操作时,总线呈空闲状态 。
④ 总线请求设备占用总线:总线请求设备 ( 如 DMA
控制器,协处理器等 ) 经过申请获得了总线的使用权,正在访问总线上的资源 ( 存储器 I/O设备 ) 。 其一般过程是:
总线请求设备先向 BIU提出申请,BIU响应后使总线高阻悬浮,于是总线请求设备接管总线,总线使用完毕,总线请求设备再将控制权交还 BIU。
第 2章 典型微处理器
2,指令队列和指令指针 ( IP)
8088的 BIU维护着长度为 4字节的指令队列,该队列按照,先进先出,FIFO( First In First Out) 的方式进行工作 。 当队列中出现一个字节或一个字节以上的空缺时,
BIU会自动取指弥补这一空缺;当程序发生转移时,BIU又会废除原队列,通过重新取指来形成新的指令队列 。
BIU的取指对象位于内存的代码段,在寻址时,其段地 址 由 段 寄 存 器 CS 提供,偏 移 地 址 由 指 令 指 针 IP
( Instruction Pointer) 提供 。 其中,指令指针 IP是一个取指专用的 16位地址寄存器,有时也被称为程序计数器 PC
( Program Counter) 。
第 2章 典型微处理器它有自动增量的功能,与 CS配合后总是指向下次要
,取,的指令字节 。 在 8位 CPU中,PC所指的对象既是下次要取的指令字节,也是下次要译码执行的指令字节 。 但是,在 8088中,,取指,和,指令的译码执行,是由两个单元分别独立完成的,二者可以并行操作,也就是说
EU正在执行某条指令时,BIU可能正在取另一条指令,所以 IP指示的只是取指的位置 。 IP不能由用户直接编程,但执行某些指令 ( 如转移,子程序调用或子程序返回 ) 或某些操作 ( 如中断调用或中断返回 ) 后,其值将发生变化 。
第 2章 典型微处理器
3,物理地址或逻辑地址
8088有 A19~A0共 20根地址线向外传送地址信号,用来寻址不同的存储单元和 I/O端口 。
在访问存储器时,其 20根地址线都有效;在访问外设时,仅 16根地址线 (A15~A0)有效 。 也就是说,8088管理着 1
MB的内存空间,同时也管理着 64 KB的 I/O端口空间 。 其中,
20位的内存地址称为物理地址,BIU在寻址内存时将使用这一地址,它由 BIU内 20位的地址加法器形成 。 但是,这一地址与用户在编程中使用的地址形式不同,后者被称为内存的
,逻辑地址,。
第 2章 典型微处理器既然 8088内部的运算器,可编程寄存器和内部的数据总线均为 16位,那么 20位的物理地址究竟是怎样形成的?
首先,8088对它的 1 MB的内存空间采用了分段管理的办法,
它将该内存空间分成许多,逻辑段,,每个逻辑段的最大长度为 64 KB。 采用两个 16位的数字来描述某个存储单元的确切位置,其具体形式为,段地址:偏移地址,,该形式就是我们在编程时使用的内存的,逻辑,地址 。 其中:
第 2章 典型微处理器
① 段地址 ( Segment Address),为一个 16位的无符号数,它描述了要寻址的逻辑段在内存中的起始位置 。 段地址通常被保存在 16位的段寄存器中,在 8088中使用 CS,SS、
DS和 ES等四个段寄存器 。 所有的内存地址都是 20位的,段地址也不例外,其形式应为 ××××× H。 但由于 8088规定了段地址必须能被 16整除,所以该地址实际形式为
×××× 0H,省略低位上的 0可以用 16位数来描述 。
第 2章 典型微处理器图 2 - 3 物理地址的形成地址加法器段地址左移4 位偏移地址
2 0 位物理地址段寄存器 有效地址 EA
19 0
15 0
19 0
第 2章 典型微处理器
② 偏移地址 ( Offset Address),为一个 16位的无符号数,它描述了要寻址的内存单元距本段段首的偏移量 。 在进行存储器寻址时,偏移地址可以通过很多方法形成,所以在编程中常被称作,有效地址 EA( Effective Address),。
由于各个逻辑段的长度不超过 64 KB,即偏移量最大不超过
FFFFH,所以也可以用一个 16位数来描述 。
从逻辑地址到物理地址的转换由 BIU中 20位的地址加法器自动完成,具体操作如图 2 - 3 所示 。 先将段寄存器提供的 16位段地址左移 4位,恢复为 20位地址,然后与各种寻址方式提供的 16位有效地址相加,最终得到 20位的物理地址 。
在访问内存时,用户编程使用的是 16位的逻辑地址,而
BIU使用的是 20位的物理地址 。
第 2章 典型微处理器
4,逻辑段和段寄存器在 8088可寻址的 1 MB的内存空间中,用户可以使用四种分工不同的逻辑段,即代码段,堆栈段,数据段和附加段 。
各段的位置由用户指派,它们可以彼此分离,也可以首尾相连,重叠或部分重叠 。 四个逻辑段的段地址分别存放在 CS、
SS,DS,ES等四个段寄存器中 。
① 代码段 ( Code Segment) 。 该逻辑段用来存放程序和常数 。 系统在取指时将寻址代码段,其段地址和偏移地址分别由段寄存器 CS和指令指针 IP给出 。 代码段也可用来存放数据,如某些固定的表格数据等,采用多种寻址方法和段跨越
( Segment override) 前缀,CS:,就可以访问到这些数据 。
第 2章 典型微处理器
② 堆栈段 ( Stack Segment) 。
在计算机的各种应用中,堆栈是一种非常有用的数据结构,它为保护数据,调度数据提供了重要的手段 。 例如,
在子程序调用时,可以用堆栈来保存返回地址和传递参数;
在任务切换时,可以利用堆栈来保护现场 。
系统在执行栈操作指令时将寻址堆栈段,这时,其段地址和偏移地址分别由段寄存器 SS和堆栈指针 SP提供 。 SP
是一个专用的 16位地址指针,它只能与段寄存器 SS配合采用段缺省 ( Default) 的方法来寻址堆栈段,并始终指向堆栈当前的栈顶 。
第 2章 典型微处理器在调用子程序时,常常通过堆栈来传递参数,访问这些参数多使用基址指针 BP。 BP也是一个 16位的地址指针,它同样只能与段寄存器配合,通过段缺省的办法来寻址堆栈段,
它可以支持多种寻址方式 。
③ 数据段 ( Data Segment) 。 该逻辑段用于数据的保存 。
用户在寻址该段内的数据时,可以缺省段的说明 ( 即缺省
DS),其偏移地址即有效地址 EA可通过直接寻址,间接寻址,基址寻址,变址寻址以及基址加变址寻址等多种寻址方式形成 。
第 2章 典型微处理器
④ 附加段 ( Extra Segment) 。 该逻辑段用于数据的保存 。 用户在访问该段内的数据时,其偏移地址同样可以通过多种寻址方式来形成,但在偏移地址前一般要加上段的说明 ( 即段跨越前缀 ES) 。 唯一的例外是串操作,此时系统将默认源操作数和目的操作数分别位于数据段和附加段,
并用 SI和 DI两个变址寄存器对它们分别进行间接寻址 。
由于各个逻辑段分工明确,程序和数据一般是连续存放的,需要跨段访问的机会不多,所以在很多时候,用户并不需要在程序中指明当前使用的究竟是哪个逻辑段,也不需要经常改变段地址 。 这样,提高了用户的编程效率和程序执行效率 。
第 2章 典型微处理器
2.2.3 执行单元 ( EU)
执行单元由 ALU,通用寄存器,地址寄存器,标志寄存器和指令译码逻辑等构成,它负责指令的译码执行和数据运算 。
1,指令译码被 EU译码的指令来自 BIU的预取指令队列,与 BIU相连外,EU没有对外的接口 。 指令译码后,CPU所要进行的操作可以分成以下两类:
① 内操作:所有 8位,16位的算术逻辑运算都将由 EU来完成,其中包括 16位有效地址的计算 。 注意,20位物理地址的计算由 BIU负责形成 。
② 外操作:所有指令要求的读,写存储器或对外设的操作,仍将通过 BIU和总线来进行 。
第 2章 典型微处理器
2.
EU中设计了四个通用寄存器,AX,BX,CX和 DX,
其长度均为 16位 。 但是它们都可以拆成高 8位和低 8位两个寄存器来使用,比如 AX可以拆成 AH和 AL两个独立的 8位寄存器 。 在 8088的指令系统中,些通用寄存器的一般用法和隐含用法如表 2 - 1 所示 。
第 2章 典型微处理器表 2 - 1通用寄存器的用法第 2章 典型微处理器
3,地址寄存器
EU中设计了四个 16位的地址寄存器,SP,BP,SI和 DI,
其中前两个称为地址指针,后两个称为变址寄存器 。 它们在
8088指令系统中的应用见表 2-2。
8088的堆栈及堆栈操作的特点:
① 双字节操作,每次进,出栈的数据均为两个字节 。
不论是源操作数还是目的操作数,也不论是存储器操作数还是寄存器操作数 。 在存放时都按高字节对应高地址,低字节对应低地址的原则进行 。
② 向低地址生成,堆栈向低地址方向生长 。 即数据进栈时,栈指针 SP向低地址方向移动 ( 减 2) ;反之,数据出栈时,SP向高地址方向移动 ( 加 2) 。
第 2章 典型微处理器表 2 - 2地址寄存器在 8088指令系统中的应用第 2章 典型微处理器
4.
EU中设计了一个 16位的标志寄存器,用来存放程序状态字 PSW( Program Status Word),所以该寄存器又称为程序状态字寄存器 。 如图 2 -4 所示,PSW中定义了九个有效位,各个标志位的含义见表 2- 3。
图 2- 4 程序状态字寄存器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
第 2章 典型微处理器表 2-3 PSW各标志位含义第 2章 典型微处理器
DF,IF,TF等三位为控制标志位,用户可以通过专门的指令设置它们为 0或 1,从而控制 CPU的运行状态 。
OF,SF,ZF,AF,PF,CF等六位为状态标志位,
它们将自动记录程序的运行状态,通过对它们的判断可以决定程序下一步的走向 。 许多指令的执行都可以改变这些状态标志位,但是用户不能对它们进行直接的编程控制 。
第 2章 典型微处理器图 2 - 5 8088的引脚
2.2.4 8088 CPU引脚及其功能
8088的引脚如图 2- 5 所示 。
G N D
A
14
A
13
A
12
A
11
A
10
A
9
A
8
AD
7
AD
6
AD
5
AD
4
AD
3
AD
2
AD
1
AD
0
N M I
I N T R
C L K
G N D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
V
CC
A
15
A
16
/S
3
A
17
/S
4
A
18
/S
5
A
19
/S
6
S S 0 ( H I G H )
M N / M X
RD
H O L D ( R Q / G T
0
)
H L D A ( R Q / G T
1
)
W R ( L O C K )
I O / M ( S
2
)
D T / R ( S
1
)
D E N ( S
0
)
A L E ( Q S
0
)
I N T A ( Q S
1
)
T E S T
R E A D Y
R E S E T
第 2章 典型微处理器
8088有 40条引脚,双列直插式封装 。 为了解决多功能与引脚的矛盾,8088内部设置了若干个多路开关,使某些引脚具有多种功能 。 引脚功能的转换分为两种情况:一种是分时复用,在总线周期的不同时钟周期功能不同;另一种是按工作模式来定义引脚功能,同一引脚在最小模式和最大模式下,接不同的信号 。
8088在和存储器,I/O接口组成一个计算机系统时,根据使用环境不同,8088 CPU有两种工作模式:最小工作模式和最大工作模式 。
第 2章 典型微处理器最小模式系统是指系统通常只有一个微处理器,即
8088 CPU,系统的控制信号由 8088直接产生 。 最大模式系统又称多处理器系统,工作在最大模式的时候,系统中存在两个或两个以上的微处理器,系统的控制信号大部分是由总线控制器 8288产生的 。
在不同的工作模式下,8088的 24~31引脚的含义不同,
40根引脚分成三类 。
(1) 最小 /最大工作模式公用引脚 。
AD7~ AD0,地址/数据线,双向,三态 。 这是 8根分时复用多功能引脚 。 在访问存储器和 I/ O的总线周期 T1状态,用作地址总线低 8位 (A7~ A0),输出所访问的存储器或
I/O口地址,然后内部的多路转换开关将它们转换为数据总线 (D7~ D0),用来传送数据,直到总线周期结束 。 在 DMA
方式,这些引脚浮空 。
第 2章 典型微处理器
A15~ A8:地址线,输出,三态 。 这些地址在整个总线周期内保持有效 ( 即输出稳定高 8位地址 ) 。 在 DMA方式时,
这些引脚浮空 。
A19/ S6,A18/ S5,A17/ S4,A16/S3:地址/状态线,输出,三态,这是四根分时复用的多功能引脚 。 在存储器操作的总线周期 T1状态,它用作地址总线高 4位,在 I/ O操作时,
由于 I/ O口只用 16位地址,这些线为低电平 。 在总线周期
T2~ T4期间,输出状态信息,S6总为低电平,S5是可屏蔽的中断允许标志,它在每一个时钟周期开始时被修改,S4和 S3
用以指示是哪一个段寄存器正在被使用 。 在 DMA方式,这些引脚浮空 。
S4S3= 00表示 CPU当前使用 DS,S4S3= 01表示 CPU当前使用 SS。
第 2章 典型微处理器
S4S3= 10表示 CPU当前使用 CS,S4S3= 11表示 CPU当前使用 ES。
CLK:时钟信号,输入 。 CLK为 CPU和总线控制提供定时基准 。
RESET:复位信号,输入,高电平有效 。 复位信号引起处理器立即结束现行操作,把内部标志寄存器 FLAG,段寄存器 DS,SS,ES以及指令指针 IP置 0,代码段寄存器 CS
置为 FFFFH。 为了保证内部的复位过程的完成,RESET信号至少在 4个时钟周期内保持高电平 。 当 RESET恢复低电平时,CPU就从 FFFF0H单元开始启动 。
,读信号,输出,低电平有效 。 信号有效时,
表示 CPU进行存储器读或 I/O读 ( 取决于 IO/ 信号 ) 。 在
DMA方式时,此线浮空 。
CD CD
M
第 2章 典型微处理器
READY,准备就绪信号,输入,高电平有效 。 当被访问的存储器或 I/ O端口无法在 CPU规定的时间内完成数据传送时,应使 READY信号处于低电平,这时 CPU进入等待状态 。
:测试信号,输入,低电平有效 。 当执行 WAIT指令时,每隔 5个时钟周期,CPU就对 信号进行采样 。
若它为高电平,就使 CPU重复执行 WAIT指令而处于等待状态,一直到它变为低电平时,CPU才脱离等待状态,继续执行下一条指令 。
TEST
TEST
第 2章 典型微处理器
INTR:可屏蔽中断请求信号,输入,高电平有效 。
CPU在每条指令的最后一个时钟周期采样 INTR信号,若发现 INTR引脚为高电平,同时 CPU内部中断允许标志 IF=1,
CPU就进入中断响应周期 。
NMI:不可屏蔽中断请求信号,输入,边沿触发 。 □
请求不能被软件屏蔽,只要引脚上出现从低电平到高电平的变化,CPU在现行指令结束后响应中断 。
MN/,该引脚规定 8088处于何种工作方式 。 若该引脚接电源 ( +5 V),则工作在最小模式系统;若该引脚接地,则 8088工作于最大模式系统 。
(2) 8088最小模式系统 。
8088最小模式系统如图 2 - 6 所示 。 系统使用 8286作为数据总线的双向驱动器,使用 2~ 3片 8282作为地址锁存器 。
MX
第 2章 典型微处理器图 2- 6 8088最小模式系统结构示意图
C L K R E A D Y R E S E T
R E S
X
1
X
2
8 2 8 4
RD
WR
I N T A
I O / M
M N / M X
A L E
A
19
~ A
16
AD
15
~ AD
0
S TB
8 2 8 2
OE
8 2 8 6
D T/ R
T
D E N
OE
存储器 I / O
AB
DB
CB
V
CC
V
CC
8 0 8 8
第 2章 典型微处理器
ALE:地址锁存允许信号,输出,高电平有效 。 在总线周期的 T1期间,ALE为高电平,在 ALE的下降沿将在地址/
状态线 ( A19~ A16) 和地址/数据线 ( AD7~ AD0) 上出现的地址信号,锁存到 8282地址锁存器中 。
,数据允许信号,输出,低电平有效 。 在使用 8286
作为数据总线双向驱动器的最小模式系统中,它作为 8286的输出允许信号,在存储器访问周期,I/ O访问周期或中断响应周期有效 。 DMA方式时,此线浮空 。
DEN
第 2章 典型微处理器
DT/,数据发送/接收控制信号,输出 。 在使用 8286
作为数据总线双向驱动器的最小模式系统中,DT/ 定数据传送方向:当 DT/ =1时,发送数据 ( CPU写 ) ;当 DT/
=0时,接收数据 ( CPU读 ) 。 DMA方式时,此线浮空 。
IO/,输出信号 。 当输出低电平时,访问存储器;当输出高电平时,访问 I/ O。 DMA方式时,此线浮空 。
:写信号,输出,低电平有效 。 当 信号有效时,
表示 CPU进行存储器写或 I/O写 ( 取决于 IO/ 信号 ) 。
DMA方式时,此线浮空 。
中断响应信号,输出,低电平有效 。 它在每一个中断响应周期的 T2,T3和 TW状态有效 。
R
R
R
M
WR
M
WR
INTA
第 2章 典型微处理器
HOLD:总线保持请求信号,输入,高电平有效 。 它是系统中其它处理器向 CPU发出的总线请求信号 。
HLDA:总线保持响应信号,输出,高电平有效 。 当
CPU同意让出总线控制权时,发出总线响应信号 。
,状态信号,输出 。 用在最小模式系统,它与 IO/,DT/ 一起反映现行总线周期状态 。
由于 8088的 AD7~ AD0是地址/数据复用线,在发数据之前,必须先将地址锁存起来,可利用锁存器 8282。 它有 8根输入线,8根输出线及两个控制信号 STB和 。 当
STB的电平由高变低时,芯片将输入端的信息存入锁存器,
为输出控制信号;当它为低电平时,将锁存器里的信息送到输出端,为此,CPU的 ALE需接到 STB上 。
0SS 0SS
M R
OE
OE
第 2章 典型微处理器在 IBM PC/ XT中,8088 CPU的数据线是经过数据总线驱动器接到数据总线上的,由于数据是双向传输,因此要采用双向总线驱动器 。 常用的 8位双向总线驱动器有 8286
/ 8287。 8286的 A7~ A0引脚接 8088 CPU的 AD7~ AD0,其
B7~ B0引脚接到数据总线 D7~ D0,而 8088 CPU的 DT/ 接
8286的 T引脚 。 当 DT/ 为高电平时,数据从 8088 CPU发送到系统总线上;而当 DT/ 为低电平时,CPU则从系统数据总线上接收数据 。 8286的 引脚与 8088 CPU的 引脚相接,在 端为低电平期间,才允许数据输入/输出 。
(3)
8088最大模式系统如图 2 - 7 所示。
R
R
R
OE DEN
DEN
第 2章 典型微处理器图 2 – 7 8088最大模式系统结构示意图
R E S E T
R E S
X
1
X
2
8 2 8 4
S
0
S
1
S
2
M N / M X
A
19
~ A
16
S T B
8 2 8 2
OE
8 2 8 6
T
OE
存储器 I / O
AB
DB
CB
V
CC
V
CC
C L KR E A D Y
S
0
S
1
S
2
D E N
D T / R
A L E A I O W C
A M W C
I O R C
I O W C
M W T C
C L K
M R D C
I N T A
AD
15
~ AD
0
PC
系统总线
8 0 8 8
8 2 8 8
1
第 2章 典型微处理器
、,,输出 CPU状态信号,低电平有效 。
8288利用这些信号的不同组合,产生访问存储器或 I/ O端口的控制信号 。
8288总线控制器是专门为 8086/ 8088构成最大模式而设计的,用以提供有关的总线命令,它具有较强的驱动能力 。
8288根据,,状态信号译码后,产生以下控制信号:
,CPU对中断请求的响应信号,。
、,,,两组读写控制信号,
I/ O的读/写 。
2S 1S
0S
2S 1S
0S
INTA
MRDC MWTC IORC IOWC
第 2章 典型微处理器
,,超前的 I/ O写命令和超前的内存写命令,其功能分别和 与 一样,只是前者将超前一个时钟周期发出 。
ALE,地址锁存允许信号,功能和最小模式中 ALE
相同 。
,分别为数据允许信号和数据发/收控制信号,和 DT/,
的相位和最小模式中的 相反 。
,,总线请求/允许控制信号,
双向,低电平有效,这两个引脚供外部的主控设备用来请求获得总线控制权 。 当两者同时有请求时,优先输出允许信号 。
AIOWC AMWC
AIOWC AMWC
DEN
RDT /DEN
R DEN
DEN
0/GTRQ 1/ GTRQ
0/GTRQ
第 2章 典型微处理器请求和允许的次序如下:
① 引脚向 8088发出宽度为一个时钟周期的负脉冲,表示请求控制总线,相当于最小模式的 HOLD。
② CPU在当前总线周期的 T4或下一个总线周期的 T1
状态输出宽度为一个时钟周期的负脉冲,通知主控设备:
8088同意让出总线 ( 相当于最小模式的 HLDA) 。 于是,
从下一个时钟周期开始,CPU释放总线 。
GTRQ /
第 2章 典型微处理器
③ 主控设备总线操作结束后,输出宽度为一个时钟周期的脉冲给 CPU,表示总线请求结束,CPU在下一个时钟周期开始重新控制总线 。
,总线封锁信号,输出,低电平有效 。
为低电平时,表示 CPU要独占总线使用权 。 这个信号是用指令在程序中设置的,如果一条指令中有前缀,LOCK”,则当
8088执行这条指令时,引脚为低电平,并保持到指令结束,以避免指令执行过程被中断 。 在 DMA方式,此线浮空 。
QS1,QS0,指令队列状态信号,输出,高电平有效 。 QS1、
QS0提供一种状态,允许外部追踪 8088
LOCK
LOCK
第 2章 典型微处理器当 QS1QS0=00时,无操作;
当 QS1QS0=01时,取指令队列中第一操作码;
当 QS1QS0=10时,清除队列缓冲器;
当 QS1QS0=11时,取指令队列中后续字节。
第 2章 典型微处理器
2.2.5 8088的典型时序一个微机系统为了实现自身的功能,需要执行多种操作,这些操作均在时钟的同步下,按时序一步一步进行 。
了解 CPU的操作时序,是掌握微机系统的重要基础,也是了解系统总线功能的手段 。
(1) 指令周期,总线周期和 T状态 。 计算机的操作是在系统时钟 CLK控制下严格定时的,每一个时钟周期称为一个,T状态,,T状态是总线操作的最小时间单位 。 CPU从存储器或 I/ O端口存取一个字节所需的时间称为,总线周期,。 CPU执行一条指令所需的时间称为,指令周期,。
第 2章 典型微处理器
8088的指令长度是不等的,最短为一个字节,最长为六个字节 。 显然,从存储器取出一条六字节长的指令,仅仅是,取指令,就需要六个总线周期,指令取出后,在执行阶段,还需花费时间 。
虽然各条指令的指令周期不同,但它们都是由存储器读/写周期,I/ O端口读/写周期,中断响应周期等基本的总线周期组成 。
8088与外设进行读/写操作的时序同 8088与存储器进行读/写操作的时序几乎完全相同,只是 IO/ 信号不同 。
当 IO/ 信号为高电平时,8088与外设进行读/写操作;
当 IO/ 信号为低电平时,8088与存储器进行读/写操作 。
这里我们仅介绍存储器的读/写周期 。
M
M
M
第 2章 典型微处理器
(2) 存储器读周期 。 存储器读周期时序如图 2 - 8 所示 。
一个基本的存储器读周期由四个 T状态组成 。
图 2 - 8存储器读周期时序
C L K
I O / M
A
19
~ A
16
/S
6
~ S
3
A
15
~ A
8
AD
7
~ AD
0
A L E
RD
D T/ R
D E N
T
1
T
2
T
3
T
4
高 = IO 低 = M
A
19
~ A
16
S
6
~ S
3
A
7
~ A
0
D A T A IN
第 2章 典型微处理器
T1状态:
① IO/ 变为有效 。 由 IO/ 信号来确定是与存储器通信还是与外设通信 。
② 从 T1开始,A19/ S6~ A16/S3,A15~ A8,AD7~
AD0线上出现 20位地址 。
③ ALE有效,地址信息被锁存到外部的地址锁存器 8282
中 。
④ DT/[AKR-]为低电平 。
T2状态:
① A19/ S6~ A16/S3复用线上由地址信号变为状态信号 。
第 2章 典型微处理器
④ 信号变为低电平,和 DT/ 一起作为双向数据总线驱动器 8286的选通信号 。 打开它的接收通道,使数据线上的信息得以通过它传送到 CPU的 AD7~ AD0。
T3状态:
CPU在 T3的下降沿采样数据线获取数据 。
T4
8088使控制信号变为无效 。
DEN R
第 2章 典型微处理器如果存储器工作速度较慢,不能满足正常工作时序要求,则须采用一个产生 READY信号的电路,使 8088在 T3和
T4状态之间插入 TW状态 。 8088在 T3状态前沿采样 READY
线,若为低,则 T3状态结束后插入 TW状态,以后在每一个
TW前沿采样 READY线,直到它变为高电平,在 TW结束后进入 T4状态 。 在 TW状态 8088的控制和状态信号不变 。 如图
2 - 9 所示 。
第 2章 典型微处理器图 2 –9 有 TW的存储器读周期时序
D A T A IN
T
1
T
2
T
3
T
W
T
4
C L K
IO / M 高 = IO 低 = M
A
19
~ A
16
S
6
~ S
3
A
19
~ A
16
/S
6
~ S
3
A
15
~ A
8
AD
7
~ AD
0
A L E
RD
D T / R
D E N
R E A D Y
A
7
~ A
0
R E A D Y
W A I T
第 2章 典型微处理器
(3) 存储器写周期 。
存储器写周期如图 2 - 10 所示,它也由四个 T状态组成 。
存储器写周期和存储器读周期的时序基本类似 。 不同的是:
图 2 – 10 存储器写周期
C L K
I O / M
A
19
~ A
16
/S
6
~ S
3
A
15
~ A
8
AD
7
~ AD
0
A L E
WR
D E N
T
1
T
2
T
3
T
4
高 = IO 低 = M
A
19
~ A
16
S
6
~ S
3
A
7
~ A
0
D A T A O U T
D T / R
第 2章 典型微处理器
① 在 T2状态,也即当 16位地址线 A15~ A0己由 ALE
锁存后,CPU就把要写入存储器的 8位数据,放在 AD7~
AD0上 。
② 在 T2状态,信号有效,进行写入 。
③ DT/ 在整个写周期输出高电平,它和 =0
相配合,选通双向数据总线驱动器 ( 8286) 的发送通道,
使 AD7~ AD0的数据得以通过它发送到数据线上 。
具有 TW状态的存储器写周期时序与具有 TW状态的存储器读周期时序类似 。
WR
R DEN
第 2章 典型微处理器图 2 - 118086的存储器组织
2.2.6 8086微处理器
8086与 8088同属 8086CPU家族,二者具有兼容的指令系统,其结构和引脚非常相似 。 它们之间主要存在以下不同点 。 CS A
19
~ A
1
D
7
~ D
0
偶存储体
CS A
19
~ A
1
D
7
~ D
0
奇存储体
D
7
~ D
0
D
1 5
~ D
8
A
0
A
1 9
~ A
1
B H E
第 2章 典型微处理器
① 与 8088准 16位微处理器不同,8086是一个真正的 16
位微处理器,其内部数据处理和外部数据总线均为 16位,
拥有 16位的地址 /数据复用总线 AD15~AD0。 在读写存储器或 I/O口时,既可以访问一个字节 ( 字节访问 ),也可以同时访问两个字节 ( 字访问 ) 。
② 8086的数据线的宽度为 16位,其存储器的组织形式不同于 8088。 图 2 - 11是 8086的存储器组织 。 它分为偶,
奇两个存储体 。 所有的偶地址单元集中于偶存储体,所有的奇地址单元集中于奇存储体 。
第 2章 典型微处理器偶,奇存储体分别用引脚信号 A0=0 =0来选中,
其数据线分别连接着 AD7~AD0和 AD15~AD8。 在进行字访问时,偶地址的字访问可以一次完成,因为要访问的存储体与数据总线是,对齐,的;奇地址的字访问则要分两次来完成,
因为要访问的存储体和数据总线无法一次,对齐,,如表 2
- 4 所示 。
BHE
第 2章 典型微处理器表 2- 4 8086
③ 8088的第 34 ( HIGH),8086的对应引脚为 /S7,该引脚复用:
0SS
BHE
第 2章 典型微处理器在 T1时输出 信号,有效时表示高 8位复用总线
AD15 ~AD8将在后续的总线周期 ( T2~T4) 里传送数据 。
由于 仅在 T1时出现,所以系统需要对它进行锁存;
在 T2~T4,该引脚输出状态信号 S7,系统未定义它的功能 。
应用中,A0=0被用来选通偶存储体,或选通连接 D7~D0
的 I/O端口 。 相比之下,由于 8088数据总线的宽度为 8位,
每次只传送 8位数据,。 表 2 -4 列出了 8086在进行,字节访问,和,字访问,和 A0两个信号的输出情况 。
BHE
BHE
BHE
BHE
第 2章 典型微处理器
④ 8088指令队列的长度为 4字节,当队列中有一个字节的空缺时,它将自动取指;队列中只要有一个指令字节,
8088即开始执行指令 。 8086的指令队列长度为 6B,在出现两个字节的空缺时,自动取指;当队列中有两个指令字节时,开始执行指令 。 这是由于 8086的数据总线宽度为 16
位,一次可以读取两个字节的缘故 。
第 2章 典型微处理器
2.3 80X86/Pentium微处理器
2.3.1 80286微处理器
1982年,Intel公司推出了高性能的 16位微处理器 80286,
该芯片的内部集成了约 13万个晶 以 8 MHz的时钟进行工作,
它有 68条引脚 。
与 8086相比,80286具有以下特点:
① 它有 24根地址线,最多可寻址 16 MB的实际存储空间和 64 KB的 I/O地址空间。
第 2章 典型微处理器
② 数据线和地址线完全分离 。 在一个总线周期中,当有效数据出现在数据总线上的时候,下一个总线周期的地址已经送到地址总线,形成总线周期的流水作业 。 其总线周期基本上由 TS( Send Status) 和 TC( Perform Command) 两个时钟周期组成,明显提高了数据访问的速度 。
③ 具有,实地址方式 ( Real Address Mode),和,保护虚地址方式 ( Protected Virtual Address Mode),两种工作方式,这两种方式又简称为,实方式,和,保护方式,。
实方式用于向上兼容 8086,此时 80286的 24根地址线中只有低 20位地址有效,其寻址空间和寻址方法与 8086完全相同,即 8086的应用程序不需要修改就可以移到该方式下运行,
但是速度要快 。
第 2章 典型微处理器保护方式体现了 80286的特色,主要是对存储器管理,
虚拟存储和对地址空间的保护 。 在该方式下,它的 24根地址线全部有效,可寻址 16 MB的实存空间;通过存储管理和保护机构,可为每个任务提供多达 1 GB的虚拟存储空间和保护机制,有力地支持了多用户,多任务的操作 。
④ 在保护方式下,80286的存储管理仍然分段进行,
每个逻辑段的最大长度为 64 KB,这种方式增加了许多管理功能,其中最重要的功能就是虚拟存储 。 就是说,
80286的物理存储空间为 16 MB,但每个任务可使用的逻辑空间却高达 1 GB。
第 2章 典型微处理器在该方式下,那些内存装不下的逻辑段,将以文件形式存在外存储器中,当处理器需要对它们进行存取操作时就会产生中断,通过中断服务程序把有关的程序或数据从外存储器调入到内存,从而满足程序运行的需要 。
⑤ 在保护方式下,80286提供了保护机制,它们由硬件提供支持,一般不会增加指令的执行时间,这些保护包括:对逻辑段的操作属性 ( 可执行,可读,只读,可写 )
和长度界限 ( 1~64 KB) 进行检查,禁止错误的段操作 。
第 2章 典型微处理器为不同程序设置了四个特权级别 ( Privilege Level),
提供若干特权级参数,可让不同程序在不同的特权级别上运行 。 8086系统程序和用户程序处于同一级别,并存放在同一存储空间,所以系统程序有可能遭到用户程序的破坏 。
而 80286依靠这一机制,可支持系统程序和用户程序的分离,并可进一步分离不同级别的系统程序,大大提高了系统运行的可靠性 。
提供任务间的保护 。 80286为每个任务提供多达 0.5
GB的全局存储空间,防止错误的应用任务对其他任务进行不正常的干预 。
第 2章 典型微处理器
1,80286微处理器组成图 2 -12 是 80286微处理器内部结构 。 由图中可以看出,
80286处理器内部是由四个独立的部件组成,分别为执行部件 ( EU),总线接口部件 ( BIU),指令部件 ( IU) 和地址部件 ( AU) 。 这四个独立的部件通过内部总线进行连接,
它们相互配合完成一条指令的执行过程 。 下面分别讨论四个独立部件的功能 。
执行部件 ( EU) 由寄存器,控制器,算术逻辑运算单元 ( ALU) 和微代码只读存储器等部分组成 。 它负责执行由指令部件 ( IU) 译码后的指令 。 微代码只读存储器存放的是执行部件在执行指令时使用的微程序,执行部件不断地从已经译码后的指令队列中取出指令并执行 。
第 2章 典型微处理器图 2 – 12 80286微处理器内部结构总线控制预取器处理器扩展接口数据收发器总线部件
( BU )
A
23
~ A
0
B H E,M / IO
P E A C K
P E R E Q
R E A D Y,H O L D
S
1
,S
0
,C O D / IN T A,
L O C K,H L D A
D
15
~ D
0
3 字节 已译码指令队列指令译码器指令部件
(I U )
物理地址加法器段基址段大小段界限校验器
A L U
寄存器控制偏移量加法器地址部件
(A U )
执行部件 (E U )
N M I
IN T R
E R R O R
B U S Y
6 字节预取队列
R E S E T
地址锁存和驱动器
C A P
V
CC
V
SS
C L K
第 2章 典型微处理器总线接口部件 ( BIU) 由地址锁存器,地址驱动器,协处理器扩展接口,总线控制器,数据收发器,预取指器和六字节预取指令队列组成 。 总线部件是微处理器与系统之间以及与局部总线之间的高速接口部件,用来产生访问外部存储器和 I/O端口所需要的地址,数据和命令信号,可以高速地完成取指令或对存储器的读写 。 其中,预取指器可利用局部总线空闲时间,控制数据收发器最多可从存储器中取出六字节指令,并将它们暂时存放在六字节指令预取指队列寄存器中,这样 CPU便可高速读取指令 。 只有当予取指队列寄存器中至少空出两个字节时才进行预取指操作 。
第 2章 典型微处理器指令部件 ( IU) 由指令译码器和三条已被译码的指令队列组成 。 指令部件的作用是不断地对来自总线部件和预取指令队列的指令进行译码,然后把它们存放到已被译码的指令队列中,准备接受执行部件的读取 。 这一部件可以使对一条指令的执行过程从顺序执行,即取出指令,指令译码,执行指令,成为并行操作,从而缩短了指令的执行时间,提高处理速度 。 这种操作被称为 80286的流水操作 。
地址部件 ( AU) 由地址偏移量加法器,段界限检查器,
段基址寄存器,段容量寄存器,物理地址加法器等组成 。
第 2章 典型微处理器地址部件的功能是根据执行部件 ( EU) 的请求,从执行部件的寄存器中取出寻址信息,并且按照寻址的规则产生物理地址,同时把产生的物理地址送到总线接口部件
( BIU) 的地址锁存器和总线驱动器中,其物理地址可能为存储器的物理地址或 I/O端口的地址 。 这一部件中还包括段寄存器和描述符表寄存器的高速缓冲器 。
以上介绍了微处理器的四个独立部件的组成及作用 。
实际上微处理器在处理一条条指令的过程中,各部件是在并行地作总线操作,从而实现流水线化的作业,这样极大地发挥了处理器的性能 。
第 2章 典型微处理器
2.
80286微处理器的内部寄存器分为四组 。 分别为通用寄存器,段寄存器和状态及控制寄存器以及系统表寄存器
(如图 2 - 13 所示 ),它们构成了 80286基本寄存器集 。
(1) 通用寄存器 。
通用寄存器有 AX,BX,CX,DX,BP,SP,SI、
DI等八个寄存器 。 通用寄存器在 CPU内部,对其进行访问的速度要比对存储器访问速度快得多 。
第 2章 典型微处理器图 2 – 13 80286 基本寄存器集
AH
DH
CH
BH
AL
DL
CL
BL
BP
SI
DI
SP
AX
DX
CX
BX
乘/ 除 I / O 指令循环移位/ 重复计数基址寄存器变址寄存器堆栈指示器通用寄存器
15 8 7 0
CS
DS
SS
ES
15 0
段寄存器代码段选择器数据段选择器堆栈段选择器附加段选择器
F L A G
IP
M S W
15
0
状态和控制寄存器状态标志寄存器指令指示器机器状态字寄存器全局描述符表寄存器中断描述符表寄存器局部描述符表寄存器任务状态寄存器
23 15 0
00 715
TR
L D TR
I D T R
G D T R
63 48 47 40 39 16 15 0
选择器字段访问权字段基地址字段 边界字段系统表寄存器
0
第 2章 典型微处理器这八个寄存器中,变址寄存器 SI,DI和基址寄存器 BP
及堆栈指示器 SP只能按 16位存取,其余的累加器 AX,基址寄存器 BX,计数寄存器 CX,数据寄存器 DX可按 16位存取,
也可按 8位存取,用来存放算术,逻辑操作数 。 80286的通用寄存器与 8086完全一样,虽然为通用寄存器,但也带有特殊的功能含义,在使用过程中从其名称上可加以辨认 。
(2) 状态和控制寄存器 。
① 指令寄存器 IP。 指令寄存器用来指出下一条要执行指令的偏移地址 。 该寄存器在总线接口部件 ( BIU) 中,并由总线部件对其进行自动修改 。
第 2章 典型微处理器执行一段程序时,IP的内容随着存储器的读取自动地加 1,这样,取出前一条指令后,IP就自动指向下一条指令,
使程序连续地执行下去 。 当程序出现转移或者中断时,IP
的内容是新置入的地址,而被中断的地址被压入堆栈 。 一旦中断结束,IP的内容将被自动调整回将要执行的指令地址 。
② 态标志寄存器 FLAG。 状态标志寄存器用来记录由算术或逻辑运算类指令操作结果所设置的状态以及系统的状态 。 该寄存器为 16位的寄存器,其状态标志如图 2-14。
第 2章 典型微处理器图 2 - 14 状态标志寄存器
15
× NT IO PL OF DF IF TF SF ZF × AF × PF × CF
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
下面分别介绍各标志位的含义及作用 。
· 进位标志位 CF:当指令操作结果的最高位产生一个进位 (加法 )或一个借位 (减法 )时,CF1,否则 CF0。
· 奇偶标志位 PF:当操作结果的低 8位中,1”的个数为偶数时,PF1,否则 PF0。 奇偶标志位通常用来检查数据传输时的错误 。
· 辅助进位标志 AF:当操作结果的低字节的第 4位上产生一个进位或借位时,AF1,否则 AF0。
第 2章 典型微处理器
· 零标志位 ZF:当当前的运算结果为零时,ZF1,否则
ZF0。 这一标志多用来作为条件转移指令的判断条件,即判断结果是否为零,从而改变程序执行的顺序 。
· 符号标志位 SF:当执行带符号的操作时,如果操作结果是正数或零,SF0,否则 SF1。 对无符号数的操作,操作结果不影响 SF位的状态 。 该标志位也可用来作为条件转移指令的判断条件,以改变程序执行顺序 。
· 追踪标志位 TF:该标志位是为了调试程序而设置的,
若 TF1,则 80286 CPU处于单步工作方式 。 CPU在单步方式下,每执行完一条指令,就会产生一个内部中断请求,这样可以对每条指令的执行情况进行检查;若 TF0,则 CPU以正常工作方式执行程序 。
第 2章 典型微处理器
· 中断允许标志位 IF,用于允许或禁止中断 。 IF1,表示允许 80286 CPU响应外部的可屏蔽中断请求; IF0,表示禁止 CPU响应外部可屏蔽中断请求 。 该标志位对于外部的不可屏蔽中断请求及内中断无效 。
· 方向标志位 DF:用于控制字符串操作的方向 。 DF1表示字符串操作指令将以递减的顺序对字符串操作数进行处理,
即从高地址到低地址的方向进行; DF0,表示字符串操作指令将以递增的顺序对字符串操作数进行处理,即从低地址到高地址的方向进行处理 。
第 2章 典型微处理器
· 溢出标志位 OF:若带符号数的算术运算结果产生算术溢出,则 OF1,否则为 OF0,算术溢出表示算术结果超出了机器所能表示的数值的范围而产生的溢出 。 对于 16位带符号数的字运算,其数的范围在 -32 768~ +32 767,对于无符号数的算术运算,其结果对 OF位没有影响 。
其中,TF,IF,DF标志位与其它标志位不同,它们可以用程序来设置或清除,而其它标志位则由运算或操作结果来改变其状态 。
还有两个标志位,是 80286特有的两个标志位,用于虚地址保护方式,它们是 I/O特权标志 IO和任务嵌套标志 NT,
这里不作详细介绍 。
第 2章 典型微处理器
③ 机器状态字寄存器 MSW。
机器状态寄存器用来表示当前处理器所处的状态 。
如图 2 - 15 所示,MSW寄存器是一个 80286中新设计的 16
位机器状态字寄存器,仅用了其中的四位 。
图 2 – 15 机器状态寄存器
15 14
TS EM MP PE
5 4 3 2 1 0… …13
这四位的含义及作用如下:
· 保护方式允许 PE:用于向虚地址保护方式转换 。 PE1,
表示 80286被置于保护方式; PE0,表示 80286被置于实地址方式,只有通过硬件复位 ( RESET) 才能从保护方式返回实地址方式 。
第 2章 典型微处理器
· 监控协处理器 MP,用于协处理器 80287NPX的接口,
该位置位表示系统有 80287。
· 模拟协处理器 EM,EM1,表示可用软件模拟 80287
指令仿真一个协处理器 ;EM0,表示将允许协处理器操作码在 80287上执行 。
· 任务转换 TS:当 80286完成任务转换时,即 80286从执行某一个任务转换到执行另一个任务,TS被自动置
,1”; 当 80286复位时,TS被清,0”。
对于机器状态字寄存器中的有效标志位,其中的 PE
位用来使 CPU进入虚地址保护方式,其余 3位则具有控制协处理器接口的作用 。
第 2章 典型微处理器
(3) 段寄存器 。
80286的段寄存器包括代码段寄存器 CS,数据段寄存器 DS,堆栈段寄存器 SS和附加段寄存器 ES。 在程序中四个段寄存器分别用来指示不同段的起始地址 。 代码段寄存器 CS指示程序指令代码所在段的位置;数据段寄存器 DS
指示程序中数据所在段的位置;堆栈段寄存器 SS指示程序运行时堆栈所在段的位置;附加段寄存器 ES指示附加数据所在段的位置 。
第 2章 典型微处理器图 2 – 16 段高速缓冲寄存器从图 2-13 所看到的每个段寄存器都是 16位的寄存器,
实际上每个段寄存器都是由一个 16位的段选择器和一个 48
位的段高速缓冲寄存器组成,如图 2 - 16 所示 。 只有 16位的段选择器可直接进行访问,而高速缓冲寄存器不能被程序直接访问,其作用是在寻址方式的控制下,参与实际物理地址的形成 。 它是 80286在实现存储器管理功能时内部使用的寄存器 。
段选择器
CS
DS
SS
ES
15 0
访问权 (程序不可见)段基地址 段容量
47 40 39 16 15 0
第 2章 典型微处理器
(4) 描述符表寄存器和任务寄存器 。 80286中的描述符表寄存器分为 GDTR(全局描述符表寄存器 ),LDTR(局部描述符表寄存器 )和 IDTR(中断描述符表寄存器 ),分别用来在虚地址保护方式下管理相应描述符表 。 这些描述符表为
GDT( 全局描述符表 ),LDT( 局部描述符表 ),IDT
( 中断描述符表 ) 。
TR(任务寄存器 )用来对 TSS( 任务状态段 ) 进行寻址 。
任务状态段用来存放任务环境 。 对 TR寄存器的访问是由指令 LTR,STR来实现的 。
GDTR,IDTR既可以在实地址方式下使用,也可以在虚地址保护方式下使用,LDTR,TR只能在虚地址保护方式下使用 。
第 2章 典型微处理器
2.3.2 80386微处理器
1,80386微处理器结构
80386微处理器内部结构示意图如图 2 - 17 所示 。
80386 由中 央处 理器 ( CPU ),存 储器 管理 部件
( MMU) 和总线接口部件 ( BIU) 三大模块组成 。 CPU包括指令预取,指令译码,指令执行部件; MMU包括分段部件和分页部件; 加上 BIU部件,这样 80386共有六个功能部件 。 六个功能部件可并行工作,构成六级流水线结构 。
存储器管理部件中的分段部件可通过附加寻址部件对逻辑地址空间进行管理,可以实现任务之间的隔离,也可实现指令和数据区的再定位 。
第 2章 典型微处理器图 2 – 17 80386微处理器内部结构示意图页高速缓冲存储器加法器控制和属性 P L A
码获取
/
页表获取预取器/界限校验器请求判优器地址驱动器流水线总线宽度控制控制
M U X 收发器
16 字节预取队列
H O L D,IN T R,N M I
E RR O R,B U S Y
R E S E T,H L D A
BE
0
~ BE
3
A
2
~ A
31
M / I O,D / C
A D S,N A
BS
16
,R E A D Y
D
0
~ D
31
描述符寄存器输入加法器界限和属性 P L A
指令译码器已译码指令队列译码和定序控制
R O M
内部控桶形移位器
A L U
寄存器组保护检测部件状态标志
A L U 控制控制 指令译码器 指令预取专用 A L U 总线
32
32
32
34
32
32
32
有效地址总线分段部件 分页部件 总线控制有效地址总线乘 / 除硬件制总线物理地址总线
W / R,L O CK
C P U M M U B I U
线性地址总线位移量总线第 2章 典型微处理器
80386由中央处理器 ( CPU),存储器管理部件
( MMU) 和总线接口部件 ( BIU) 三大模块组成 。 CPU包括指令预取,指令译码,指令执行部件; MMU包括分段部件和分页部件; 加上 BIU部件,这样 80386共有六个功能部件 。 六个功能部件可并行工作,构成六级流水线结构 。
存储器管理部件中的分段部件可通过附加寻址部件对逻辑地址空间进行管理,可以实现任务之间的隔离,也可实现指令和数据区的再定位 。 分页部件的功能是管理物理地址空间,把分段部件和指令预取部件产生的线性地址送到分页部件中,并转换为物理地址 。 每个段可划分为 1~4
KB的页,为了实现虚拟存储系统,80386对于页面故障和段故障有完整的再启动功能 。
第 2章 典型微处理器存储器按段组织可分为 1个或多个可变长度字段,每一段的大小最大可达 4 GB。 线性地址空间的一个给定区域或一个段可以有相应的属性,包括它的位置,大小,类型
( 堆栈,代码或数据 ) 以及保护特征等 。 80386的每一个任务最多可以拥有 16 384个段,每个段最多达 4 GB,因此,
每个任务可拥有 64 TB( 兆兆字节 ) 的虚拟存储器空间 。
为了使应用程序和操作系统互相隔离而各自得到保护,
分段部件提供了 4级保护,这种由硬件实施的保护,使得系统的设计具有高度的完整性 。
第 2章 典型微处理器
80386有三种工作方式,实地址方式,保护虚拟地址方式和虚拟 8086工作方式 ( VM86方式 ) 。 在实地址方式下,
80386的工作好似速度极快的 8086。 实地址方式主要用于建立处理机状态,以便进入保护工作方式 。 在保护工作方式下,用户可使用处理器的复杂存储管理,分页及特权功能 。
在保护方式下,通过软件可以实现任务切换,进入虚拟
8086方式 。 虚拟 8086任务可以被隔离和保护 。
2,80386
80386含有通用寄存器,段寄存器,指令指针,标志寄存器,控制寄存器,系统地址寄存器,排错寄存器,测试寄存器等七类 32个寄存器,它们包括了 16位 8086和 80286的全部寄存第 2章 典型微处理器通用寄存器,段寄存器以及指令指针和标志寄存器如图 2 -18 所示。
图 2 – 19 通用寄存器
AX
BX
CX
DX
SI
DI
BP
SP
E A X
E B X
E C X
E D X
E S I
E D I
E B P
E S P
31 16 15 0
通用数据和地址寄存器
CS 码
S S 堆栈
DS
ES
FS
GS
015
段选择器寄存器
IP
F L A G S
E I P
E F L A G S
31 16 15 0
指令指针和标志寄存器数据第 2章 典型微处理器
(1) 通用寄存器 。
80386中有八个 32位的通用寄存器,如图 2 - 19 所示 。
这些通用寄存器是 8086,80286的 16位通用寄存器的扩展,
所以命名为 EAX,EBX,ECX,EDX,ESI,EDI,EBP、
ESP。 每一个寄存器都可以存放数据或地址,支持 1,8,16、
32和 64位的数据操作及 1到 32位的位操作数,也支持 16位和
32位的地址操作数 。
(2) 指令指针和标志寄存器 。
80386的地址线是 32位,指令指针是 32位寄存器,是 IP
的扩展,称为 EIP。 EIP中存放的总是下一条要取出指令的偏移量 。 EIP的低 16位称为 IP,它由 16位的地址操作数使用 。
第 2章 典型微处理器图 2 – 19 通用寄存器
A H A X A L
B H B X B L
C H C X C L
D H D X D L
SI
DI
BP
SP
E A X
E B X
E C X
E D X
E S I
E D I
E B P
E S P
31 16 15 8 7 0
31 16 15 0
E I P
IP
第 2章 典型微处理器
80386中的标志寄存器是名为 EFLAGS的 32位寄存器,
所定义的位如图 2 - 20 所示 。
图 2 – 20 80386标志寄存器
C
F
1
P
F0
A
F0
Z
F
S
F
T
F
I
F
D
F
O
F
进位标志奇偶标志辅助进位零标志符号标志陷阱标志
I O P
L
N
I0
R
F
V
M
0123456789
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
为 I n t e l 公司保留虚拟方式恢复标志嵌套任务标志
I / O 特权级溢出方向标志中断允许
E F L A G S
标志第 2章 典型微处理器
80386扩展的标志位是 VM和 RF,它们的功能是:
虚拟 8086方式位 VM( Virtual 8086 Mode,位 17) 。 当
VM置 1时,80386转入 8086方式 。 在保护方式下 VM才置 1,
用 IRET指令实现 。
恢复标志位 RF( Resume Flag,位 16) 。 用于调试寄存器断点处理 。 当 RF置 1时,对执行下一条指令而言,一切故障调试均被忽略,在每条指令 ( 除 IRET,POPF,JMP、
CALL,INT等指令 ) 成功地完成后 RF自动清 0。
(3) 段寄存器和段描述符寄存器 。
80386中用六个 16位的段寄存器存放段选择器值,指示可寻址的存储空间 。 在保护方式下,分段大小在 1 B~4 GB之间变化 。 在实地址方式下,最大分段固定为 64 KB。
第 2章 典型微处理器在任何给定时刻,可寻址的 6段由段寄存器 CS,SS、
DS,ES,FS,GS的内容确定 。 CS中的选择器指示当前段码; SS指示当前堆栈段; DS,ES,FS,GS指示当前数据段 。
段寄存器如图 2 - 21 所示 。 图中右边是段描述符寄存器,
每个描述符寄存器装有一个 32位的段基地址,一个 32位的段界限值,还有其他段属性 。 描述符寄存器与段寄存器一一对应 。
每当访问存储器时,段描述符自动介入访问处理,32位的段基地址变成计算线性地址的一个分量,32位界限值用于界限检查操作 。 不必去查表而得到段基地址,从而加快了存储器访问速度 。
第 2章 典型微处理器图 2 – 21 80386段寄存器和段描述符寄存器选择器选择器选择器选择器选择器选择器
15 0
段寄存器
CS
SS
DS
ES
FS
GS
物理基地址 段界限 描述符的其它段属性描述符寄存器(自动装入)
第 2章 典型微处理器图 2 – 22 系统地址寄存器和系统段寄存器
(4) 系统地址寄存器。系统地址寄存器 GDTR中存放
GDT(全局描述符表),IDTR中存放 IDT(中断表述符表)。
其中放置 32位线性基地址和 16位界限值,如图 2 - 22 所示。
选择器
47 16 15 032 位线性基地址 段界限系统地址寄存器系统段寄存器选择器
15 0
TR
I D T R
32 位线性基地址 32 位段界限 属性描述符寄存器(自动装入)
G D T R
I D T R
第 2章 典型微处理器
TR寄存器中存放 16位的 TSS( 任务状态段 ) 描述符,
LDTR中存放 16位的 LDT( 局部描述符表 ) 描述符 。
(5) 控制寄存器 。
80386中有三个 32位控制寄存器 CR0,CR2和 CR3(如图
2 - 23 所示 ),用以放置机器的总体状态,对系统的全部任务都发生影响 。
CR0为机器控制寄存器 。 其中位 0~位 4和位 31作控制和状态用 。 CR0的低 16位也叫做机器状态字 ( MSW),与
80286保护方式兼容,LMSW和 SMSW指令是 CR0的送数和存储操作指令,只涉及 CR0的低 16位 。 CR0的各位定义如下 。
第 2章 典型微处理器图 2 – 23 控制寄存器 CR0,CR2,CR3
P
G
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
E
T
T
S
E
M
M
P
P
E
31 24 23 16 15 8 7 0
CR0
M S W
页面故障线性地址寄存器
31 24 23 16 15 8 7 0
页面目录基地址寄存器 0 0 0 0 0 0 0 0 0 0 0 0
注,0 表示 I n t e l公司保留位,无定义第 2章 典型微处理器
PG( 允许分页,位 31),PG位置 1时启动片上分页部件,清 0时禁止分页 。
ET( 处理器扩展类型,位 4),若 ET1,则使用同
80387相容的 32位规约 。 若 ET清 0,则使用同 80287相容的 16
位规约 。
TS( 任务切换,位 3),每当任务切换时,TS自动置 1。
若 TS置 1,协处理器 ESP操作码会引起,协处理器无效,的陷阱 ( 异常 7 ) 。 陷阱处理程序将属于前面任务的
80287/80387状态保存起来,将属于当前任务的 80287/80387
状态装入,在返回到出故障的协处理器操作码之前 TS0。
第 2章 典型微处理器
EM( 仿真协处理器,位 2),若 EM1,则引起全部的协处理器操作码产生,协处理器无效,信号 ( 异常 7) 。
若 EM0,则允许协处理器操作码在实际的 80287/80387上执行 。 EM位置 1不影响 WAIT操作码 。
MP( 协处理器监视器,位 1),当 TS1时,若 MP1,
则 WAIT操作码产生一陷阱;否则不产生陷阱 。 因每当执行任务切换操作时 TS都自动置 1,故需用 MP配合 TS以决定
WAIT操作码是否产生,协处理器无效,信号 。
PE( 允许保护,位 0),若 PE1,启动保护方式 。 若
PE0,则处理器回到真实方式 。 可以向 MSW或 CR0送数使
PE置 1,只能向 CR0送数使 PE清 0。 使 PE清 0是实现由保护方式向实方式转变的长指令序列的一部分 。 为了严格与
80286兼容,PE不能被 LMSW清 0。
第 2章 典型微处理器
CR1为 Intel公司保留 。
CR2为页面出错线性地址,用以放置检测到的最近一次页面出错的 32位线性地址 。 错误码被推入页面出错处理器的堆栈 。
CR3为页面目录基地址寄存器 。 CR3中含有页面目录表的基地址 。 80386的页面目录表总是按页面定位 ( 以 4 KB为单位 ) 的,因此最低 12位的写入是非法的,存储也是无意义的 。 这样,CR3的最低位 ( 位 12) 每增减 1意味着增减
4096 B。
第 2章 典型微处理器
3,80386的存储器组织结构
80386存储器的存储单元有三种:字节 ( 8位 ),字
( 16位 ),双字 ( 32位 ) 。 两个相连续的字节存放时,低位字节存放于低地址,高位字节存放于高地址 。 双字存于 4
个连续的字节,最低位字节存于最低位地址,最高位字节存于最高位地址 。 一个字或一个双字的地址就是低位字节的地址 。
存储器可以划分为长度可变的若干段,还可以再进一步划分为页面,每页 4 KB。 分段和分页可以组合运用以得到最大的系统设计灵活性 。 分段对于按逻辑模块组织存储器是很有用的,而分页对于系统程序员或对于系统物理存储器的管理是很有用的 。
第 2章 典型微处理器
(1) 地址空间 。
80386有逻辑地址,线性地址和物理地址三种地址空间 。
逻辑地址 ( 即虚拟地址 ) 由一个选择器和一个偏置值组成 。
选择器是段寄存器的内容,偏置值与所有寻址分量 ( 基地址变址,位移 ) 相加形成有效地址 。 由于 80386的每个任务最多有 16 K( 214-1) 个选择器,而偏置值可以大到 4GB
( 232 B),所以每个任务的逻辑地址空间总共有 246位 ( 64
TB) 。 逻辑地址空间经分段部件转换为 32位线性地址空间 。 若分页部件处于禁止状态,则此 32位线性地址就相当于物理地址 。 当分页部件处于允许工作状态时,它就把线性地址转换为物理地址 。 物理地址就是出现在 80386组件的地址引脚上的地址 。
第 2章 典型微处理器在实地址方式和保护方式下,从逻辑地址到线性地址的转换有所不同 。 在实地址方式,分段部件把选择器左移 4
位后将结果加到偏置值以形成线性地址 。 而在保护方式,
每个选择器都有着与之相关联的线性基地址,线性基地址存于两个操作系统表 ( 即局部描述符表和全局描述符表 ) 其中的一个里面,选择器从表中选出对应的线性基地址再与偏置值相加形成最后的线性地址,各种地址空间的关系如图 2 -
24 所示 。
(2) 段寄存器的用法 。 段寄存器用来组织存储器的主要数据结构是段 。 在 80386中,段是可变大小的线性地址块 。
段有两种主要类型:代码段和数据段 。 段可以小到 1 B,大到 4 GB( 232 B) 。
第 2章 典型微处理器图 2 – 24 地址转换变址比例
1,2,4,8
位移量基址有效地址计算选择器
R
P
L
分段部件分页部件
(选择使用)
物理存储器
31 0
逻辑或虚拟地址
3 2 有效地址段寄存器
32
线性地址
32
物理地址
BE
3
~ BE
0
A
31
~ A
2
描述符检索
14
15 2 0
第 2章 典型微处理器为了提供紧凑的指令编码和增强处理器性能,无需用指令对段寄存器的使用作显式规定,可以按表 2 - 5自动选择缺省的段寄存器 。 一般说来,,数据引用,使用装在 DS寄存器中的选择器;,堆栈引用,使用 SS寄存器;取指令使用
CS寄存器 。 指令指针的内容提供偏置值 。 特殊段最优先前缀允许显式使用给定的段寄存器,并超越表 2 - 5 中所列隐式规则 。 最优先前缀也允许使用 ES,FS,GS段寄存器 。
由于允许任意段基地址彼此之间有覆盖,因此 6个段都可以有零基址,从而产生具有 4GB线性地址的系统,其虚拟空间与线性地址空间相同 。
第 2章 典型微处理器表 2 – 5 段寄存器选择规则第 2章 典型微处理器
(3) I/O空间 。
80386有两个不同的物理地址空间:存储器和 I/O。 从一般的意义上说,80386也支持存储器对应的 I/O方式,但
80386主要使用专用的端口寻址方式,外部设备放在 I/O空间 。
I/O空间由 64 KB组成,它可以分为 64 K个 8位端口,32
K个 16位端口或 16 K个 32位端口,或加起来不超过 64 KB的任意端口的组合 。 这 64 KB的 I/O空间对应于存储器的物理地址而不是线性地址,因为 I/O指令不通过分段和分页部件 。
I/O空间是通过 IN和 OUT指令存取的,端口地址由 DL、
DX或 EDX寄存器提供 。 当使用所有 8位和 16位端口地址时,
地址线的高位部分都扩展为零 。
第 2章 典型微处理器
2.3.3 80486微处理器
1,80486的结构框图
80486 CPU内部结构示意图如图 2-25 所示 。
2,80486的寄存器结构
80486寄存器组包括,基本寄存器 ( 通用寄存器,指令指针,标志寄存器和段寄存器 ),系统寄存器 ( 控制寄存器,系统地址寄存器 ),浮点寄存器 ( 数据寄存器,标志字,状态字,指令和数据指针,控制字 ),调试和测试寄存器等 。 图 2 - 26 给出了 80486的基本结构寄存器 。 对基本寄存器中的通用寄存器,指令指针和标志寄存器简述如下 。
第 2章 典型微处理器图 2 - 25 80486 CPU内部结构示意图写缓冲
4 × 3 2
地址驱动器数据总线收发器总线控制突发式总线控制总线宽度控制高速缓存控制奇偶校验产生与控制
A
2
~ A
31
BE
0
~ BE
3
D
0
~ D
31
B R D Y B L A S T
BS
16
/ B S
8
I N V W B / W T

P C H K
D P
0
~ D P
3
32
高速缓存单元
8K 或 16K
高速缓存
32
128
指令预取分页单元转换检测缓冲器
P C D,P W T
2
20
物理地址分段单元描述符寄存器限长和属性P LA
桶形移位器寄存器组
A L U
32
基址/
变址总线
3 2字 节代码队列 2 × 1 6 B
指令译码控制和保护测试单元控制
R O M
已译码指令通道浮点单元浮点寄存器组微指令
32
32
32
3 2位 数据总线线性地址
6 4位 内部传送总线总线接口位移量总线
32
24
3 2位 数据总线
32
请求判优器边界扫描控制
T C K
T M S
T D I
T D O

C A C H E H I T M
E A D S
K E N F L U S H A H O L D
I G N N E

S T P C L K
N M I S M 1 S M I A C T F E R R

H L D A R E S E T S R T E S E T I N T
B O F F A 2 0 M B R E Q H O L D
P W T R D Y L O C K P L O C K
A D S,W / R,D / C,M / I O,P C D
时钟倍增器核心时钟
C L K
C L K M U L

注:
① 适 用于 I n t e l 4 8 6
TM
DX,I n t e l D X 2
TM
和 I n t e l D X 4 处理器
② 适用于 除 168 引脚 P G A 封装的 I n t e l 4 8 6 S X 处理器外的所 有 I n t e l 4 8 6处理器
③ 仅 适用于 I n t e l D X 4 处理器
④ 仅 适用于回写增强式 I n t e l D X 2 处理器第 2章 典型微处理器
(1) 通用寄存器 。
八个 32位通用寄存器可存放数据或地址,且能支持数据操作数 1位,8 位,16位或 32位以及 1~ 32位的位字段 。
地址操作数有 16位或 32位 。 32位寄存器的名字叫 EAX、
EBX,ECX,EDX,ESI,EDI,EBP及 ESP。
通用寄存器的低 16位可分别用 16位名为 AX,BX、
CX,DX,SI,DI,BP和 SP的寄存器来访问 。 当分别访问低 16位时,高 16位内容不变 。
8位操作可以单独访问通用寄存器 AX,BX,CX,DX
的低位字节 ( 0~ 7位 ) 或高位字节 ( 8~ 15位 ) 。 低位字节分别叫 AL,BL,CL,DL,高位字节分别叫 AH,BH,CH、
DH。 单独的字节访问提供了数据操作的灵活性,但不用于有效地址的计算 。
第 2章 典型微处理器图 2 – 26 80486基本寄存器
SI
DI
BP
SP
E A X
E B X
E C X
E D X
E S I
E D I
E B P
E S P
31 16 15 8 7 024 23
AH AX AL
BH BX BL
CH CX CL
DH DX DL
通用寄存器
CS
SS
DS
ES
FS
GS
数据段代码段堆栈段
15 0
段寄存器
IP
31 16 15 0
F L A G S
指令指针标志寄存器
E I P
E F L A G S
第 2章 典型微处理器
(2) 指令指针 。
指令指针是 32位的寄存器,称为 EIP。 在 EIP中存放下一条要执行的指令的偏移值,偏移值是相对于代码段的基值而言的,EIP的低 16位包含有 16位指令指针,称为 IP,它是用于 16位编址的 。
(3) 标志寄存器 。
标志寄存器是 32位寄存器,称为 EFLAGS。 在 EFLAGS
中规定的位和位字段控制某些操作,指明 486微处理器状态,
其低 16位 ( 0~ 15位 ) 包含有 16位寄存器,称为 FLAGS,它在执行 8086和 80286指令时是最有用的,EFLAGS如图 2 - 27
所示 。
第 2章 典型微处理器图 2- 27 标志寄存器
C
F
1
P
F0
A
F0
Z
F
S
F
T
F
I
F
D
F
O
F
进位标志校验标志辅助标志零标志符号标志陷阱标志
I O P
L
N
I0
R
F
V
M
0123456789
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
为 I n t e l公司保留虚拟方式恢复标志嵌套任务标志
I / O 特权级溢出方向标志中断允许
E F L A G S
A
C
对校验标志第 2章 典型微处理器
3,80486的存储器组织结构
486存储器分为 8位长 ( 字节 ),16位长 ( 字 ) 和 32位长 ( 双字 ) 。 字存储在相邻的两个字节中,分高位字节和低位字节,高位字节在高地址 。 双字存储在相邻的四个字节,低位字节在低地址,高位字节在高地址 。 字或双字的地址是指低位字节的地址 。
除了这些基本的数据类型以外,486微处理器还支持两个更大的存储器单元:页面和段 。 存储器可划分为一个或多个可变长的段 。 段中数据可与盘交换或被程序之间公用,
存储器也可组织成一个或多个 4 KB的页面,而且段和页面可组合,发挥两者的优点 。
第 2章 典型微处理器
486微处理器支持段和页,从而为系统设计者提供了最大灵活性,使分段和分页互为补充 。 在以逻辑模块来组织存储器时分段很有用,例如对应用程序设计员,它是一种有用的工具;而对系统程序设计员在管理系统的物理存储器时,
分页是很有用的 。
(1) 地址空间 。
486微处理器有三个地址空间:逻辑地址,线性地址和物理地址 。 逻辑地址 ( 也称为虚拟地址 ) 由一个选择符和偏移量组成,选择符是段寄存器的内容,偏移量是由所有编址的成分 ( 基址,变址,位移量 ) 相加而形成的一个有效地址 。
因为在 486微处理器中,每一个任务有一个最大 16 K( 214 -1)
的选择符,而偏移量可以是 4GB( 232),这就是说每个任务可有 246K(64TB)的逻辑地址空间 。
第 2章 典型微处理器分段部件把逻辑地址空间转换成 32位线性地址空间,
如果分页部件处于禁止状态,则 32位线性地址就对应于物理地址 。 分页部件处于允许工作状态时,它完成线性地址空间到物理地址空间的转换工作,该物理地址就是出现在芯片地址引脚上的地址 。
实方式和保护方式的主要不同点是分段部件怎样把逻辑地址转换成线性地址 。 在实方式下,分段部件把选择器左移四位后加上偏移值便形成线性地址 。 而在保护方式下,
每个选择器有一个线性基地址与其对应,该线性基地址存储在两个操作系统表中 ( 即逻辑描述符表或全局描述符表 ),该选择器的线性基地址加上偏移值即形成最后的线性地址 。
第 2章 典型微处理器
(2) 段寄存器的使用 。
为了提供一个紧凑的指令编码和提高处理器的性能,指令不需要显式地指明哪一个段寄存器被使用,缺省段寄存器是按照表 2 - 6 段寄存器选择规则自动选择的 。 通常,用包含在 DS寄存器中的选择器访问数据,用 SS寄存器访问堆栈,
而取指令用 CS寄存器 。 指令指针中的内容便是偏移量 。 门的段超越前缀允许显式使用给定的段寄存器,并超越表 2 - 6
所列的隐含规则 。 超越前缀也允许使用 ES,FS及 GS寄存器 。
第 2章 典型微处理器表 2 – 6 段寄存器选择规则第 2章 典型微处理器对任何段的基地址的重叠没有什么限制,这样,所有 6
个段都可以把基地址置,0”而生成一个有 4 GB线性地址空间的系统 。 这个系统中,虚拟地址空间与线性地址空间相同 。
(3) I/O空间 。
486微处理器也有两个独立的物理地址空间:存储器空间和 I/O空间 。 虽然 486微处理器也支持存储器映射的外部设备,但通常都把外部设备放在 I/O空间 。 该 I/O空间由 64 KB
组成,它可以分为 64 K个 8位端口,32 K个 16位端口或 16 K
个 32位端口,或者总和小于 64 KB的各种端口组合 。 该 64 K
I/O地址空间对应于存储器的物理地址而不是线性地址,因为 I/O指令不通过分段和分页硬件 。
第 2章 典型微处理器
2.3.4 Pentium
Pentium是 Intel 80386/80486微处理器的下一代产品 。
它的性能比 Intel 486有较大的提高,但它与 Intel 8086/8088、
80286,Intel 80386DX/386SX,Intel 80486DX/486SX等
CPU完全兼容 。
1,Pentium的主要性能
Pentium与 Intel 486相比有以下重大改进:
① 超标量体系结构;
② 动态转移预测;
③ 流水线浮点部件;
第 2章 典型微处理器
④ 增加一个 8 KB片内超高速缓冲存储器;
⑤ 较强的错误检测和报告功能;
⑥ 增加了测试挂钩(边界扫描,探针方式)。
Pentium在以与 Intel 80486 CPU相同的频率工作时,整数运算性能提高 1倍,浮点运算性能提高 5倍 。 Pentium的初始目标频率是 66 MHz。 它的两条流水线和浮点部件能够独立工作 。 每条流水线在一个时钟内发送一条常用的指令,
在某些情况下可以发送一条浮点指令 。
浮点部件在 Intel 80486的基础上进行重新设计,快速算法可使 ADD,MOL和 LOAD等公用指令的运算速度至少提高 3倍 。 在应用程序中,利用指令调度和流水线重叠技术,
运算速度可提高 5倍以上 。
第 2章 典型微处理器图 2- 28 Pentium内部结构
8 K B 指令超高速缓存
T L B
预取缓冲器指令译码控制部件控制
R O M
地址生成
U 流水线地址生成
V 流水线整数寄存器组
A L U
U 流水线
A L U
V 流水线滚筒式移位器
8 K B 指令超高速缓存
T L B
32
32
32
32
32
32
转移目标缓冲器预取地址指令指针转移检 验页面部件目标地址总线部件
64 位数据总线
36 位数据总线控制
1 6 4
64 位读总线
64 位写总线
36 位 地址总线加法除法乘法控制寄存器组
2 5 6
浮点部件第 2章 典型微处理器
(1) 超标量结构和超级流水线技术 。
Pentium芯片内装有三种指令处理部件和 16~24 KB 的超高速缓存 。 这些指令处理部件是两个 RISC( 精简指令系统 ) 型整数运算单元,80386兼容单元和浮点运算单元 。
RISC型整数运算单元采用超标量技术实现,Pentium内设两条指令流水线 U和 V,一个时钟周期能并行执行两条整数指令 。 U流水线和 V流水线都是五级流水线:
Prefetch
预取
Decode1
译码 1
Decode2
译码 2
Execute
执行
Write-back
写回结果第 2章 典型微处理器
Prefetch 同时取两条指令提供给 Decode1(译码 1)进行指令译码 。 译码后判别两指令能否同时执行,若能同时执行,
便把经 Decode1译码的指令分别送 U流水线和 V流水线,在两条流水线中并行对它们进行进一步译码 Decode2,执行和写回结果 。 事实上,时并不能同时执行两条指令,这是由于数据相关,资源冲突和分支转移的缘故 。 在这种情况下,
只有把两条指令中的前一条指令送入 U流水线,待前一条指令执行完后再送入后一条指令 。
第 2章 典型微处理器
U流水线和 V流水线是不等同并且不能交换的 。 U流水线能执行整数型和浮点型指令,V流水线只能执行简单的整数型指令和两条异常的 FXCH( 交换寄存器内容 ) 指令,因此,Pentium能够在每个时钟内执行两条整数运算指令,或者在每个时钟内执行一条浮点指令 。 如果两条浮点指令中有一条为 FXCH,那么在一个时钟内可执行两条浮点指令 。 U和 V流水线都有其自己的生成逻辑,算术逻辑部件和数据超高速缓存接口 。
第 2章 典型微处理器
Pentium的 FPU内置加法器,乘法器和除法器三种运算单元 。 采用超级流水线技术实现 FPU,使 Pentium改善了浮点处理能力,并且还同 80486的 FPU兼容 。 Pentium的 FPU采用 8级流水线,1到 5级和 U流水线共享 。 当执行浮点运算指令时,U流水线及其第 4级以后的控制从 ALU移到 FPU。
FPU使用快速算法,依靠先进的流水线结构和优化编译器,
Pentium的浮点处理能力能提高 4~10倍 。
80386兼容单元采用微代码处理指令,负责处理不能用一个时钟完成执行的指令,以及处理整数单元无法执行的多条指令 。
第 2章 典型微处理器
(2) 超高速缓存 Cache。
Pentium芯片上有两个独立的数据和指令超高速缓存,
容量均扩充 8~12 KB,是 80486的两倍,并在 80486 CPU超高速缓存结构的基础上增加了一些功能以满足其性能指标的要求 。 Cache单元为处理器提供快速访问指令和数据刷新途径,这两个超高速缓存可以同时被访问,不必花费很长时间 。 指令 Cache可以提供多达 32 B的原始操作码,
数据 Cache在每个时钟内可以提供两次数据访问的数据 。
每种 Cache都使用物理地址进行访问,并且都有自己的转换后援缓冲器 ( TLB) 将线性地址转换成所用的物理地址 。
Pentium中分离的代码 Cache使预取单元操作更有效,它采用 256位数据宽度的二路组相联设计,它的填充是通过使用突发的存贮传送周期来完成 。
第 2章 典型微处理器指令 Cache,转换目标缓冲器 ( BPU) 和预取缓冲器
( PU) 负责将原始指令送入 Pentium的执行部件 。 指令取自指令 Cache或外部总线,转移地址由转移目标缓存器记录 。
指令 Cache的 TLB将线性地址转换成指令 Cache所用的物理地址 。 指令译码器将预取的指令译码成 Pentium可以执行的指令,使 ROM含有控制实现 Pentium体系结构必须执行的运算顺序的微指令,让 ROM部件直接控制两条流水线 。
由于 Pentium采用超标量技术,因而需要提高指令和数据的供给能力,外部数据总线采用像 RISC那样的 64位,地址总线也扩充为 32位 。 目前 4 GB的物理地址已不能满足要求,为了高速处理转移,Pentium片上内藏 256个条目的转移目标缓存 。
第 2章 典型微处理器
Pentium为支持 Cache的一致性提供了专用挂钩 。 数据
Cache遵循 MESI( M-修改,E-互斥,S-共存和 I-无效 ) 协议的超高速缓存一致性协议 。 这是一种给超高速缓存行赋予各种状态的规则集 。 数据超高速缓存中的每一行都根据
Pentium产生的动作及其他总线主控产生的动作而赋予一种状态,以确保多机环境下的数据一致性 。 这些规则只适用于存储器的读 /写周期,I/O和特定周期不通过数据超高速缓存 。
(3) 指令预取 。
Pentium含有几个指令预取缓冲器,它在前一条执行指令的结尾之后最多可预取 94B。 此外,Pentium还实现了一种动态分支预测算法,这种算法对与过去某个时间执行的指令相对应的地址,测地运行指令预取周期 。 运行这些指令预取周期要基于过去的执行情况,而不考虑检索的指令是否与当前正在执行的指令顺序相关 。
第 2章 典型微处理器
Pentium可以运行指令预取总线周期,以检索从未被执行过的指令 。 尽管删除了检索的操作码,系统也必须通过恢复突发串就绪引脚 ( BRDY# ) 来完成指令预取周期 。
尤其重要的是,不考虑地址,系统为所有指令预取周期恢复突发串就绪引脚 。
此外,Pentium有可能对当前指令段结尾之外的地址推测地运行指令预取周期 。 尽管 Pentium可能超出指令段界限进行预取,但不会超出指令段界限执行,否则会引起一般保护故障 。 因此,不能使用分段来阻止对不可访问的存储区域进行推测性的指令预取 。 另一方面,由于 Pentium从不对不可访问的页面运行指令预取周期,所以分页机制防止对不可访问页面的预取和执行指令 。
第 2章 典型微处理器
(4) EFLAGS寄存器 。
EFLAGS寄存器如图 2 - 29 所示,它对 80486作了一些扩充,增加了两位用来控制 Pentium虚拟 8086方式扩充部分的虚拟中断 。 标志位 1,3,5,15,31和 22是 Intel公司保留的 。
当用 SAHF或 PUSHF存储时或在中断处理期间,则在第 1位存储 1,第 3,5,15,31和 22位存储 0。 EFLAGS增加了一个附加位 ID,以允许软件测试 CPU ID指令是否存在而不产生异常 。
3
1
0 0 0 0 0 0 0 0 0 0
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
I
D
VI
P
VI
F
A
C
V
M
R
F 0
N
T I O P L
O
F
D
F
I
F
S
F
Z
F 0
A
F
C
F
2
1
2
0 19 18 17 16 15 14 13 12
1
1
1
0
0
9
0
8
0
7
0
6
0
5
T
F 1
C
F
P 1 C
F0
0
4
0
3
0
2
0
1
0
0
图 2-29 EFLAGS寄存器第 2章 典型微处理器
VIF:当允许虚拟 8086方式扩充 ( CR4,VME1) 或允许保护方式虚拟中断 ( CR4,VME1) 时,虚拟中断标志是所用中断标志的虚拟映象 。 当禁止虚拟 8086方式扩
( CR4,VME0) 和禁止保护方式虚拟中断 ( CR4,PVI0)
时,该位被强制为 0。
VIP:当允许虚拟 8086方式扩充 ( CR4,VME1) 或允许保护方式虚拟中断 ( CR4,PVI1) 时,虚拟中断挂起标志指示虚拟中断是否挂起 。 当禁止虚拟 8086方式扩充
( CR4,VME0) 和禁止保护方式虚拟中断 ( CR4,PVI0)
时,该位被强制为 0。
ID:置位和清除标识标志的功能处理器支持 CPU ID
指令 。
RF:它和 AC是 Intel 486 CPU扩充的标志特性。
第 2章 典型微处理器
RF:可由 IRETD但不能由 POPF或 POPFD置位的 RF标志用来禁止在紧跟 IRETD后面的指令上产生代码断点异常 。
代码断点是最高优先级故障,因而在译码或指令执行期间可能被检测的任何其他故障之前得到服务 。 如果产生后续故障,那么堆栈上 RF标志的映象始终置 1。 当完成故障处理程序重新启动该指令时,就需要保证不会多次检测出代码断点故障 。
AC:当 CPU在特权级 3上操作时,AC标志与 CR0中的
AM位联用以允许检测和产生对准检查异常 。 当 CPU不在特权级 3上时,虽然 AC标志可能被置位,但决不产生对准检查异常 。 在实方式时,不会产生对准检查异常,而且
EFLAGS中 AC位的内容不可预测 。 复位后 EFLAGS的内容为 00000002H。
第 2章 典型微处理器
(5) 控制寄存器 。
CR0中的 CD位和 NW位 ( Intel 486) 的含义已被重新定义以控制 Pentium的高速缓冲存储器 。
Pentium定义了一个新的控制寄存器 ( CR4),它包含一些允许对 Intel 486结构作某些扩充的位 。
CR4控制寄存器结构如图 2 - 30 所示 。
3
1
0 0 0 0 0 0 0 0 0 0
3
0
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
0 0 0 0 0 0 0 0 0 0 0 0
M
C
E
P
A
E
P
S
E
C
F
2
1
2
0 19 18 17 16 15 14 13 12
1
1
1
0
0
9
0
8
0
7
0
6
0
5
0 1 CF
T
S
D
P
VI
V
M
E
D
E
0
4
0
3
0
2
0
1
0
0
0 0
图 2 – 30 CR4控制寄存器结构第 2章 典型微处理器
CR4中第 31~7位留用 。 当读出 CR4的内容时,这些位均为 0; 写入 CR4的内容时,这些位必须全为 0,否则,
若对其中的任意一位写 1,则产生一般保护异常 。
VME:该位为 1时,允许虚拟 8086方式扩充;该位为
0时,禁止虚拟 8086方式扩充 。
PVI:位为 1时,允许保护方式虚拟中断;该位为 0时,
禁止保护方式虚拟中断 。
TSD:该位为 1且当前特权级不为 0时,执行 RDTSC
( 读时间标志计数器 ) 指令;而执行这一指令时将产生
# GP( 0) 故障 。 当该位为 0时,RDTSC将在所有特权级上执行 。
第 2章 典型微处理器
DE:该位为 1时,允许调试扩充;该位为 0时,止调试扩充 。 实际上,该位控制是否支持 I/O断点 。
PSE,该位为 1时,允许页面大小扩充;该位为 0时,禁止页面大小扩充 。
PAE:该位为 1时,允许物理地址扩充;该位为 0时,禁止物理地址扩充 。
MCE,该位为 1时,允许机器检查异常; 该位为 0时,
禁止机器检查异常 。
复位后 CR4的内容为 0。
第 2章 典型微处理器
(6) 模型专用寄存器 。
Pentium定义了几种模型专用寄存器,用于控制可测试性,执行跟踪,性能监测和机器检查错误 。 Pentium可使用新指令 RDMSR和 WRMSR,读或写这些寄存器 。 模型专用寄存器如表 2 - 7 所示 。
Pentium可实现探针式调试方式,用这种方式可以检验和修改 Pentium的内部状态和系统的外部状态 。 处理器,
寄存器可以读和写,系统存储器和 I/O空间也可以读和写 。
第 2章 典型微处理器表 2 – 7 模型专用寄存器第 2章 典型微处理器
Pentium有四个调试寄存器,用于检查编程时设置的断点是否匹配 。 这些断点通过四个断点引脚 BP3~ BP0在外部表示是否匹配,其中两个引脚 BP0( PM0/BP0) 和 BP1
( PM1/BP1) 供性能监测多路选择用 。 PM0和 PM1引脚用于外部表示与监测所选择事件相关的计数已增 1或溢出 。 探针方式控制寄存器中的 PB1和 PB0( 性能监测 /断点 ) 位,决定是否为性能监测或断点指示配置了多路选用引脚 。
以上我们介绍了 80286,80386,80486和 80586微处理器,下面通过表 2 - 8 对这几种微处理器进行比较 。
第 2章 典型微处理器表 2 – 8 微 处 理 器 性 能 比 较