输入输出系统介绍
作用、功能
与其他系统的关系
输入/输出系统组成
要解决的问题
控制方式
- CPU 如何控制输入/输出?(输入/输出方式)
传输方式
- 传输通道、方式、速率等(总线、接口)
数据识别和转换
- 数/模转换、语音识别等,转换为字符、数据等计算机能 识别的格式(设备)
输入/输出方式
程序直接控制
I/O 技术分类
- 程序控制 I/O:处理器代表进程给 I/O 模块发送 I/O 命令,该进程忙等待直到操作完成;
- 中断驱动 I/O:处理器代表进程给 I/O 模块发送 I/O 命令,若 I/O 指令是非阻塞的,则处理器继续执行 I/O 命令的后续指令;若是阻塞的,则处理器执行的下一条指令来自 OS,将当前进程设置为阻塞态并调度其它就绪进程;
- 直接内存访问 DMA:DMA 模块控制内存和 I/O 模块之间的数据交换,为传送一块数据,处理器给 DMA 模块发送请求,且只有整个数据块传送结束后才向 CPU 发送中断请求
指向原始笔记的链接
操作:
- CPU 方:
- 查询接口状态(循环等待)
- 直到接口已经接收到该字符
- 读字符
- 外设方:
- 往接口数据缓冲中送字符处理完后,置状态寄存器 等待下一个字符
程序直接控制方式特点
- 成本低
- 效率低
- 严重占用 CPU 资源
- 适用情况:早期计算机中高速设备
中断
程序中断方式
- CPU 和外部设备同时工作
- 外部设备发起请求
- CPU 暂停正在执行的程序,进行响应
- 处理完成后,继续执行原来的程序
- 提高 CPU 的效率
- 可以同时管理多个外部设备
中断源
- 外中断:I/O 设备等
- 异常 (内中断):处理器硬件故障、程序“出错” ,Trap
- 中断触发器
- 中断状态寄存器
中断优先级: 响应中断的顺序
禁止中断与中断屏蔽
- 中断允许触发器(EI、DI)
- 有选择封锁
中断的完整过程:
- 中断请求
- 中断源设备设置中断触发器
- 每个中断源有 1 个中断触发器
- 同时可设置 1 个中断屏蔽触发器
- 中断源设备设置中断触发器
- 中断响应
- 响应条件:允许中断、当前指令结束、优先级
- 响应实现:硬件实现的中断隐指令,保存断点
- 中断处理
- 保存现场信息
- 运行中断服务程序
- 中断返回
8259A 中断机制
- 中断请求寄存器: Interrupt Request Register
- 中断屏蔽寄存器: Interrupt Mask Register
- 优先级排队线路: Priority resolver
- 数据缓冲寄存器: Data bus buffer
- 中断控制和工作状态逻辑: Control logic
- 设备选择器:
- 中断向量表: Int-service Register
应用场景与特点
程序中断方式应用场景:
- CPU 与外部设备并行工作
- 硬件故障处理
- 人机交互
- 多道程序和分时操作
- 实时处理(监控)
- 应用程序和操作系统之间的联系
- 多处理机中各处理机之间联系
中断控制方式特点
- 适用情况
- 传输速度不高
- 传输量不大
- 对 CPU 干扰较大
DMA
直接内存访问
DMA 单元能够模拟处理器获得系统总线的控制权,从而进行存储器和内存的双向数据传送。
DMA 工作流程
- 处理器需要读或写一块数据,则向 DMA 模块发送包含以下信息的命令
- 请求读 or 写操作的信号,通过 DMA 模块与 CPU 之间的读写控制线发送;
- 相关 I/O 设备的地址,通过数据线发送;
- 从存储器中读 or 向存储器中写的起始地址,通过数据线发送并保存在 DMA 模块的地址寄存器中;
- 读 or 写的字数,也通过数据线传送,保存在 DMA 模块的数据计数寄存器中;
- CPU 继续执行其他工作,I/O 任务完全由 DMA 模块执行,DMA 模块直接从存储器中(或向存储器)逐字传送整块数据
- 传送结束后,DMA 模块向 CPU 发送中断请求,CPU 执行中断处理例程
DMA 配置方法
指向原始笔记的链接
- 单总线,DMA 与 I/O 模块分离
- DMA 模块充当代理处理器,通过程序控制 I/O 进行数据交换;
- 低效原因:与 CPU 控制的程序控制 I/O 一样,先传送请求后传送数据,即每传送一个字需要两个总线周期;
- 单总线,但 DMA 与 I/O 模块集成
- DMA 与 I/O 模块之间不必通过系统总线,DMA 成为 I/O 系统的一部分,大大降低所需总线周期;
- 缺点:不易扩展,增加或减少 I/O 模块都要改动 DMA 模块的接口数量
- 多总线,系统总线与 I/O 总线分离
- 若干 I/O 模块都连接在 I/O 总线上,DMA 模块只需要一个接口与 I/O 总线连接,
- DMA 与 I/O 模块之间的数据交换脱离系统总线
- 系统总线仅用于 DMA 模块与内存交换数据及处理器交换控制信号
I/O 设备和主存储器之间的直接数据通路,为专设的硬件,用于高速 I/O 设备和主存储器之间成组传送数据。
- 数据传输过程由 DMA 自行控制
- 主存储器需要支持成组传送
- 数据传送开始前和结束后通过程序或中断方式对 DMA 进行预处理和后处理
- DMA 工作方式
- 独占总线方式:当外设要求传送一批数据时,由 DMA 控制器发一个信号给 CPU。DMA 控制器获得总线控制权后,开始进行数据传送。一批数据传送完毕后,DMA 控制器通知 CPU 可以使用内存,并把总线控制权交还给 CPU。
- 周期窃取方式:当 I/O 设备没有 DMA 请求时,CPU 按程序要求访问内存:一旦 I/O 设备有 DMA 请求,则 I/O 设备挪用一个或几个周期。(随时,一旦冲突,DMA 优先)
- DMA 与 CPU 交替访问内存总线:一个CPU周期可分为2个周期,一个专供DMA控制器访内,另一个专供CPU访内。不需要总线使用权的申请、建立和归还过程。
DMA 实现时的问题
虚拟地址和实地址
- DMA 若采用实地址:虚拟地址连续,但实地址不连续
- 若采用虚拟地址:DMA 需要进行虚实地址转换
Cache 一致性:
- 主存中的数据可能不是最新的
- 采用直接写会带来性能的降低
- DMA 查询 Cache,降低性能
- 直接设计硬件控制
特点
- 与设备一对一服务
- 多 DMA 控制器同时工作可能发生冲突
- 对 CPU 打扰适中
- 初始化
- 周期挪用
- 无法适用大量高速设备的管理
通道
I/O 通道是计算机系统中代替 CPU 管理控制外设的独立部件,是一种能执行有限 I/O 指令集合——通道命令的 I/O 处理机。
- 一对多的连接关系
- 适应不同速度、不同种类的外部设备,可并行工作。
I/O 功能的发展阶段
指向原始笔记的链接
- 直接控制:CPU 直接控制外围设备
- 抽象控制程序,分离底层接口:CPU 使用非中断的程序控制 I/O,增加了控制器(I/O 模块),CPU 开始从外部设备接口的具体细节中分离出来
- 引入中断:CPU 不必等待 I/O 操作的执行
- 引入 DMA:I/O 模块通过 DMA 直接控制存储器,不必 CPU 参与,仅在传送开始和结束时需要 CPU
- I/O 专用处理器:I/O 模块专设单独处理器,有专门的指令集,CPU 只指导 I/O 处理器执行内存中的特定 I/O 程序,I/O 处理器自行取指执行完成程序规定的任务,CPU 因此指定一系列 I/O 活动,只在整个序列执行完成后才中断 CPU(408 中的通道技术)
- I/O 模块自己有局部存储器:(SPOOLing技术)
功能
- 根据 CPU 要求选择某一指定外设与系统相连,向该外设发出操作命令,进行初始化
- 指出外设读/写信息的位置以及与外设交换信息的主存缓冲区地址
- 控制外设与主存之间的数据交换
- 指定数据传送结束时的操作内容,检查外设的状态
通道的类型
- 字节多路通道
- 简单的共享通道,分时处理,面向低、中速字符设备
- 选择通道
- 选择一台外设独占整个通道,以成组传送方式传送数据块,效率高,适合快速设备
- 数组多路通道
- 上两种方式的结合,效率高,控制复杂
外围处理机
- 通道型处理机
- 共享内存
- 外围处理机
- 通用计算机
- 独立完成输入/输出功能
- 通过通道方式与主机进行交互
设计 I/O 系统
考虑的因素:
- 性能
- 考虑吞吐量和延迟
- 适应各种不同类别的设备的性能的差异
- 从操作系统、驱动程序等各方面综合考虑
- 考虑到设备性能的提高
- 可扩展性
- 允许更多的设备接入到输入/输出系统
- 可适应性
- 设备有无
- 设备故障
输入/输出系统的目标:
- 输入/输出设备多,功能复杂,速度不一
- 多种控制方式,解决速度不一的问题,尽量少地占用 CPU 资源
- 操作系统管理
- 硬件直接支持
- 与不同的设备有直接的依赖关系(驱动程序)
- 尽量使设备使用统一的标准——虚拟设备 virtio