IO:
概述:
-
IO的发展:
- 早期:
分散连接 每一个设备有专门的控制电路(增删麻烦)
CPU和IO串行工作 程序查询方式 - 接口模块和DMA阶段
总线连接
CPU和IO并行工作 中断方式和DMA方式 - 具有通道结构的阶段
一个小型的处理器,只用来管理IO - 具有IO处理机的阶段
甚至当IO不工作,IO处理器可以分担CPU的一部分工作
- 早期:
-
组成:
-
IO软件
IO指令 在CPU中,用来控制IO的指令- 分为操作码(表示是IO指令),命令码(具体那条指令),设备码(IO地址)
通道指令 通道自己的指令
- 指出数据开始位置,传输字数,操作命令
-
IO硬件
- 设备
- IO接口
-
IO和主机之间的联系方式
-
IO设备编址
- 统一编址,IO设备地址为内存中的一个,用取数,存数指令就可以完成CPU和IO的交流
- 单独编址,输入输出指令使用了作用的IO指令
-
设备选址
- 使用设备选择电路识别是否被选中
-
传送方式
- 串行
- 并行
- 也就是说和主机之间是并行还是串行
-
联络方式
- 立即响应
- 异步工作采用应答信号
- 同步工作方式
- 使用时标的方式
-
连接方式
- 辐射式连接
也就是分散连接 - 总线连接
外部设备通过接口和主机连接,接口可以给主机传送控制命令,数据缓存(外部输入时缓存到接口中,完成格式转换等工作),便于增删设备
- 辐射式连接
-
-
IO与主机信息传送的控制方式
- 程序查询方式
当程序调用io,CPU一直查询设备的状态字,查看是否准备好了,当准备好了就从io接口读出字到CPU中。 - 程序中断方式
- IO设备在准备的过程中,CPU不工作,只有在交换数据的时候CPU才打断现行程序开始工作可以部分并行工作
- DMA方式
- 主存和IO之间有一条直接数据通路
- 不中断现行程序
- 周期挪用(周期窃取)
窃取的是总线的使用权,因为有一些指令被存放入cache中,所以只要执行的指令不需要访存就可以不中断CPU执行,CPU和IO并行工作
- 程序查询方式
-
IO接口:
- 概述:为什么要接口
- 实现设备选择
- 实现数据缓冲,达到速度匹配目的
- 数据串-并格式转化
- 电平转化
- 传送控制命令
- 反映设备的状态(“忙”,“中断请求,“就绪”)
- 功能和组成
- 总线连接
- 功能组成:
完成触发器用于确定当前设备是否完成了工作;工作触发器用于发出工作命令;中断请求触发器用于对CPU发出中断;屏蔽触发器用于表示的是主机当前的工作比IO的中断工作重要,这时即使IO设备发出中断,接口也不会向主机提出。
- 总线连接
程序查询方式:
- 流程
- 单个设备
不断查询这个设备接口 - 多个设备
按照一定的优先级,查询各个接口 - 实现程序查询的过程:
保存寄存器内容
设置计数值,控制传输数据量 每完成一个字的传输就-1
设置主存缓冲区地址
启动外设
询问IO是否准备好,否持续查询,是下一步
传送下一个数据
修改主存地址
修改计数器值,判断是否传输完,没有则循环到启动外设步骤
- 单个设备
- 接口电路
设备选择电路通过将自己的设备地址和地址线上的地址比较,这里主要是地址线
当被选中和被启动 命令线
标记D为0,表示数据未准备好,标记B为1,表示设备被启动
CPU开始不断查询D信号
设备准备好数据,将数据输入DBR中
设备工作结束信号被送入
标记D被改为1,标记B为0
程序中断方式:
-
中断的概念:
-
接口电路:
中断请求触发器,中断屏蔽触发器,排队器,中断向量地址形成部件,IO基本电路图中我们可以看到,当只有D为正逻辑(IO完成工作),MASK为负逻辑(中断未被屏蔽),且当收到CPU的查询信号是,中断请求才发出-
中断排队器
- 可以通过硬件和软件实现
- 硬件放在CPU或接口电路中(链式排队器)紫色为低电平,黄色为高电平
当通过非门为低电平表示前面没有需要中断的接口,当intp的输出为高电平表示这个设备发出了中断。
-
中断向量地址形成部件
- 可以通过软件和硬件方式
- 硬件向量法,由硬件产生向量地址(中断向量地址),再有向量地址找到入口地址
中断向量:中断服务程序的开始地址,同时还有一些准备工作,例如执行该中断时需要的一些非体系寄存器的值
只有一个输入,表示是哪个中断,输出为一个地址值
当一个设备发出中断经过排队后,设备排队器根据输入来的中断发出一个中断地址
-
-
IO中断处理过程:
- CPU中断的条件和时间单重和多重的流程
- 条件:允许中断触发器 EINT=1,可以通过开关中断指令来置位
- 时间:D=1且MASK=0,在每条指令执行阶段的结束前
- CPU中断的条件和时间单重和多重的流程
-
中断服务程序的流程:
- 中断服务程序的流程
- 保护现场;程序断点的保护和寄存器的保护
- 中断服务
- 恢复现场
- 中断返回
- 单重中断和多重中断
- 单重中断 不允许现行的中断服务程序被中断
- 多重中断 可以运行现行的中断服务程序被更高级别的中断中断
- 单重和多重的流程
区别在于开中断的位置不同,单重中断不能再被中断,所以EINT开启时间晚。
- 中断服务程序的流程
DMA方式
- 特点
- DMA和中断方式的数据传输
- 中断方式:需要借助于CPU寄存器
- DMA不需要CPU的参与
- DMA和主存交换数据的三种方式
- 当开始IO就停止CPU对主存的访问,控制简单,不能保证CPU对主存的利用率,连续的一大段时间,可能导致IO又进入了准备阶段,但是CPU不能使用总线
- 周期窃取(周期挪用),IO准备好了发送信号通知CPU
- CPU不访存,总线分配给DMA
- CPU正在访存,DMA等待
- 同时请求访存,DMA优先
- 交替访存
- CPU和DMA交替获得总线控制权
- DMA和中断方式的数据传输
- 接口功能和组成
- 接口功能
- 向CPU申请DMA传送
- 处理控制权的转交
- 管理系统总线,控制数据传送
- 确定数据传送的首地址和长度
- 操作完成信号
其中的AR为内存地址寄存器,WC为传输数目寄存器,DAR为设备编号寄存器,BR为数据缓冲区,DREQ为 DMA请求信号,DACK为DMA响应信号,HRQ为总线请求信号,HLDA为总线保持响应信号
中断机构的工作,数据传输后的恢复工作,WC为0,发出溢出信号,中断机构发出中断请求,由CPU做完成数据传输后的处理
- DMA的工作流程
- DMA传送过程:预处理,数据传送,后处理
- 预处理,通过几条输出指令预置传送方向,传送地址和数据量
- 预处理,通过几条输出指令预置传送方向,传送地址和数据量
- DMA传送过程:预处理,数据传送,后处理
- DMA接口与系统的连接方式:
- 具有公共请求线的DMA请求
- 独立DMA
- 具有公共请求线的DMA请求
- DMA和程序中断方式
- 接口类型
- 选择型
- 多路型
不同的设备可以同时进行数据准备工作
- 选择型
- 接口功能