网站首页 > 文章精选 正文
输入输出系统
程序查询方式
程序查询流程
在程序查询方式中,CPU会通过查询程序不断地检查各个I/O设备是否准备好进行数据传输
- CPU初始化时,会在寄存器中设置好主存缓冲区的首地址和计数值
- CPU发出启动指令,启动所有需要的I/O设备
- CPU循环执行查询操作,从第一个设备开始,逐一检查每个设备是否准备就绪
- 如果某个设备准备好,CPU就发出传送指令,并与该设备进行数据传输
- 数据传输完成后,CPU可以返回到查询循环,继续检查下一个设备
单/多个 I/O 设备的查询流程
缺点:
- CPU在等待I/O设备准备就绪的过程中,会持续执行查询操作,这会导致CPU利用率低
- 如果多个设备同时准备好,程序查询方式无法有效地处理并行操作
程序查询方式的接口电路
- 当 CPU 通过 I/O 指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路
- 若该接口的设备码与地址线上的代码吻合,其输出 SEL 有效
- I/O 指令的启动命令经过“与非”门将工作触发器B置“1”,将完成触发器D置“0”
- 由 B 触发器启动设备工作
- 输入设备将数据送至数据缓冲寄存器
- 由设备发设备工作结束信号,将 D 置“1”,B 置“0”,表示外设推备就绪
- D 触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”
- CPU 执行输入指令,将数据缓冲寄存器中的数据送至 CPU 的通用寄存器,再存入主存相关单元
程序中断方式
中断的概念
程序中断方式是基于程序查询方式的改进,它允许I/O设备在准备好后主动中断CPU,而不是让CPU不断地查询
- CPU 初始化所有 I/O 设备,并允许它们通过中断请求线(IRQ)发起中断
- CPU 开始执行其他任务,不需要持续查询 I/O 设备状态
- 当某个 I/O 设备准备好数据传输时,它会通过中断请求线发送中断信号给 CPU
- CPU 响应中断,暂停当前任务,处理中断(即与请求的 I/O 设备进行数据传输)
- 数据传输完成后,CPU 恢复被中断的任务
I/O 中断案例
当打印机在准备数据以及打印前准备阶段,CPU 都会继续执行主程序,只有当打印机准备好之后才会发中断请求给 CPU ,然后 CPU 响应该中断
优点:
- CPU的利用率提高,因为它不需要不断地执行查询循环,可以在等待 I/O 操作的同时执行其他任务
- 支持并行操作,多个设备可以独立地中断 CPU,不需要等待其他设备的处理
程序中断方式的接口电路
中断请求触发器和中断屏蔽触发器
- 接口电路中的完成触发器 D、中断请求触发器 INTR、中断屏蔽触发器 MASK 和中断查询信号的关系如下图所示。可见,仅当设备准备就绪(D = 1),且该设备未被屏蔽(MASK = 0)时,CPU的中断查询信号可将中断请求触发器置“1” ( ‘ INTR = 1)
排队器
- 当多个中断源同时向CPU提出请求时,CPU只能按中断源的不同性质对其排队,给予不同等级的优先权,并按优先等级的高低予以响应
- 硬件排队器(优先级:从左到右依次降低,是用INTRn的非来控制右侧INTR(n+1)的输出)
中断向量地址形成部件(设备编码器)
- 由硬件产生向量地址,再由向量地址找到入口地址
- 中断向量地址形成部件的原理
程序中断方式接口电路的基本组成
- 中断请求线(IRQ):设备使用中断请求线向 CPU 发送中断信号,表明它需要 CPU 的处理或者有数据准备好
- 中断控制器:当有多个设备时,中断控制器负责管理多个中断请求,确定优先级,并将中断请求转发给 CPU
- 设备选择电路:用于识别哪个设备请求中断,通常通过比较设备地址和 CPU 发出的地址来实现
- 设备忙/就绪状态触发器:这些触发器用来指示设备是否忙(正在处理数据)或者就绪(数据准备好)
- 数据缓冲寄存器(DBR):当设备准备好数据后,数据被暂存到数据缓冲寄存器中,等待CPU读取
- 中断屏蔽寄存器(MASK):控制哪些中断请求被允许通过,哪些被屏蔽
- 中断处理程序:CPU接收到中断请求后,执行的中断处理程序代码,用于响应设备请求
- 排队器:当有多个中断请求同时发生时,排队器负责决定哪个请求优先被处理
- 设备编码器:生成中断向量,这个向量指向特定的中断服务程序
- 中断向量地址形成部件:用于生成中断向量的地址,这样CPU可以找到并执行正确的中断处理程序
I/O中断处理过程
CPU响应中断的条件和时间
- 条件: 允许中断触发器 EINT = 1
- 时间: 当 D = 1 且 MASK = 0 、 在每条指令执行阶段的结束前、 INTR 置 1
中断服务程序的流程
- 保护现场 程序断点的保护(中断隐指令完成);寄存器内容的保护 (出栈指令)
- 中断服务:对不同的 I/O 设备具有不同内容的设备服务
- 恢复现场(取数指令或者出栈指令)
- 中断返回(中断返回指令)
单重中断和多重中断
- 单重中断:不允许中断现行的中断服务程序
- 多重中断:允许级别更高的中断源来中断现行的中断服务程序
DMA 方式
概述
DMA 和程序中断方式的数据通路的区别?
由于主存和 DMA 接口之间有一条数据通路,因此主存和设备交换信息时,不通过CPU,也不需要CPU 暂停现行程序为设备服务,省去了保护现场和恢复现场,因此工作速度比程序中断方式的工作速度高
DMA 方式和程序中断的比较
中断方式 | DMA方式 | |
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存储周期结束 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
DMA 方式的功能和组成
功能
- 向 CPU 申请 DMA 传送
- 处理总线的控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度以及修正传送过程数据地址和长度
- DMA 传送结束时,给出操作完成信号
组成
- 主存地址寄存器(AR):AR用于存放主存中需要交换数据的地址。在DMA传送数据前,必须通过程序将数据在主存中的首地址送到主存地址寄存器
- 字计数器(WC): WC用于记录传送数据的总字数,通常以交换字数的补码值预置。在DMA传送过程中,每传送一个字,字计数器如1,直到计数器为0,即最高位产生进位时,表示该批数据传送完毕
- 数据缓冲寄存器(BR) :BR用于暂存每次传送的数据
- DMA控制逻辑 :DMA控制逻辑负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成
- 中断机构:当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作 DMA操作的后处理
- 设备地址寄存器(DAR) :DAR存放I/O设备的设备码或表示设备信息存储区的寻址信息(如磁盘数据所在的区号、盘面号和柱面号)
DMA 与主存交换数据的三种方式
停止 CPU 访问主存
- 控制建档,但是 CPU 处于半工作或保持状态,未充分发挥 CPU 对主存的利用率
周期挪用(周期窃取)
- 每当 I/O 设备发出 DMA 请求时,I/O 设备便挪用或窃取总线占用权一个或几个主存周期,而 DMA 不请求时,CPU 仍继续访问主存,
- CPU 和 DMA 同时请求访存(此时将总线控制权让给DMA)
DMA 与 CPU 交替访问
- CPU 工作周期分为 C1、C2,C1主要供DMA访存,C2主要供CPU访存
- 不需要申请建立和归还总线的使用权
DMA 的工作过程
DMA 传送过程分:预处理、数据传送、后处理
预处理
- 给DMA控制逻辑指明数据传送方向
- 向DMA设备地址寄存器送人设备号,并启动设备
- 向DMA主存地址寄存器送入交换数据的主存起始地址
- 对字计数器赋予交换数据的个数
数据传送
DMA方式是以数据块为单位传送的,以周期挪用的DMA方式为例
后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些 DMA的结束工作
- 校验传送主存的数据是否正确
- 决定是否继续用 DMA 传送其他数据块,若继续传送,则又要对 DMA 接口进行初始化,若不需要传送,则停止外设
- 测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序
DMA 接口与系统的连接方式
- 具有公共请求线的DMA请求
- 独立的 DMA 请求
DMA 接口的类型
选择型的 DMA 接口
- 在物理上连接多个设备;在逻辑上只允许连接一个设备
多路型的 DMA 接口
- 在物理上连接多个设备;在逻辑上允许连接多个设备同时工作
- 多路型 DMA 接口的工作原理
- 磁盘、磁带、打印机分别每隔30us、45us、150us向DMA接口发DMA请求,磁盘的优先级高于磁带,磁带的优先级高于打印机
猜你喜欢
- 2025-05-11 全新旗舰系列,引爆顶级性能!索泰RTX 5090 D 32GB SOLID OC显卡测评
- 2025-05-11 苹果联合研究照亮多模态AI未来方向:早期融合 + 稀疏架构
- 2025-05-11 环形导轨传动“三兄弟”,如何助力产线智能升级?
- 2025-05-11 MX550独显是智商税?如何看待2022年入门级移动显卡?
- 2025-05-11 cvpr 2024|适应长度偏移:用于轨迹预测的FlexiLength网络
- 2025-05-11 新国标解读:起重机五大安全防线技术规范与维护指南
- 2025-05-11 用笔记本电脑摄像头录视频哪个软件比较好?
- 2025-05-11 美国罗克韦尔数控系统日常维修,确保设备高效运行!
- 2025-05-11 FANUC SP9031电机锁住或检测器断线故障分析
- 2025-05-11 罗宾斯静音床木工开榫机填数操作(罗宾斯静音床木工开榫机填数操作手册)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)