《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版 吴宁 乔亚男 编著 清华大学出版社 出版 王良 宁德师范学院 学习交流群号:667979484 邮箱:332207289@qq.com
第2章 微处理器与总线
主要内容: 8088/8086微处理器 特点 主要引线功能和内部结构 内部寄存器 实地址模式下的存储器寻址 总线时序 总线
关注点: 8088 CPU能够实现指令并行流水工作的原因; 实地址模式下的存储器地址变换原理;
一、8088/8086 CPU的特点
1. 8088/8086 CPU的特点 采用并行流水线工作方式 _____通过设置指令预取队列实现 对内存空间实行分段管理 _____将内存分为4个段并设置地址段寄存器,以实现对1MB空间的寻址 支持多处理器系统 存储器寻址部分 工作模式
2. 8088CPU的两种工作模式 8088可工作于两种模式下 最小模式 最大模式 单处理器模式 多处理器模式 区别?
最小模式下的总线连接示意图 • • ALE 地址 地址总线 锁存 8088 时钟发 生 器 CPU 数据 数据总线 收发 控制总线 生 器 8088 CPU 数据 收发 数据总线 • 控制总线 • 控制信号较少,一般可不必接总线控制器
最大模式下的总线连接示意图 地址 地址总线 锁存 时钟发 生 器 8088 CPU 数据 数据总线 收发 总 线 控制总线 控制器 ALE 地址 锁存 地址总线 时钟发 生 器 8088 CPU 数据 收发 数据总线 总 线 控制器 控制总线 控制信号较多,需要通过总线控制器实现控制信号传输
两种工作模式的选择方式 8088是工作在最小还是最大模式由MN/MX引线的状态决 定。 MN/MX=0——工作于最大模式
二、8088/8086的引线及功能
微机读取一条指令的工作过程: ┇ +1 指令译码 PC 内存单元地址 1000FH B1H 内存储器 数据总线 地址 寄存器 1000FH 地址总线 B1H “读存储器”命令
微处理器读取一条指令的控制过程 发出读取数据所在的目标地址 内存储器单元地址 I/O接口地址 发出读控制信号 送出传输的数据 ┇ ┇ B1H ┇ 内存储器 A1H ┇ I/O接口 地址 CPU 数据 控制信号
CPU完成一次访问内存或I/O接口需要: 地址信号 数据信号 各种控制信号
主要引线——最小模式下的8088引线 地址线和数据线: AD0—AD7:低8位地址和低8位数据信号分时复用。在传送地址信号时为单向,传送数据信号时为双向。 A16--A19:高4位地址信号,与状态信号分时复用。 A8—A15 :8位地址信号 不同时,但共用
主要的控制和状态信号 WR: 写信号; RD: 读信号; IO/M:为“0”表示访问内存,为“1”表示访问接口; DEN: 低电平有效时,允许进行读/写操作; DT/R:数据收发器的传送方向控制; ALE:地址锁存信号; RESET:复位信号。
例: 如果有: #WR=1,#RD=0,IO/#M=0 表示: CPU当前正在进行读存储器操作
READY信号
CPU访问一次内存或接口的主要信号 CPU完成一次访问内存或I/O接口需要: 地址信号 数据信号 各种控制信号 内存地址,接口地址 8位数据线,与地址低8位分时复用 各种控制信号 读、写、读写允许、收发器方向控制,地址锁存,访存/访接口控制
中断请求和响应信号 INTR:可屏蔽中断请求输入端 NMI: 非屏蔽中断请求输入端 #INTA:中断响应输出端
总线保持信号 HOLD: HLDA: 总线保持请求信号输入端。当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。 总线保持响应信号输出端。CPU对HOLD信号的响应信号。
三、8088/8086的内部结构
1. 组成 8088/8086内部由两部分组成: 执行单元(EU) 总线接口单元(BIU) 第43页图
2. 执行单元 运算器 8个通用寄存器 1个标志寄存器 EU部分控制电路
执行单元 功能 指令译码 指令执行 暂存中间运算结果 保存运算结果特征 指令的执行 在ALU中完成 在通用寄存器中 在标志寄存器FLAGS中
3. 总线接口单元 功能: 从内存中取指令到指令预取队列 负责与内存或输入/输出接口之间的数据传送 指令预取队列是并行流水线工作的基础 负责与内存或输入/输出接口之间的数据传送 在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行。
结论 指令预取队列的存在使EU和BIU两个部分可同时进 行工作,即: 目的: 实现指令的并行执行 提高了CPU的效率; 降低了对存储器存取速度的要求
四、内部寄存器
内部寄存器的类型 含14个16位寄存器,按功能可分为三类 8个通用寄存器 4个段寄存器 2个控制寄存器 深入理解:每个寄存器中数据的含义
1. 通用寄存器 数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI)
数据寄存器 8088/8086含4个16位数据寄存器,它们又可分为8个8位寄 存器,即: AX BX CX AH,AL DX BH,BL CH,CL DH,DL
数据寄存器特有的习惯用法 AX: BX: CX: DX: 累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中; 基址寄存器。在间接寻址中用于存放基地址; CX: 计数寄存器。用于在循环或串操作指令中存放计数值; DX: 数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。
地址指针寄存器 SP: BP: … ┇ 堆栈指针寄存器,其内容为栈顶的偏移地址; 基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。 00H 12H … ┇ SP BP可指向堆栈的任意位置 共同点: 1)默认指向堆栈区 2)多数情况用于存放地址
BX与BP在应用上的区别 作为通用寄存器,二者均可用于存放数据;
变址寄存器 SI: 源变址寄存器 DI: 目标变址寄存器 变址寄存器在指令中常用于存放数据在内存中的地 址。
通用寄存器小结 数据寄存器 AX,BX,CX,DX 通用寄存器 地址寄存器 SP,BP,SI,DI 可以分为两个8位寄存器 主要用于存放中间运算结果 数据寄存器 AX,BX,CX,DX 通用寄存器 地址寄存器 SP,BP,SI,DI 可以存放运算数据,也常用于存放数据的地址
2. 控制寄存器 IP FLAGS ┇ 指令指针寄存器,其内容为下一条要取的指令的偏移地址。 标志寄存器,存放运算结果的特征 指令1 指令2 内存中的程序 指令1 指令2 指令n ┇ 分析 获取操作数 执行 存放结果 程序计 数器PC (IP) 地址 CPU 取出 操作数 IP 指令指针寄存器,其内容为下一条要取的指令的偏移地址。 FLAGS 标志寄存器,存放运算结果的特征 6个状态标志位(CF,SF,AF,PF,OF,ZF) 3个控制标志位(IF,TF,DF)
状态标志位(1) CF(Carry Flag) OF(Overflow Flag) ZF(Zero Flag) SF(Sign Flag) 符号标志位。当运算结果的最高位为1时,SF=l
状态标志位(2) PF(Parity Flag) AF(Auxiliary Carry Flag) 奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=l AF(Auxiliary Carry Flag) 辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位),AF=1 仅针对低8位
状态标志位例 1 给出以下运算结果及运算后各状态标志位的状态: 10110110 11110100 CF= OF= AF= PF= 10110110+11110100 10110110 11110100 CF= OF= AF= PF= SF= ZF= 1 + 1 1 10101010 1
控制标志位 TF(Trap Flag) IF(Interrupt Enable Flag) DF(Direction Flag) 陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式。 IF(Interrupt Enable Flag) 中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。 DF(Direction Flag) 方向标志位。在数据串操作时确定操作的方向。
3. 段寄存器 作用 用于存放相应逻辑段的段基地址 需要弄清楚的问题: 什么是逻辑段?为什么要分段? 每个段寄存器中存放的内容=?
五、存储器寻址
内存储器管理 8088 CPU是16位体系结构的微处理器 可以同时产生16位二进制码 8088 CPU需要管理1MB内存 … 可以直接产生64K个编码 8088 CPU需要管理1MB内存 需要能够产生1M个地址编码 0000H 00H 12H … ┇ 1 0000H 8088对内存采用分段管理方式
内存地址变换 欲实现对1MB内存空间的正确访问,每个 内存单元在整个内存空间中必须具备惟 一地址 物理地址 … 内存地址变换: ┇ 12H XXXXXH 内存地址变换: 如何将直接产生的16位编码变换为20位物理地址?
1. 内存单元的编址(1) 内存每个单元的地址在逻辑上都由两部分组成: 8088为16位结构,所以段地址和偏移地址均为16位 段(基)地址 指示存储单元在整个内存空间中处于哪个区域 段内地址(相对地址/偏移地址) 指示存储单元在段中的相对位置(与段中第1个单元的距离) 31 15 8088为16位结构,所以段地址和偏移地址均为16位 × × × • • • × × × × × × • • • × × × 段基地址(16位)
存储器的编址(2) 段基地址: 相对地址(偏移地址) 逻辑段的起始地址称为段首 由偏移地址的定义得段首的偏移地址= 决定存储单元在内存中的位置 相对地址(偏移地址) 该存储单元相对段内第一个单元的距离 逻辑段的起始地址称为段首 每个逻辑段内的第一个单元 00H 12H 第1个单元 由偏移地址的定义得段首的偏移地址=
存储器的编址(3) 内存单元地址: × × × • • • × × × × × × • • • × × × 段首的偏移地址: 0000H 31 15 × × × • • • × × × × × × • • • × × × 段基地址(16位) 段首地址(段首的物理地址) 段首的偏移地址: 0000H 19 4 × × × • • • × × × 0 0 0 0 段基地址(16位)
存储器的编址(4) 物理地址: 内存单元在整个内存空间中的惟一地址 例: 段基地址 =6000H 段首地址 偏移地址=0009H 物理地址 数据段 9 00H 60009H 12H
2. 实地址模式下的存储器地址变换 + 内存物理地址由段基地址和偏移地址组成 × × × • • • × × × 0 0 0 0 段首地址 由操作系统确定 19 4 物理地址 × × × • • • × × × 0 0 0 0 + × × × • • • × × × 偏移地址 由指令给出 物理地址=段基地址×16+偏移地址
3. 段寄存器 作用 用于存放相应逻辑段的段基地址 8086/8088内存中逻辑段的类型 代码段 数据段 附加段 堆栈段 存放指令代码 存放操作的数据 存放操作的数据 存放暂时不用但需保存的数据。
段寄存器 CS DS ES SS 段寄存器的值表明相应逻辑段在内存中的位置 代码段寄存器,存放代码段的段基地址 数据段寄存器 ,存放数据段的段基地址 ES 附加段寄存器,存放数据段的段基地址 SS 堆栈段寄存器, 存放堆栈段的段基地址 段寄存器的值表明相应逻辑段在内存中的位置
例: 设某操作数存放在数据段,DS=250AH,数据所在单元 的偏移地址=0204H。则该操作数所在单元的物理地址 为: 250AH ×16+0204H = 252A4H
4. 逻辑段与逻辑地址 ┅ 关于逻辑段: 例: 一个物理地址可以对应若干逻辑地址 大小、位置都可改变的“段” 每个内存单元的段地址和偏移地址都可变 例: 8088内存最多可有多少个段? 2500H:0000H ┅ 2500H: 00A0H 250AH:0000H 一个逻辑段的大小? 具有惟一物理地址: 250A0H
逻辑段与逻辑地址 内存的分段是逻辑分段,不是物理段。各个逻辑段在地址上可以不相 连、可以部分重合,也可以完全重合 每个内存单元具有惟一物理地址,但可能具有多个逻辑地址。 一个逻辑段的默认容量为65KB 16bit 计算机 一个内存单元可以同时处于两个不同类型的逻辑段 一个内存单元可以在不同的时刻属于相同(或不同)类型的段 不同类型段在内存中可以完全重合、部分重合、相邻、不相邻
例: 已知: CS=1055H, DS=250AH ES=2EF0H SS=8FF0H 画出各段在内存中的分布。
例: CS=1055H DS=250AH ES=2EF0H SS=8FF0H 段首地址=10550H 默认段尾地址= 10550H 代码段 2054FH 250A0H 数据段 2EF00H 附加段 8FF00H 堆栈段
逻辑段说明 同一程序模块装入主存时,不同类 型的段可以装入在相同/不同的物 理空间 两个逻辑段完全重合或部分重合 同一程序模块装入主存时,不同类 型的段可以装入在相同/不同的物 理空间 两个逻辑段完全重合或部分重合 两个不同程序模块装入主存时,同 一类型的逻辑段也可以装入相同或 不同的物理空间中 10550H 代码段1 代码段2 250A0H 数据段 2EF00H 附加段
5. 存储器的保护模式 保护模式: 保护模式下的内存访问 支持多任务的工作模式,提供了多任务保护机制; 内存段的访问受到限制,不能再随意存取数据段。 保护模式下的内存访问 不再直接从段寄存器中获得段基地址,段基地址存放在内存的段描述符表中,由段描述符寄存器给出段描述符表的基地址,段寄存器中仅存放段选择符。
保护模式下的存储器地址变换
6. 堆栈及堆栈段的使用 堆栈: 内存中一个特殊区域,用于存放暂时不用或需要保护的数据。 常用于响应中断或子程序调用。
例: 已知 则: 若该段最后一个单元地址为10200H, 则: SS=1000H,SP=0100H 堆栈段的段首地址= 栈顶(偏移)地址= 栈底偏移地址= 10000H 段首 0100H 堆栈区 栈顶 0200H 栈底
六、总线时序
时序 时序: 总线周期: CPU各引脚信号在时间上的关系 CPU完成一次访问内存(或接口)操作所需要的时间。 一个总线周期至少包括4个时钟周期。
七、8088系统总线
主要内容: 总线的基本概念和分类; 总线的工作方式; 常用系统总线标准。
1. 概述 总线: 是一组导线和相关的控制、驱动电路的集合。是计 算机系统各部件之间传输地址、数据和控制信息的 通道。 地址总线(AB) 数据总线(DB) 控制总线(CB)
2. 总线分类 片内总线 片外总线 按相对CPU的位置分 CPU总线 系统总线 外部总线 按层次结构分
3. 总线的基本功能 数据传送 仲裁控制 出错处理 总线驱动
4. 总线的主要性能指标 总线带宽(B/S): 总线位宽(bit): 总线的工作频率(MHz) 单位时间内总线上可传送的数据量 能同时传送的数据位数 总线的工作频率(MHz) 总线带宽=(位宽/8)(工作频率/每个存取周期的时钟数)
本章小结 微处理器的一般构成 8088CPU的主要引线及其功能 8088CPU的内部结构 内部寄存器功能 存储器寻址 堆栈 寄存器中数据的含义 8位寄存器中存放的均为运算的数据 存储器寻址 逻辑地址,段基地址,偏移地址,物理地址 堆栈 栈顶地址,栈底地址,堆栈段基地址