《微机原理与接口技术》第 7 章 输入/输出技术
7.1 输入/输出系统概述
主机:中央处理器和内存储器
外部设备:主机以外的其他硬件设备都称为外围设备包括输入设备、输出设备和辅助存储器。
计算机通过输入/输出系统(简称I/О系统)与外围设备交换信息。
I/O系统:I/O接口、I/O管理部件及有关软件构成。
7.1.1 输入/输出接口
(1)接口电路
现代计算机系统外围设备的种类繁多,性能、结构差异也很大。
从工作原理上看,外围设备有机械式、电动式、电子式、光电式等,它们的输入信号可以是数字量,也可以是模拟量,发送和接收信息的方式各不相同,而且其数据格式及物理参数也不尽相同。主机与它们之间连接的控制和状态信号却是有限的,主机接收和发送数据的格式是固定的,主机的输入/输出方式不可能针对某一个设备来设计,应该按照统一的规则制定输入输出。
从信息传输速率来看,各类外围设备相差也很悬殊。例如,键盘操作速度取决于手指按键的速度,每秒钟最快也仅能输人6~10个英文字符;而通过磁盘读入数据时,速度可高达100MB/s 以上。当前微机系统CPU的速度已高达2.4~4GHz,即使是高速磁盘,其速度与CPU相比仍相差甚远,这就要求外设的操作在很大程度上要独立于CPU,不能使用同一的工作节拍。
综上所述,主机的输入/输出方式应与具体设备无关,具有独立性。主机要对性能各异的外设进行控制,与它们交换信息,必须在主机与外设之间设置一组电路界面,将CPU系统总线发出的控制信号、数据信号和地址信号转换成外设所能识别和执行的具体命令,而将外设发送给CPU的数据和状态信息转换成系统总线所能接收的信息,传送给CPU。
这就是输入/输出接口电路,简称I/О接口,也称适配器。
I/O接口电路位于主机和外围设备之间,起着“转换器”的作用,协助完成输入/输出过程中的数据传送和控制任务。I/О接口通过系统总线连接主机和外设,如图7.1所示。
(2)接口电路分类
从不同角度出发,可以将接口电路分为多种类型。
① 按接口电路的通用性
根据接口电路的通用性,可以分为专用接口和通用接口。
专用接口:是指针对某一种具体的外围设备而设计的接口电路,如显示器适配器、键盘控制器、硬盘控制器等。
通用接口:是可供多种外围设备使用的标准接口,如并行输入/输出接口8255A、中断控制器8259A 等。
② 按数据传送格式
根据数据的传送格式,可以分为并行接口和串行接口。
并行接口:是指接口与系统总线之间、接口与外围设备之间、都按并行方式传送数据。
串行接口:是指接口与外围设备之间用串行方式传送数据,但与系统总线之间仍按并行方式传送数据。
③ 按接口是否可编程
根据接口是否可以编程,可以分为可编程接口和不可编程接口。
可编程接口:是指在不改变接口硬件的情况下,可通过编程修改接口的操作参数,改变接口的工作方式和工作状态,从而提高接口功能的灵活性。
不可编程接口:是指接口的工作方式和工作状态完全由接口硬件电路决定,用户不可通过编程加以修改。
④ 按时序控制方式
根据接口的时序控制方式,可以分为同步接口和异步接口。
同步接口:是指接口与系统总线之间信息的传送,由统一的时序信号同步控制。
异步接口:是指接口与系统总线之间、接口与外围设备之间的信息传送不受统一的时序信号控制,而由异步应答方式传送。
(3)接口的基本功能
① 数据缓冲功能
通常情况下,外围设备传送信息的速度与CPU处理速度有较大的差异,为了调节这种差异,可以在接口电路中设置数据寄存器,实现对输入/输出数据的缓冲和锁存。
② 联络功能
不同的外围设备有不同的控制方式,而CPU的工作控制方式是固定,,要实现对外围设备的控制,如启动、停止等,接口电路就应能接收CPU 发来的控制命令,将它转换为外围设备所需的操作命令。同时,针对外围设备的不同情况,CPU应能根据当前外围设备的状态,采取相应的措施,为此接口电路就要记录外围设备送入的工作状态信息,供CPU查询。
③ 寻址功能
I/O接口电路要实现上述数据缓冲、控制和状态监视,就要设置相应的数据寄存器、状态寄存器、控制寄存器。CPU对接口电路的访问,实际上就是对这些寄存器的访问。
I/O端口:I/O接口内部的这些寄存器称为I/О端口,每个端口有一个端口地址。
接口接收来自系统总线的寻址信息,经过译码电路,选择相应的寄存器,与总线进行信息交换。
④ 预处理功能
系统总线采取并行传送方式,如果是串行接口,那么接口就要完成数据的串-并转换。另外,如果外围设备与接口,接口与系统总线之间传送的数据宽度、时序、负载不匹配,则接口要进行相应的匹配;如果外围设备所用信号电平与系统总线不相同,则接口还要进行信号电平的转换。
⑤ 中断管理/DMA控制功能
有些接口,为了能够实现以中断方式与CPU交换信息,或以 DMA 方式与存储器交换信息,往往在接口电路中设置中断控制逻辑或DMA 控制逻辑,以便能够向主机提出中断请求或DMA请求,反过来,对主机给予的请求应答能得到立即响应,即提供相应的处理。
(4)接口电路的基本结构
要使接口电路实现上述功能,在其内部就应该设置地址译码器、数据缓冲器、控制寄存器、状态寄存器、简单的控制逻辑,有些接口电路中还可以设置中断控制逻辑或DMA控制逻辑。一个标准I/O接口可能连接一个设备,也可能连接多个设备。如图7.2所示的是接口电路的一般结构图。
① I/O端口
I/O端口是I/О接口电路中能被CPU直接访问的寄存器的地址。CPU通过端口地址向接口电路中的各类寄存器发送命令、读取状态和传送数据。
I/О接口中包括数据端口、状态端口、控制端口3种端口。
(Ⅰ)数据端口:数据端口对来自或者送往CPU和内存的数据起缓冲作用。数据输出寄存器锁存CPU送出给外设的数据信息;数据输入寄存器暂存由外设传递给主机的数据信息。根据不同的需要,在接口电路中还可以设置不同的数据寄存器,从一个到几十个不等。
(Ⅱ)状态端口:状态端口存放外围设备或者接口部件本身的状态。外设通过状态寄存器存放向CPU提供的可查询的外设状态信息,CPU可通过数据线读回,并根据外设的状态信息采取相应措施。
(Ⅲ)控制端口:控制端口存放CPU发出的命令,以便控制接口和设备的动作。控制寄存器接收来自CPU的控制命令字,并将它们转换为外设可识别的操作命令。
② 地址译码器
地址译码器对接口电路内部寄存器地址进行译码,选中某一个寄存器。
③ 控制逻辑
控制逻辑接收来自CPU的命令,控制接口中的各个部件协调工作。
④ 其他
对于采用中断方式或DMA方式与主机进行数据交换的外设,其接口电路还可以设置中断/DMA控制逻辑部分。通常情况下,接口电路中的中断控制逻辑或DMA控制逻辑只是中断控制或DMA 控制的一部分,一般包括一个中断请求触发器或DMA请求触发器和一个中断屏蔽触发器。对于多个接口电路公用的中断控制或DMA控制电路,集中在公共的中断和 DMA接口中。
对于不同的外围设备,它们的接口电路的结构和相应功能也不相同,图7.2只是给出了一个通用的接口结构模型。
(5)端口的编址方式
在2.2.2节中介绍了对I/О端口的两种编址方式:
① I/О端口和内存储器统一编址方式;
② I/О端口单独编址方式。
7.1.2 输入/输出的基本方法
主机与外围设备之间的信息交换实际上是CPU与接口之间的信息传送。在设计接口电路时,根据应用系统的要求,对CPU与外设之间的信息传送采用适当的信息传送控制方式是至关重要的。传送的方式不同,CPU对外设的控制方式也不同,从而使接口电路的结构及功能也不同。在2.3节中曾经介绍过,1/О传送控制方式一般有5种,即程序控制方式,中断控制方式,直接存储器存取方式,通道方式和外围处理机方式。
(1)程序控制方式
程序控制方式的特点是依靠程序的控制来实现主机和外设的数据传送。
程序控制方式可分为无条件传送方式和程序查询方式。
无条件传送方式:又称为同步传送方式,是一种最简单的输入/输出控制方式,一般用于固定外设在规定的时间进行信息交换,如发光二极管、桥式预置开关、报警继电器、机械式传感器等。在这种传送方式中,要求外设和CPU始终是准备好的,CPU直接执行输入或输出指令,便可实现数据传送,其实质是用程序定时同步传送。采用无条件传送方式的硬件、软件都比较简单,I/O接口中一般只需要数据端口。
程序查询方式:是指CPU在传送数据之前,要先检查外设是否“准备好”,若没有准备好,则继续查询其状态,直至外设准备好,即确认外围设备已具备传送条件之后,才能进行数据传送。打印机、扫描仪、绘图仪等外设可用查询方式传送数据。在这种方式下,CPU每传送一个数据,需要花费很多时间来等待外设进行数据传送的准备,因此CPU的效率很低,且CPU与外设不能并行工作。但实现这种传送方式的硬件接口电路简单,在CPU不太忙且传送速度要求不高、连接外设不多时,可以采用。目前多用于单片机和数字信号处理机(DSP)中。
(2)中断控制方式
中断是外围设备“主动”通知CPU准备发送或接收数据。当外设需要与CPU进行数据交换时,便由中断接口电路向CPU发出一个中断请求信号,待CPU响应这一中断请求后,便可通过中断服务程序完成I/O信息交换。由于CPU省去了对外设状态查询和等待的时间,从而使CPU与外设可以并行地工作,大大提高了CPU的效率。例如,上述查询传送的设备改用中断方式可连接几十台外设,并大大提高CPU和多台外设的工作效率及实时响应的速度。
中断传送每操作一次,CPU就会打断原来执行的程序去执行一段中断服务程序,对速度较高的外设可能会产生信息丢失,因此,中断控制方式一般仅用于低速外设与CPU之间的信息交换。
(3)直接存储器存取控制方式
采用中断方式交换数据时,输入/输出操作仍需通过CPU执行IN、OUT、MOV等指令来实现外设与内存之间的信息传送,并且中断服务的时间开销比较大,对于一些高速的外围设备,以及数据块传送的情况,仍然显得速度太慢。
直接存储器存取(Direct Memory Access,DMA)方式:是一种完全由硬件执行I/О交换的方式。在这种方式中,CPU不参与数据的传送,而是由DMA控制器来实现内存与外设之间,外设与外设之间的直接快速传送,几乎没有额外开销,因此传输效率很高,并且减轻了CPU的负担,这对于大批量数据块的高速传送特别有用。
(4)通道方式
DMA 的出现已经减轻了CPU对I/О操作的控制,使得CPU的效率有了显著的提高,而通道的出现则进一步提高了CPU的效率。这是因为,CPU将部分权力下放给通道。通道是一个具有特殊功能的处理器,在某些应用中称其为输入/输出处理器(IOP),它可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。这种提高CPU效率的方式是以花费更多的硬件为代价的。
(5)外围处理机方式
外围处理机(Peripheral Processor Unit,PPU)方式:是通道方式的进一步发展。由于PPU基本上独立于主机工作,它承担原来必须由CPU承担的I/О操作,这就大大地减轻了CPU控制外设的负担,从而有效地减少了CPU在I/O处理中的开销。
在8086系统中,8089是专门用来处理输入/输出的协处理器。它共有52条指令、1MB寻址能力和两个独立的DMA通道。当以8086为CPU的系统中配置8089后,8089能承担原由8086执行的I/O操作,以通道控制方式管理各种I/O设备。
8089是一个智能控制器,它可以取出和执行指令,除了控制数据传送外,还可以执行算术和逻辑运算、转移、搜索和转换。当CPU需要进行I/О操作时,它只要在存储器中建立一个信息块,将所需要的操作和有关参数按照规定列入,然后通知8089前来读取即可。8089读取操作控制信息后,能自动完成全部的I/O操作。因此,对配合8089的CPU来说,在所有输入/输出的操作过程中,数据都是以块为单位成批发送或接收的。而把一块数据按字或字节与I/O设备(如CRT终端、行式打印机等)交换都由8089来完成。当8089控制数据交换时,CPU可以并行处理其他操作。
综上所述,计算机外围设备的输入/输出方式如图7.3表示。其中,程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而 DMA方式、通道方式和外围处理机方式则适用于数据传输率比较高的外围设备。
另外,主机与外围设备之间的信息交换是通过I/О接口实现的,以上各种传送方式,都是在CPU与I/O接口之间进行的。
7.2 程序控制方式
程序控制方式:是指在程序的控制下来实现主机和外设的数据传送。
可分为无条件传送方式和查询方式。
7.2.1 无条件传送方式
所谓无条件,就是假设外设已处于就绪状态,数据传送时,程序不必再去查询外设的状态,而直接执行I/О指令进行数据传输。
无条件传送又称为立即传送、同步传送。例如,有些简单的输入设备,如按键、开关等,相对于CPU而言,其状态很少发生变化。只要CPU需要,可随时读取其状态。有些简单的输出设备,如LED数码管、交通信号灯等,可以随时接收CPU发来的显示数据。这些信号变化很缓慢,当需要采集这些数据时,外围设备已经把数据准备就绪,无须检查端口的状态,就可以立即采集数据,直接用输入/输出指令完成数据的传送。
无条件传送方式是最简单的传送方式,程序编制与接口电路设计都较为简单。但必须注意以下两点:
(1)当简单外设作为输入设备时,其输入数据的保持时间相对于CPU的处理时间要长得多,因此输入数据通常不用加锁存器锁存,直接使用三态缓冲器(即三态门)与系统数据总线相连即可。
(2)当简单外设作为输出设备时,由于外设的速度较慢,CPU送出的数据必须在接口中保持一段时间,以适应外设的动作,因此输出必须采用锁存器。
如图7.4所示是一个典型的无条件传送方式I/O接口电路。它由输入缓冲器、输出锁存器、端口地址译码器和相应的门电路组成。来自输入设备的数据可认为一直出现在输入三态缓冲器的输入端。
当CPU执行输人指令IN时,假定来自外设的数据已输入至三态缓冲器,于是指令中所指定的端口地址经地址总线送至端口地址译码器,读信号~RD有效,选通信号M/~IO=0,因而指定端口的三态缓冲器被选通,已经准备就绪的输入数据便可进入数据总线。显然,这样做的前提是假设来自外设的数据已经输入至三态缓冲器端,如果当CPU执行IN指令时,外设的数据还未准备好,就会读到错误或无效的数据。
当 CPU执行输出指令OUT时,假定CPU的输出信息经数据总线已送到输出锁存器的输入端,指令中所指定的端口地址经地址总线送至端口地址译码器,M/~IO=0及~WR=0,于是指定端口中的输出锁存器被选中,CPU输出的信息经过数据总线送入输出锁存器保存,由它再把信息输出给外设。
采用无条件传送方式时,数据传送不能太频繁,以保证每次传送,外设都处于就绪状态。因此无条件传送方式主要用于控制CPU与低速I/О接口之间的信息交换,如开关、七段显示管、继电器和模/数转换器等。
【例7.1】假设有两个共阴极的发光二极管直接连接在CPU 数据总线的D0和 D7上,当地址为0000H时,两个发光二极管同时点亮。程序如下:
MOV DX,0000H
MOV AL,81H
OUT DX,AL
7.2.2 查询方式
查询方式又称为条件传送方式。在这种方式下,CPU通过程序不断查询相应设备的状态,若状态不符合要求,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU 才能进行相应的输入/输出操作。
条件传送方式在接口电路中,除具有数据缓冲器或数据锁存器外,还应具有外设状态标志位,用来反映外围设备数据的情况。例如,在输入信息时,若外设数据已准备好,则将“就绪”标志位置位;当输出信息时,在外设已经取走一个数据后,则标志为“空闲”状态,表示可以接收下一个数据。在接口电路中,状态寄存器也占用端口地址号。
使用查询方式控制数据的输入/输出,通常要按如图7.5所示的流程进行,即首先读入状态标志信息,再根据所读入的状态信息进行判断。若设备未准备就绪,则程序转移去执行某种操作,或循环回去重新执行读入状态信息;若设备准备好,则执行完成数据传送的I/О指令。数据传送结束后,CPU转去执行其他任务。
如图7.6所示为查询方式输入接口电路。输入设备在数据准备好后便向接口发出一个选通信号。这个选通信号起两个作用:一是把外设的数据送到接口的锁存器中;二是使接口中的一个D触发器置1,从而使三态缓冲器的READY=1。在查询读过程中,CPU先从外设状态寄存器中读取状态字,检查READY标志位是否为1。若为1,则表示数据已进入锁存器,则执行读(IN)指令。同时把READY标志位清0,然后便可以开始下一个数据传输过程。
如图7.7所示为查询方式输出接口电路。CPU执行输出指令时,由选择信号M/~IO及写信号~WR产生的选通信号把数据送入数据锁存器,同时使D触发器输出1。此信号一方面告诉外设在接口中已有数据要输出;另一方面D触发器的输出信号使状态寄存器的对应标志位置1,告诉CPU当前外设处于“忙”的状态,从而阻止CPU输出新的数据。在外设从接口中取走数据后,通常也会送出一个应答信号~ACK,使~ACK接口中的D触发器置0,从而使状态寄存器中的对应标志位置0,这样就可以开始下一个数据的输出过程。
条件传送的优点是能较好地协调外设与CPU之间的定时关系,CPU和外设的操作能通过状态信息得到同步,而且硬件结构比较简单。缺点是CPU需要不断查询标志位的状态,这将占用CPU较多的时间,尤其是与中速或慢速的外围设备交换信息时,CPU绝大部分时间都消耗在了查询上,真正用于传送数据的时间极少,CPU效率较低;传输完全在CPU控制下完成,对外部出现的异常事件无实时响应能力。
7.3 中断方式
7.3.1 中断的意义
中断技术在现代计算机系统中是非常重要的。中断技术明显提高了计算机系统中信息处理的并行度和处理器的效率,改善了计算机系统的性能。它解决了CPU 与各种速度外围设备之间的速度匹配问题。中断技术在故障检测、实时处理与控制、分时系统、多级系统与通信、并行处理、人机交互等诸多领域都得到了广泛应用和不断发展。
中断技术的实现主要有以下优点。
(1)同步操作
通常,由于处理器的运算速度非常高,一条指令的平均执行时间均以微秒作为单位,而外围设备的运行速度却很低,即使是传送数据较快的磁盘,其平均查找时间也只能以毫秒作为单位。因此,快速的CPU与慢速的外围设备在传送数据的速度上存在着矛盾。为了提高输入/输出数据的吞吐率,加快运行速度,大部分现代计算机系统都配有中断处理功能。有了中断功能,就可以使CPU和外设同时工作。当外设需要进行输入/输出操作时,由外设向CPU发出中断请求,CPU接收中断请求后,暂停当前程序的执行,转去执行中断处理程序。在中断处理程序完成外设请求的服务操作(如启动外设工作)后,CPU返回被中断的程序继续执行,同时外设在接收到CPU 发出的命令后,开始执行相应的输入/输出操作,直至操作完成后,再次向CPU发出中断请求。这样,CPU在大部分时间里可与外设并行工作,大大提高了工作效率。因此,中断功能在输入/输出技术中得到了非常广泛的应用。例如,字符设备的输入/输出操作及模拟信号的A/D转换等都要用到中断。
(2)实时处理
中断技术对实时控制系统来说也十分重要。利用中断技术可使计算机对被控对象的物理参数做出即时响应,现场的各个参数、信息,根据需要可在任何时刻发出中断请求,要求CPU予以处理。CPU一旦响应中断后就可以立即进行紧急处理,达到实时处理的目的。
(3)故障处理
中断技术也广泛用于进行应急事件的处理。计算机在运行过程中,往往会出现事先预料不到的情况或一些故障,如电源掉电、硬件故障、传输错、存储错、运算溢出等,这时计算机就可以利用中断系统及时地进行处理。
7.3.2 中断的判优方法
在计算机的实际应用中,会有多个中断源同时向CPU发出中断请求的情况,这时CPU需要对发出请求的多个中断源进行判优。常用的判优方法有以下3种。
(1)软件查询法
软件查询法,即由软件来安排中断源的优先级别。常用方法有屏蔽法和位移法。
① 屏蔽法基本思想:读取连接外部中断源端口的状态字,检查每一位,先检查到的优先级高。
② 位移法基本思想:将读取的状态字节大循环移位(RCL/RCR),每移动l位,判断被移进CF的值是否为1,若为1,转去中断;否则,继续移一位再判断。
软件查询法的优点是不需要额外的硬件电路,并且优先权由查询的次序来决定,首先查询的即为优先级最高的。缺点是不管外设是否有中断请求都需要按次序逐一询问,因而效率较低,特别是在中断源较多的情况下,转至中断服务程序的时间较长。
(2)硬件判优电路法
硬件判优电路法由专门的判优电路决定中断源的优先级别。基本思想为:电路上面端口的中断请求可以屏蔽下面端口的中断请求。
硬件判优电路法的优点是中断源较多的情况下,转至中断服务程序的时间比软件查询法快。缺点是优先权的次序是固定的,不能更改,并且增加了硬件设计的成本。
(3)专用硬件控制器
8259是可编程中断控制器,除了可以实现优先权的排队外,还可以提供中断类型码,屏蔽中断输入等功能,参见7.3.3节。
7.3.3 8259中断控制器
……
7.4 直接存储器存取
程序直接控制方式和中断方式适用于CPU与慢速及中速外设之间的数据交换,但当高速外围设备与内存或者内存的不同区域之间进行大量数据的快速传送时,上述方法就在一定程度上限制了数据传送的速率。
为了提高数据传送的速率,提出了直接存储器访问(Direct Memory Access,DMA)的数据传送控制方式。DMA是指外围设备直接对计算机存储器进行读/写操作的I/O方式。在这种方式下,数据的I/O无须CPU执行指令,也不经过CPU内部寄存器,而是利用系统的数据总线,由外设直接对存储器写人或读出。在 DMA方式中,对这一数据传送过程进行控制的硬件称为DMA控制器(DMAC)。
7.4.1 DMA的工作过程
DMA传送的基本特点是不经过CPU,不破坏CPU内各个寄存器的内容,在存储器和外围设备之间,直接开辟高速的数据传送通路。只用一个总线周期,就能完成存储器和外围设备之间的数据传送。因此,数据传送速度仅受存储器的存取速度和外围设备传输特性的限制。
DMA的工作过程大致如下。
(1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出DMA传送请求信号DREQ。
(2)DMA控制器接收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线。
(3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个方面:
① 一方面,CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权;
② 另一方面,CPU向 DMA控制器发出“总线响应”信号HLDA。
(4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出 DMA响应信号DACK。
(5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送。例如,在地址总线上发出存储器的地址,向存储器发出写信号MEMW,同时向外设发出I/О地址、IOR和AEN信号,即可从外设向内存传送数据。
(6)DMA控制器自动修改地址和字节计数器,并据此判断是否需要重复传送操作。规定的数据传送完后,DMA 控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线,继续执行原来的程序。
典型DMAC的工作电路和 DMA工作过程波形如图7.19所示。
数据的 DMA方式传送途径和程序控制下数据传送的途径不同。程序控制下数据传送的途径必须经过CPU。而采用DMA方式传送数据不需要经过CPU。另外,程序控制下数据传送的源地址、目的地址是由CPU提供的,地址的修改和数据块长的控制也必须由CPU承担,数据传送的控制信号也是由CPU发出。而DMA方式传送数据则由DMA控制器提供源地址和目的地址,而且修改地址、控制传送操作的结束和发出传送控制信号也都由DMAC承担,即 DMA传送数据方式是一种由硬件代替软件的方法,因而数据传送的速度提高了,缩短了数据传送的响应时间。因为DMA方式控制数据传送不需要CPU介入,即不利用CPU内部寄存器,所以,DMA方式不像中断方式控制下的数据传送那样,需要等一条指令执行结束后才能进行中断响应,而是只要执行指令的某个总线周期结束,就可以响应DMA请求。另外,DMA既然不利用CPU内部设备来控制数据传送,那么响应DMA请求,进入 DMA方式时就不必保护CPU的现场。采用中断控制的数据传送,进入中断服务(传送数据)之前,必须保护现场状态,这会大大延迟响应时间。因此,采用DMA控制数据传送的另一个优点是缩短了数据传送的响应时间。
所以,一般要求响应时间在微秒以下的场合,通常采用 DMA方式。
当然用DMA控制传送也存在一些问题:
① 首先,采用这种方式传送数据时,DMAC取代CPU控制了系统总线,即CPU要把对总线的控制权让给DMAC,所以,当DMA 控制总线时,CPU不能读取指令。
② 其次,若系统使用的是动态存储器,而且是由CPU负责管理动态存储器的刷新,则在 DMA操作期间,存储器的刷新将会停止。
③ 第三,当 DMAC占用总线时,CPU不能去检测和响应来自系统中其他设备的中断请求。
④ 最后,DMA传送也存在以下两个额外开销。第1个额外开销是总线访问时间。由于 DMAC要同CPU和其他可能的总线主控设备争用对系统总线的控制权,因此,必须有一些规程来解决争用总线控制权的问题。这些规程一般是用硬件实现排队的,而且排队过程也要花费时间。第2个额外开销是对DMAC的初始化。一般情况下,CPU要对 DMAC写入一些控制字,因此,DMAC的初始化建立,比程序控制数据传送的初始化,可能要花费较多时间,所以,对于数据块很短或要频繁地对DMAC重新编程初始化的情况,可能就不宜采用DMA传送方式。
⑤ 此外,DMA控制数据传送,是用硬件控制代替CPU执行程序来实现的,所以它必然会增加硬件的投资,提高系统的成本,因此,只要CPU来得及处理数据传送的场合,就不必采用DMA方式。
DMA的适用场合有以下几种。
(1)硬盘和软盘I/O。可以使用DMAC作为磁盘存储介质与半导体主存储器之间传送数据的接口。这种场合需要将磁盘中的大量数据(如操作系统等)快速地装入内部存储器。
(2)快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,如作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使 CPU脱离出来做其他工作。
(3)多处理机和多程序数据块传送。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用 DMA方式可以提高数据传输速度。
(4)扫描操作。在图像处理中,对CRT屏幕传送数据,也可以采用DMA方式。
(5)快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现时,如对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和数据传输速率的要求。
(6)在 IBM-PC/XT微机系统中还采用 DMA方式进行DRAM 的刷新操作。
7.4.2 DMA控制器8237
……
7.5例题解析
……