早期采用的是分散连接
的方式。
每一个设备都有专门的控制线路,这些控制电路甚至和CPU的控制电路设计在一起。这个时候增加外部设备就很难,但是当时外部设备的数量比较少,价格和又比较昂贵,所以这种设计应用了很长时间
这个时候外部设备和主机的连接主要是采用程序查询
的方式,在这个方式当中CPU的工作和I/O的工作是串行
进行的,.I/O设备进行输入输出的时候,CPU必须运行相应的程序或者是处在停等状态
.
出现的问题
这个阶段种,计算机系统硬件的价格十分昂贵,机器运行速度也不高,配置的I/O设备不多,主计算机应用也尚未普及。
随着计算机的发展,外部设备越来越多,外部设备也在一直发展,这种情况下就出现了 I/O接口和DMA控制器,由I/O接口和DMA控制器与主机CPU相互配合完成数据的输入和输出操作,连接方式也发生了变化,采用总线方式
进行连接。I/O设备通过接口连接在总线上,一个总线可以连接多个设备,总线另外一端和主机相连。
这种情况下I/O设备和主机CPU的信息传输方式也发生了变化,要求CPU和I/O之间要进行并行的工作
,也就出现了另外两种信息传输方式:中断方式和DMA方式
出现的问题
虽然这个阶段实现了CPU与I/O设备并行工作,但是主机与I/O交换信息时,CPU要中断现行的程序,即CPU与I/O设备还不能做到绝对的并行工作。
“通道”可以认为是简单的处理器或者是一个小型的DMA控制器
,它能够执行通道程序
,控制连接在通道上的I/O设备和主机之间直接
进行信息传输
出现的问题
在小型和微型计算机中,采用DMA方式可实现高速I/O设备与主机之间成组数据的交换,但在大中型计算机中,I/O设备配置繁多,数据传送频繁,若仍采用DMA方式会出现一系列问题。
I/O处理机又称为外围处理机
,它基本独立于主机工作,既可完成I/O通道要完成的I/O控制,又可完成编码制变换、格式处理、数据块检错等操作。具有I/O处理机的输入输出系统与CPU工作的并行性更高。
随着输入输出系统的发展,数据的输入输出操作逐渐的从CPU当中分离出来,外部设备的独立性越来越强。
(1) I/O指令 :CPU指令的一部分
(2) 通道指令 : 通道自身的指令
指出数组的首地址、传送字数、操作命令
比如 IBM/370通道指令为64位
I/O设备是有地址的,主机要和I/O设备进行联系的话,主机必须要给出I/O设备的地址。首先就需要对I/O设备进行编址。
I/O设备的编址有两种方式
(1) 统一编址
就是把I/O设备的地址堪称内存地址的一部分 。用取数、存数指令
(2) 不统一编址/单独编址
在内存地址空间之外专门设置一个地址空间。有专门的I/O指令。
编址以后我们就需要选址了,用设备选择电路识别是否被选中
只要把CPU给出的地址和设备当中保存的字节地址相比较,如果是相同的那这个设备就被选中了。
设备被选中之后,信息就开始传送了,传送方式也有多种。
(1) 串行传输,数据一位一位的进行传输,传输速度比较慢,但适合远程传输
(2) 并行传输,同时又位数据在数据线上进行传送,通常数据线也有多条
主要是外部设备接受或者发送数据的详细情况
(1) 立即响应
对于一些结构简单的设备,状态和数量都比较少,那么接受到或者输入数据的话可以直接进行解释,比如LED灯。
(2) 异步工作
一般采用应答信号,可以并行传输也可以串行传输
采用同步定宽定步时钟
(1) 辐射式连接
(2) 总线连接
便于增删设备
在数据准备的过程中,CPU一直处于原地踏步的状态,这样极大的降低了CPU的效率。
程序查询方式是最早的一种方式
CPU实现了和I/O设备之间部分的并行工作。
当I/O准备好输入或者输出数据以后,就会向CPU提出一个中断请求
,让CPU停止对当前程序的执行,转而对I/O设备进行信息交换
这个图的意思是CPU在执行第K条指令的时候收到了外部设备发来的中断请求,执行外第K条指令以后,执行完当前指令就会断连,跳转到中断服务程序,来完成数据的输入和输出操作,执行完之后CPU又转会到之前执行的程序中。
CPU没有原地等待的现象,但是在原来现场(原程序链)恢复的时候,依然会消耗CPU较大的时间
程序中断方式是对程序查询方式的一种改进。
在程序查询方式和程序中断方式中,内存和I/O设备分别在CPU的两端,如果内存和I/O设备要进行数据交换,必须要经过CPU,所以即使在中断的过程当中,需要CPU通过执行程序的方式对主机进行输入和输出
DMA方式可以把CPU进一步从输入输出种解放出来,使外部设备和内存之间可以建立直接的联系,由DMA控制器直接控制外部设备与内存进行连接。
主存和I/O之间有一条直接数据通道,不中断现行的程序
周期窃取/周期挪用
DMA控制主存和外设之间进行数据交换,那么一定会使用到总线包括地址线、数据线、控制线,如果DMA要利用这些进行数据交换,那么CPU就要把总线的控制权让出来
让出的时间,就是一个存周期,在这个存取周期当中,如果DMA需要完成I/O和内存之间的数据交换,那么这个周期就交给DMA使用,同样总线的控制权也交给DMA。
1.程序查询方式
由CPU通过程序不断查询I/O设备是否准备就绪,从而控制I/O设备与主机交换信息。采用这种这种方式实现主机与I/O设备交换信息,要求I/O接口类设置一个能反映I/O设备是否准备就绪的状态标记,CPU通过对此标记的检测,可得知I/O设备的准备情况。
只要一启动I/O设备,CPU便不断查询I/O设备的准备情况,从而中止了原程序的执行。CPU在反复的查询过程中,犹如原地踏步。另一方面,I/O设备准备就绪后,CPU要一个字一个字地从I/O设备取出,经CPU送至主存,此刻CPU也不能执行原程序,可见这种方式使CPU和I/O设备处于穿行工作状态,CPU的效率不高。
2.程序中断方式
只是当I/O设备准备就绪并向CPU发出中断请求后才予以响应,这将大大提高CPU的工作效率。
采用这种方式,CPU和I/O接口不仅在硬件方面需要增加相应的电路,而且在软件方面还必须编制中断服务程序。而且CPU在相应中断请求后,必须停止现行程序而转入中断服务程序,并且为了完成I/O设备与主存交换信息,还必须占用CPU内部的寄存器,消耗CPU的资源。
3.直接存储器(DMA)方式
主存与I/O设备间有一条数据通路,主存和I/O设备交换信息时,无需调用中断服务程序。若出现DMA和CPU同时访问主存,CPU总是将总线占有权让给DMA,通常把DMA的这种占有称为窃取或挪用。窃取的时间一般为一个存取周期,故又把DMA占用的存取周期称为窃取周期或挪用周期。而且,在DMA窃取存取周期时,CPU尚能继续做内部操作(不需要访存的操作,如乘法运算)。