计组与微机控制
10.0 输入输出技术和编址方式以及DMA技术
10.0 输入输出技术和编址方式以及DMA技术
第 10 章 输入/输出技术
输入/输出接口概述
微型计算机不能直接和所有外部设备通信,因为外设种类很多,速度、数据格式、电平、工作方式都不一样。
所以 CPU 和外设之间通常需要一个中间电路:
CPU ↔ I/O 接口电路 ↔ 外部设备
I/O 接口电路的作用就是让 CPU 和外部设备之间能够可靠交换数据。
1. 输入/输出接口电路
1.1 什么是输入/输出设备
输入设备的作用:把外部信息转换成计算机能识别的数据形式
例如:键盘,A/D 转换器,扫描仪,传感器
输出设备的作用:把计算机处理后的数据转换成人或其他设备能识别的形式
例如:显示器,打印机,投影仪,D/A 转换器,执行机构
1.2 为什么需要 I/O 接口
外设不能直接接到 CPU 上,主要原因有:
1. 速度不匹配 2. 数据格式不匹配 3. 电平或功率不匹配 4. CPU 与外设工作时序不一致 5. 外设种类多,控制方式不同
所以需要 I/O 接口在中间做转换、缓冲和协调。
1.3 I/O 接口电路的一般结构
I/O 接口一般包含:
数据输入寄存器 数据输出寄存器 控制寄存器 状态寄存器
可以整理成:
1.4 I/O 接口与总线的关系
I/O 接口一边连接系统总线,另一边连接外设。
系统总线通常包括:
数据总线 地址总线 控制总线
外设侧通常还会有:
数据信号 控制信号 状态信号
所以 I/O 接口可以理解为:对 CPU:像一个可以读写的寄存器组 对外设:负责收发数据、控制状态、匹配时序
1.5 I/O 接口的主要功能
I/O 接口主要完成以下功能:
1. 数据缓冲 2. 数据格式转换 3. 速度匹配 4. 电平和功率匹配 5. 设备选择和地址译码 6. 控制信号产生 7. 状态信息保存 8. 中断或 DMA 请求产生
可以一句话记:I/O 接口就是 CPU 和外设之间的数据通道、控制通道和状态通道。
2. CPU 与外设间的数据输入/输出方式
CPU 与外设之间的数据传送方式主要有四种:
1. 程序控制方式 2. 中断控制方式 3. DMA 方式 4. I/O 处理机方式
其中程序控制方式又分为:无条件传送方式,查询传送方式
2.1 程序控制的输入/输出方式
程序控制方式的特点是:数据传送过程由 CPU 执行程序直接控制。
也就是说,CPU 主动去读外设或写外设。
2.1.1 无条件传送方式
无条件传送方式是最简单的 I/O 控制方式。
它的基本思想是:
默认外设已经准备好, CPU 不检查状态, 直接进行输入或输出。
例如:
CPU 认为输入设备已经有数据 CPU 直接执行 IN 指令读取数据 或者 CPU 认为输出设备已经空闲 CPU 直接执行 OUT 指令输出数据
无条件传送方式的使用条件
这种方式必须满足:外设什么时候准备好是确定的或者外设速度足够快 或者 CPU 可以通过延时保证外设已经准备好
例如定时控制的简单设备,可以用这种方式。
无条件传送方式的优点
硬件简单 程序简单 不需要状态端口 不需要查询外设状态
无条件传送方式的缺点
可靠性较差,必须准确估计外设准备时间 等待时间通常要按最坏情况设计,CPU 可能白白等待,效率较低
2.1.2 查询传送方式
查询传送方式也叫程序查询方式。
它的基本思想是:
CPU 在传送数据前,先读取外设状态。 如果外设准备好,就传送数据; 如果没有准备好,就继续查询等待。
流程可以写成:
读取状态寄存器 判断 Ready 位 Ready = 0,继续查询 Ready = 1,执行数据传送
查询方式需要什么硬件
查询方式下,I/O 接口中除了数据寄存器外,还要有:状态寄存器,状态标志位
例如:输入设备是否有数据 输出设备是否空闲 是否出错 是否忙
查询方式的优点
比无条件传送可靠 能协调 CPU 和慢速外设之间的速度差异 硬件仍然比较简单
查询方式的缺点
CPU 要反复查询外设状态 浪费 CPU 时间 CPU 在等待期间不能做其他有用工作 系统效率低
所以查询方式适合:
外设数量少 速度要求不高 程序比较简单 CPU 空闲时间较多
2.2 中断控制方式
查询方式的问题是 CPU 一直等外设,效率低。
中断方式的思想是:
CPU 不主动等待外设。 外设准备好以后,主动向 CPU 发中断请求。 CPU 响应后再去执行对应的中断服务程序。
2.2.1 中断方式的过程
可以写成:
CPU 正常执行主程序 外设准备好 外设向 CPU 发出中断请求 CPU 暂停当前程序 CPU 转去执行中断服务程序 完成数据输入/输出 CPU 返回原程序继续执行
2.2.2 中断方式的优点
CPU 不需要反复查询外设 提高 CPU 利用率 允许 CPU 和多个外设并行工作 实时性较好 适合随机发生的外设请求
例如:键盘按键 串口接收数据 定时器溢出 外部传感器触发
2.2.3 中断方式的缺点
硬件和软件比查询方式复杂 需要中断控制逻辑 需要中断服务程序 需要保护和恢复现场 多个中断源时还要处理中断优先级
2.2.4 中断和查询方式对比
一句话记:查询方式是 CPU 去找外设;中断方式是外设来找 CPU。
2.3 DMA 工作方式
DMA 全称:Direct Memory Access直接存储器存取
DMA 的核心思想是:外设和内存之间直接交换数据, 不需要 CPU 一条一条执行 IN/OUT 指令搬运。
2.3.1 为什么需要 DMA
如果不用 DMA,从外设向内存传一批数据,通常要:
CPU 从外设读一个数据,CPU 把数据写入内存 CPU 修改地址,CPU 修改计数 重复上述过程
这会浪费大量 CPU 时间。
DMA 则让:外设 ↔ 内存直接传送数据。
CPU 只需要:初始化 DMA 控制器,启动 DMA DMA 完成后 CPU 再处理结果
2.3.2 DMA 的控制者
DMA 方式下,真正控制传送的是:DMA 控制器 DMAC
DMAC 负责:控制地址总线 控制数据总线 产生读写控制信号 修改内存地址 修改传送计数 判断 DMA 是否结束
在 DMA 传送期间,CPU 通常要让出总线控制权。
2.3.3 DMA 的优点
传送速度快 适合大批量数据传送 CPU 负担小 可以提高系统整体效率
适合:
磁盘数据传输 高速 A/D 采样 声卡数据传输 网络数据传输 显示缓冲区搬运
2.3.4 DMA 的缺点
硬件复杂 需要 DMA 控制器 CPU 仍要初始化 DMA DMA 传送期间可能占用总线 需要处理总线仲裁问题
2.4 I/O 处理机方式
I/O 处理机方式简称:IOP 方式
它比 DMA 更进一步。
DMA 主要负责数据搬运,而 I/O 处理机可以负责更复杂的 I/O 操作。
2.4.1 I/O 处理机的思想
CPU 不再直接管理具体 I/O 操作,而是:
CPU 在内存中建立一个 I/O 命令块 I/O 处理机读取命令块 I/O 处理机独立完成 I/O 操作 完成后通知 CPU
2.4.2 I/O 处理机能做什么
I/O 处理机可以完成:
数据传送 数据格式转换 数据拆装 设备控制 错误检测 复杂外设管理
2.4.3 I/O 处理机方式的优点
CPU 负担更小 适合大型系统 适合复杂 I/O 任务 I/O 操作可以块为单位进行 系统并行能力强
2.4.4 四种 I/O 方式对比
可以记成:
程序控制:CPU 全管,中断方式:外设请求,CPU 服务 DMA:DMAC 搬数据,I/O 处理机:专门处理器管 I/O
3. 微处理器与 I/O 接口电路的连接
CPU 通过总线连接存储器和 I/O 接口。
需要考虑三个问题:
1. 负载能力是否匹配 2. 速度是否匹配 3. 逻辑连接是否正确
3.1 负载能力匹配
CPU 或接口芯片的输出端不能带太多负载。
如果负载超过芯片驱动能力,可能导致:
电平错误 信号变形 系统工作不可靠
所以必要时要加:
总线驱动器 缓冲器 三态门 锁存器
3.2 速度匹配
CPU 速度往往比外设快。
如果外设来不及响应 CPU 的读写周期,需要:
插入等待周期 使用 READY 信号 降低 CPU 时钟 选用速度合适的接口芯片
教材里提到 READY 引脚,就是让 CPU 插入等待周期,使慢速外设有时间完成读写。
3.3 逻辑连接正确性
CPU 和 I/O 接口连接时,必须正确连接:
地址线 数据线 读写控制线 片选信号 状态信号 中断请求信号
尤其是片选逻辑和地址译码,决定 CPU 访问哪个 I/O 端口。
4. I/O 端口的编址方式
CPU 访问 I/O 接口前,要给 I/O 接口中的寄存器分配地址。
常见方式有两种:
1. 存储器与 I/O 统一编址 2. 存储器与 I/O 独立编址
4.1 统一编址方式
统一编址也叫:存储器映像 I/OMemory-Mapped I/O
它的特点是:
把 I/O 接口寄存器当作存储单元一样编址。
也就是说,I/O 端口和内存共用同一个地址空间。
CPU 访问 I/O 端口就像访问内存一样。
例如:MOV [0FFFFH], AL
这条指令可能不是写内存,而是写某个 I/O 接口寄存器,具体取决于硬件地址译码。
4.1.1 统一编址的优点
访问 I/O 可以使用所有访存指令 指令功能强 编程灵活 I/O 接口可以和存储器共用地址译码电路 CPU 不需要专门区分访存和访外设
4.1.2 统一编址的缺点
I/O 端口占用内存地址空间 可用内存容量减少 访问 I/O 的地址通常较长 指令可能占用更多存储空间
教材里强调:8086 如果统一编址,I/O 地址要按 16 位偏移地址处理; 而专用 I/O 指令可以只用 8 位端口地址。
4.2 独立编址方式
独立编址也叫:I/O 映像 I/O, Isolated I/O, Port-Mapped I/O
它的特点是:I/O 端口和存储器使用不同的地址空间。
CPU 有专门的输入/输出指令:IN,OUT
例如:OUT 0FFH, AL IN AL, 60H
4.2.1 独立编址需要的控制信号
在 8086 系统中,访问内存和访问 I/O 由控制信号区分。
常见信号是:
M/IO RD WR 地址线 数据线
当访问存储器时:M/IO = 1
当访问 I/O 端口时:M/IO = 0
4.2.2 独立编址的优点
I/O 端口不占用内存地址空间 访存和访 I/O 控制清楚 I/O 地址可以较短 硬件译码范围可以较小
4.2.3 独立编址的缺点
只能用专门的 IN/OUT 指令访问 I/O 指令功能不如访存指令灵活 CPU 需要提供区分内存和 I/O 的控制信号
4.3 统一编址和独立编址对比
一句话记:
统一编址:I/O 像内存一样访问。 独立编址:I/O 用专门端口地址和 IN/OUT 指令访问。
