计算机科学与技术专业计算机组成原理武汉科技大学计算机科学与技术学院第八章输入输出系统本章内容8.1外围设备的定时方式与信息交换方式8.2程序中断方式8.3DMA方式8.4通道方式8.5通用I/O标准接口8.1外围设备的定时方式与信息交换方式8.1.1外围设备的定时方式外围设备的种类相当繁多,有机械式和电动式,也有电子式和其他形式。其输入信号,可以是数字式的电压,也可以是模拟式的电压和电流。从信息传输速率来讲,相差也很悬殊。如果把高速工作的主机同不同速度工作的外围设备相连接,如何保证主机与外围设备在时间上同步?这就是我们要讨论的外围设备的定时问题输入/输出设备同CPU交换数据的过程:输入过程:(1)CPU把一个地址值放在地址总线上,这一步将选择某一输入设备;(2)CPU等候输入设备的数据成为有效;(3)CPU输出过程:(1)CPU(2)CPU(3)问题的关键在于:究竟什么时候数据才成为有效?很显然,由于输入/输出设备本身的速度差异很大,因此,对于不同速度的外围设备,需要有不同的定时方式,总的说来,CPU与外围设备之间1.速度极慢或简单的外围设备—无条件输入输出对这类设备,如机械开关、显示二极管等等,CPU总是能足够快地作出响应。换句话说,对机械开关来讲,CPU可以认为输入的数据一直有效,因为机械开关的动作相对CPU的速度来讲是非常慢的,对显示二极管来讲,CPU可以认为输出一定准备就绪,因为只要给出数据,显示二极管就能进行显示,所以,在这种情况下,CPU2.慢速或中速的外围设备—异步定时、查询输入输出由于这类设备的速度和CPU的速度并不在一个数量级,或者由于设备(如键盘)本身是在不规则时间间隔下操作的,因此,CPU与这类设备之间的数据交换通常采用异步定时方式。其定时过程如下:如果CPU从外设接收一个字,则它首先询问外设的状态,如果该外设的状态标志表明设备已“准备就绪”,那么CPU就从总线上接收数据。CPU在接收数据以后,发出输入响应信号,告诉外设已经把数据总线上的数据取走。然后,外设把“准备就绪”的状态标志复位,并准备下一个字的交换。如果CPU起先询问外设时,外设没有“准备就绪”,那么它就发出表示外设“忙”的标志。于是,CPU将进入一个循环程序中等待,并在每次循环中询问外设的状态,CPU发送数据的情况也与上述情况相似,外设先发出请求输出信号,而后,CPU询问外设是否准备就绪。如果外设已准备就绪,CPU便发出准备就绪信号,并送出数据。外设接收数据以后,将向CPU通常,把这种在CPU和外设间用问答信号进行定时的方式叫做应答式数据交换3.高速的外围设备—同步定时、DMA输入输出由于这类外设是以相等的时间间隔操作的,而CPU也是以等间隔的速率执行输入/输出指令的,因此,这种方式叫做同步定时方式。一旦CPU和外设发生同步,它们之间的数据交换便靠时钟脉冲更快的同步传送要采用直接内存访问(DMA)方式,这将在后面详细介绍。[例子]假设幼儿园一个阿姨带10个孩子,要给每个孩子分4块水果糖。假设孩子们把4块糖都吃完,那么她采用什么方法呢?方法1:她先给孩子甲一块糖,盯着甲吃完,然后再给第二块,等吃完第二块又给第三块,吃完第三块又给第四块。接着给孩子乙,其过程与孩子甲完全一样。依次类推,直至到第10个孩子发完四块糖。看来这种方法效率太低,重要之点还在于孩子们吃糖时她一直在守方法2:每人发一块糖各自去吃,并约定谁吃完后就向她举手报告,再发第二块。看来这种新方法提高了工作效率,而且在未接到孩子们吃完糖的报告以前,她还可以腾出时间给孩子们改作业。但是这种方法还可以改进。方法3:进行批处理:每人拿4块糖各自去吃,吃完4块糖后再向她报告。显然这种方法工作效率大大提高,她可以腾出更多的时间改作业。方法4:权力下放,把发糖的事交给另一个人分管,只是必要时她才过问一下。8.1.2信息交换方式在计算机系统中,CPU管理外围设备也有几种类似的方式:1程序查询方式程序查询方式是早期计算机中使用的一种方式。数据在CPU和外围设备之间的传送完全靠计算机程序控制。查询方式的优点:CPU的操作和外围设备的操作能够同步,而且硬件结构比较简单。缺点:外围设备动作很慢,程序进入查询循环时将白白浪费掉CPU很多时间。这种情况同上述例子中第一种方法相仿,CPU此时只能等待,不能处理其他业务。即使CPU采用定期地由主程序转向查询设备状态的子程序进行扫描轮询的办法,CPU宝贵资源的浪费也是可观的。2中断是外围设备用来“主动”通知CPU,准备送出输入数据或接收输出数据的一种方法。此时CPU由主动查询变为被动响应。通常,当一个中断发生时,CPU暂停它的现行程序,而转向中断处理程序,从而可以输入或输出一个数据。当中断处理完毕后,CPU又返回到它原来的任务,并从它停止的地方开始执行程序。这种方式和我们前述例子的第二种方法相类似。优点:节省了CPU宝贵的时间,是管理I/O操作的一个比较有效的方法。中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即进行。缺点:同程序查询方式相比,硬件结构相对复杂一些,服务开3直接内存访问(DMA)方式中断方式的问题:用中断方式交换数据时,每处理一次I/O交换,约需几十微秒到几百微秒。对于一些高速的外围设备,以及成组交换数据的情况,仍然显得速度太慢。直接内存访问(DMA)方式是一种完全由硬件执行I/O交换的工作方式。这种方式既考虑到中断响应,同时又要节约中断开销。此时,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和外围设备之间进行,以高速传送数据。这种方式和前述例子的第三种方法相仿。优点:数据传送速度很高,传送速率仅受到内存访问时间的限制。缺点:与中断方式相比,需要更多的硬件。DMA方式适用于内存和高速外围设备之间大批数据交换的场合。4DMA方式的出现已经减轻了CPU对I/O操作的控制,使得CPU的效率有显著的提高,而通道的出现则进一步提高了CPU的效率。这是因为,CPU将部分权力下放给通道。通道是一个具有特殊功能的处理器,某些应用中称为输入输出处理器(IOP),它可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。这种方式与前述例子的第四种方法相仿,大大提高了CPU的工作效率。然而这种提高CPU效率的办法是以花费更5外围处理机(PPU)方式是通道方式的进一步发展。由于PPU基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小型计算机。在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务。从某种意义上说,这种系统已变成分布式的多机外围设备的输入/输出方式程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而DMA方式、通道方式和PPU方式适用于数据传输率比较高的设备。目前,单片机和微型机中多采用程序查询方式、程序中断方式和DMA方式。通道方式和PPU方式大都用在中、大型计算机中。8.2程序中断方式8.2.1中断的基本概念中断处理过程如图:主程序只是在设备A,B,C数据准备就绪时,才去处理A,B,C,进行数据交换。在速度较慢的外围设备准备自己的数据时,CPU照常执行自己的主程序。在这个意义上说,CPU和外围设备的一些操作是并行地进行的,因而同串行进行的程序查询方式相比,计算机系统的效率是大大提高了。中断处理过程流程图一些问题:(1)尽管外界中断请求是随机的,但CPU只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求,这样才不致于使当前指令的执行受到干扰。公操作是指一条指令执行结束后CPU所进行的操作,如中断处理、直接内存传送、取下条指令等。外界中断请求信号通常存放在接口中的中断源锁存器里,并通过中断请求线连至CPU,每当一条指令执行到末尾,CPU便检查中断请求信号。若中断请求信号为“1”,则CPU转入“中断周期”,受理外界中断。(2)为了在中断服务程序执行完毕以后正确地返回到原来主程序被中断的断点(PC内容)而继续执行主程序,必须把程序计数器PC的内容,以及当前指令执行结束后CPU的状态(包括寄存器的内容和一些状态标志位)都保存到堆栈中去。这些操作叫做保存现场。(3)当CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求。为了不致造成混乱,在CPU的中断管理部件中必须有一个中断屏蔽触发器,它可以在程序的控制下置“1”(设置屏蔽),或置“0”(取掉屏蔽)。只有在中断屏蔽标志为“0”时,CPU才可以受理中断。当一条指令执行完毕CPU接受中断请求并作出响应时,它一方面发出中断响应信号INTA,另一方面把中断屏蔽标志置“1”,即关闭中断(如8086CPU中的清IF标志)。这样,CPU不能再受理另外的新的中断源发来的中断请求。只有在CPU把中断服务程序执行完毕以后,它才重新使中断屏蔽标志置“0”,即开放中断,并返回主程序。因此,中断服务程序的最后必须有两条指令,即开中断指令和返主指令,同时在硬件上要保证返主指令执行以后才受理新的中断请求(4)中断处理过程是由硬件和软件结合来完成的。如在CAI演示中,中断周期由硬件实现,而中断服务程序由机器指令序列实现。后者除执行保存现场、恢复现场、开放中断并返回主程序任务外,对要求中断的设备进行服务,使其同CPU交换一个字的数据,或作其他服务。8.2.2程序中断方式的基本接口在接口方面,有决定是否向CPU发出中断请求的机构,主要是接口中的“准备就绪”标志(RD)和“允许中断”标志(EI)两个触发器;在CPU方面,有决定是否受理中断请求的机构,主要是“中断请求”标志(IR)和“中断屏蔽”标志(IM)两个触发器。上述四个标志触发器的具体功能如下:准备就绪的标志(RD)一旦设备做好一次数据的接收或发送,便发出一个设备动作完毕信号,使RD标志置“1”。在中断方式中,该标志用作为中断源触发允许中断触发器(EI)可以用程序指令来置位。EI为“1”时,某设备可以向CPU发出中断请求;EI为“0”时,不能向CPU发出中断请求,这意味着某中断源的中断请求被禁止。设置EI标志的目的,就是通过软件来控制是否允许某设备发出中断请求。中断请求触发器(IR)它暂存中断请求线上由设备发出的中断请求信号。当IR标志为“1”时,表示设备发出了中断请求。中断屏蔽触发器(IM)是CPU是否受理中断或批准中断的标志。IM标志为“0”时,CPU可以受理外界的中断请求,反之,IM标志为“1”时,CPU不受理外界的中断。程序中断由外设接口的状态和CPU两方面来控制:1.单级中断的概念根据计算机系统对中断处理的策略不同,可分为单级中断系统和多级中断系统。单级中断系统是中断结构中最基本的形式。在单级中断系统中,所有的中断源都属于同一级,所有中断源触发器排成一行,其优先次序是离CPU近的优先权高。当响应某一中断请求时,执行该中断源的中断服务程序。在此过程中,不允许其他中断源再打断中断服务程序,即使优先权比它高的中断源也不能再打断。单级中断示意图和系统结构图如下:8.2.3单级中断2.如何确定中断源,并转入被响应的中断服务程序入口地址,是中断处理首先要解决的问题。在单级中断中,采用串行排队链法来实现具有公共请求线的中断源判优识别。3.中断向量的产生开关理论中把若干个布尔量排成的序列定义为布尔向量。由于存储器的地址码是一串布尔量的序列,因此常常把地址码称为向量地址当CPU响应中断时,由硬件直接产生一个固定的地址(即向量地址),由向量地址指出每个中断源设备的中断服务程序入口,这种方法通常称为向量中断。显然,每个中断源分别有一个中断服务程序,而每个中断服务程序又有自己的向量地址。当CPU识别出某中断源时,由硬件直接产生一个与该中断源对应的向量地址,很快便引入中断服务程序。向量中断要求在硬件设计时考虑所有中断源的向量地址,而实际中断时只能产生一个向量地址。有些计算机中由硬件产生的向量地址不是直接地址,而是一个“位移量”,这个位移量加上CPU某寄存器里存放的基地址,最后还有一种采用向量地址转移的方法。假设有8个中断源,由优先级编码电路产生8个对应的固定地址码(例如0,1