第四章 输入输出设备
1 概述
1.1 分散连接
外部设备和主机之间的连接采用分散连接的方式,CPU 和 I/O设备串行工作,采用程序查询方式。
也就是每个设备都有专门的控制线路,这些控制线路甚至和CPU的控制线路设计在一起,紧密耦合,这时候,如果增减外部设备非常难,但是由于当时计算机和外部设备数量少,这样设计还是值得的。
这时,外部设备和主机之间的连接主要还是采用程序查询的方式,在这种方式中,CPU的工作和IO工作是串行执行的,IO在进行数据的输入和输出的时候,CPU必须运行相应的程序或处于停等状态。
1.2 接口模块和DMA阶段
当外部设备越来越多,分散连接的方式已经不适应外部设备的发展,这种情况下就出现了IO接口和DMA控制器。
由IO接口、DMA控制器和主机相互配合完成数据的输入、输出操作,连接方式也发生了变化,采用了总线的方式进行连接,IO设备通过接口连接在总线上,一个总线可以连接多个设备,总线另外一端和主机相联,这种情况下,主机和IO设备进行传输的传输控制方式也发生了变化,要求CPU和IO之间并行进行工作,所以出现了信息传输方式,即中断和DMA。
1.3 具有通道结构的IO阶段
在中断和DMA两种方式的信息传输过程中,或者信息完成之后,仍需要CPU参与部分信息传输的处理工作。
为了使CPU工作和IO工作能估并行起来,或者是输入输出的数据输入输出的管理控制,尽可能的从主机中独立出来。就出现了具有通道结构的IO阶段。
通道可以看作是一种简单的处理器 ,或者是一个小型的,功能更强的DMA控制器,他能够执行通道程序,通道有自己的指令系统,通过执行通道程序,可以控制连接在通道上的IO设备和主机之间直接进行传输。
1.4 具有IO处理机阶段
IO处理机,可以是专用的处理机,在大型计算机中,我们可以使用现在的微处理器直接作为IO处理机来用,控制IO设备的工作,或者在有些大型计算机中,直接使用和主机中处理器完全相同的处理器来作为IO处理器,这时,IO处理器功能非常强大,甚至在没有IO设备的时候,可以主机处理器进行使用完成相应的任务。
2 输入输出系统的组成
2.1 IO软件
2.1.1 IO指令
是CPU指令的一部分,CPU通过这些指令控制IO设备协调工作。
为了进行并行工作, IO设备和IO接口之间要有多条数据线组成的类似总线结构的数据线来完成数据并行的输入和输出,双方之间还要采用应答信 。
如果IO设备要接受数据,IO接口把数据准备好以后,通过Ready信 告诉IO设备端口中的数据已经准备好了,IO设备对端口中的数据进行读取,并给出应答信 。
如果是输入,IO设备通过IO接口将数据输入到CPU中,或者输入都主机中,IO接口当中的数据缓冲器一旦空了,会向IO设备发送Ready信 ,告诉IO设备可以向IO接口中发送数据了,IO设备向IO接口发送数据,并且给出应答信 。
3.2 IO设备与主机的连接方式
3.2.1 分散连接
从外部设备中读取一批数据进入计算机内存的过程:
-
首先CPU在程序中执行一条指令,这条指令就是读操作,向IO设备发出读命令
-
发出读命令以后,CPU开始读取IO的状态,实际上是IO接口中状态标志值,看数据是否被准备好
-
如果数据没有被准备好,就会执行跳转指令继续不断地读取状态判断数据是否准备好
-
如果状态标志显示数据已经被准备好了,这时候CPU就可以从接口中读出数据,这个数据可以是一个字节,也可以是一个字,把这些数据放到CPU的某一个寄存器中,然后把寄存器中保存的数据写入到内存指定的位置
-
判断传输是否结束,如果没有结束,CPU继续通过程序向IO设备发出读指令。
中断方式过程:
- CPU执行主程序,在执行程序过程中碰到一个IO指令,执行这个IO执行,启动IO设备进行数据准备
- 发出启动设备的指令后,CPU继续执行原来的程序,外部设备接收到了启动设备的命令,接收到了输入输出操作的命令,外部设备开始进行状态准备
- 当外部设备准备好接收或者是输入数据以后,他就会向CPU提出一个中断请求让CPU停止对当前程序的执行,转而和IO设备进行数据交换,当数据交换完成,CPU继续执行原有的主程序。
这种方式中,CPU实现了和IO设备之间部分的并行工作,也就是在IO设备进行数据准备的时候,CPU还可以执行自己的程序,不需要停等。这种方式CPU可以一定程度的成数据的输入输出中解放出来。
这种情况一定程度的对CPU进行了解放,但是不彻底,因为数据传输过程中仍然需要CPU的参与,而且要保证程序被中断掉以后,CPU返回了能正确的继续执行程序,这就需要CPU执行保存现场和恢复现场的指令,需要消耗一定的时间。如果外部设备和内存之间传输的数据数据量特别小,比如只传输1个字节,但是扔需要CPU执行很多条指令来完成现场的保护或者是恢复工作,依然会消耗CPU大量的时间。
3.3.3 DMA方式
这种方式在内存和IO之间建立了直接的通路,内存和IO直接通过DMA控制器进行数据交换
在数据交换过程中也不需要CPU的参与,把CPU进一步的从数据的输入和输出中解放出来。不需要中断现行程序的执行,采用周期挪用(周期窃取),由DMA控制器直接控制外部设备和内存直接进行数据交换。
周期挪用: 因为DMA控制主存和外设之间进行信息交换,一定要使用到总线(地址线,数据线,控制线),这些总线如果DMA利用他们进行信息交换,那CPU就要把总线的使用权让出来,让出来的时间就是一个存取周期,在这个存取周期中,如果DMA要完成IO和内存之间的数据交换,那这个存取周期,总线就交给DMA使用,同样,总线控制权也交给DMA,这种方式叫做周期挪用。
4 IO硬件
4.1 IO设备
- **设备选择线:**传输的是参与本次信息交换的设备的设备码或者是端口 ,实际上就是设备的地址或者是端口的地址,这个地址传输给IO接口,在IO接口中进行匹配,看是否是这个接口上连接的某个设备要参与这次数据传输,这条线是单向线。
- **数据线:**完成数据的输入和输出,线的条数和接口类型有关,双向线。
- **命令线:**来自CPU的命令,通过命令线输入到IO接口中,命令经过缓冲和译码以后,可以控制设备进行相应的输入和输出操作。
- **状态线:**单向线, 从IO接口送到IO总线,进而送到主机由主机连接外部设备的状态。
2、接口的功能
功能 | 组成 |
---|---|
选址功能 | 设备选择电路 |
传送命令的功能 | 命令寄存器、命令译码器 |
传送数据的功能 | 数据缓冲寄存器 |
反映设备状态的功能 | 设备状态标记 |
**控制逻辑电路:**控制其他四个部分按照时序进行工作等。
左端:
- 数据线:双向并行传输
- 地址线:给出的是外部设备的地址,供设备选择电路使用,
- 命令线:给出设备操作命令,放在命令寄存器中进行锁存,进而进行译码,并且在时序控制电路的控制下给出各个操作以及操作之间的时间关系。
- 状态线:把IO接口、外部设备的状态传输给CPU。
右侧:
- 数据线:传输接口和设备之间需要传输的数据。
- 命令线:来自于命令译码器和时序逻辑,控制外部设备做相应的工作。
- 状态线: 外部设备状态输入,对状态标记进行置位或者复位。
4.2.4 IO接口类型
分类方式 | 分类 |
---|---|
传送方式 | 并行接口,串行接口 |
选择的灵活性 | 可编程接口,不可编程接口 |
通用性 | 通用接口、专用接口 |
数据传送的 控制方式 | 中断接口,DMA 接口 |
5 程序查询方式
5.1 程序查询方式的流程
5.1.1 单个设备
如果有多个设备都要通过程序查询方式和CPU进行数据交换, 都要通过程序查询方式和内存进行数据交换,我们需要把参与传输的这些设备按照优先级进行排序,优先级越高的设备被查询到的时间就越早。
5.2 程序查询方式的接口电路
以数据输入为例对上图进行分析:
1、 CPU通过地址线给出外部设备的地址
2、 设备选择电路把自己的设备地址或者是端口 和地址线上的地址进行比较,如果相同,说明启动的就是连接在这个接口电路上的设备,此时SEL信 有效。
3、 启动命令和SEL信 都有效的前提下,对两个状态标记进行置位或者是复位。
4、 目前是CPU发出读命令,设备还没有开始工总,因此标记D = 0表示数据还没有准备好,标记B = 1表示设备开始工作设备处于忙状态,
5、 B标记去启动设备,设备接收到B的标记信 后以及启动命令之后,这杯开始工作,
6、 设备把数据准备好,并且数据通过输入的数据线把他保存到DBR数据缓冲当中,这时设备工作结束。
7、 设备通过设备状态线向接口电路送入设备工作结束信 ,这个信 会修改接口电路中的两个标记,D = 1表示数据已经准备好,B = 0表示设备闲,工作已经完成。
8、 D准备就绪信 被送出。
在上述过程中,直到D状态为1前,CPU都在原地踏步查询D。
9、 CPU查询到D = 1,说明数据已经准备好,并且已经放入到DBR。
10、 CPU通过数据线对数据进行读入。
6 程序中断方式
CPU执行程序的过程中,如果发生意外事件或者是特殊事件,CPU要中断当前程序的处理执行,转而处理特殊事件或者是异常事件,通过执行中断服务程序的方式进行处理,处理结束之后,要返回到被中断的程序的断点继续执行原来的程序。
6.2 程序中断方式的接口电路
6.2.1 程序中断方式的接口电路
- 配置中断请求触发器和中断屏蔽触发器
由外部设备对中断请求标志进行设置,表明有中断请求,这个中断请求标志能否变成中断请求信 向CPU发出中断请求,还需要看这个中断请求标志是否会被屏蔽掉,所以需要一个中断屏蔽触发器,因为有时计算机正在执行的程序他的重要性高
设备 1#、2#、3#、4# 优先级按 降序排列,INTRi = 1 为有请求, 即 !NTRi = 0,最终输出的INIP只有一个是高电平,其他的都是低电平,高电平代表目前要相应的优先级最该的IO设备
- 中断向量地址形成部件
需要执行中断程序,必须知道中断服务程序的入口地址,也就是中断服务程序在内存中的起始地址。
入口地址的产生方式也有两种,硬件方式与软件方式,这里简述硬件方式。硬件方式由硬件产生向量地址,再由向量地址找到 入口地址。
6.3 IO中断处理过程
- CPU响应中断的条件和时间
条件:
- 允许中断触发器 EINT = 1。
- 用开中断指令将 EINT 置 “1”,用关中断指令将 EINT 置“ 0” 或硬件 自动复位。
时间:
- 当 D = 1(随机)且 MASK = 0 时。
- 在每条指令执行阶段的结束前。
- CPU 发 中断查询信 (将 INTR 置“1”)。
- IO中断处理过程
以数据输入为例:
- 多重中断
CPU在执行中断服务程序的过程中,允许级别级别更高的中断源中断现行的中断服务程序。
宏观 上 CPU 和 I/O 并行 工作,微观 上 CPU 中断现行程序 为 I/O 服务。
7 DMA方式
7.1 DMA方式的特点
7.1.1 DMA 和程序中断方式的数据通路比较
控制简单,CPU放弃总线和内存使用权,将使用权交给DMA接口。适合大量数据进行传输。
问题:数据传输过程中,如果CPU的指令缓冲器中有指令或者是已经将指令或者数据加载进了cache,CPU可以继续执行指令。但是当没有指令和数据了,CPU将会保持当前的状态。
这种方式不能充分发挥CPU利用率。因为当一块数据传输给主存的过程中,数据是一个字一个字的在外部设备和主存之间进行传输, 传输的间隔可能会比较大,这个时间会超过一个主存周期。在传输间隔这段时间,虽然DMA接口没有直接使用主存,但是依然占用主存的访问权,CPU这段时间不能访问主存执行程序。
- 周期挪用(周期窃取)
AR:地址寄存器,由CPU给出,存放下一个数据将要放在内存中的那个位置,如果数据的存放是由低地址向高地址,每存入一次将AR + 1
**WC:**存放的是将要放入CPU中的数据的字长,最开始存放-n,每次存入一次,WC + 1
BR:数据缓冲器,外部设备的数据或者是存储单元中输出的数据,要暂在接口的数据缓冲器中。
DAR:设备地址寄存器
**DMA控制逻辑:**控制接口内部协调工作,控制在给定的时序发出给定的信 ,如给CPU发出DMA请求。向主存发出读写信 。外部设备要向DMA进行数据传输,外部设备要向DMA控制器发出请求信 ,DMA控制器向设备发出控制信 。给CPU发出总线占用请求信 ,CPU发出应答信 。
**中断机构:**用于数据传输完以后,对后续工作进行处理的。如WC = 0表示传输结束,如果等于0,就会向中断机构发送信 ,给终端机构的中断请求触发器状态置为1,当一条输入指令执行完成后,由中断机构发信息给CPU,让CPU做完成后的处理。
7.3 DMA工作过程
预处理、数据传送、后处理
允许传送:能否占用内存和总线的使用权,如果CPU正在使用总线和内存(一个存储周期未结束),DMA等待。
数据传输过程如下:
数据输入:
- 将BR中的数据送入到设备中,此时BR中数据为空。
- 由DREQ发出信 通知设备控制器,BR已经空了,可以用于接收下一个数据了。
- DMA控制逻辑通过总线向CPU提出总线和主存占用请求
- CPU在允许的时候给出应答,此时CPU会放弃总线和主存的占用权,总线和主存由DMA接口进行控制。允许下一次的数据输出
- 要进行数据传输,就要给出主存的地址,此时由AR给出要将数据写入的内存中的地址,使得系统总线中地址总线是有效的
- 由设备控制器给出设备应答信 DACK,告诉设备已经进行了新的数据传输。
- 次数内存中的数据通过数据线再次写入到BR中,每传输一个数据,AR + 1, WC + 1。
- 通过溢出信 判断数据是否传送完成,如果溢出,会将溢出信 传送给中断机构,使得中断请求触发器置1,参数中断排队,发出中断请求信 给CPU,使得CPU去做中断后处理。没有溢出,即没有传输完会继续进行传输,下次传输,设备继续将数据放入BR中。
7.3.3 后处理
由中断服务程序完成:
- 校验送入主存的数是否正确
- 是否继续用 DMA
- 测试传送过程是否正确,错则转诊断程序
7.4 DMA接口和系统连接方式
1、具有公共请求线的 DMA 请求
7.5 DMA 方式与程序中断方式的比较
中断方式 | DMA 方式 | |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
7.6 DMA接口类型
7.6.1 选择型
在物理连接多个设备,在逻辑只允许连接一个设备
多路型 DMA 接口的工作原理:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!