输入输出系统
1. 输入输出系统的发展状况
1. 早期
CPU和I/O设备以分散连接的方式进行连接。
分散连接:每个设备都有独立的控制电路。
特点:
CPU和I/O设备紧耦合,增减外部设备苦难
CPU和I/O设备以程序查询方式进行连接,串行工作
I/O设备进行输入、输出时,CPU必须运行相应程序或处于停等状态
2. 接口模块和DMA阶段
出现原因:由于外设的增多,难于增减外部设备的分散连接模式被淘汰。
这一阶段,I/O接口和DMA控制器与CPU相互配合,完成输入、输出操作。I/O设备和CPU信息交换传输控制方式有两种:
中断方式
DMA方式,DMA(Direct Memory Access,直接内存访问)是一种数据传输方式,它可以在不需要CPU参与的情况下实现对内存的直接读写,可以减轻CPU的负担,提高数据传输的效率。
特点:在信息传输过程中、信息传输完成后,CPU仍要参与部分信息传输的处理工作。
3. 具有通道结构阶段
出现原因:为了使CPU和I/O设备实行并行工作,使输入输出系统数据的管理控制从主机中脱离出来。
特点:
有自己的指令系统、控制器,部分通道还有自己的存储器
通过执行通道程序,可以控制连接在通道上的I/O设备直接和主机进行信息传输。
通道实际上是一种小型的DMA处理机
通道程序就是由通道指令组成的程序
4. 具有I/O处理机的阶段
出现原因和通道的出现原因一致。这一阶段可以使用专用的I/O处理机管理I/O设备,同时也可以将微处理器和与主机CPU一样的处理器当作I/O处理机来使用。当使用处理器作为I/O处理机来使用时,在I/O设备空闲时,该处理器可分担主机CPU的压力,帮助其执行运算任务。
2. 输入输出系统的组成
1. I/O软件
I/O指令就是CPU指令集中的一部分,I/O指令结构如下:
操作码:I/O指令的操作码相当于I/O指令的标志,表明这个指令是I/O指令
命令码:相当于CPU指令集中普通指令的操作码,指出要对I/O设备做出什么操作
设备码:I/O设备或I/O端口的地址
I/O端口:I/O设备中的某个寄存器
通道指令就是通道自身拥有的指令集。
通道的工作流程
编程人员为了使应用程序能够调用外部设备工作,在应用程序中编写了广义I/O指令,广义I/O指令给出了如下信息
参数数据传输的I/O设备
数据传输主存的首地址
传输数据的长度
传输的方向:是向I/O设备传输数据还是向主存传输数据
操作系统根据广义I/O指令给出的参数以及要执行的操作,编写一个由通道指令构成的通道程序,并将其放在内存或者通道自身的存储器的指定位置,然后启动通道进行工作
通道拿到通道程序的首地址后,执行通道程序,控制I/O设备完成相应的操作
通道指令需要给出要传输数据(数组)的首地址、传输字数、操作命令、传输方向、设备地址等。通道指令一般比较长。
关于IBM/370
通道指令长度为64位
通道的下面可以带若干个子通道,子通道可以并行工作
每个子通道可以连接多个设备控制器
每个设备控制器可以连接多个设备
2. I/O硬件
采用接口模式的I/O硬件包括:设备、I/O接口
设备通过接口连接在总线上,和主机完成信息交换
采用通道模式的I/O硬件包括:设备、设备控制器、通道
设备连接设备控制器,设备控制器连接子通道,子通道连接通道
3. I/O设备与主机的联系方式
1. I/O设备的编址方式
I/O设备的编址方式有两种:统一编址、不统一编址。
1. 统一编址
核心思想:把I/O设备的地址看成是内存地址的一部分,在进行内存编址时统一进行编址。
实现原理:
取内存地址中的部分地址作为I/O设备或I/O端口的地址
如果输入、输出指令或者访存指令的地址码在I/O地址范围内,那么这次的操作实际上是针对I/O设备进行的
特点:
CPU可以用取数、存数指令对I/O设备进行管理、控制,不需要特定的I/O指令
CPU的指令集相对简单
适用情况:当内存系统编制空间较大时,可以采用这种方式
2. 不统一编址(单独编址)
核心思想:在内存地址空间之外,专门设置一个I/O设备的地址空间
虽然两个地址空间是独立的,但他们对应的二进制代码范围,是存在重合的
比如:一个20位的内存,寻址空间为1M,在对I/O设备进行编址时,地址范围为 16个0到16个1(即64K)。此时两个地址空间的二进制代码是存在重合的。
问题:对于相同的二进制地址,如何区分一个指令到底是对内存进行操作的还是对I/O设备进行操作的?
解决方案:采用专门的I/O指令对I/O设备进行操作。
因此这种编址方案的特点就是:有专门的I/O指令对I/O设备进行控制。
2. 设备选址
用设备选择电路识别是否被选中
用CPU给出的地址和设备保存的自己的地址进行比较
3. 传送方式
串行:数据一位一位的进行传输
并行:同时有多位数据在多条数据线上进行传输,通常情况下数据线的条数是8的倍数
4. 联络方式
外部设备在接收、发送数据的响应情况。
1. 立即响应
接收到数据后立即显示,比如LED灯,在接收到数据后立即以亮/不亮的方式显示接收到的数据。
适用于一些结构简单,状态、数量比较少的设备。
2. 异步工作采用应答信号
异步工作分为两种,可以并行传输,也可以串行传输。
并行传输
CPU和接口之间一般都是并行传输,所以现在讲的异步工作应答信号主要是I/O接口和I/O设备之间采用的。
I/O接口和I/O设备之间有多条数据线组成了一条类似数据总线的数据线(完成并行工作)
I/O接口和I/O设备采用应答信号,比如,当I/O设备要接收数据时
I/O端口将数据准备好后,通过一个== R e a d y Ready Ready==信号告诉I/O设备:端口中的数据已经准备好了
I/O设备对端口中的数据进行读取,并给出应答信号
如果是I/O设备要输入数据到CPU或主机:
当I/O接口中的数据缓冲器空了后,就会向I/O设备发送== R e a d y Ready Ready==信号,告诉I/O设备,可以向I/O接口发送数据了
I/O设备向I/O接口发送数据,并给出应答信号
串行传输
传输要有起始位和终止位,如图
占1位的起始位,共 9.09ms
占2位的起始位,共 2×9.09ms
在起始位和终止位之间,是若干位的数据位
3. 同步工作采用同步时标
5. I/O设备与主机的连接方式
有两种连接方式:辐射式连接、总线连接。
1. 辐射式连接
就是我们前面介绍过的分散连接。
如图
2. 总线连接
外部设备通过接口和主机进行连接。
接口的作用:
向外部设备传送主机的命令
向主机传送外部设备状态信息
完成数据缓存、数据格式变化等
优点:便于增删设备
4. I/O设备与主机信息传送的控制方式
1. 程序查询方式
CPU从I/O设备读数据流程图
I/O设备和I/O接口的工作流程
I/O设备接到CPU指令后,开始数据准备
经过较长时间的准备后,I/O设备将准备好的数据送入I/O接口的数据缓冲区,然后I/O接口将工作状态标志转为”已准备就绪“。I/O状态保存在I/O接口的触发器中
注意:在I/O设备准备数据过程中,CPU一直在检查I/O状态,无法执行其他指令。
特点:
外部设备和内存的信息交换必须通过CPU
CPU在I/O设备准备数据的过程中处于停等状态,效率低下
I/O设备和CPU的工作是串行的
2. 程序中断方式
I/O设备的工作过程可以分为两个阶段,在程序查询方式中,CPU在I/O设备工作的两个阶段都要参与。程序中断方式对程序查询方式进行了优化:
自身准备(包括数据准备)在I/O设备的"自身准备阶段",CPU不参与I/O工作,可以执行其他程序
与主机交换信息,CPU暂停现行程序,参与I/O工作
实例
CPU在执行现行程序时遇到了I/O指令
CPU首先启动I/O设备,然后继续执行现行程序
当I/O设备完成自身准备向CPU发出"中断请求"后,CPU暂停执行现行程序,参与执行I/O设备的数据输入、输出工作
执行完I/O操作后,CPU继续执行现行程序
在这个过程中,CPU没有因I/O设备准备数据而出现"停等"现象。
优点:CPU一定程度上从I/O设备的数据输入、输出操作出解脱出来,执行效率更高了
缺点:
I/O设备和内存的数据传输仍然需要CPU的参与
CPU保存程序执行断点及恢复断点所耗费的指令和时间也浪费了CPU的处理效率
程序中断方式流程
3. DMA方式
主存和I/O之间有一条直接数据通道,主存和I/O在DAM控制器控制下可以直接进行数据交换。采用的方式叫做周期挪用(周期窃取)。
DMA方式工作流程(CPU在执行现行程序时,遇到I/O操作)
CPU首先启动I/O,然后继续执行现有程序
I/O设备进行自身准备,准备完成后由DMA控制器发出DMA请求
CPU接到DMA请求后,让出总线的使用权一个存取周期,在这个存取周期内
CPU不能使用主线访问主存
CPU虽然不能使用主线,但仍可继续执行现行程序(现代计算机一般是预读指令)
DMA占用总线使用权,控制主存和I/O设备进行数据交换。完成后让出总线使用权给CPU
在这个过程中:
CPU不需要中断现行程序的执行
CPU从I/O设备的数据输入、输出中彻底解脱出来,CPU和I/O实现了并行工作
因为数据输入、输出占用了一个存取周期的总线使用权,因此称作周期挪用方式
4. 三种方式的CPU工作效率比较
发展趋势
5. 外部设备
外部设备大致分为三类:
人机交互设备 键盘、鼠标、打印机、显示器
计算机信息存储设备 键盘、光盘、磁带
机——机通信设备 调制解调器等
6. I/O接口
1. 接口的功能和组成
1. 总线连接方式的I/O接口电路
如图
设备选择线:参与信息传输设备的设备地址或端口地址。单向线
数据线:完成数据的输入、输出。条数和接口的类型有关。双向线
命令线:来自主机的命令通过命令线来到I/O接口,命令经缓冲、译码后可以控制设备做相应的操作。单向线
状态线:将状态信息送给主机,使主机了解外部设备的状态信息。单向线
2. 接口的功能和组成
下图展示了接口的组成和其实现的功能的对应关系:
选址功能
设备选择电路
传送命令的功能
命令寄存器、命令译码器
传送数据的功能
数据缓冲寄存器
反应设备状态的功能
设备状态标记
设备状态标记是利用一系列的触发器来实现的,下表展示了各触发器及其标记的状态
各触发器及其标记状态
完成触发器D
0
准备工作尚未完成(准备发送数据或准备接收数据)
完成触发器D
1
准备工作已经完成
工作触发器B
0
外部设备处于“空闲状态”
工作触发器B
1
外部设备“忙”
中断请求触发器INTR
0
未发出中断请求
中断请求触发器INTR
1
发出中断请求
屏蔽触发器MASK
0
可以发出中断请求
屏蔽触发器MASK
1
主机此时处理程序的优先级高于此次I/O操作,不能发出中断请求
3. I/O接口的基本组成
2. 接口类型
按数据 传送方式 分类
串行接口 如 Intel 8255
并行接口 如 Intel 8251
按功能 选择的灵活性 分类
可编程接口 如 Intel 8255、Intel 8251
不可编程接口 如 Intel 8212
按 通用性 分类
通用接口 如 Intel 8255、Intel 8251
专用接口 如 Intel 8279、Intel 8275
按数据传送的 控制方式 分类
中断接口 如 Intel 8259
DMA接口 如 Intel 8257
7. 程序查询方式
单个设备
多个设备
注意:多个设备之间存在查询的优先级次序。
程序流程
首先,保存寄存器的内容。原因:程序查询方式要完成内存和外部设备之间数据的输入输出,需要借助CPU中的某一个寄存器,对数据进行暂存。如果寄存器原先的数据是有用的,就需要对这些数据进行保存。保存寄存器数据后,执行如下流程:
程序流程图
关于计数值
设置计数值的目的:控制传输的数据量
计数值的取值方案有两种:假如现在要传输N个字
计数器的值就设置为N。每完成一个字的传输,计数器的值-1,直到计数器值=0,说明此次传输完成,传输结束
计数器的值设置为 -N,并用补码来表示这个复数,每完成一个字的传输,计数器的值+1,当计数器值=0,传输结束
程序查询方式的接口电路(以输入为例进行介绍)
CPU通过地址线给出外部设备的地址
设备选择电路将自己的设备地址(或端口号)和地址线上的地址进行比较,如果相同,说明这次启动的设备就是连接在这个接口电路上的外部设备。== S E L SEL SEL==信号有效
在启动命令和SEL信号都有效的前提下,对两个状态标记进行置位:(图中的Q模块)请回忆各触发器及其标记的状态
完成触发器D=0,表明数据还未准备好
工作触发器B=1,表明设备开始工作,处于“忙”状态。同时触发器B启动设备,图中的②
设备开始工作后,准备数据并将数据通过输入数据线保存到数据缓冲DBR中。图中的③
数据保存到DBR后,设备的工作结束,设备通过设备的状态线向接口电路送入设备工作结束信号。图中的④。设备工作结束信号会修改接口电路中的两个状态信号:
完成触发器D=1,表明数据准备好。同时这个信号会被送出,图中的⑤。在这一步之前,CPU始终处于空等状态
工作触发器B=0,表明设备工作完成,处于空闲状态
DBR中的数据通过数据线被送出
8. 程序中断
中断:CPU在执行程序过程中,如果发生特殊事件,CPU要中断当前程序的处理,去处理特殊事件,通过执行中断服务程序的方式来进行处理。处理结束后,CPU要返回到中断程序的断点,继续执行该程序。
这里的中断服务程序应该是指发出中断请求的程序
CPU中断当前程序执行时,会保存程序断点信息,继续执行该程序时会恢复断点信息。
例子:打印机引起的I/O中断
1. 中断请求器和中断屏蔽触发器
如图 重点提醒:请结合 程序查询方式的接口电路的电路图以及 各触发器及其标记的状态一起观看
并尝试将两张图结合在一起。同时需要注意:虽然将两张图放在一起理解,但实际上两种方式的原理是有差别的:
程序查询方式在完成触发器发出完成信号之前,CPU始终处于停等状态
程序中断方式在完成触发器发出完成信号之前,CPU一直在执行自己的工作
当 D=1,MASK=1,两个信号经与非运算后变为0,再经非运算变为1,INTR变为1(这里方框中的1代表输出为1)
当收到来自CPU的中断查询信号后,INTR值被送入CPU,产生中断请求
2. 排队器
排队器的实现有两种方式:
硬件 在CPU内或在接口电路内(链式排队器)
软件 见第八章
链式排队器电路图,每一个INTP包含了左侧的一个非门和右侧一个与非门(虚线内)。
总结
对于 INTP‘
初始状态下,所有的INTP‘ 均表现为 高电平
当某一个设备发出中断请求时,其前的INTP‘均表现为高电平(包括它自己),其后的均表现为低电平
对于 INTP
初始状态下,所有 INTP 均表现为低电平
当某一个设备发出中断请求时,其对应的INTP 表现为高电平,其他的均表现为低电平
3. 中断向量地址形成部件
解决问题:找到中断程序的入口地址
入口地址的产生有两种方法:
由软件产生 见第八章
硬件向量法 由硬件产生向量地址,再由向量地址产生入口地址
工作流程分析
外部设备数 = 排队电路INTP数 = 排队器输出信号数 = 中断向量地址形成部件信号输入数
排队器每次输出的信号仅包含一个1,其他均为0,中断向量地址形成部件相当于一个设备编码器,针对每一个输出给出向量地址
向量地址指向主存中的一个存储单元,生成后经数据线送往CPU
CPU根据向量地址找到对应存储单元,根据存储信息找到中断服务程序的入口地址
JMP代表跳转指令
4. 程序中断方式接口电路的基本组成
如图
5. I/O中断处理过程
1. CPU响应中断的条件
允许中断触发器 EINT = 1 该触发器值修改方案如下:
用 开中断 指令将EINT置为 1
用 关中断 指令将EINT置为 0 或硬件 自动复位
2. CPU响应中断的时间
当 D=1 且 MASK=0 时
外部设备完成准备后,就着手发出中断请求,但CPU不是时刻可以处理中断请求的。因此,在CPU无法处理中断请求之时,就设置 M A S K = 1 MASK = 1 MASK=1,使外部设备无法发出中断请求。
计算机的一般设计中,CPU会在每条指令的执行阶段结束后,发出中断查询信号,判断是否有中断请求
工作流程分析
需要注意:这里 非门 框中标记的 1代表非门的输出信号为1
这里仅对⑦⑧进行介绍,其他自行分析。
排队器电路产生输出信号(输出信号为 一个1和多个0的组合)
CPU发出中断响应信号,然后设备编码器产生向量地址,通过数据线传递给CPU
CPU利用向量地址取出中断服务程序入口地址或跳转指令
中断服务程序的流程包括以下四个部分:
保护现场
程序断点的保护 中断隐指令完成
寄存器内容的保护 进栈指令完成
中断服务:对不同的 I/O 设备具有不同内容的设备服务
恢复现场:出栈指令完成
中断返回:中断返回指令
单重中断和多重中断
单重中断:不允许中断 现行的 中断服务程序
多重中断:允许级别更高 的中断源 中断 现行的 中断服务程序
单重中断和多重中断服务程序流程对比:
单重中断:在中断服务程序执行完成并恢复断点后,才执行开中断,因此在中断服务程序执行过程中,不会出现嵌套中断
多重中断:在断点保护后就执行了开中断,此时若有更高优先级的中断服务程序出现,就会中断当前正在执行的中断服务程序
9. DMA方式
DMA和程序中断两种方式的数据通路图示
区别:程序中断方式中主存和外部设备交换信息需要CPU的参与(虽然不是全程参与),而DMA方式不需要CPU的参与
1. DMA 与主存交换数据的三种方式
1. 停置CPU访问主存
CPU让出总线使用权和主存访问权,交给DMA。DMA控制外部设备和主存进行信息传输,此时CPU的工作状态可能是:
CPU缓存中有预读指令,CPU继续工作
CPU缓存中无预读指令,CPU处于不工作状态或保持状态
示意图
优点:控制简单
缺点:未充分发挥CPU对主存的利用率
2. 周期挪用(周期窃取)
DMA访问主存有三种可能:
CPU没有访问主存:DMA直接获取主存访问权
CPU正在访问主存:DMA等待CPU访问完成
CPU和DMA同时请求访存:此时 CPU 将总线控制权、主存访问权让给 DMA
示意图
3. DMA与CPU交替访问
将CPU工作周期拆分成两个部分:
C1 专供DMA访存
C2 专供CPU访存
示意图
优点:不需要申请建立和归还总线的使用权
2. DMA接口的功能和组成
接口的功能决定了接口的组成
1. DMA接口的功能
向CPU申请DMA传送
处理总线控制权的转交
管理系统总线、控制数据传送
确定数据传送的首地址和长度。
修正传送过程中的数据地址和长度
DMA传送结束时,给出操作完成信号
2. DMA接口的组成
3. DMA的工作过程
1. 预处理
通过几条输入输出指令预置如下信息:
通知DMA控制逻辑传送方向(入/出)
设备地址——> DMA的DAR
主存地址——> DMA的AR
传送字数——> MA的WC
2. DMA传送过程示意
3. 数据传送过程(输入)
过程分析
①:设备将数据送入数据缓冲寄存器BR
②:设备向DMA控制逻辑发出申请信号DREQ
③:DMA控制逻辑向CPU请求DMA服务,发出总线使用权的请求信号HRQ
④:CPU在允许的情况下给出应答信号HLDA,放弃总线使用权和主存的访问权
⑤:主存地址寄存器AR将数据在主存中的首地址送到主存地址寄存器
⑥:DMA控制逻辑给出设备应答信号DACK,通知设备已经被授予一个DMA周期
⑦:BR中的数据经数据线传输给主存,在这个过程中,每传输一个字: AR+1,WC+1,同时判断是否传输完成,未完成就继续。从步骤 1 开始
⑧:计数器溢出时(全0),表示一批数据交换完毕,WC向中断机构发出溢出信号,(INTR被置为1)中断机构向CPU发出中断请求信号。CPU响应中断请求后,通过执行中断服务程序来进行后处理
4. 数据传送过程(输出)
和输出的区别在于①、⑦
①:BR中的数据写入外部设备。此时BR已经空了,外部设备会在第②步发出DREQ信号
⑦:主存中的数据,在DMA控制下经数据线写入BR
5. 后处理
后处理处理的工作有:
校验送入主存的数据是否正确
判断是否继续用DMA
测试传送过程是否正确,错则转诊断程序
这些工作由CPU执行中断服务程序来完成
4. DMA接口与系统的连接方式
1. 具有公共请求线的DMA请求
如图
特点如下:
共享一条DMA请求线
越靠近CPU的DMA接口,优先级越高
CPU通过DMA响应线进行链式的查询
2. 独立的DMA请求
特点:
每个DMA接口有自己独立的请求线和响应线
DMA请求的优先级排序在CPU中实现
3. DMA方式与程序中断方式的比较
数据传送
程序,需CPU参与
硬件,不需要CPU参与
响应时间
指令执行结束
存取周期结束
处理异常情况
能
不能
中断请求目的
传送数据
后处理
优先级
低
高
5. DMA接口的类型
1. 选择型
如图
特点:
物理上:DMA接口连接了多个外部设备
逻辑上:只允许连接一个设备,不支持连接多个设备同时工作。(只有当一个设备传输完成后,才能连接另一个设备)
2. 多路型
如图 每个子通道就是一个小型的DMA处理器
特点:
物理上:连接多个设备
逻辑上:允许连接多个设备同时工作
3. 多路型 DMA 接口的工作原理
如图
最后更新于