-
1 教学内容
-
2 教学视频
-
3 翻转课堂教学任务单
本节教学内容:
1、I/O接口
2、程序查询方式
教学目的和要求:
1、了解I/O接口的功能;
2、掌握I/O接口的组成;
3、了解程序查询方式和中断方式的接口电路;
4、理解程序查询方式和中断方式的工作流程。
重点:1、I/O接口的功能和组成;
2、程序查询方式
难点:1、接口的功能设计
第1讲I/O接口的功能、组成和分类
一、知识要点
1、I/O接口的功能和组成、
2、I/O接口不同方式的分类
3、程序查询方式的流程
二、教学安排
首先,对I/O接口的功能进行介绍,让学生知道为什么主机要通过I/O接口来与I/O设备的通信,然后通过I/O接口的硬件逻辑图来讲解I/O接口的组成,这里要注意接口与总线的连接,以及主机、I/O设备之间如何通过I/O接口进行通信的原理,最后,对程序查询方式的接口电路进行介绍。
三、教学内容
1、I/O接口概述
接口可以看做是两个系统或两个部件之间的交接部分,它既可以是两种硬设备之间的连接电路,也可以是两个软件之问的共同逻辑边界。I/O接口通常是指主机与I/O设备之间设备的一个硬件电路及其相应的软件控制。由图5.13可知,不同的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通过输入指令,从端口读入信息,通过输出指令,可将信息写入到端口中。
2、总线连接方式的I/O接口电路
下图所示为总线结构的计算机,每一台I/O设备都是通过I/O接口挂到系统总线上的。图中的I/O总线包括数据线、设备选择线、命令线和状态线。

1)数据线
数据线是I/O设备与主机之间数据代码的传送线,其根数一半等于存储字长的位数或字符的位数,它通常是双向的,也可以是单向的。若采用单向数据总线,则必须用两组才能实现数据的输入和输出功能,而双向数据总线只需一组即可。
2)设备选择线
设备选择线是用来传送设备码的,它的根数取决于I/O指令中设备码的位数。如果把设备码看做是地址号,那么设备选择线又可称为地址线。设备选择线可以有一组,也可以有两组,其中一组用于主机向I/O设备发送设备码,另一组用于I/O设备向主机回送设备码。当然设备选择线液可采用一组双向总线代替两组单向总线。
3)命令线
命令线主要用以传输CPU向设备发出的各种命令信号,如启动、清除、屏蔽、读、写等。它是一组单向总线,其根数与命令信号多少有关。
4)状态线
状态线是将I/O设备的状态向主机报告的信号线,例如,设备是否准备就绪,是否向CPU发出中断请求等。它也是一组单向总线。
现代计算机中大多采用三态逻辑电路来构成总线。
3、接口的功能和组成
根据上述设置接口的理由,可归纳出接口通常应具有以下几个功能以及相应的硬件配置。
1)选址功能
由于I/O总线与所有设备的接口电路相连,但CPU究竟选择哪台设备,还得通过设备选择线上的设备码来确定。该设备码将送至所有设备的接口,因此,要求每个接口都必须具有选址功能,即当设备选择线上的设备码与本设备码相符时,应发出设备选中信号SEL,这种功能可通过接口内的设备选择电路来实现。
下图所示为接口1和接口2的设备选择电路。这两个电路的具体线路可以不同,它们分别能识别出自身的设备码,一旦某接口设备选择电路有输出时,它便可控制这个设备通过命令线、状态线和数据线与主机交换信息。

2)传送命令的功能
当CPU向I/O设备发出命令时,要求I/O设备能做出响应,如果I/O接口不具备传送命令信息的功能,那么设备将无法响应,故通常在I/O接口中设有存放命令寄存器以及命令译码器。
命令寄存器用来存放I/O指令中的命令码,它受设备选中信号控制。命令线和所有接口电路的命令寄存器相连,只有被选中设备的SEL信号有效,命令寄存器才可接受命令线上的命令码。
3)传送数据的功能
既然接口处于主机与I/O设备之间,因此数据必须通过接口才能实现主机与I/O设备之间的传送。这就要求接口中具有数据通路,完成数据传送。这种数据通路还应具有缓冲能力,即能将数据暂存在接口内。接口中通常设有数据缓冲寄存器,它用来暂存I/O设备与主机准备交换的信息,与I/O总线中的数据线是相连的。
每个接口中的数据缓冲寄存器的位数可以各不相同,这取决于各类I/O设备的不同需要。
4)反映I/O设备工作状态的功能
为了使CPU能及时了解各I/O设备的工作状态,接口内必须设置一些反映设备工作状态的触发器。例如,用完成触发器D和工作触发器B来标志设备所处的状态。
当D=0,B=0时,表示I/O设备处于暂停状态。
当D=1,B=0时,表示I/O设备已经准备就绪。
当D=0,B=1时,表示I/O设备处于准备状态。
由于现代计算机系统中大多采用中断技术,因此接口电路中一般还设有中断请求触发器INTR,当其为“1”时,表示该I/O设备向CPU发出中断请求。接口内还有屏蔽触发器MASK,它与中断请求触发器配合使用,完成设备的屏蔽功能。
所有的状态标志触发器都与I/O总线中的状态线相连。此外,不同的I/O设备的接口电路中还可根据需要增设一些其他状态标志触发器,如“出错”触发器、“数据迟到”触发器,或配置一些奇偶校验电路、循环码校验电路等。随着大规模集成电路制作工艺的不断进步,目前大多数I/O设备所共用的电路都制作在一个芯片内,作为通用接口芯片。另一些I/O设备专用的电路,制作在I/O设备的设备控制器中。本节所讲述的接口功能及组成均是指通用接口所具备的。下图所示为I/O接口的基本组成。

4、接口类型
I/O接口按不同方式分类有以下几种。
1)按数据传送方式分类,有并行接口和串行接口两类。并行接口时将一个字节(或一个字)的所有位同时传送(如Intel 8255);串行接口是在设备与接口间一位一位传送(如Intel 8251)。由于接口与主机之间是按字节或字并行传送,因此对串行接口而言,其内部还必须设有串-并转换装置。
2)按功能选择的灵活性分类,有可编程接口和不可编程接口两种。可编程接口的功能及操作方式可用程序来改变或选择;不可编程接口不能由程序来改变其功能,但可通过硬连线逻辑来实现不同的功能。
3)按通用性分类有通用接口和专用接口。通用接口可供多种I/O设备使用;专用接口是为某类外设或某种用途专门设计的。
4)按数据传送的控制方式分类,有程序型接口和DMA接口。程序型接口用于连接速度较慢的I/O设备,如显示终端、键盘、打印机等。现代计算机一般都可采用程序中断方式实现主机与I/O设备之间的信息交换,故都配有这类接口。DMA型接口用于连接高速I/O设备,如磁盘、磁带等。
5、程序查询流程

由前面知识已知,程序查询方式的核心问题在于每时每刻需不断查询I/O设备是否准备就绪。上图是单个I/O设备的查询流程。
当I/O设备较多时,CPU需按各个I/O设备在系统中的优先级别进行逐级查询,其流程图如下图所示。图中设备的优先顺序按1至N降序排列。

为了正确完成这种查询,通常要执行如下3条指令。
①测试指令,用来查询I/O设备是否准备就绪。
②传送指令,当I/O设备已准备就绪时,执行传送指令。
③转移指令,若I/O设备未准备就绪,执行转移指令,转至测试指令,继续测试I/O设备的状态。

上图所示为单个I/O设备程序查询方式的程序流程。当需要启动某一I/O设备时,必须将该程序插入到现行程序中。该程序包括如下几项,其中①~③为准备工作。
由于这种方式传送数据时要占用CPU中的寄存器,故首先需将寄存器原内容保护起来
由于传送往往是一批数据,因此需先设置I/O设备与主机交换数据的计数值。
设置欲传送数据在主存缓冲区的首地址。
CPU启动I/O设备。
将I/O接口中的设备状态标志取至CPU并测试I/O设备是否准备就绪。如果未准备就绪,则等待,直到准备就绪为止。当准备就绪时,接着可实现传送。对输入而言,准备就绪意味着接口电路中的数据缓冲寄存器已装满欲传送的数据,称为输入缓冲满,CPU即可取走数据;对输出而言,准备就绪意味着接口电路中的数据已被设备取走,故称为输出缓冲空,这样CPU可再次将数据送到接口,设备可再次从接口接收数据。
CPU执行I/O指令,或从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入I/O接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。
修改主存地址。
修改计数值,若原设置计数值为原码,则依次减1;若原设置计数值为负数的补码,则依次加1。
判断计数值。若计数值不为0,表示一批数据尚未传送完,重新启动外设继续传送;若计数值为0,则表示一批数据已传送完毕。
结束I/O传送,继续执行现行程序。
四、互动及练习
本次课采用提问的互动方式:
1、CPU如何通过总线对I/O接口中的寄存器进行操作的?
请同学们谈谈自己的看法,让学生回忆三类总线的作用,然后引入I/O接口组成图,分析CPU通过总线对I/O接口中的寄存器进行操作的过程,这个过程非常重要,如果不能理解,后面学习将变得比较困难。
第2讲程序查询方式和中断方式的接口电路
一、知识要点
1、程序查询方式的接口电路
2、I/O中断的产生
3、程序中断方式的接口电路
二、教学安排
首先,接着介绍程序查询方式的接口电路,通过接口电路再分析整个查询方式的工作流程,让学生把工作流程跟硬件结构联系起来,然后介绍中断方式,中断的产生和中断方式的接口电路,中断接口电路也决定了其工作流程,要注意结合起来分析讲解。
三、教学内容
1、程序查询方式的接口电路
由程序查询流程和前面章节所述的接口功能及组成,得出程序查询方式接口电路的基本组成,如下图所示。

图中设备选择电路用以识别本设备地址,当地址线上的设备号与本设备号相符时,SEL有效,可以接收命令;数据缓冲寄存器用于存放欲传送的数据;D是完成触发器,B是工作触发器,其功能如上节所述。
以输入设备为例,该接口的工作过程如下:
①当CPU通过I/O指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路。
②若该接口的设备码与地址线上的代码吻合,其输出SEL有效。
③I/O指令的启动命令经过“与非”门将工作触发器B置“1”,将完成触发器D置“0”。
④由B触发器启动设备工作。
⑤输入设备将数据送至数据缓冲寄存器。
⑥由设备发设备工作结束信号,将D置“1”,B置“0”,表示外设准备就绪。
⑦D触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”。
⑧CPU执行输入指令,将数据缓冲寄存器中的数据送至CPU的通用寄存器,再存入主存相关单元。
2、中断的概念及产生
计算机在执行程序的过程中,当出现异常情况或特殊要求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序.这就是“中断”(参见图5.10)。中断是现代计算机能有效合理地发挥效能和提高效率的一个十分重要的功能。通常又把实现这种功能所需的软硬件技术统称为中断技术。
在I/O设备与主机交换信息时,由于设备本身机电特性的影响,其工作速度较低,与CPU无法匹配,因此,CPU启动设备后,往往需要等待一段时间才能实现主机与I/O设备之间的信息交换。如果在设备准备的同时,CPU不作无谓的等待,而继续执行现行程序,只有当I/O设备准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。
下图所示为由打印机引起的I/O中断时,CPU与打印机并行工作的时间示意图。

其实,计算机系统引入中断技术的原因不仅仅是为了适应I/O设备工作速度低的问题。例如,当计算机正在运行中,若出现突然掉电这种异常情况,将会导致CPU中的全部信息丢失。倘若能在突然掉电的瞬间立即启动另一个备份电源,并迅速进行一些必要的处理,例如,将有用信息送至不受电源影响的存储系统内,待电源恢复后接着使用,这种处理技术也要用中断技术来实现。又如,在实时控制领域中,要求CPU能即时响应外来信号的请求,并能完成相应的操作,也都要求采用中断技术。总之,为了提高计算机的整机效率,为了应付突发事件,为了实时控制的需要,在计算机技术的发展过程中产生了“中断”技术。为了实现“中断”,计算机系统中必须配有相应的中断系统或中断机构。
3、程序中断方式的接口电路
为处理I/O中断,在I/O接口电路中必须配置相关的硬件线路。
1)中断请求触发器和中断屏蔽触发器
每台外部设备都必须配置一个中断请求触发器INTR,当其为“1”时,表示该设备向CPU提出中断请求。但是设备欲提出中断请求时,其设备本身必须准备就绪,即接口内的完成触发器D的状态必须为“1”。
由于计算机应用的范围越来越广泛,向CPU提出中断请求的原因也越来越多,除了各种I/O设备外,还有其他许多突发性事件都是引起中断的因素,为此,把凡能向CPU提出中断请求的各种因素统称为中断源。当多个中断源向CPU提出中断请求时,CPU必须坚持一个原则,即在任何瞬间只能接受一个中断源的请求。所以,当多个中断源同时提出请求时,CPU必须对各中断源的请求进行排队,且只能接受级别最高的中断源的请求,不允许级别低的中断源中断正在运行的中断服务程序。这样,在I/O接口中需设置一个屏蔽触发器MASK,当其为“1”时,表示被屏蔽,即封锁其中断源的请求。可见中断请求触发器和中断屏蔽触发器在I/O接口中是成对出现的。有关屏蔽的详细内容将在后面章节中讲述。
此外,CPU总是在统一的时间,即每条指令执行阶段的最后时到,查询所有的设备是否有中断请求。
综合上述各因素,可得出接口电路中的完成触发器D、中断请求触发器INTR、中断屏蔽触发器MASK和中断查询信号的关系如下图所示。可见,仅当设备准备就绪(D=1),且该设备未被屏蔽(MASK=0)时,CPU的中断查询信号可将中断请求触发器置“1”(INTR=1)。

2)排队器
如上所述,当多个中断源同时向CPU提出请求时,CPU只能按中断源的不同性质对其排队,给予不同等级的优先权,并按优先等级的高低予以响应。就I/O中断而言,速度越高的I/O设备,优先级越高,因为若CPU不及时响应高速I/O的请求,其信息可能会立即丢失。
设备优先权的处理可以采用硬件方法,也可采用软件方法(详见后面章节)。硬件排队器的实现方法很多,既可在CPU内部设置一个统一的排队器,对所有中断源进行排队,也可在接口电路内分别设备各个设备的排队器,下图所示是设在各个接口电路中的排队器电路,又称为链式排队器。

图中厦门的一排门电路是链式排队器的核心。每个接口中有一个反相器和一个“与非”门(如图中点画线框内所示),它们之间犹如链条一样串接在一起,故称为链式排队器。该电路中级别最高的中断源是1号,其次是2号、3号、4号。不论是哪个中断源提出中断请求,排队器输出端INTPi只有一个高电平。
当各中断源均无中断请求时,各个INTPi*为高电平,其INTP1‘、INTP2’、INTP3‘^…均为高电平。一旦某个中断源提出中断请求时,就迫使比其优先级低的中断源INTPi‘变为低电平,封锁其发中断请求。例如,当2号和3号中断源同时有请求时(INTP2*=0,INTP3*=0),经分析可知INTP1’和INTP2‘均为高电平,INTP3‘及往后的各级INTPi’均为低电平。各个INTPi‘再经图中上面一排两个输入头的“与非”门,便可保证排队器只有INTP2为高电平,表示2号中断源排队选中。
3)中断向量地址形成部件(设备编码器)
CPU一旦响应了I/O中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。
入口地址的寻找也可用硬件或软件的方法来完成,这里只介绍硬件向量法。所谓硬件向量法,就是通过向量地址来寻找设备的中断服务程序入口地址,而且向量地址是由硬件电路产生的,如下图所示。

中断向量地址形成部件的输入时来自排队器的输出INTP1、INTP2…INTPn,它的输出时中断向量,其位数与计算机可以处理中断源的个数有关,即一个中断源对应一个向量地址。可见,该部件实质上是一个编码器。在I/O接口中的编码器又称为设备编码器。
这里必须分清向量地址和中断服务程序的入口地址是两个不同的概念,下图是通过向量地址寻址入口地址的一种方案。其中12H、13H、14H是向量地址,200、300分别是打印机服务程序和显示器服务程序的入口地址。
四、互动及练习
本次课采用提问的互动方式:
1、程序查询和中断方式的接口电路与通用接口电路中有哪些相似之处?
通用接口电路具有大多数接口电路所共有的部分,因此让同学自己分析出它们中共有的东西,然后再看不同部分,以区分这两种接口电路,以及随电路改变的工作流程。

