1. 概述
1.1 输入输出系统的发展概述
输入输出系统的发展可以分为4个阶段:
- 早期阶段

- 接口模块和DMA阶段


- 具有通道结构的阶段


- 具有I/O处理机的阶段

1.2 输入输出系统的组成
输入输出系统由软件和硬件两部分组成
软件
主要任务:
- I/O指令
I/O指令属于机器指令,格式和其他指令(访存指令、算逻指令、控制指令等)相似,但是又有所不同。

操作码交给处理机进行操作的编码,可以作为I/O指令与其他指令的区别标志
命令码体现I/O设备的具体操作
设备码是多台I/O设备的选择码,相当于设备的地址
命令码对应的具体操作
- 将数据从I/O设备输入到主机
- 将数据从主机输出至I/O设备
- 状态测试
- 形成某些操作命令
- 通道指令

硬件
输入输出系统的硬件组成是多种多样的,在带有接口的I/O系统中,一般包括接口模块和I/O设备两大部分。
下图中的接口电路实际上包含许多数据传送通道和有关数据,还包含控制信号通路及其相应的逻辑电路。

下图是具有通道的I/O系统:

1.3 I/O设备与主机的联系方式
主机(CPU)与I/O设备交换信息和CPU与主存交换信息,有许多的不同点。例如:
- CPU如何对I/O设备进行编址;
- 如何寻找I/O设备;
- 信息传送是逐位串行还是多位并行;
- I/O设备与主机以什么方式进行联络,使它们彼此都知道对方处理何种状态;
- I/O设备与主机怎么连接。
- 等
这一系列的问题统称为I/O设备与主机的联系方式
- 1. I/O设备的编址方式

- 2. 设备寻址

- 3. 传送方式

- 4. 联络方式
不论是串行传送还是并行传送,I/O设备与主机之间必须相互了解彼此当时所处的状态,比如:是否可以传送、传送是否已经结束等。
根据I/O设备工作速度的不同,可分为三种联络方式:
- 立即响应方式
- 异步工作采用应答信号联络
- 同步工作采用同步时标联络
- 5. I/O设备与主机的连接方式
辐射式连接(分散连接)
该方式要求每台I/O设备都有一套控制线路和一组信号线,因此所用的器件和连线较多,对I/O设备的增删都比较困难,这种连接方式大多出现在计算机发展的初级阶段。
总线式连接
1.4 I/O设备与主机信息传送的方式
I/O设备与主机交换信息时,共有5种控制方式:
- 程序查询方式
- 程序中断方式
- 直接存储器(DMA)方式
- I/O通道方式
- I/O处理机方式
程序查询方式
该方式是由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执行效率低下的缺点)。
- DMA方式
虽然程序中断方式消除了程序查询方式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设备与主机进行信息交换的方式比较:

2. I/O设备
2.1 概述
主机由CPU和主存构成,除主机外的大部分硬件设备都是I/O设备,或称为外部设备(外围设备),简称外设。
I/O设备的组成通常可以按如下图所示的结构来表示:

机、电、磁、光部件与具体的I/O设备有关,不同结构的设备决定了不同的功能。
设备控制器可以用来控制I/O设备的具体动作。
I/O接口是I/O设备和主机进行信息交换的途径。
I/O设备可以分为三类:
- 人机交互设备: 实现操作者和计算机之间相互交流信息的设备,能将人体五官可以识别的信息转换机器可识别的信息,如键盘⌨、鼠标?、手写板、扫描仪、摄像机?、语音识别器等等。反之,另一类是将计算机的处理信息转换为人们可以识别的信息,比如打印机?、显示器、绘图仪、语音合成器。
- 计算机信息的存储设备: 存储设备其实就是辅助存储器,比如磁盘、磁带、光盘。
- 机-机通信设备: 实现一台计算机和另一台计算机或者其他系统之间的通信任务。

2.2 输入设备
输入设备完成输入程序、数据和操作命令等功能。通常的输入设备就是鼠标和键盘,而且往往会和显示器联用,以便检查和修正输入时的错误。也可以利用软盘、磁带等脱机录入的介质进行输入,目前甚至还可以实现语音直接输入。
键盘⌨:

鼠标?: 可以分为机械式(底部一个金属球)、光电式鼠标。
触摸屏: 可以分为电阻式、电容式、表面超声波式、扫描红外线式、压感式。
其他输入设备:光笔?、画笔与图形板、图像输入设备(比如摄像机?)
2.3 输出设备
显示设备
- 字符显示器
- 图形显示器
- 图像显示器
图形和图像的区别:
图形: 由计算机用一定的算法形成的点、线、画、阴影等,来自主观世界。
图像: 图像(如遥感图像、医学图像、自然景物、新闻照片等)通常来自客观世界。
打印设备
按照印字的原理分类:
- 击打式打印设备
- 非击打式打印设备
按照工作方式分类:
- 串行打印: 逐字打印
- 行式打印: 逐行打印

2.4 其他I/O设备
有一类I/O设备既是输入设备、又是输出设备,比如磁盘、终端、A/D 或 D/A转换器(A-模拟信号、D-数字信号)、汉字处理设备等等。
2.5 多媒体技术

3. I/O接口
3.1 概述
接口可以看作是两个系统或两个部件之间的交接部分,它可以是硬件与硬件、硬件与软件、软件与软件之间的连接电路,也可以两者之间的共同逻辑边界。
I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。
由下图可知,不同的I/O设备都有相应的设备控制器。

主机与I/O设备之间设置接口的理由:
- 一台机器通常配有多台I/O设备,它们各自有其设备号(地址),通过接口可以实现I/O设备的选择。
- I/O设备种类繁多,速度不一,与CPU速度相差可能很大,通过接口可以实现数据缓冲,达到速度匹配。
- 有些I/O设备可能串行的传送数据,而CPU一般为并行传送,通过接口可实现数据串 - 并格式的转换。
- I/O设备的输入输出电平可能与CPU的输入输出电平不同,通过接口可以实现电平转换。
- CPU启动I/O设备工作,要向I/O设备发各种控制信号,通过接口可以传送控制命令。
- I/O设备需将其工作状态及时向CPU报告,通过接口可以监视设备的工作状态,并可保存状态信息,供CPU查询。
接口(Interface)和端口(Port)的区别:
接口:具有如上所述的功能。
端口:是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。若干个端口 + 控制逻辑 = 接口。
CPU通过输入指令,从端口中读入信息,通过输出指令,可将信息写入端口中。
3.2 接口的功能和组成
1. 总线连接方式的I/O接口电路

- 数据线:传送数据的总线,其根数一般等于存储字长的位数或字符的位数,它通常是双向的,也可以是单向的。
- 设备选择线:用来传送设备码的,它的根数取决于I/O指令中设备码的位数。如果把设备码看作是地址号,那么设备选择线也可以称为地址线 。
- 命令线:主要用来传输CPU向设备发出的各种命令信号。
- 状态线:将I/O设备的状态向主机报告的信号线。
2.接口的功能和组成
- 选址功能
- 传送命令的功能
- 传送数据的功能
- 反映出I/O设备工作状态的功能

3.3 接口类型

4. 程序查询方式
4.1 程序查询流程
- 单个I/O设备的程序查询流程

- 多个I/O设备的程序查询方式
按照I/O设备在系统中的优先级别进行逐级查询,其中的优先级按照1到N降序。

为了正确完成这种查询,通常执行如下3条指令: - 测试指令,用来查询I/O设备是否已经准备就绪
- 传送指令,当I/O设备已经准备就绪时,执行传送指令
- 转移指令,当I/O设备没有准备就绪,执行转移指令,转到测试指令,继续测试状态
下图为单个I/O设备程序查询方式的程序流程:

当需要启动某一I/O设备时,必须将该程序插入到现行程序中。
该程序包括如下几项,其中1~3为准备工作

4.2 程序查询方式的接口电路
根据程序查询方式的接口功能及其组成,得出程序查询方式接口电路的基本组成。


5. 程序中断方式
5.1 中断的概念
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处继续往下执行原程序,这就是中断。中断是现代计算机能有效合理发挥效能、提高效率的一个十分重要的功能。通常把实现这种功能所需的软硬件技术统称为中断技术。
5.2 I/O中断的产生
在I/O设备与主机交换信息时,由于设备本身机电特性的影响,其工作速度较低,与CPU无法匹配,因此,CPU启动设备后,往往需要等待一段时间才能实现主机与I/O设备之间的信息交换。如果在设备准备的同时,CPU不作无谓的等待,而继续执行现行程序,只有当I/O设备准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。
下图为由打印机引起的I/O中断,CPU与打印机并行工作的时间示意图:

为了提高计算机的整体效率,为了应付突发事件,为了实时控制的需要,在计算机技术的发展过程中出现了中断技术,为了实现中断,计算机系统中必须配有相应的中断系统或者中断机构。
5.3 程序中断方式的接口电路
为了处理I/O中断,在I/O接口电路中必须配置相关的硬件线路。
- 1. 中断请求触发器和中断屏蔽触发器
每台外部设备都必须配置一个中断请求触发器INTR,当其为1时,表示该设备向CPU提出中断请求,但是设备欲提出中断请求时,其设备本身必须准备就绪,即接口内的完成触发器D必须为1。
除了设备主动向CPU提出中断请求,还有其他许多突发性的事件会引起中断请求,把能够向CPU发出中断请求的因素统称为中断源。因为在某一个时刻只允许CPU处理一个中断处理程序,所以如果有多个中断请求,那么就需要进行排队,当一个中断处理程序正在执行时,其他的中断必须被屏蔽掉,所以会设置一个屏蔽触发器MASK,当其为1时,表示屏蔽中断源。

- 2. 排队器
当多个中断源同时向CPU提出请求时,只能按照中断源的不同性质对其排队,给与不同的优先级,并按照优先级予以相应(处理某一个中断时,其他设备的中断屏蔽触发器为1,用以屏蔽其他中断)。
速度越高的I/O设备优先级越高,因为如果CPU不及时响应高速I/O的请求,其信息可能会丢失。
设备优先级的处理可以采用硬件方法,也可以采用软件方法。
硬件排队器的实现方法很多,既可以在CPU内部设备一个统一的排队器,对所有中断源进行排队,也可以在接口电路分别设置各个设备的排队器,下面是设在各个接口电路中的排队器电路,又称为链式排队器。

- 3. 中断向量地址形成部件(设备编码器)
CPU一旦响应I/O中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断请求程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。
入口地址的寻找可以硬件或软件的方法来完成,这里介绍硬件向量法,软件方法在第八章介绍,所谓硬件向量法,就是通过向量地址来寻找设备的中断服务程序入口地址,而且相连地址是由硬件电路产生的,如图:

中断向量地址形成部件的输入是来自排队器的输出INTP1,INTP2, … , INTPn,它的输出是中断向量(二进制代码表示),其位数与计算机可以处理中断源的个数有关,即一个中断源对应一个向量地址,可见,该部件实质上是一个编码器,在I/O接口中的编码器又称为设备编码器。
必须搞清楚向量地址和入口地址的区别:
通过向量地址是寻找中断处理程序入口地址的一种方法(硬件向量法)。
比如:上图,其中的12H、13H、14H是向量地址,200、300分别是打印服务程序和显示器服务程序的入口地址。
- 4. 程序中断方式接口电路的基本组成

5.4 I/O中断处理过程
CPU响应中断的条件和时间
条件: 必须满足CPU中的允许中断触发器EINT为1
该触发器可用中断指令置位(开中断),也可以用关中断指令或者硬件自动使其复位(关中断)。
根据下图分析可知,I/O设备准备就绪的时间(即D=1的时刻)是随机的,而CPU是在统一的时刻(每条指令执行阶段结束前)向接口发中断查询信号,以获取I/O设备的中断请求。因此CPU响应中断的时间一定是在每条指令执行阶段的结束时刻。

I/O中断处理过程
下面以输入设备为例,结合图(程序中断方式接口电路的基本组成),说明I/O设备处理的全过程,当CPU通过I/O指令的地址码选中某设备后,则:



5.5 中断服务程序的流程
- 保护现场

- 进入中断服务(处理)程序



- 恢复现场

- 中断返回



6. DMA方式
6.1 DMA方式的特点
下图示意了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设备的读/写周期大于主存周期的情况。 - 3. DMA与CPU交替访问

6.2 DMA接口的功能和组成
1. DMA接口的功能
利用DMA方式传送数据时,数据的传送过程完全由DMA接口电路控制,故DMA接口又有DMA控制器之称。DMA接口应具有如下几个功能:
- 向CPU申请DMA传送
- 在CPU允许DMA工作时,处理总线控制权的转交,避免因进入DMA工作而影响CPU正常活动或引起总线竞争
- 在DMA期间管理系统总线,控制数据传送
- 确定传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度
- 在数据块传送结束时,给出DMA操作完成的信号
2. DMA接口基本组成



6.3 DMA的工作过程
1. DMA传送过程
分为三个阶段:预处理、数据传送、后处理

预处理
在DMA接口开始工作之前,CPU必须给它预置如下信息:
- 给DMA控制逻辑指明数据传送方向是输入(写主存)还是输出(读主存)
- 向DMA设备地址寄存器送入设备号,并启动设备
- 向DMA主存地址寄存器送入交换数据的主存起始地址
- 对字计数器赋予交换数据的个数
上面的工作由CPU执行几条输入输出指令完成,即程序的初始化阶段。这些预处理的工作完成后,CPU继续执行原来的程序。
当I/O设备准备好发送的数据(输入)或上次接收的数据已经处理完毕(输出)时,它便通过DMA接口向CPU提出占用总线申请,若有多个DMA同时申请,则按轻重缓急由硬件排队判优逻辑决定优先等。
数据传送
DMA方式是以数据块为单位传送的,以周期挪用的DMA方式为例,其数据传送的流程图为:

结合下面的图,以数据的输入为例,具体操作如下:



后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断处理程序,做一些DMA的结束工作。
这部分主要包括了
校验送入主存的数据接是否正确
决定是否继续使用DMA传送其他数据块,若继续传送,则又要对DMA接口进行初始化,若不需要传送,则停止外设
测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序。
【两道相关例题 - 待学习】
2. DMA接口与系统的连接方式


3. DMA小结

6.4 DMA接口的类型






版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/6105.html




