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