微机原理与接口技术(二)
第二章 8088/8086微处理器
特点:
- 采用并行流水线工作方式——通过设置指令预取队列实现
- 对内存空间实行分段管理——将内存分为4个阶段并设置地址段寄存器,以实现对1MB空间的寻址
- 支持协处理器
8088/8086 CPU的两种工作模式
8088/8086CPU可工作于两种模式下:最小模式、最大模式
最小模式为单处理器模式,所有控制信号由微处理器产生
最大模式为多处理器模式,部分控制信号由外部总线控制器产生
- 用于包含协处理器的情况下
最小模式下的总线连接示意图
见图14
最大模式下的总线连接示意图
见图15
两种工作模式的选中方式
- 8088是工作在最小还是最大模式由MN/MX引线的状态决定。(MX有上横杠,表示低电平有效)
- MN/MX-0——工作于最大模式
- MN/MX-1——工作于最小模式
8088的主要引线及内部结构
8088 CPU最小模式下的主要引脚信号
- 8088最小模式下的主要引脚信号→4组
- 完成一次访问内存或接口所需要的主要信号
- 与外部同步控制信号
- 中断请求和响应信号
- 总线保持和影响信号
见图10
微处理器读取一条指令的控制过程
发出读取数据所在的目标地址(地址信号)
- 内存储器单元地址
- I/O接口地址
发出读控制信号(控制信号)
送出传输的数据(数据信号)
8088 CPU最小模式下的主要引脚信号
- 地址线和数据线:
- AD₀—AD₇:低8位地址和低8位数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。
- A₁₆—A₁₉:高4位地址信号,与状态信号分时复用。
- A₈—A₁₅:8位地址信号
20位地址信号→可产生2²⁰=1M个编码
8位数据信号→可同时传输8bit二进制码
- 主要控制信号
- #WR:写信号
- #RD:读信号
- IO/#M:为“0”表示访问内存,为“1”表示访问接口
- #DEN:低电平有效时,允许进行读/写操作
- DT/#R:数据收发器的传送方向控制
- ALE:地址锁存信号
- RESET:复位信号
例:当#WR=1,#RD=0,IO/#M=0时,表示CPU当前正在进行读存储器操作
- READY信号
见图16
中断请求和相应信号
- INTR:可屏蔽中断请求输入端
- NMI:非屏蔽中断请求输入端
- INTA:中断响应输出端(INTA有上横杠,表示低电平有效)
总线保持信号
- HOLD:总线保持请求信号输入端。当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。
- HLDA:总线保持响应信号输出端。CPU对HOLD信号的响应信号。
8088和8086CPU引线功能比较
数据总线宽度不同
- 8088的外部总线宽度是8位,8086为16位。
访问存储器和输入输出控制信号含义不同
- 8088——IO/M=0表示访问内存
- 8086——IO/M=1表示访问内存
其他部分引线功能的区别
8088内部结构
微处理器:运算器、控制器、寄存器
逻辑上分为:执行单元(EU)、总线接口单元(BIU)
见图17
执行单元
- 构成:运算器、8个通用寄存器、1个标志寄存器、EU部分控制电路
- 功能:指令译码、指令执行、暂存中间运算结果、保存运算结果特征
总线接口单元
功能:
从内存中取指令到指令预取队列
- 指令预取队列是并行流水线工作的基础
负责与内存或输入/输出接口之间的数据传送
在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行
结论
- 指令预取队列的存在使EU和BIU两个部分可同时进行工作(实现了指令的并行执行)
- 提高了CPU的效率
- 降低了对存储器存取速度的要求
8088内部寄存器
内部寄存器的类型
- 含14个16位寄存器,按功能可分为三类
- 8个通用寄存器
- 4个段寄存器
- 2个控制寄存器
深入理解:每个寄存器中数据的含义
一、通用寄存器
数据寄存器(AX,BX,CX,DX)
地址指针寄存器(SP,BP)
变址寄存器(SI,DI)
数据寄存器
- 8088/8086焊4个16位数据寄存器,他们又可分为8个8位寄存器,即:
- AX→AH,AL
- BX→BH,BL
- CX→CH,CL
- DX→DH,DL
数据寄存器特有的习惯用法:
AX:累加器
- 所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中
BX:基址寄存器
- 在间接寻址中用于存放基地址
CX:计数寄存器
- 用于在循环或串操作指令中存放计数值
DX:数据寄存器
- 在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数
地址指针寄存器
SP:堆栈指针寄存器,其内容位栈顶的偏移地址
BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址
BX与BP在应用上的区别
- 作为通用寄存器,二者均可用于存放数据
- 作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段
变址寄存器
SI:源变址寄存器
DI:目标变址寄存器
变址寄存器在指令中常用于存放数据在内存中的地址
二、控制寄存器
- IP:指令指针寄存器,其内容为下一条要取的指令的偏移地址
- FLAGS:标志寄存器,存放运算结果的特征
- 6个状态标志位(CF,SF,AF,PF,OF,ZF)
- 3个控制标志位(IF,TF,DF)
状态标志位
CF(Carry Flag)
- 进位标志位。加(减)法运算时,若最高位有进(错)位则,CF=1
OF(Overflow Flag)
- 溢出标志位。当算数运算的结果超出了有符号数的可表达范围时,OF=1
ZF(Zero Flag)
- 零标志位。当运算结果为零时,ZF=1
SF(Sign Flag)
- 符号标志位。当运算结果的最高位为1时,SF=1
PF(Parity Flag)
- 奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=1
AF(Auxiliary Carry Flag)
- 辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位),AF=1
控制标志位
TF(Trap Flag)
- 陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式
IF(Interrupt Enable Flag)
- 中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求
DF(Direction Flag)
- 方位标志位。在数据串操作时确定操作的方向
三、段寄存器
作用:用于存放相应逻辑段的段基地址
8088/8086内存中逻辑段的类型
- 代码段→存放指令代码
- 数据段→存放操作的数据
- 附加段→存放操作的数据
- 堆栈段→存放暂时不用但需保存的数据
段寄存器
- CS:代码段寄存器,存放代码段的段基地址
- DS:数据段寄存器,存放数据段的段基地址
- ES:附加段寄存器,存放数据段的段基地址
- SS:堆栈段寄存器,存放堆栈段的段基地址
段寄存器的值表明相应逻辑段在内存中的位置
实模式下的存储器寻址
内存储器管理
8088CPU是16位体系结构的微处理器
可以同时处理(产生)16位二进制码
- 可以产生64K个编码,直接管理64K个内存单元
8088CPU需要管理1MB内存(使用内存分段管理方式实现)
- 需要能够产生1M个地址编码
内存地址变换
欲实现对1MB内存空间的正确访问,每个内存单元在整个内存空间中必须具备唯一地址→物理地址
将直接产生的16位编码变换为20位物理地址即为内存地址变换
一、内存单元的编址
内存每个单元的地址在逻辑上由两部分组成:
- 段(基)地址:指示存储单元在整个内存空间中处于哪个区域(段)
- 段内地址(相对地址/偏移地址):指示存储单元在段中的相对位置(与段中第一个单元的距离)
- 8088为16位结构,所以段地址和偏移地址均为16位(也就是共32位)
段基地址:决定存储单元在内存中的位置
相对地址(偏移地址):该存储单元相对段内第一个单元的距离
逻辑段的起始地址称为段首,由偏移地址的定义得:段首的偏移地址=0
物理地址:内存单元在整个内存空间中的唯一地址(20位)
见图18、19
二、实地址下的存储器地址变换
内存物理地址由段基地址和偏移地址组成
物理地址=段基地址×16+偏移地址
三、段寄存器
作用:用于存放相应逻辑段的段基地址
8086/8088内存中逻辑段的类型
- 代码段→存放指令代码
- 数据段→存放操作的数据
- 附加段→存放操作的数据
- 堆栈段→存放暂时不用但需保存的数据
8086/8088内存中每类逻辑段的数量
- 最多为64k个
段寄存器
- CS:代码段寄存器,存放代码段的段基地址
- DS:数据段寄存器,存放数据段的段基地址
- ES:附加段寄存器,存放数据段的段基地址
- SS:堆栈段寄存器,存放堆栈段的段基地址
例1:
- 设某操作数存放在数据段,DS=250AH,数据所在单元的偏移地址=0204H
- 则该操作数所在单元的物理地址为:
- 250AH×16+0204H=252A4H
例2:
- 设:DS=2500H,某单元的偏移地址=00A0H,则有:
见图20
逻辑段与逻辑地址
内存的分段是逻辑分段,不是物理段。各个逻辑段在地址上可以不相连,可以部分重合,也可以完全重合。
每个内存单元具有唯一物理地址,但可能具有多个逻辑地址。即:
- 一个内存单元可以同时处于两个逻辑段
- 一个内存单元可以在不同时刻属于相同(或不同)类型的段
- 一个内存单元在同一个时刻可以属于不同类型的段
例3:
- 已知:CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H
- 画出各段在内存中的分布
- CS=1055H,段首地址=10550H,默认段尾地址=3509FH
- DS=250AH,段首地址=250A0H,默认段尾地址=3509FH
- ES=2EF0H
- SS=8FF0H
见图21
逻辑段说明
同一程序模块装入主存时,不同类型的段可以装入在相同/不同的物理空间
- 两个逻辑段完全重合或部分重合
两个不同程序模块装入主存时,同一类型的逻辑段也可以装入相同或不同的物理空间中
四、堆栈及堆栈段的使用
- 堆栈:
- 内存中一个特殊区域,用于存放暂时不用或需要保护的数据
- 常用于响应中断或子程序调用
见图22
若栈顶=栈底→空栈
若栈顶=栈首→满栈
堆栈示列:
已知:SS=1000H,SP=0100H
则:
- 堆栈段的段首地址=10000H
- 栈顶(偏移)地址=0100H
若该段最后一个单元地址为10200H,则:
- 栈底偏移地址=0200H
8088系统总线
一、总线时序
- CPU工作时序:CPU各引脚信号在时间上的关系
- 总线周期:
- CPU完成一次访问内存(或接口)操作所需要的时间
- 一个总线周期至少包括4个时钟周期
见图23
8088最小模式下的工作时序
见图24
二、总线的概念
总线:是一组导线和相关的控制、驱动电路的集合。是计算机系统各部件之间传输地址、数据和控制信息的通道。
- 地址总线(AB)
- 数据总线(DB)
- 控制总线(CB)
总线按层次结构分类
- 按层次结构分为:CPU总线、系统总线、外部总线
三、总线结构
- 单总线结构
见图25
双总线结构
- 面向CPU的双总线结构
- 存储器与I/O接口间无直接通道
见图26
- 面向主存的双总线结构
- 在单总线结构基础上增加一条CPU到存储器的高速总线
见图27
- 面向CPU的双总线结构
多总线结构
- 现代微机中的多总线结构
见图28
四、总线的基本功能
- 数据传输
- 仲裁控制
- 出错处理
- 总线驱动
五、总线的主要性能指标
总线带宽(B/S):
- 单位时间内总线上可传送的数据量
- 总线带宽=位宽×工作频率
总线位宽(bit):
- 能同时传送的数据位数
总线的工作频率(MHz)
- 总线带宽=(位宽/8)×(工作频率/每个存取周期的时钟数)