第七章 输入/输出系统

一、I/O系统基本概念

1.1 基本概念

在这里插入图片描述

I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输
I/O控制器就是一块芯片,常被集成在主板

1.2 I/O控制方式

在这里插入图片描述

1.2.1 程序查询方式

CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”之后(传好一个字就算完成),再从数据寄存器取出输入数据。

1.2.2 程序中断方式

等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。(每输入/输出一个字,就发一次中断请求)

1.2.3 DMA控制方式

在这里插入图片描述

主存与高速I/O设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令(通过I/O总线到DMA接口那条路),并指明主存地址、磁盘地址、读写数据量等参数。
DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块) ,才向CPU发出一次中断请求。
DMA接口也是I/O接口
DMA接口每次会从外设读出一个字,然后存到主存的指定位置(在DMA接口往主存存入数据时,CPU不能访存,就算CPU与DMA同时申请访存,也是让给DMA),每次存取一个字时,占用一个存取周期。直到完成一整块数据读写时,DMA才会向CPU发出一次中断请求
在这里插入图片描述这张图的意思是DMA方式每存取一个字的过程,而不是一个块的过程。

1.2.4 通道控制方式

在这里插入图片描述在这里插入图片描述DMA方式完成一块后,就会向CPU发出中断请求,而通道方式不止可以完成一块,完成多少由通道程序决定,由哪些设备输入或者输出到哪些设备都可以由通道程序决定,非常灵活。进一步解放了CPU。

1.3 I/O系统的基本组成

在这里插入图片描述
I/O 指令:CPU 指令的一部分
通道指令:通道能识别的指令

小结

在这里插入图片描述

二、外部设备

在这里插入图片描述
在这里插入图片描述

三、I/O接口

3.1 I/O接口的作用

在这里插入图片描述

3.2 I/O接口的结构

在这里插入图片描述内部接口:内部接口与系统总线相连,实质上是与内存、CPU相连。数据的传输方式只能是并行传输。 (2020前都采用并行,现在慢慢转向串行,所以并行串行都有可能)
有的I/O接口可以连接多个设备

3.3 I/O接口的工作原理

在这里插入图片描述I/O总线包括主机侧的(数据线、地址线、控制线)
地址线给出要访问的I/O接口中寄存器的地址
控制线用于指明要对目标寄存器(I/O端口)读还是写,也可以用于发送中断请求信号
CPU对外设的控制命令是通过数据线传送

从功能上来说,状态寄存器和控制寄存器在传输方向上是相反的,而且CPU对它们的访问在时间上一般是错开的,因此有的I/O接口中将他们合二为一
如何确定要操作的设备?
方案一:每个设备对应一组寄存器(数据寄存器、状态寄存器、控制寄存器),操作不同的寄存器就是在操作不同的设备
方案二:地址线除了指明CPU要读/写的寄存器之外,有可能被用于指明具体的设备编号,但是寄存器地址和设备编号需要分开传送,要传输两次

3.4 I/O端口

在这里插入图片描述I/O端口是指接口电路中可以被CPU直接访问的寄存器
I/O端口要想能被CPU访问,必须要有端口地址,每一个端口都对应一个端口地址
CPU对数据端口:读&写
CPU对控制端口:写
CPU对状态端口:读

在这里插入图片描述
在这里插入图片描述统一编址:靠不同的地址码区分内存和I/O设备。访存类的指令都可以访问I/O端口
独立编址:靠不同的指令区分内存和I/O设备。只能用专门的I/O指令 访问I/O端口

3.5 I/O接口的类型

在这里插入图片描述小结
在这里插入图片描述

四、程序查询方式

在这里插入图片描述在这里插入图片描述在这里插入图片描述独占查询:CPU 100%的时间都在查询I/O状态,完全串行
定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的间隔内CPU可以执行其他程序

五、程序中断方式

在这里插入图片描述

5.1 中断的基本概念

在这里插入图片描述程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
工作流程:
1. 中断请求
中断源向CPU发送中断请求信号。
2. 中断响应
响应中断的条件。
中断判优:多个中断源同时提出请求
时通过中断判优逻辑响应一个中断源。
3. 中断处理
中断隐指令。
中断服务程序。

5.2 中断请求

5.2.1 中断请求的分类

在这里插入图片描述非屏蔽中断:关中断时也会被响应

5.2.2 中断请求标记

在这里插入图片描述
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR

5.3 中断响应

5.3.1 响应中断的条件

CPU响应中断必须满足以下3个条件:
① 中断源有中断请求。
② CPU允许中断即开中断。
③ 一条指令执行完毕,且没有更紧迫的任务。

5.3.2 中断判优

在这里插入图片描述中断判优既可以用硬件实现,也可用软件实现:
硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
软件实现是通过查询程序实现的
在这里插入图片描述

5.4 中断处理

在这里插入图片描述
中断隐指令:保存原程序的PC值,并让PC指向中断服务程序的第一条指令
中断隐指令是一系列任务,而不是一条指令
CPU检测到中断后,会自动执行中断隐指令
中断隐指令并不是指令系统中的一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列自动操作(硬件完成)。
在这里插入图片描述
中断隐指令的主要任务:
①关中断
②保存断点
③引出中断服务程序

如何确定中断信号所对应的中断服务程序?
软件查询法、硬件向量法(主要使用这种方法)
在这里插入图片描述
排队器(中断判优)的输出作为中断地址形成部件的输入,得到向量地址(中断类型号)。
向量地址是中断向量的保存地址
中断向量是对应的中断服务程序的入口地址
注:保存断点和关中断谁先谁后都可以
在这里插入图片描述
中断服务程序:
①保护现场
②终端服务
③恢复现场
④开中断、‘中断返回

小结:
在这里插入图片描述
这里探讨的主要是单重中断

5.5 多重中断

多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
在这里插入图片描述
这里的保护现场和屏蔽字,保存的是本轮的现场和屏蔽字,因为都将要跳到下一个中断里了,多重中断支持中断嵌套,有可能本轮也是中断,因此本轮也有屏蔽字,所以需要保护

中断屏蔽技术

在这里插入图片描述
中断屏蔽技术主要用于多重中断,CPU要具备多重中断功能,需要满足下列条件:
①在中断服务程序中提前设置开中断指令
②优先级别高的中断源有权中断优先级别低的中断源

屏蔽字寄存器的内容称为屏蔽字,每个中断源对应一位,“1”表示屏蔽该中断源的请求,“0”表示可以正常申请
使用了中断屏蔽技术可以调整多重中断的优先级
在这里插入图片描述
每个中断源对应一个屏蔽字
屏蔽字中1越多,优先级越高。每个屏蔽字中至少有一个1(至少要能屏蔽最深的中断)
小结
在这里插入图片描述

5.6 程序中断方式

在这里插入图片描述
这里要注意,当CPU执行完中断服务程序后就可以让外设执行下一个操作,此时CPU完成剩下的恢复现场工作。

5.7 DMA方式

在这里插入图片描述
在这里插入图片描述
CPU向DMA控制器指明要输入还是输出、要传送多少个数据、数据在主存、外设中的地址
与DMA控制器连接的一般都是高速的块设备
传送前:
①DMA控制器接受外设发出的DMA请求(外设传完一个字就向DMA控制器发出DMA请求),并且DMA也要向CPU发出总线请求
②CPU响应此总线请求,发出总线响应信号,让DMA控制器接管总线控制权,进入DMA操作周期

传送时:
③确定传送数据的主存单元地址及长度,并能主动修改主存地址计数和传送长度计数
④规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
传送后:
重复上述操作,直至完成一整块数据传输
DMA控制器以中断的方式向CPU报告DMA操作的结束

在这里插入图片描述
DMA的传送过程:
DMA的数据传送过程分为预处理、数据传送和后处理3个阶段:
①预处理。由CPU完成一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据或接受的数据时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求,用以传输数据。
②数据传送。DMA的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位(如硬盘),DMA占用总线后的数据输入和输出操作都是通过循环来实现的。需要指出的是,这一循环也是由DMA控制器实现的,即数据传送阶段完全由DMA控制。
③后处理。DMA控制器向CPU发送中断请求,CPU执行终端服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错及决定是否继续使用DMA传送其他数据等

注意区分DMA请求和DMA中断请求
DMA请求是外设传完一个字后向DMA控制器发出的请求
DMA中断请求是传完一个块之后,DMA控制器向CPU发出的中断请求
在这里插入图片描述
单总线结构时,DMA能否访问主存时CPU说了算的,而只有三总线结构才会出现CPU与DMA控制器访存冲突
CPU和DMA控制器访问主存可能产生冲突,可采用上图所示三种方案
在这里插入图片描述
在这里插入图片描述
DMA方式和中断方式的主要区别如下:
①从数据传送来看,中断方式靠程序传送,DMA方式靠硬件传送。DMA方式中,CPU只需进行预处理和后处理
②中断方式对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后);而对DMA中断请求的响应可以发生在每个机器周期结束时(在取值指周期、间址周期、执行周期后均可),只要CPU不占用总线就可被响应
③中断传送过程需要CPU的干预,适用于低速设备;而DMA传送不需要CPU的干预,因此数据传输率非常高,适用于高速设备。
④DMA请求的优先级高于中断请求。
⑤中断方式具有对异常事件处理的能力,而DMA方式仅仅局限于传送数据块的I/O操作

小结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木林_森林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值