输入输出系统的发展可以分为4个阶段:
输入输出系统由软件和硬件两部分组成
软件
命令码对应的具体操作
- 将数据从I/O设备输入到主机
- 将数据从主机输出至I/O设备
- 状态测试
- 形成某些操作命令
硬件
输入输出系统的硬件组成是多种多样的,在带有接口的I/O系统中,一般包括接口模块和I/O设备两大部分。
下图中的接口电路实际上包含许多数据传送通道和有关数据,还包含控制信号通路及其相应的逻辑电路。
下图是具有通道的I/O系统:
主机(CPU)与I/O设备交换信息和CPU与主存交换信息,有许多的不同点。例如:
这一系列的问题统称为I/O设备与主机的联系方式
- 立即响应方式
- 异步工作采用应答信号联络
- 同步工作采用同步时标联络
辐射式连接(分散连接)
该方式要求每台I/O设备都有一套控制线路和一组信号线,因此所用的器件和连线较多,对I/O设备的增删都比较困难,这种连接方式大多出现在计算机发展的初级阶段。
总线式连接
I/O设备与主机交换信息时,共有5种控制方式:
程序查询方式
该方式是由CPU通过程序不断查询I/O设备是否已经做好了准备,从而控制I/O设备与主机(CPU)交换信息。采用这种方式实现主机和I/O设备交换信息,要求I/O接口内设置一个能反映I/O设备是否准备就绪的状态标记,CPU通过对此标记的检测,可得知I/O设备的准备情况。
下图是CPU向I/O设备读取一个数据块到主存中的程序流程图:
程序中断方式
CPU在启动I/O设备后,不查询设备是否已经准备就绪,CPU继续执行自身程序,只是当I/O设备准备就绪并向CPU发出中断请求后才予以响应(避免CPU空等I/O设备),这样就大大提高了CPU的工作效率(改进了程序查询方式CPU执行效率低下的缺点)。
虽然程序中断方式消除了程序查询方式CPU空等I/O设备的缺点,提高了CPU资源的利用率,但是CPU在响应中断请求后,必须停止现行程序而转入中断服务程序,并且为了完成I/O设备与主存交换信息,还不得不占用CPU内部的一些寄存器,这同样是对CPU资源的消耗。如果I/O设备能直接与主存交换信息而不占用CPU,那么CPU的资源利用率显然又可以进一步提高,这就出现了直接存储器存取(DMA)方式。
在该方式中,主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,无须调用中断服务程序,那CPU就可以干自己的事。如果出现DMA和CPU同时访问主存,CPU总是将总线占用权让给DMA,通常把DMA的这种占有称为窃取或挪用。窃取的时间一般为一个存取周期,而且,在DMA窃取周期时,CPU尚能继续做其他操作,可见,DMA方式进一步提高了CPU的资源利用率。
三种I/O设备与主机进行信息交换的方式比较:
主机由CPU和主存构成,除主机外的大部分硬件设备都是I/O设备,或称为外部设备(外围设备),简称外设。
I/O设备的组成通常可以按如下图所示的结构来表示:
机、电、磁、光部件与具体的I/O设备有关,不同结构的设备决定了不同的功能。
设备控制器可以用来控制I/O设备的具体动作。
I/O接口是I/O设备和主机进行信息交换的途径。
I/O设备可以分为三类:
输入设备完成输入程序、数据和操作命令等功能。通常的输入设备就是鼠标和键盘,而且往往会和显示器联用,以便检查和修正输入时的错误。也可以利用软盘、磁带等脱机录入的介质进行输入,目前甚至还可以实现语音直接输入。
键盘⌨:
鼠标?: 可以分为机械式(底部一个金属球)、光电式鼠标。
触摸屏: 可以分为电阻式、电容式、表面超声波式、扫描红外线式、压感式。
其他输入设备:光笔?、画笔与图形板、图像输入设备(比如摄像机?)
显示设备
图形和图像的区别:
图形: 由计算机用一定的算法形成的点、线、画、阴影等,来自主观世界。
图像: 图像(如遥感图像、医学图像、自然景物、新闻照片等)通常来自客观世界。
打印设备
按照印字的原理分类:
按照工作方式分类:
有一类I/O设备既是输入设备、又是输出设备,比如磁盘、终端、A/D 或 D/A转换器(A-模拟信号、D-数字信号)、汉字处理设备等等。
接口可以看作是两个系统或两个部件之间的交接部分,它可以是硬件与硬件、硬件与软件、软件与软件之间的连接电路,也可以两者之间的共同逻辑边界。
I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。
由下图可知,不同的I/O设备都有相应的设备控制器。
主机与I/O设备之间设置接口的理由:
接口(Interface)和端口(Port)的区别:
接口:具有如上所述的功能。
端口:是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。若干个端口 + 控制逻辑 = 接口。
CPU通过输入指令,从端口中读入信息,通过输出指令,可将信息写入端口中。
数据线:传送数据的总线,其根数一般等于存储字长的位数或字符的位数,它通常是双向的,也可以是单向的。
设备选择线:用来传送设备码的,它的根数取决于I/O指令中设备码的位数。如果把设备码看作是地址号,那么设备选择线也可以称为地址线 。
命令线:主要用来传输CPU向设备发出的各种命令信号。
状态线:将I/O设备的状态向主机报告的信号线。
2.接口的功能和组成
下图为单个I/O设备程序查询方式的程序流程:
当需要启动某一I/O设备时,必须将该程序插入到现行程序中。
该程序包括如下几项,其中1~3为准备工作
根据程序查询方式的接口功能及其组成,得出程序查询方式接口电路的基本组成。
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处继续往下执行原程序,这就是中断。中断是现代计算机能有效合理发挥效能、提高效率的一个十分重要的功能。通常把实现这种功能所需的软硬件技术统称为中断技术。
在I/O设备与主机交换信息时,由于设备本身机电特性的影响,其工作速度较低,与CPU无法匹配,因此,CPU启动设备后,往往需要等待一段时间才能实现主机与I/O设备之间的信息交换。如果在设备准备的同时,CPU不作无谓的等待,而继续执行现行程序,只有当I/O设备准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。
下图为由打印机引起的I/O中断,CPU与打印机并行工作的时间示意图:
为了提高计算机的整体效率,为了应付突发事件,为了实时控制的需要,在计算机技术的发展过程中出现了中断技术,为了实现中断,计算机系统中必须配有相应的中断系统或者中断机构。
为了处理I/O中断,在I/O接口电路中必须配置相关的硬件线路。
硬件排队器的实现方法很多,既可以在CPU内部设备一个统一的排队器,对所有中断源进行排队,也可以在接口电路分别设置各个设备的排队器,下面是设在各个接口电路中的排队器电路,又称为链式排队器。
必须搞清楚向量地址和入口地址的区别:
通过向量地址是寻找中断处理程序入口地址的一种方法(硬件向量法)。
比如:上图,其中的12H、13H、14H是向量地址,200、300分别是打印服务程序和显示器服务程序的入口地址。
CPU响应中断的条件和时间
条件: 必须满足CPU中的允许中断触发器EINT为1
该触发器可用中断指令置位(开中断),也可以用关中断指令或者硬件自动使其复位(关中断)。
根据下图分析可知,I/O设备准备就绪的时间(即D=1的时刻)是随机的,而CPU是在统一的时刻(每条指令执行阶段结束前)向接口发中断查询信号,以获取I/O设备的中断请求。因此CPU响应中断的时间一定是在每条指令执行阶段的结束时刻。
I/O中断处理过程
下面以输入设备为例,结合图(程序中断方式接口电路的基本组成),说明I/O设备处理的全过程,当CPU通过I/O指令的地址码选中某设备后,则:
下图示意了DMA方式与程序中断方式的数据通路:
在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方法:
停止CPU访问主存
当外设要求传送一批数据时,由DMA接口向CPU发一个停止信号,要求CPU放弃地址线、数据线和有关控制线的使用权。DMA接口获得总线控制权后,开始进行数据传送,在数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交回给CPU,
下图是该种方式的示意图:
周期挪用(或周期窃取)
在这种方法中,每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权一个或几个主存周期,而DMA不请求时,CPU仍继续访问主存。
I/O设备请求DMA传送会遇到三种情况:
第一种情况: CPU此时不需要访问主存(如CPU正在执行乘法指令,由于乘法指令执行时间较长,此时CPU不需要访问主存),故I/O设备与CPU不发生冲突。
第二种情况: I/O设备请求DMA传送时,CPU正在访问主存,此时必须待存取周期结束,CPU才能将总线占有权让出。
第三种情况: I/O设备要求访问主存时,CPU也要求访问主存,这就出现了访问冲突。
此刻,I/O访存优先于CPU访问主存,因为I/O不立即访问主存可能丢失数据,这时I/O要窃取一、二个存取周期,使CPU延缓了一、二个存取周期再访问主存。
下图是DMA周期挪用的时间对应关系图:
与CPU暂停访存的方式相比,这种方式既实现了I/O传送,又较好地发挥了主存与CPU的效率,是一种广泛采用的方法。
I/O设备每挪用一个主存周期都要申请总线控制权、建立总线控制权和归还总线控制权。因此,尽管传送一个字对主存而言只占用一个主存周期,但对DMA接口而言,实质上要占2~5个主存周期。
因此周期挪用的方法比较适合于I/O设备的读/写周期大于主存周期的情况。
1. DMA接口的功能
利用DMA方式传送数据时,数据的传送过程完全由DMA接口电路控制,故DMA接口又有DMA控制器之称。DMA接口应具有如下几个功能:
1. DMA传送过程
分为三个阶段:预处理、数据传送、后处理
预处理
在DMA接口开始工作之前,CPU必须给它预置如下信息:
上面的工作由CPU执行几条输入输出指令完成,即程序的初始化阶段。这些预处理的工作完成后,CPU继续执行原来的程序。
当I/O设备准备好发送的数据(输入)或上次接收的数据已经处理完毕(输出)时,它便通过DMA接口向CPU提出占用总线申请,若有多个DMA同时申请,则按轻重缓急由硬件排队判优逻辑决定优先等。
数据传送
DMA方式是以数据块为单位传送的,以周期挪用的DMA方式为例,其数据传送的流程图为:
结合下面的图,以数据的输入为例,具体操作如下:
后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断处理程序,做一些DMA的结束工作。
这部分主要包括了
校验送入主存的数据接是否正确
决定是否继续使用DMA传送其他数据块,若继续传送,则又要对DMA接口进行初始化,若不需要传送,则停止外设
测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序。
【两道相关例题 - 待学习】