资源简介 (共127张PPT)第7章 接口与输入/输出7.1 接口概述7.2 输入/输出方式关联习题7.1 接 口 概 述7.1.1 接口的功能与组成 1.接口的主要功能 I/O接口是介于主机和外设之间用于完成某些控制功能、速度匹配、信号转换的一种缓冲电路。它一方面将来自外设的信息传送给微处理机;另一方面将微处理机加工后的信息传回外设。I/O系统如图7-1所示。由于数据在CPU中传送的速度远远快于在外设中传输的速度,且CPU中的二进制数据是并行传输的,有标准的电位要求,而外设因其种类的不同,数据的传输方式有串行的,有并行的,还有串/并行的。 因此,I/O接口的基本功能就是进行外设与CPU之间的信息转换,使其形式上能互相适应,速度上能互相匹配,以解决CPU与外设之间在数据形式、数据的传递方式以及传递速率上存在很大差异的矛盾。同时,接口能根据CPU的控制要求,对I/O系统的工作进行控制与检测。图7-1 I/O系统 2.I/O接口的组成 I/O接口由硬件和软件构成。I/O接口硬件电路主要包括寄存器组、译码电路、总线接口和读/写控制逻辑,如图7-2所示。I/O接口的软件是指接口的驱动程序。因此,接口技术是一种将硬件和软件相结合的技术,这不仅要设计设备的接口电路,还要设计设备的驱动程序,随着计算机应用的不断扩大,接口技术将显得越来越重要。 图7-2 I/O接口硬件结构 为了区别CPU内部的寄存器,我们把I/O接口电路中所包含的一组寄存器称为I/O端口,简称为端口(Port)。正如每个存储单元都有一个物理地址一样,每个端口也有一个地址与之相对应,该地址称为端口地址。根据端口所存放的信息不同,可以将端口分为数据端口、状态端口和控制端口。具体而言,用来保存CPU和外设之间传送的数据(如数字、字符及某种特定的编码等)并对输入/输出数据起缓冲作用的数据寄存器称为数据端口;用来存放外设或者接口部件本身状态的状态寄存器称为状态端口;用来存放CPU发往外设的控制命令的控制寄存器称为控制端口。由此可见,接口和端口是两个不同的概念,若干个端口加上相应的控制电路才构成接口。 软件通常由接口初始化程序和接口工作程序构成。接口初始化程序用来对接口芯片设置工作方式和初始条件。接口工作程序是用来进行数据交换的程序。7.1.2 I/O接口的编址方式 I/O端口都有自己的端口地址,供CPU向接口中寄存器发送命令、读取状态和传送数据。可以一个端口地址只对应一个端口,也可以多个端口地址对应一个端口。I/O端口编址方式是为端口分配地址的方法,具体分配方法有两种:I/O端口与内存单元统一编址和 I/O端口与内存单元独立编址。 1.I/O端口与内存单元统一编址 这种编址方式是对I/O端口和存储单元按照存储单元的编址方法统一编排地址号,由I/O端口地址和存储单元地址共同构成一个统一的地址空间。例如,对于一个有16根地址线的微机系统,若采用统一编址方式,其地址空间的结构如图7-3所示。图7-3 I/O端口与内存单元统一编址 I/O端口与内存单元统一编址的优点是无需专门的I/O指令。对存储器的各种寻址方式也同样适用于对I/O端口的访问,给使用者提供了很大的方便。缺点是I/O端口占用了一部分存储器地址空间,因而相对减少了内存的地址可用范围。 2.I/O端口与内存单元独立编址 在这种编址方式中,建立了两个地址空间,一个为内存地址空间,一个为I/O地址空间。内存地址空间和I/O地址空间是相对独立的,通过控制总线来确定CPU到底要访问内存还是I/O端口,为确保控制总线发出正确的信号,除了要有访问内存的指令之外,系统还要提供用于CPU与I/O端口之间进行数据传输的输入/输出指令。80x86 CPU组成的微机系统都采用独立编址方式。 在8086/8088系统中,共有20根地址线对内存寻址,内存的地址范围是00000H~0FFFFFH,用地址总线的低16位对I/O端口寻址,所以I/O端口的地址范围是0000H~0FFFFH,如图7-4所示。其优点是存储器地址空间不受I/O端口地址空间的影响;其缺点是专用I/O指令增加了指令系统复杂性,且I/O指令类型少,程序设计灵活性较差。此外,还要求CPU提供专门的控制信号以区分对存储器和I/O端口的操作,增加了控制逻辑的复杂性。图7-4 I/O端口与内存单元独立编址7.1.3 I/O接口地址的译码 当CPU执行I/O指令时,只能对选中的端口进行读/写操作。如何识别被选中的端口,这就是端口地址的译码问题。端口地址的译码方法有多种,下面仅介绍两种常用的方法。 1.固定式地址译码 固定式译码的端口地址由硬件连线决定,不能更改,适用于不需改变端口地址的场合。例如设计一个“读2F8H端口”的译码电路,如图7-5所示。分析如下:2F8H是一个输入端口(数据输入寄存器)地址,若地址信号A9…A0=2F8H时,选中此端口,并进行数据输入。参与译码的除地址信号A9…A0外,还需要AEN、IOR。其中AEN信号用于DMA操作控制,只有当AEN=0时,即不是DMA操作时,译码才有效;当AEN=1时,即是DMA操作时,译码无效。 IOR信号用于输入/输出控制,当IOR= 0时,进行输入;当IOR=1时,进行输出。当CPU执行指令IN AL,DX;DX=2F8H 时,该指令产生的总线信号为IOR=0,AEN=0,地址信号A9…A0=2F8H,接口电路把CPU执行该指令产生的信号变为选通信号Y=0,则选中2F8H端口,并读出该端口中的数据,经数据总线送到寄存器AL。图7-5 读操作2F8H端口地址译码电路 2.开关式可选地址译码 这种译码方式可通过开关使接口卡的I/O端口地址根据要求加以改变而无需改动线路,其电路有以下几种形式。 1) 地址开关加比较器如图7-6所示,当比较器输出有效(相等)时,译码输出有效。此时假设S0、S2闭合,其译码输出地址为图7-6 地址开关加比较器译码电路 2) 异或门加地址开关 如图7-7所示,若要求异或门的输出C=1,则两个输入端逻辑电平反相,即若开关S闭合,则Ai=1;否则,Ai =0。若要求异或门的输出C=0,则两个输入端逻辑电平相同,即若开关S闭合,则Ai=0;否则,Ai =1。其典型应用如图7-8所示。读者自己分析端口地址。图7-7 异或门加地址开关图7-8 异或门加地址3) 跳接开关 如图7-9所示,其地址由跳接开关决定。其中,芯片74LS138内部包含4个异或门,各异或门与引脚的关系如图7-9所示。各个端口地址分配为Y0~Y7= 170H~177H图7-9 跳接开关译码电路7.2 输入/输出方式 研究主机与外围设备之间的数据传输方式主要围绕着两个问题:一是主机速度与外围设备速度的匹配问题,二是如何提高整机系统的性能问题。早期的输入/输出系统是由程序控制的,即外围设备的启动、停止等工作全部由CPU执行程序来实现控制。通常外围设备的工作速度比主机的工作速度要低得多,因此,在外围设备工作的时候,主机处于等待状态。在这种工作方式下,主机与外围设备不能同时工作,整个计算机系统的工作效率较低。若主机和外围设备能同时工作,整个计算机系统的工作效率就会明显提高。 因而引入了中断的概念,即当外围设备需要CPU为其服务时,才向CPU请求服务,CPU暂停当前的工作,转而为外围设备服务。当CPU为外围设备的服务结束后,继续返回到原来的工作。由于中断的辅助操作很多,特别是外围设备较多时,中断过于频繁,将使CPU应接不暇,导致整机的性能会受到很大的影响。如果外围设备和主存之间的信息传输不经过CPU,而是外围设备和主存之间的信息直接传输,就成了直接存储器传输(DMA)方式。在DMA方式中,CPU把部分输入/输出的控制权交给了设备控制器,在外围设备与主存之间传输信息期间减少了中间环节,从而进一步提高了信息传输率。 如果设备控制器能执行自己的指令、程序来完成输入/输出的功能,就形成了通道或I/O处理机工作方式。一个通道在执行输入/输出过程的开始,由CPU进入管理程序,启动通道工作。以后的过程全部由通道按照通道程序自行处理,CPU可同时继续进行原来的工作,直至整个输入/输出过程结束才中断CPU作结束处理。不论一个输入/输出过程交换多少信息,只需中断CPU两次,外围设备、通道和CPU可以同时工作。仅在硬件上的这些措施还不一定能充分发挥作用,必须要求操作系统具有管理多道程序运行的功能。现有的操作系统占有大量的CPU时间,把操作系统中有关外围设备管理部分的功能分散到输入/输出通道中,就形成了I/O处理机。 综上所述,输入/输出方式可以分为四种方式,即程序控制的输入/输出方式、中断方式、DMA方式和通道方式。程序控制方式和中断方式适用于数据传输量少、传输率较低的外围设备,DMA方式、通道方式适用于数据传输率较高的外围设备。7.2.1 程序控制传送方式 1.无条件传送方式 无条件传送方式又称同步传送方式。 微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,在它们工作时,可以认为输入设备已随时准备好向CPU提供数据,而输出设备也随时准备好接收CPU送来的数据,这样,在CPU需要与外设交换信息时,就能够用IN或OUT指令直接对这些外设进行输入/输出操作。由于在这种方式下CPU对外设进行输入/输出操作时无需考虑外设的状态,故称之为无条件传送方式。 对于简单外设,若采用无条件传送方式,其接口电路也很简单。如简单外设作为输入设备时,输入数据保持时间相对于CPU的处理时间要长得多,所以可直接使用三态缓冲器和数据总线相连,如图7-10(a)所示。当执行输入的指令时,读信号有效,选择信号处于低电平,因而三态缓冲器被选通,使其中早已准备好的输入数据送到数据总线上,再到达CPU。所以要求CPU在执行输入指令时,外设的数据是准备好的,即数据已经存入三态缓冲器中。简单外设为输出设备时由于外设取数的速度比较慢,要求CPU送出的数据在接口电路的输出端保持一段时间,因而一般都需要锁存器,如图7-10(b)所示。CPU执行输出指令时,和信号有效,于是,接口中的输出锁存器被选中,CPU输出的信息经过数据总线送入输出锁存器中,输出锁存器保持这个数据,直到外设取走。图7-10 无条件传送方式接口 无条件传送方式下,程序设计和接口电路都很简单,但是为了保证每一次数据传送时外设都能处于就绪状态,传送不能太频繁。对少量的数据传送来说,无条件传送方式是最经济实用的一种传送方法。 2.查询传送方式 查询传送也称为条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应设备的状态,当输入设备处于准备好状态,输出设备处于空闲状态时,CPU才执行输入/输出指令与外设交换信息。为此,接口电路中既要有数据端口,还要有状态端口。 查询传送方式的流程图见图7-11。从图中可以看出,采用查询方式完成一次数据传送要经历如下过程: 第一步,CPU从接口中读取状态字; 第二步,CPU检测相应的状态位是否满足“就绪”条件; 第三步,如果不满足,则重复第一步、第二步;若外设已处于“就绪”状态,则传送数据。图7-11 查询传送方式的流程图 1) 查询式输入 实现查询式输入的接口电路见图7-12。当输入设备数据准备好,就发低电平有效的选通信号STB,其作用有: (1) 作为8位锁存器的控制信号,当STB=0时,输入设备的数据被送入锁存器; (2) 使D触发器的输出端Q端变成高电平,表示外设已准备好,接口电路已有外设送来的数据。图7-12 查询式输入的接口电路 当CPU要从外设输入数据时,先从状态口读READY状态(在CPU数据总线的D0上),当READY=1,从数据端口读入数据,同时把D触发器清零(即READY=0),以准备接收下一个数据。 查询输入的编程如下: ① 数据准备好,选通信号输出正跳变,将数据→锁存器D触发器置1,作为Ready信号,D7=1。 ② 查询状态信号,执行IN AL,状态口Ready(bit7)→AL③ 若Ready=1,执行IN AL,数据口输入数据→ALD触发器复位,Ready=0。 ④ 程序如下: WAIT_FOR: IN AL,STATUS_PORT TEST AL,80H JE WAIT_FOR IN AL,DATA_PORT 2) 查询式输出 当CPU将数据输出到外部设备时,由于CPU传送数据速度很快,因此如果外设不及时将数据取走,CPU就不能再向外设输出数据,否则数据会丢失。因此,外设取走一个数据就要发一个状态信息,告诉CPU数据已被取走,可以输出下一个数据。 实现查询式输出的接口电路见图7-13。CPU要不断地查询外设,当外设没有准备好时,CPU要等待,由于许多外设的速度比CPU要慢得多,导致CPU的利用率不高。图7-13 查询式输出的接口电路 查询输出的编程过程: (1) 上一数据处理结束,应答信号的负跳变使D触发器复“0”;输出装置启动信号为0,缓冲器输出Busy=0;(2) 查询状态信号,执行 指令IN AL,状态口 Busy(bit7)→AL; (3) 若Busy =0,执行指令 OUT 数据口,AL;输出数据AL→DB→锁存器→输出装置;D触发器置1,启动输出装置Busy=1,禁止输出。 (4) 程序如下: WAIT_FOR:IN AL,STATUS_PORT TEST AL,80H JNE WAIT_FOR MOV AL,STORE; 从数据区取数 OUT DATA_PORT,AL 【例7-1】 查询数据输入,有8个模拟电压,一个8 bit A/D转换器。由CPU控制一个8选1多路开关,以及A/D转换启动。依次实现8个模拟电压的A/D转换,并把数据存储在DSTORE为首地址的内存单元中。解:查询数据输入程序如下:START: MOV DL,0F8HLEA DI,DSTOREAGAIN: MOV AL,DLAND AL,0EFH ; 使bit4 = 0OUT Contol_port,AL; 停止A/DCALL DELAY ; 延时等待A/DMOV AL,DLOUT Contol_port,AL ; 结束WAIT_FOR:IN AL,STATUS _PORT ; 输入状态信号SHR AL,1 ; 将状态信号JNC WAIT_FOR ; 转WAIT_FORIN AL,DATA_PORTSTORB ; (AL)→(DI)INC DL ; 改变模拟信号 JNE AGAIN7.2.2 中断方式 1.中断的基本概念 中断是指当CPU正在执行程序过程中,由于某一突发事件的发生,CPU暂时中止正在执行的程序,转去处理突发事件,待处理完毕后,再返回到原来被中止的程序继续执行。可见中断是一个过程,能够引起中断的突发事件称为中断源,根据中断源不同,可以将中断分为硬件中断和软件中断。处理突发事件的程序称为中断服务程序,简称中服,是否需要中服,可以将中断分为程序中断和简单中断。 从主程序转到中断服务程序称为中断响应,根据中断响应方法不同,可以将中断分为查询中断和向量中断。从中断服务程序返回到主程序称为中断返回,为了能够正确返回到被打断处继续执行原程序,中断响应时应自动保护断点。所谓断点,就是CPU被打断处指令的下一条指令的地址。 可见“中断”是由外围设备或其他非预期的急需处理的事件引起的,外围设备处于“主动”状态,CPU处于被动状态。例如,现有1号、2号、3号外围设备处于中断工作方式,它们分别在时刻t1、t2和t3向CPU请求服务,其中断示意图如图7-14所示。图7-14 中断响应和处理示意图 2.中断系统 1) 中断系统的功能 (1) CPU和外围设备并行工作。 外围设备大多是由微处理机控制工作的,当CPU和外围设备之间不需交换数据时,它们可以同时工作,只有当它们之间有数据要交换时,外围设备向CPU请求中断,CPU中断正在执行的程序,转而执行中断服务程序,待中断服务程序执行完毕后,CPU从断点处继续被中断程序的执行,这时,CPU和外围设备又可并行工作。中断系统是外围设备和CPU联系的必要手段。 (2) 分时操作。 中断系统是变更程序执行流程的有效手段,在多道程序工作的计算机系统中,CPU执行的程序可以通过定时中断在各道程序之间切换,实现分时操作。对多道程序和分时操作的选择没有中断系统是不可能实现的。 (3) 增强系统的可靠性。 当处理机发生运算溢出、非法操作码等程序性错误或机器故障时,可以通过中断系统暂停现行程序的执行,保留现场,转入相应的中断服务程序,对错误或故障进行处理。 (4) 实时处理。 所谓实时处理,是指某个事件或现象出现时能及时地进行处理,而不是集中起来进行批处理。由于实时信息是随机的,只有通过中断系统及时响应和处理,才能避免信息的丢失和错误的操作。 (5) 人机交互。 在计算机工作过程中,人要随机地干预机器,了解机器的工作状态,给机器下达临时性的命令等。在没有中断系统的计算机中,这些功能几乎是无法实现的。利用中断系统实现人机交互很方便、很有效。 总之,中断系统在计算机中具有很重要的作用,中断系统和操作系统是密切相关的,在很多方面,操作系统是借助中断系统来控制和管理计算机系统的。 2) 中断接口 CPU从接受中断请求信号到中断服务结束,可分为两个阶段: 第一个阶段是中断响应;第二个阶段是中断处理。中断响应阶段主要解决三个问题:一是正确地找到对应的中断服务程序的入口地址;二是为中断返回做好准备;三是保证中断响应的完整性。在一个计算机系统中存在着多个中断源,每个中断源有其对应的中断服务程序的入口地址。在中断响应过程中,必须能识别当前请求中断的中断源,即CPU必须知道相应中断的中断号或中断向量。CPU可以根据中断号或中断向量找到中断服务程序的入口地址,将此地址赋予程序计数器PC,即可跳转到中断服务程序的入口处,从而开始执行中断服务程序。中断号或中断向量一般存放在中断源的接口电路中,如图7-15所示。图7-15 中断接口示意图 CPU获取中断号或中断向量的方法是:在中断响应期间,CPU往接口发送中断响应信号INTA,接口接收到INTA信号后,将中断号或中断向量通过数据总线传输给CPU。中断服务程序结束后,必须能正确地返回到被中断的断点处继续原来程序的执行。要实现程序的正确返回,首先当外围设备请求中断时,CPU待当前基本操作结束后,才响应中断;其次CPU必须将当前程序计数器PC的值(断点地址)及CPU的状态(包括各种标志的程序状态字)压入堆栈保护起来,这些操作叫做现场保护。由于中断请求是随机的,在一个中断响应过程中,可能有新的中断请求。为了不造成混乱,CPU对新的中断请求应不予以响应。解决办法是:在中断响应期间,置CPU内的中断允许标志为无效状态。整个中断响应过程如图7-16所示。 不同的外围设备,其功能要求也不同,因此,中断处理的具体内容是不同的。但中断服务程序有共同的结构模式,如图7-17所示。进入中断服务程序后,首先要进一步保护现场。因为中断的发生是随机的,虽然在中断响应期间,CPU已经将程序计数器PC及程序状态字压入堆栈保护,但要使中断返回后,程序能正确地执行下去,必须将中断服务程序用到的一些寄存器的内容压入堆栈保护,以免中断服务程序修改这些现场数据。图7-16 中断响应过程图7-17 中断服务程序 CPU在响应中断期间,已经将中断允许标志清“0”,即CPU处于禁止中断状态。为了使更高的中断进入,进入中断服务程序后,需将中断允许标志置“1”,开放中断,以实现中断嵌套。所谓中断嵌套,是指优先级别高的中断打断优先级别低的中断。中断服务程序的具体内容执行完成后,恢复现场,即将“进一步保护现场”时压入堆栈的内容从堆栈中弹出,传送给原来的那些寄存器,为中断返回做准备。由于中断的请求是随机的,在一个有多个中断源的计算机中,存在下列两种可能:一是两个中断源同时请求中断;二是当CPU正在处理一个中断时,又有新的中断请求。这两个问题的解决方案实质上是中断优先级的处理问题。 3) 中断优先权 中断优先级是根据各个中断事件的轻重缓急程度不同而分成的若干级别,每一个中断源分配给一个优先权。为了使各种中断处理情况都“合乎情理”地进行,中断的响应处理必须符合优先级原则。 优先级原则有以下四条:第一,当只有一个中断源请求中断时,CPU响应此中断;第二,当有两个以上中断源同时请求中断时,CPU先响应优先级别高的中断源,待优先级别高的中断处理结束后,再响应和处理优先级别低的中断源;第三,当CPU正在处理一个中断时,又有一新的中断请求,且新的中断源的优先级比正在处理的中断源的优先级高,则CPU暂停当前中断的处理,转而响应和处理优先级高的中断,待优先级别高的中断处理完毕后,才再继续原中断的处理;第四,当CPU正在处理一个中断时,有一新的中断请求,且新的中断源的优先级比正在处理的中断源的优先级低,则待CPU处理完当前中断后,才去响应和处理新的中断。 中断优先级的解决方法一般有两种:一是软件查询法,二是硬件电路法。 软件查询法的程序流程图如图7-18所示。在这种情况下,CPU在接到中断请求信号后,必须判断中断请求信号是哪个外围设备发来的,它可以用程序来查询中断源,以查询到中断源的先后次序来确定优先级,若改变查询次序就可以修改优先级。软件查询法在有些机器中可以用I/O指令依次查询,在确认了有请求的中断源后,转入到相应的中断服务程序。也有些机器用取回中断号按优先级次序逐位判定,若某位中断请求标志为“1”,就转去执行该中断源的中断服务程序。用软件查询法实现中断优先级的处理电路简单,但效率较低。图7-18 软件查询法的程序流程图 硬件电路法又可以分为菊花链电路和判优逻辑电路两种。菊花链电路用于单线请求的计算机系统,各外围设备的中断请求用一条请求线来传送,当CPU接收到中断请求信号后,中断源的优先级不是用查询程序依次排队来确定,而是用硬件排队线路来替代软件排队,即用菊花链电路将中断应答信号(INTA)一级一级地往下传送,菊花链电路如图7-19所示。中断应答信号先传到链头,若优先级最高的外围设备没有提出中断请求,则中断应答信号就沿菊花链下传,直到某个提出中断请求的中断源截取中断应答信号后,中断应答信号就不再往下传,该中断源把自己的中断号传送给CPU,CPU接到中断号后,转入相应中断服务程序。菊花链电路实现中断优先级的处理速度快,但功能固定,不够灵活。图7-19 单线请求菊花链电路 判优逻辑电路用于多线中断请求的计算机系统,它用可编程芯片实现,用户可灵活设置中断优先级、中断号、屏蔽和开放中断等内容,目前计算机中都采用这种方式。每个外围设备都可以通过各自的中断请求信号线,将中断信号送给判优逻辑电路,判优逻辑电路如图7-20所示。当多个中断源同时请求中断或有中断嵌套时,判优逻辑电路根据预先设定的中断优先级,选出优先级最高的中断源,并将相应的中断号送给CPU,CPU立即为优先级最高的中断源服务。图7-20 多线请求判优电路 3.中断方式与查询方式比较 查询传送方式是由CPU来查询外设的状态,CPU处于主动地位,而外设处于被动地位。中断传送方式则是由外设主动向CPU发出请求,等候CPU处理,在没有发出请求时,CPU和外设都可以独立进行各自的工作。目前的微处理器都具有中断功能,而且已经不仅仅局限于数据的输入/输出,而是在更多的方面有重要的应用。例如实时控制、故障处理以及BIOS和DOS功能调用等。 中断传送方式的优点是CPU不必查询等待、工作效率高、CPU与外设可以并行工作,由于外设具有申请中断的主动权,故系统实时性比查询方式要好得多。但采用中断传送方式的接口电路相对复杂,而且每进行一次数据传送就要中断一次CPU,CPU每次响应中断后,都要转去执行中断处理程序,且都要进行断点和现场的保护和恢复,浪费了很多CPU的时间。故这种传送方式一般适合于少量的数据传送。对于大批量数据的输入/输出,可采用高速的直接存储器存取方式,即DMA方式。7.2.3 直接存储器方式 直接存储器存取(DMA)方式是一种完全由硬件控制的输入/输出工作方式,用于实现存储器和外设之间、存储器和存储器之间直接进行数据传送(如磁盘与内存间交换数据、高速数据采集、内存和内存间的高速数据块传送等),传送过程无需CPU介入,这样,在传送时就不必进行保护现场等一系列额外操作,传输速度基本取决于存储器和外设的速度,如图7-21所示。 DMA传送方式需要一个专用接口芯片DMA控制器(DMAC)对传送过程加以控制和管理。在正常工作时,CPU是计算机系统的主控部件,所有工作周期均用于执行CPU的程序。在DMA方式下,CPU释放总线的控制权,DMA控制器接管总线,由DMAC发出地址及读/写信号来实现高速数据传输。传送结束后DMAC再将总线控制权交还给CPU,如图7-22所示。图7-21 DMA与程序控制数据传送路径比较图7-22 DMA系统结构框图 1.总线的分时使用 CPU和DMA控制器都可以作为主控设备,它们可以分时控制总线,实现内存和外围设备之间的数据传输。DMA控制器和CPU分时使用总线的方式有以下三种: 停止CPU访问、周期挪用、DMA控制器和CPU交替访问内存。 1) 停止CPU访问 所谓停止CPU访问方式,是指在DMA传输过程中,CPU释放总线的控制权,处于不工作状态或者叫保持状态。当外围设备要求传输一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对数据总线、地址总线和有关控制总线的使用权。DMA控制器获得总线的控制权后,开始数据传输。在一批数据传输完毕后,DMA控制器向CPU发一个DMA结束信号,释放总线的控制权,把总线控制权交还给CPU。这种传送方式的优点是控制简单,它适用于高速的外围设备与内存之间实现成组的数据传输。由于外围设备和内存传输两个数据之间的间隔一般总是大于内存存储周期,因此,在DMA期间,一部分内存的工作周期处于空闲状态,内存的效能未得到充分发挥。 2) 周期挪用 在周期挪用方式中,当外围设备没有DMA请求时,CPU按程序要求访问内存;当外围设备有DMA请求时,则由外围设备挪用一个或几个内存周期,实现外围设备和内存之间的数据传输。周期挪用方式在进行DMA传输时存在两种情况:一种是CPU不需要访问内存,如CPU正在执行乘法指令,由于乘法指令执行时间较长,此时外围设备访问内存和CPU访问内存没有冲突,即外围设备挪用一、二个内存周期对CPU执行程序没有任何影响。 另一种是,在外围设备要求访问内存时,CPU也要访问内存,这就产生了冲突。在这种情况下,外围设备访问内存的优先级比CPU要高,因为外围设备访问内存有时间要求,前一个数据必须在下一个访问内存请求之前存取完毕。显然,在这种情况下外围设备挪用一、二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访问内存指令的过程中插入DMA请求,挪用了一、二个内存周期。 与停止CPU访问内存的方式比较,周期挪用的方式既实现了外围设备与内存之间的数据传送,又较好地发挥了内存和CPU的效率,是一种广泛使用的方法。但是,外围设备每次周期挪用都要申请总线的控制权、建立总线控制权和归还总线控制权等操作。所以,传送一个字对内存来说要占用一个周期,但对DMA控制器来说一般要占用2~5个内存周期。因此,周期挪用的方式适用于外围设备读写周期大于内存存取周期的情况。 3) DMA控制器和CPU交替访问内存 如果CPU的工作周期比内存存取周期长得多,此时采用交替访问内存的方式可以使DMA传输和CPU同时发挥最高的效率。这种方式不需要总线使用权的申请、建立和归还过程,总线控制权分两个周期分时由DMA控制器和CPU控制,DMA控制器和CPU有各自的访问内存地址寄存器、数据寄存器和读/写控制逻辑。在第一个周期,如果DMA控制器有访问内存的请求,可以在这个周期内传输地址、数据等信号。在第二个周期,如果CPU有访问内存的请求,同样在第二个周期内传输地址、数据等信号。 对于总线,分别由两个独立的控制信号控制一个多路转换器在DMA控制器和CPU之间切换总线的控制权。这种控制权的转移几乎不需要什么时间,所以对DMA来说效率是最高的。交替访问内存的方式又称“透明的DMA”方式,该名称的来由是这种DMA传送对CPU来说是透明的,没有任何感觉和影响。在透明的DMA方式下工作,CPU既可不停止程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件控制逻辑要更加复杂。 2.DMA控制器 1) DMA控制器的组成 如前所述,DMA控制器可以作为主控部件控制总线实现内存与外围设备之间的数据传输,因此,它具有总线请求和响应、总线控制、传送地址、对传送的字数据计数等功能。DMA控制器的逻辑结构如图7-23所示。图7-23 DMA控制器的逻辑结构 (1) 地址寄存器。 地址寄存器用来存放DMA过程中的内存地址。初始时,地址寄存器的内容为内存块的首地址,每传输一个字数据,地址寄存器的内容自动加1,以增量方式给出内存的下一个地址。 (2) 字计数器。 字计数器用来记录被传输数据块的长度。其初始内容在数据块传输前预置为要传输字数据的总长度的补码。在DMA过程中,每传输一个字,计数器加1。当计数器溢出时,表示这批数据已经传输完毕,于是DMA控制器向CPU发DMA结束信号。 (3) 数据缓冲寄存器。 数据缓冲寄存器用来暂存每次传输的数据。当DMA以内存—内存方式传输数据时,由DMA控制器先将内存中源单元的数据读取至数据缓冲器,再将数据缓冲器中的数据写入到目标内存单元。 (4) DMA请求标志。 每当外围设备准备好一个数据字后,给出一个控制信号,使DMA请求标志置“1”。该标志置位后向控制/状态逻辑发出DMA请求,后者又向CPU发出总线请求,CPU响应此信号后发回总线请求响应信号,控制/状态逻辑接收到此信号后发DMA响应信号,使DMA请求标志复位,为交换下一个数据做好准备。 (5) 控制/状态逻辑。 控制/状态逻辑由控制和时序电路、状态标志等组成,用以对地址寄存器、字计数器等内容的修改进行控制,设置数据传输类型,并对DMA请求信号和CPU响应信号进行协调和同步。 (6) 中断机构。 当字计数器溢出时,意味着一组数据传输完毕,由溢出信号触发中断机构,向CPU提出中断报告。这里的中断与上一节介绍的中断概念相同,但目的不同,前者是为了数据的输入或输出,后者是为了告知CPU一组数据传输的结束。 2) DMA控制器的工作方式 (1) 单字节传输方式。在该方式下,DMAC每次控制总线后只传输一个字节,传输完后即释放总线控制权。这样CPU至少可以得到一个总线周期,并进行有关操作。 (2) 成组传输方式(块传输方式)。 采用这种方式,DMAC每次控制总线后都连续传送一组数据,待所有数据全部传送完后再释放总线控制权。显然,成组传输方式的数据传输率要比单字节传输方式高。但是,成组传输期间CPU无法进行任何需要使用系统总线的操作。 (3) 请求传输方式。 在该方式下,每传输完一个字节,DMAC都要检测I/O接口发来的DMA请求信号是否有效。若有效,则继续进行DMA传输;否则就暂停传输,将总线控制权交还给CPU,直至DMA请求信号再次变为有效,再从刚才暂停的那一点继续传输。 3.DMA的数据传输过程 一次DMA的数据传输过程可分为两个阶段:DMA传输前的预处理阶段和DMA数据传输阶段。 1) 预处理 预处理是对DMA控制器的初始化操作。在初始化操作时,CPU作为主控部件,DMA控制器作为从控设备,根据DMA传输要求,CPU测试外围设备的状态,设置DMA初始化命令字。初始化命令字主要包括下列6个方面: (3) 设置DMA各通道的优先级。 对于多个通道的DMA控制器来说,通过此命令决定各个通道的优先级。当两个以上的通道同时请求DMA传输时,DMA控制器先响应优先级高的通道。 (4) 开放或屏蔽DMA通道。 与中断方式类似,CPU也可以通过设置命令字开放或屏蔽某个DMA通道。当某个通道被屏蔽后,即使该通道有DMA请求,DMA控制器也不予响应。 (3) 设置DMA各通道的优先级。 对于多个通道的DMA控制器来说,通过此命令决定各个通道的优先级。当两个以上的通道同时请求DMA传输时,DMA控制器先响应优先级高的通道。 (4) 开放或屏蔽DMA通道。 与中断方式类似,CPU也可以通过设置命令字开放或屏蔽某个DMA通道。当某个通道被屏蔽后,即使该通道有DMA请求,DMA控制器也不予响应。 2) DMA数据传输 在DMA数据传输阶段,DMA控制器作为主控部件,控制总线实现数据传输。下面以外围设备向内存传输数据为例来说明DMA的数据传输过程。 (1) 外围设备向DMA控制器请求DMA传输。 (2) DMA控制器向CPU发总线请求信号。若该通道未被屏蔽,则DMA控制器进行优先级裁决。如果无更高优先级的DMA通道正在进行数据传输或同时请求DMA传输,则DMA控制器向CPU发总线请求信号。 (3) CPU释放总线的控制权。CPU结束当前正在进行的基本操作后,释放总线的控制权,并向DMA控制器发一个总线响应信号。 (4) DMA控制器获得总线的控制权。DMA控制器接收总线响应信号后,获得总线的控制权,并将DMA响应信号传递给外围设备。 (5) DMA传送。DMA控制器将地址寄存器的内容发往地址总线,同时发I/O读和存储器写等控制信号,以传输一个字数据。 (6) 修改寄存器和计数器内容。若为单字传输,地址寄存器的内容加1,字计数器的内容加1,DMA过程结束;若为数据块传输,则判断字计数器是否溢出,如果未溢出,则继续第(5)步,否则,DMA传输结束。 (7) DMA结束。DMA结束时,DMA控制器将总线控制权交还给CPU,CPU继续原来的处理。 在大型计算机系统中,如果仅仅采用前面介绍的程序查询、中断和DMA这三种输入输出方式来管理外围设备,还存在以下两个问题:第一,所有输入/输出操作都要由CPU控制,CPU的负担较重,整个计算机的性能势必降低。对于低速外围设备,每传输一个字数据都要由CPU执行程序来完成,而高速的外围设备虽然采用DMA方式降低了CPU的负担,但初始化等操作仍需要CPU通过执行程序来完成。 在大型计算机系统中,这种输入/输出操作对CPU的时间占用实际上是一种浪费。避免这种浪费的方法之一就是设置专用的输入/输出处理机来分担全部或大部分的输入/输出操作。第二,大型计算机系统中外围设备虽然很多,但是一般并不同时工作。如果为每一台外围设备都配置一个接口,显然是一种浪费。采用DMA方式传输数据,虽然提高了输入/输出的速度,但它是以每一台外围设备都配置一个专用的DMA控制器为代价的。在微型或小型计算机系统中,由于快速外围设备的台数很少,因而采用DMA控制器的数量是有限的。而在大型计算机系统中,快速外围设备的数量较多,就存在着如何让DMA控制器能被多台外围设备共享的问题。7.2.4 通道方式 为了使CPU摆脱繁重的输入/输出操作,提高系统附加硬件的利用率,在大型计算机系统中采用通道方式传输数据是一种比较好的选择。通道处理机能够负担外围设备的大部分输入/输出工作,包括所有按字节传输方式工作的低速和中速外围设备,按数据块传输方式工作的高速外围设备。在一台大型计算机系统中可以有多个通道,一个通道可以连接多个外围设备控制器,而一个设备控制器又可以管理一台或多台外围设备,这样就形成了非常典型的输入输出系统的四级层次结构。 1.通道的基本功能 通道的基本功能是执行通道指令,组织外围设备和内存之间的数据传输,按I/O指令要求启动外围设备,向CPU报告中断等,具体功能有:第一,接收CPU的I/O指令,按指令要求与指定的外围设备进行通信;第二,从内存中取出属于该通道程序的通道指令,经译码后向设备控制器或外围设备发出各种命令;第三,组织外围设备与内存之间进行数据传输,并根据需要提供数据传输的缓存空间,提供数据存入内存的地址和传输的数据量;第四,从外围设备得到状态信息,形成并保存通道本身的状态信息,根据要求将这些状态信息送到内存的指定单元,供CPU使用;第五,将外围设备的中断请求和通道本身的中断请求,按次序向CPU报告。 2.通道的分类 根据通道的工作方式不同,可将通道分为字节多路通道、选择通道和数组多路通道。 1) 字节多路通道 字节多路通道是一种简单的共享通道,主要用于连接大量的低速设备。由于外围设备的工作速度较慢,通道在传输两个字节之间有很多空闲时间,利用这段空闲时间,字节多路通道可以为其他外围设备服务。因此,字节多路通道采用分时工作方式,依靠它与CPU之间的高速总线分时为多台外围设备服务。 2) 选择通道 选择通道用于连接高速的外围设备。高速外围设备需要很高的数据传输率,因此不能采用字节多路通道那样的控制方式。选择通道在物理上可以连接多台外围设备,但多台设备不能同时工作,也就是说,在一段时间内,选择通道只能为一台外围设备服务,在不同的时间内可以选择不同的外围设备。一旦选中某一设备,通道就进入“忙”状态,直到该设备数据传输工作结束后,才能为其他设备服务。 3) 数组多路通道 数组多路通道是字节多路通道和选择通道的结合,它的基本思想是:当某设备进行数据传输时,通道只为该设备服务;当设备在进行寻址等控制性操作时,通道暂时断开与该设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序。由于数组多路通道既保持了选择通道高速传输数据的优点,又充分利用了控制性操作的时间间隔为其他设备服务,使通道效率充分得到发挥,因此,数组多路通道在实际的计算机系统中应用得最多。 3.通道的工作过程 通道的工作过程可分为启动通道、数据传输、结束通道三个阶段,其工作示意图如图7-24所示。图7-24 通道工作过程 1) 启动通道 在用户程序中使用访管指令进入管理程序,由CPU通过管理程序组织一个通道程序,并启动通道。广义指令由一条访管指令和若干个参数组成,访管指令的地址码部分实际上是这条访管指令要调用的管理程序入口地址。当用户程序执行到要求进行输入/输出操作的访管指令时,产生自愿访管中断请求。CPU响应这个中断请求后,转入管理程序入口。管理程序根据广义指令提供的参数,如设备号、交换长度和主存起始地址等信息来编制通道程序,在通道程序的最后,用一条启动输入/输出指令来启动通道开始工作。 2) 数据传输 通道处理机执行CPU为它组织的通道程序,完成指定的数据输入/输出工作。通道被启动后,CPU就可以退出操作系统的管理程序,返回到用户程序中继续执行原来的程序,而通道开始传输数据。 3) 结束通道 当通道处理机执行完通道程序的最后一条通道指令——“断开通道指令”时,通道的数据传输工作就全部结束了。通道程序结束后向CPU发出中断请求。CPU响应这个中断请求后,第二次进入操作系统,调用管理程序对输入/输出中断进行处理。如果是正常结束,管理程序进行必要的登记等工作;如果是故障、错误等异常情况,则进行例外情况处理。然后CPU返回到用户程序继续执行。 总之,每完成一次输入/输出工作,CPU只需要两次调用管理程序,大大减少了对用户程序的打扰。当系统中有多个通道同时工作时,CPU与多种不同类型、不同工作速度的外围设备并行工作,可以充分发挥效能。关 联习 题 7.1 什么是接口?为什么需要接口?接口有哪些主要功能? 7.2 什么是端口?端口有哪些编址方式?这些编址方式各有什么特点? 7.3 CPU外设之间一般有哪些信息传输方式?它们各有什么特点? 7.4 简述以中断方式传送一个数据信息的过程。 7.5 直接程序控制方式如何控制主机与外设之间的信息交换?这种方式有哪些优缺点? 7.6 假设某计算机系统有五级中断,其优先次序为:P1→P2→P3→P4→P5。 (1) 若CPU执行正常程序过程中,有P2、P4请求中断,CPU在现行指令结束响应中断,执行某一中断服务程序,在执行过程中又出现了P1、P3请求,画出CPU处理中断的过程示意图。 (2) 若将中断处理次序改为:P2→P4→P1→P5→P3,试给出中断屏蔽码表(参考题7.7表)。 7.7 某中断系统有五级中断,其优先级为P1→P2→P3→P4→P5。通过设置屏蔽的方法可以改变各级中断的处理次序。设中断屏蔽位为0表示屏蔽,现将中断处理次序改为P1→P4→P2→P5→P3,将中断屏蔽位的设置情况填入题7.7表内。题7.7表 7.8 与程序中断方式相比,DMA方式有哪些主要特点? 7.9 比较直接程序控制方式、程序中断方式、DMA方式及通道方式进行信息传送控制的主要特点和适用场合。 7.10 说明DMA控制器中下面寄存器或部件的作用。 (1) 数据缓冲寄存器DBR; (2) 主存地址寄存器DMAR; (3) 中断控制逻辑。 7.11 什么是DMA方式?在用DMA方式进行信息传送的预处理阶段应传送哪些初始参数? 7.12 某计算机中断系统设有5个中断源,分别为P1、P2、P3、P4、P5,它们的优先次序从高到低为P1→P2→P3→P4→P5,假设来自设备的中断请求信号分别为INTR1、INTR2、INTR3、INTR4、INTR5,经排队后送入向量地址产生电路的信号为INT1、INT2、INT3、INT4、INT5。已知各中断源的向量地址如题7.12表所示。题7.12表 设向量地址寄存器为VMAR。当CPU给出中断响应信号INTA时,将目前已申请中断且优先级最高的中断源的向量地址送入VMAR。试设计中断排队电路、向量地址形成电路及VMAR的第4位到第0位的逻辑电路。 7.13 题7.13图给出了一个中断控制逻辑线路。图中TMi为第i级设备的中断屏蔽触发器,TMi=1表示屏蔽该设备的中断请求(i=1~6),TDi为第i级设备的完成(或就绪)触发器,TDi=1表示第i级设备工作完成或就绪,可以发出中断请求。IRQi为第i级设备的中断请求触发器,IRQi=1表示第i级设备发出中断请求,INTi为第i级设备向CPU或中断向量地址编码电路传送的中断请求信号。题7.13表中给出了某时刻各中断源(设备)的状态。题7.13图题7.13表 (1) 根据题7.13表提供的信息,哪些设备可能发出中断请求信号,使相应的IRQi=1。 (2) 根据题7.13表提供的信息,CPU应首先响应哪个设备的中断请求 (3) 若CPU响应了设备6的中断请求,那么应向哪些设备的中断屏蔽触发器TMi发出中断屏蔽信号,使TMi=1,以便实现多重中断的处理。 (4) 如果在CPU执行某用户程序过程中,有了中断源1、4的中断请求,CPU在处理中断源4的中断请求过程中,又有了中断源2、3的中断请求。请画出CPU处理各中断请求的过程。 7.14 判断题。 (1) DMA控制器和CPU可以同时使用总线工作。( ) (2) 在计算机系统中,所有的数据传送都必须由CPU控制实现。( ) (3) 一个更高优先级的中断请求可以中断另一个中断处理程序的执行。( ) (4) 外围设备一旦申请中断,立刻能得到CPU的响应。( ) (5) 通道程序是由通道控制字组成的,通道控制字也称通道指令。( ) (6) 在直接程序控制方式下,CPU启动I/O设备的指令开始执行后,直到数据传送完为止,CPU不能执行别的程序。( ) (7) DMA方式提高了CPU的效率,同时也提高了数据传送的速度。这是由于DMA方式在传送数据时不需要CPU干预,而且在一批数据传送完毕时,也完全不需要CPU干预。( ) (8) CPU在执行当前指令最后所做的检查是否有各类中断请求的次序,即为CPU处理各类中断的次序。( )7.15 选择题。 (1) I/O接口中的数据缓冲器的作用是( )。A.用来暂存外围设备和CPU之间传送的数据B.用来暂存外围设备的状态C.用来暂存外围设备的地址D.以上都不是 (2) 在中断响应过程中,保护程序计数器的作用是( )。A.使CPU能找到中断处理程序的入口地址B.使中断返回后,能回到断点处继续原程序的执行C.使CPU和外围设备能并行工作D.为了实现中断嵌套 (3) DMA方式用来实现( )。A.CPU和内存之间的数据传送B.外围设备和外围设备之间的数据传送C.CPU和外围设备之间的数据传送D.内存和外围设备之间的数据传送 (4) 如果认为CPU查询设备的状态信号处于非有效工作状态,那么,在下面几种主机与设备之间的数据传送方式中,( )主机与设备是串行工作的;( )主机与设备是并行工作的;( )主程序与外围设备是并行运行的。A. 程序查询方式B. 中断方式C. DMA方式D. 通道方式 (5) 中断向量地址是( )。子程序的入口地址B. 中断服务程序的入口地址C. 中断服务程序入口地址的地址D. 中断向量表的起始地址 (6) 采用DMA方式传送数据时,每传送一个数据,就要占用( )的时间。A. 一个指令周期 B. 一个CPU周期C. 一个存储周期 D. 一个总线周期 (7) 周期挪用方式常用于( )中。A. 直接存储器存取方式的输入/输出B. 直接程序控制传送方式的输入/输出C. CPU的某寄存器与存储器之间的直接程序控制传送D. 程序中断方式的输入/输出 (8) 在下面有关DMA概念的叙述中,正确的是( )。 A. 当CPU在执行指令时,CPU与DMA控制器同时提出了对主存访问的要求,这时应首先满足CPU的要求,以免指令执行发生错误,而DMA传送数据是可等待的 B. DMA周期挪用方式是在CPU访问存储器总线周期结束时,插入一个DMA访问周期。在此期间,CPU等待或执行不需要访问内存的操作 C. 因为DMA传送是在DMA控制器控制下内存与外设直接进行数据传送,因此在这种方式中,始终不需要CPU干预 D. CPU在接到DMA请求后,必须尽快地在一条指令执行后予以响应 7.16 填空题。 (1) CPU对输入/输出设备的访问,采用按地址访问的形式。对I/O设备编址的方法,目前采用方式主要有______和______,其中______需要有专门的I/O指令支持。 (2) 主机与外围设备之间的数据交换方式有______、______、______和______等。 (3) 接口接收到中断响应信号INTA后,要将______传给CPU。 (4) 通道的种类有______、______和______三种。 (5) 通道的工作过程可分为______、______和______三部分。 展开更多...... 收起↑ 资源预览