导图
IO指令和通道指令的区别
I/O指令是CPU指令系统的一部分,是CPU用来控制输入/输出操作的指令,由CPU译码后执行。在具有通道结构的机器中,I/O指令不实现I/O数据传送,主要完成启,停I/O设备、查询通道和I/O设备的状态及控制通道进行一些操作等。
通道指令是通道本身的指令,用来执行I/O操作,如读、写、磁带走带和磁盘找道等操作
接口的组成和功能
1、总线连接方式的IO接口电路
2、接口的功能和组成
部分转载:漫谈计算机组成原理(七)I/O系统
如上图所示,I/O接口由数据缓冲寄存器、设备选择电路、设备状态标记、命令寄存器和命令译码器组成。之所以说I/O接口起到了桥梁的作用,是指它一端连接了CPU,另一端则连接了I/O设备,能够有效的保证设备和CPU间 正确的数据交换。 接下来说一下各个模块的作用:
- 设备选择电路:这个电路是一种比较器,简单可以理解为CPU向接口发送了一个设备地址,而比较器就是拿着这个设备地址去判断究竟那个I/O设备的地址和这个地址相同,如果找到则建立连接。
- 命令寄存器和命令译码器:起到了传送命令的作用 ,只有设备选择信号有效,才接收命令线上的命令码
- 数据缓冲寄存器:缓冲从I/O设备中读取到的信息,或者是把CPU中传给I/O设备的数据缓存。
- 设备状态标记:可以用于标记设备的工作状态、标记设备是否准备完成、标记是否可以向CPU发送中断请求等
功能:
- 选址功能:设备选择电路实现
- 传送命令功能:命令寄存器和命令译码器实现
- 传送数据功能:数据缓冲寄存器实现
- 反应IO设备工作状态的功能:设备状态标记实现
当D=0,B=0,表示设备处于暂停状态
当D=1,B=0,表示设备处于准备完毕状态
当D=0,B=1,表示设备处于准备状态
INTR为1则表示该设备向CPU发出中断请求
MASK和中断请求配合使用完成设备的屏蔽功能
I/O设备与主机信息传送的控制方式
1、程序查询方式
(1)程序查询方式的介绍
程序查询方式就是利用CPU向I/O设备发送读取指令,然后再检查I/O设备的状态,如果I/O设备已经准备就绪,则一个一个字节的将数据传输到CPU中;如果I/O设备没有准备就绪,则CPU将会不断的向I/O设备发送查询请求,直到I/O设备准备好了。 注意,在CPU不断查询的过程中,原有的程序是被打断了的,如果I/O设备没有准备好,那么原来执行的程序就不会执行,直到I/O设备就绪,且数据读取完毕,程序才会恢复。 上面说的是只有一个设备的情况,CPU会采取踏步查询的方式查询I/O设备是否准备好了。那么如果一个接口连接着多个I/O设备又当如何呢?如下图,当一个设备没有准备好的时候,就向下查询,然后如果还是没有准备好,则循环这个过程。可以看到,这种方式存在非常鲜明的优先级问题,极端一些,如果第一个设备请求完成一次,接着就进行下一次请求,那么后面的设备可能永远也没有办法得到CPU的“临幸”。
(2)程序查询方式的程序流程
- CPU先保存自己的寄存器情况(因为这种方式传输数据需要占用CPU寄存器)
- 设置计数器,即要读取多少次(因为传送往往是一批数据)
- 设置要存放的位置的起始位置(最终我们是从内存中读取或者写数据的设置起始位置)
- CPU启动IO设备
- 获取IO设备状态标志到CPU,检查IO设备是否准备就绪:如果准备就绪,开始读取数据,反之原地踏步
- CPU执行IO指令,或从IO接口中的数据缓冲寄存器中读取一个数据,或者写入数据到IO接口的数据缓冲寄存器内
- 修改主存地址(修改主存地址才能读取或者写入下一个数据,CPU的寄存器只是个暂存我们最终还是要写入内存的)
- 修改计数器(比如从正数递减到0,或从负数递增到0)
- 结束IO传输
(3)程序查询方式的接口电路
1.CPU通过IO指令启动输入设备时,指令的设备字段通过地址线送至设备选择器电路
2.若该接口设备码吻合,则输出SEL有效,其他部件才允许工作
3.IO指令的启动命令将’B’置1,”D“置0
4.B触发器启动设备工作
5.输入设备将数据送至数据缓冲寄存器
6.设备发设备工作结束信号,“D”置1,“B”置0,表示准备完毕
7.D触发器以准备就绪状态通知CPU表示外设准备就绪
8.CPU执行输入指令将数据缓冲寄存器的数据送入CPU通用寄存器在存入主存相关单元
2、程序中断方式
(1)程序中断方式介绍
这种方式就要比第一种方式聪明了,上一种方式是由CPU占据主导地位,而这种方式是由I/O设备占据主导。 只有当I/O设备准备好了以后,才会向CPU发送一个中断请求,表示我已经准备好了,然后CPU执行中断,与I/O设备进行数据交互。 图示如下:
这种方式没有CPU的“原地踏步”式的查询,即CPU不会去等待设备准备好,而是设备准备好了,你直接通知CPU就好了,这无疑大大提高了效率。
(2)补充
推荐阅读:程序中断方式
为了提高计算机效率
关于排队器
效果:优先级从高到低,第一个中断请求之前和自己的所有INTP`的输出全为1,之后的全为0,之后再与自身INTR(中断请求)链接与非门再链接非门输出,就能确定优先级最高的中断请求了.
关于中断隐指令
这些操作是由硬件直接实现的,把它称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码。所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。
它完成的操作是:
①关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断程序服务程序完毕之后能接着正确地执行下去。
②保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。
③引出中断服务程序。取出中断服务程序的入口地址(中断向量)并传送给程序计数器(PC)
3、DMA方式
DMA方式就如同一开始讲的那样,DMA直接与主存进行数据交互,不占用CPU的时钟周期,直接I/O设备之间建立通路,再次提升了效率。 我们来看一下DMA方式传送数据的过程:
DMA传输数据的过程包括三个过程。 首先是预处理,找到I/O设备输入的数据要存放在主存中的地址,然后找到I/O设备的地址,接着设定数据传送的个数。 接着是数据传送,因为DMA方式并不占用CPU,所以可以在主程序执行的过程中,完成I/O设备的数据传送。
虽然说是不占用CPU但是若出现CPU和DMA想同时访问主存,则优先DMA访问,此时CPU只能做其他的不访问存储器的工作