一、IO设备与IO接口
(一)IO设备
1.IO设备:外部输入输出设备
(二)IO接口
1.基本组成
(1)控制逻辑电路:用于协同控制各个模块
(2)设备选择电路:I/O接口连接多个外部设备,该电路选择需要工作的设备
(3)命令寄存器和命令译码器:对CPU的命令进行译码和存储
(4)设备状态标记:用于判断设备状态
- 完成触发器D
- 工作触发器B
- 中断请求触发器INTR
- 屏蔽触发器MASK(当CPU正在进行重要操作时,用于屏蔽外部设备请求)
(5)数据缓冲寄存器DBR:将外部设备的数据存入用于CPU通信
2.工作流程
(1)CPU通过命令线发出命令,同时通过地址线给出设备地址给IO接口,选取设备
(2)IO接口通过设备选择电路选择CPU所需外部设备,同时发出命令给外部设备
(3)外部设备给出状态给IO接口,IO接口将相应状态转化为设备状态标记
(4)CPU判断设备状态标记,若可以开始通信,则与IO接口通过数据线进行数据交换
- 若是读取命令,则外部设备将数据放入数据缓冲寄存器,然后CPU读取
- 若是写命令,则CPU将数据写入数据缓冲寄存器,然后外部设备读取
二、IO设备与主机信息传送的控制方式
(一)程序查询方式
1.程序查询流程
(1)CPU发出命令,同时给出设备地址
(2)设备读取命令,开始准备
(3)CPU查询设备状态,若设备为准备好,则CPU一直等待不断查询直到设备准备完毕
(4)设备准备完毕,开始数据通信
2.程序查询接口电路
(1)CPU发出命令,给出地址线选择设备
(2)设备读取命令开始启动准备(B触发器为1,D触发器为0)
(3)设备输入数据,设备工作结束(B触发器为0)
(4)CPU判断设备状态,若准备就绪(B触发器为0,D触发器为1),则开始数据通信
3.特点
(1)在查询时,CPU处于等待状态,CPU效率不高
(二)程序中断方式
1.程序中断流程
(1)CPU发出命令,给出地址线选出设备,然后CPU去执行其他工作
(2)设备读取命令,开始准备,若准备就绪,发出中断请求
(3)CPU停止工作,响应中断请求,执行中断服务程序,程序执行完毕,则继续工作
2.程序中断接口电路
(1)CPU发出命令,给出地址线选择设备
(2)设备开始启动(B触发器为1),设备准备工作
(3)设备准备工作结束(B触发器为,D触发器为1),若未被屏蔽(MASK触发器为0),则发出中断请求
(4)CPU查询中断,若检查到中断请求,根据中断优先级(排队器),中断响应
(5)CPU根据中断源找出储存中断程序的向量地址空间,开始执行中断服务程序
3.中断服务程序
(1)单重中断:在执行中断程序时,不允许执行其他中断
- 保护现场:保存原CPU执行程序的执行空间,进入中断服务程序的执行空间(入栈)
- 中断服务:开始执行中断服务程序
- 恢复现场:退出中断服务程序的执行空间(出栈)
- 中断返回:返回原CPU执行程序的执行空间
- 开启中断:中断被允许,接收下一次中断
(2)多重中断:在执行中断程序时,可以去执行比它优先级更高的中断
- 保护现场:保存原CPU执行程序的执行空间,进入中断服务程序的执行空间(入栈)
- 开启中断:中断被允许,可以接收其他中断
- 中断服务:开始执行中断服务程序
- 恢复现场:退出中断服务程序的执行空间(出栈)
- 中断返回:返回原CPU执行程序的执行空间
4.中断流程总结
(1)中断请求:中断源向CPU发出中断请求
(2)中断判优:判断中断源优先级,先执行优先级最高的
(3)中断隐指令
- 中断响应
- 中断服务程序断点入栈
- 关闭中断
- 将中断程序的向量地址放入计算机
(4)中断服务程序寻址:根据向量地址查询
(5)执行中断服务程序
5.特点
(1)在设备准备期间,CPU可以去做其他事,相较查询方式效率提高
(三)DMA方式
1.DMA接口组成
(1)AR:主存地址
- 用于存放于设备交互的数据地址
(2)WC:数据字计数器
- 一段数据有多个字的内容,而计算机一次只能传输1、2、4、8个字
(3)DAR:设备地址
(4)BR:数据缓冲器
2.DMA工作流程
(1)预处理
- DMA控制逻辑给出数据方向(输入/输出)
- 设备地址(DAR)给入DMA
- 主存给出数据存储首地址(AR)
- 计数器决定输入数据的字数(WC)
- 启动设备
(2)数据传送
- DMA向CPU申请主存控制权(HRQ)
- 若允许控制,CPU应答(HLDA)
- CPU控制数据送入主存或设备
- 计数器开始递减完成数据字传送(WC),随之数据地址变化(AR)
-
- 若数据溢出,启动中断机构
- 数据传送完成,向CPU提出中断
(3)后处理
- 判断数据是否传输正确
- 是否继续DMA
- 判断传输过程是否正确
3.特点
(1)此数据传输方式,不需要CPU直接参与,CPU效率大大提高
三、总结
(一)IO设备数据传输流程
1.CPU给出命令,设备地址
(1)程序查询方式
- CPU给出读/写命令
- CPU给出设备地址,指定设备进行数据传送
(2)程序中断方式
- CPU给出读/写命名
- CPU给出设备地址,指定设备中断
(3)DMA方式无CPU参与命令
2.数据准备阶段
(1)程序查询方式:数据放入数据缓冲器,CPU等待
(2)程序中断方式:数据放入数据缓冲器,CPU执行其他程序
(3)DMA方式:数据放入数据缓冲器(AR、WC、DAR)
2.向CPU请求,CPU响应请求
(1)程序查询方式:CPU直接参与
(2)程序中断方式:中断源发出中断请求,CPU响应中断服务程序
(3)DMA方式:DMA向CPU发出控制请求,CPU响应请求放弃主存控制权
3.数据传输
(1)程序查询方式:直接进行传输
(2)程序中断方式:CPU响应中断服务程序
(3)DMA方式:DMA与主存交互
- 修改AR、WC
- 主存向BR写入,或BR向主存写入
4.结束阶段
(1)程序查询方式:直接结束
(2)程序中断方式:跳出中断服务程序
(3)DMA方式:DMA放弃主存总线控制权