1 / 137

第 7 章 输入和输出技术

第 7 章 输入和输出技术. 7.1 接口技术概述 7.2 CPU 与外设之间数据传送方式 7.3 DMA 控制器 习 题 7. 7.1 接口技术概述. 7.1.1 CPU 与外部设备之间的接口信息 CPU 通过接口与外部设备的连接如图 7.1 所示,其中既有数据端口,又有状态端口,还有控制端口,每一个 I/O 端口对应一个 I/O 地址。从硬件角度看,端口可以理解为寄存器。数据端口可以是双向的,状态端口只作输入操作,控制端口只作输出操作。在 I/O 操作中,主要有三类信息:数据信息、状态信息和控制信息。. 图 7.1 简单的外设接口.

janet
Download Presentation

第 7 章 输入和输出技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 输入和输出技术 7.1 接口技术概述 7.2 CPU与外设之间数据传送方式 7.3 DMA控制器 习 题 7

  2. 7.1 接口技术概述 7.1.1 CPU与外部设备之间的接口信息 CPU通过接口与外部设备的连接如图7.1所示,其中既有数据端口,又有状态端口,还有控制端口,每一个I/O端口对应一个I/O地址。从硬件角度看,端口可以理解为寄存器。数据端口可以是双向的,状态端口只作输入操作,控制端口只作输出操作。在I/O操作中,主要有三类信息:数据信息、状态信息和控制信息。

  3. 图7.1 简单的外设接口

  4. 数据信息是CPU和I/O设备交换的基本信息,通常是8位或16位。数在输入过程中,数据信息一般是由外部设备通过接口芯片传递给系统的。数据信息由外设经过外设和接口之间的数据线进入接口,再到达系统的数据总线,然后送入CPU。在输出过程中,数据信息从CPU经过数据总线进入接口,再通过外设和接口之间的数据线,到达外设。数据信息是CPU和I/O设备交换的基本信息,通常是8位或16位。数在输入过程中,数据信息一般是由外部设备通过接口芯片传递给系统的。数据信息由外设经过外设和接口之间的数据线进入接口,再到达系统的数据总线,然后送入CPU。在输出过程中,数据信息从CPU经过数据总线进入接口,再通过外设和接口之间的数据线,到达外设。

  5. 状态信息反映了当前外设的工作状态,它是由外设通过接口送入CPU的。对于输入设备来说,用Ready信号来表示待输入的数据是否准备就绪;对于输出设备来说,用Busy信号来表示输出设备是否处于空闲状态,如空闲,则可接收CPU送来的数据信息,否则CPU等待。状态信息反映了当前外设的工作状态,它是由外设通过接口送入CPU的。对于输入设备来说,用Ready信号来表示待输入的数据是否准备就绪;对于输出设备来说,用Busy信号来表示输出设备是否处于空闲状态,如空闲,则可接收CPU送来的数据信息,否则CPU等待。 控制信息是CPU通过接口送给外设的。CPU通过发送控制信息控制外设的工作。外设种类不同,控制信息也各不相同。接口控制信号一般可分为两类:总线控制信号和输入/输出控制信号。总线控制信号包括数据线、地址线、IOR、LOW等;输入/输出控制信号比较复杂,一般包括数据线、输入/输出应答信号等。

  6. 7.1.2 输入/输出指令及其寻址方式 在微型计算机系统中,端口的编址通常有两种不同的方式,一是I/O端口与存储器单元统一编址;二是I/O端口独立编址。 1. I/O端口与存储器单元统一编址 所谓I/O端口与存储器单元统一编址,也称为存储器映像(Memory Mapped)I/O方式,既把每个I/O端口都当作一个存储器单元看待,I/O端口与存储器单元在同一个地址空间中进行统一编址。通常,是在整个地址空间中划分出一小块连续的地址分配给I/O端口。被分配给I/O端口的地址,存储器不能再使用。内存映射与I/O映射编址如图7.2所示。

  7. 图7.2 内存映射与I/O映射编址 (a) 统一编址;(b) 独立编址

  8. 采用这种编址方式的微处理器有6800、6502、68000等,其优点是简化指令系统的设计,同时I/O控制信号与存储器的控制信号共用,给应用带来极大的方便,另外由于访问存储器的指令种类多、寻址方式多样化,对访问外设带来了很大的灵活性。对I/O设备可以使用功能强大且像访问存储器那样的指令,如直接对I/O数据进行运算等。统一编址的缺点是外设占用了一部分内存地址空间,减少了内存可用的地址范围,对内存容量有潜在的影响。此外,从指令上不易区分当前指令是对内存进行操作还是对外设进行操作。采用这种编址方式的微处理器有6800、6502、68000等,其优点是简化指令系统的设计,同时I/O控制信号与存储器的控制信号共用,给应用带来极大的方便,另外由于访问存储器的指令种类多、寻址方式多样化,对访问外设带来了很大的灵活性。对I/O设备可以使用功能强大且像访问存储器那样的指令,如直接对I/O数据进行运算等。统一编址的缺点是外设占用了一部分内存地址空间,减少了内存可用的地址范围,对内存容量有潜在的影响。此外,从指令上不易区分当前指令是对内存进行操作还是对外设进行操作。

  9. 2. I/O端口独立编址 所谓I/O端口独立编址(I/O Mapped),也称为I/O隔离编址或I/O指令寻址方式,即I/O端口地址区域和存储器地址区域,分别各自独立编址。访问I/O端口使用专门的I/O指令,而访问内存则使用MOV、ADD等指令。CPU在寻址内存和外设时,使用不同的控制信号来区分当前是对内存操作还是对I/O操作。在单CPU模式时,当前的操作是由IO/信号的电平来区别的。对于8088CPU系统,当IO/为低电平时,表示当前执行的是存储器操作,地址总线上地址是某个存储单元地址;当IO/为高电平时,表示当前执行的是I/O操作,地址总线上地址是某个I/O端口的地址。在多CPU模式时,若访问存储器,则使MEMW或MEMR信号有效;而访问I/O端口时,则使或信号有效。

  10. 这种单独编址的优点是I/O端口不占用存储器的地址空间,使用专门的I/O指令对端口进行访问,具有I/O指令短、执行速度快、译码简单的优点。缺点是专门的I/O指令功能相对较弱,一般只有传送功能,而没有运算功能。Intel 80x86 CPU中,I/O端口和存储器是单独编址的,采用专用的输入/输出指令访问端口。

  11. 3. 输入/输出指令及其寻址 1) 8086/8088采用的IN和OUT指令 I/O指令可以采用8位(单字节)或16位(双字节)地址两种寻址方式。如采用单字节作为端口地址,则最多可以有256个端口(端口地址号从00H~FFH),并且是直接寻址(直接端口寻址)方式,指令格式如下: 输入: IN AX,Port ;从Port端口输入16位数据到AX IN AL,Port ;从Port端口输入8位数据到AL 输出: OUT Port,AX ;从AX输出16位数据到Port端口 OUT Port,AL ;从AL输出 8位数据到Port端口 这里Port是一个单字节的8位地址。

  12. 如用双字节地址作为端口地址,则最多可以有64 K个端口(端口地址号从0000H~FFFFH),并且是间接寻址方式,即把端口地址放在DX寄存器内(间接端口寻址)。其指令格式如下: 输入: MOV DX,XXXXH ;16位地址 IN AX,DX ;16位传送 或 IN AL,DX ;8位传送 输出: MOV DX,XXXXH OUT DX,AX ;16位传送 或 OUT DX,AL ;8位传送 这里XXXXH为两字节地址信息。

  13. 2) 80286和80386/486还支持I/O端口直接与内存之间的数据传送 输入: MOV DX,Port LES DI,Bufferin INSB ;8位传送 或 INSW ;16位传送 输出: MOV DX,Port LDS SI,Bufferout OUTSB ;8位传送 或 OUTSW ;16位传送

  14. 这里的输入与输出是直接对内存储器的RAM而言,当输入时,用ES:DI指向RAM中的目标缓冲区Bufferin;当输出时,用DS:SI,指向源缓冲区Bufferout。若在INS或OUTS指令前加上REP重复前缀时,则可以实现I/O端口与RAM上的缓冲区之间进行成批数据传送。这里的输入与输出是直接对内存储器的RAM而言,当输入时,用ES:DI指向RAM中的目标缓冲区Bufferin;当输出时,用DS:SI,指向源缓冲区Bufferout。若在INS或OUTS指令前加上REP重复前缀时,则可以实现I/O端口与RAM上的缓冲区之间进行成批数据传送。 从输入/输出指令可以看出,对于PC系列的机器,I/O端口内的数据也有8位与16位之分,通常16位数据端口地址安置在偶数地址号上,CPU在一次总线周期内就可以存取16位的数据。8位数据的端口地址可以安置在偶地址号或奇地址号上,偶地址使用数据总线D7~D0传送数据,奇地址使用数据总线D15~D8传送数据。表7-l列出8位或16位数据端口在奇数或偶数端口地址号上,单字节直接寻址的输入/输出指令。

  15. I/O端口 配置地址 数据总线 指令举例 8位 偶数地址 D7~D0 IN AL,20H OUT 20H,AL 奇数地址 D15~D8 IN AL,21H OUT 21H,AL 16位 偶数地址 D15~D0 IN AX,20H OUT 20H,AX 表7-1 IBM-PC机上I/O端口地址配置

  16. 7.1.3 CPU的输入/输出时序 为了说明CPU的输入和输出时序,下面以8086为例简要介绍读写I/O端口的总线时序。 1. I/O读总线周期时序 一般I/O设备的工作速度较慢,所以在I/O总线周期的T3和T4之间插入一个等待状态Tw,使整个周期由4个T状态变为5个。所以各个信号也都要相应地延长或推迟一个时钟周期。CPU仍是在T4状态的开始采样数据线,由于CPU只用A15~A0寻址I/O端口,所以地址总线上没有A19~A16的状态。其时序如图7.3所示。

  17. 图7.3 8086 I/O读写时序

  18. 2. I/O写总线周期时序 I/O写总线周期的时序与I/O读相比,除()信号换成了()信号外,数据信号也提前产生,但仍必须保持到T4状态的上升沿之后,以便I/O端口在T4为低电平的某个时刻写入数据。

  19. 7.1.4 IBM-PC及现代PC与外设的接口 由于IBM-PC配置的外设比较简单,所采用的主要接口芯片有计数器/定时器电路8253,并行接口芯片8255,中断控制器8259,DMA控制器8237,串行通信控制器8250以及用于与存储器、键盘等I/O设备相接的若干缓冲器和锁存器。CPU的I/O指令可以用16位有效地址A15~A0来寻址0000H~FFFFH,共64 KB的地址范围。IBM-PC/XT机在制造中只使用A9~A0 10位地址来表示I/O空间,因此其I/O端口的地址为000H~3FFH,共1 KB。前512个地址(000H~1FFH)被主板上的I/O接口使用,其余200H~3FFH可以为插在扩展槽中的I/O通道使用。其端口地址分配如表7-2所示。

  20. 地址(H) I/O接口 系 统 板 000~00F 020~021 040~043 060~063 080~083 0A0~0BF DMA控制器8237A-5 中断控制器8259A 定时/计数器8253A-5 并行接口8255A-5 DMA页面寄存器 NMI屏蔽寄存器 表7-2 IBM-PC/XT机I/O端口地址分配

  21. 展 插 槽 200~20F 210~217 218~2F7 2F8~2FF 300~31F 320~32F 330~377 378~37F 380~38F 390~3AF 游戏控制接口 扩展部件 未用 异步通信接口(COM2) 试验卡 硬磁盘适配器 未用 并行打印机 SDLC同步通信适配器 未用 表7-2 IBM-PC/XT机I/O端口地址分配

  22. 展 插 槽 3B0~3BF 3C0~3CF 3D0~3DF 3E0~3EF 3F0~3F7 3F8~3FF 单色显示/打印机适配器 未用 彩色显示适配器 未用 软磁盘适配器 异步通信接口(COM1) 表7-2 IBM-PC/XT机I/O端口地址分配

  23. Pentium采用大规模集成电路芯片82815GMCH(通常称为北桥)与高速主存储器(SDRAM)、显示器、AGP接口。82801BA ICH2(通常称为南桥)连接IDE接口(硬盘、CD-ROM等)、USB接口、音频设备、MODEM、键盘与鼠标以及接至PCI总线的扩展槽等。虽然性能有了很大提高,但从功能上仍然要实现计数、定时、串并通信和中断等功能。

  24. 7.2 CPU与外设之间数据传送方式 7.2.1 程序控制方式 1. 无条件传送 无条件传送是一种最简单的输入/输出控制方法,一般用于控制CPU与低速I/O接口之间的信息交换,例如,开关、继电器和速度、温度、压力、流量等变送器(即A/D转换器)。由于这些信号变化很缓慢,当需要采集这些数据时,外部设备已经把数据准备就绪,无需检查端口的状态,就可以立即采集数据。数据保持时间相对于CPU的处理时间长得多。因此,输入的数据就用不着加锁存器而直接用三态缓冲器与系统总线连接。

  25. 实现无条件输入的方法是:在程序的适当位置直接安排IN输入指令,当程序执行到这些指令时,外部设备的数据早已准备就绪,可以在执行当前指令时间内完成接受数据的全部过程。若外部设备是输出设备(例如LED显示器),一般要求接口有锁存能力,也就是要求CPU送给外部设备的数据,应该在输出设备接口电路中保持一段时间,这个时间的长短应该和外部设备的接受动作时间相适应。实现无条件输出的方法是在程序的适当位置安排OUT输出指令,当程序执行到这些指令时,就将输出给外部设备的数据存入锁存器。实现无条件输入的方法是:在程序的适当位置直接安排IN输入指令,当程序执行到这些指令时,外部设备的数据早已准备就绪,可以在执行当前指令时间内完成接受数据的全部过程。若外部设备是输出设备(例如LED显示器),一般要求接口有锁存能力,也就是要求CPU送给外部设备的数据,应该在输出设备接口电路中保持一段时间,这个时间的长短应该和外部设备的接受动作时间相适应。实现无条件输出的方法是在程序的适当位置安排OUT输出指令,当程序执行到这些指令时,就将输出给外部设备的数据存入锁存器。

  26. 无条件传送方式的工作过程:输入时,外界将数据送到缓冲器输入端(外界可以是开关、A/D转换器等),当CPU执行IN AL,07H指令时,CPU首先向地址译码器送来启动信号,并把端口地址07H送到74LS138译码器输入端,译码器的作用是把端口地址转变为使其某一根输出线为有效低电平。例如,当端口地址为07H时,则使译码器的Y7为低电平。然后CPU送出IOR低电平信号,使三态缓冲器的控制端为有效电平(选此三态缓冲器)。将外部设备送来的数据送到数据总线上,并将数据打入CPU内部的通用寄存器AL中。因为,CPU执行一次数据读入,对于8088来说一般只需要微秒级时间,而外界数据在缓冲器输入端保持的时间,可达秒级或几十毫秒,因此,输入数据不必锁存。

  27. 而且,CPU执行IN AL,07H指令时,要读入的数据早已送入缓冲器的输入端,所以可以立即读入,无需查询数据是否已准备就绪。假设端口号07H也是另一接口电路输出锁存器的入口地址,锁存器从数据总线接收数据,当出现由或门U1输出的触发锁存器的触发脉冲时,就将它的输出数据锁存入锁存器,并通过其输出端送给外部设备。所以,当需要向07H号端口输出数据时,可在程序中插入一条输出指令OUT 07H,AL。当CPU执行这条指令时,它把AL的内容送上数据总线,并把端口地址07H和启动信号送入译码器。译码器译码后使Y7为有效低电平,同时LOW也为有效低电平(此时IOR为高电平),由或门U1输出触发脉冲时,就将数据总线上的数据存入锁存器,CPU执行OUT 07H,AL指令时,AL中的数据在数据总线上停留的时间也只有微秒级,所以,输出数据必须通过存器锁存。

  28. 也就是要求输出的数据,应该在输出接口电路的输出端保持一段时间,这个时间的长短,应该和外部接受设备的动作时间相适应。当CPU再次执行OUT 07H,AL指令时,AL中新的数据会取代原锁存器中的内容。无条件传送方式的接口电路和控制程序都比较简单。 需要注意的是,输入时,当CPU执行IN指令时,要确保输入的数据已经准备好,否则,就可能读入不正确的数据;在输出时,当CPU执行OUT指令时,需确保外部设备已将上次送来的数据取走,它就可以接收新的数据了,否则,会发生数据“冲突”。无条件传送控制方式,一般用于定时已知或数据变化十分缓慢的外部设备。

  29. 2. 有条件传送 有条件传送方式又称为程序查询方式。这种传送方式在接口电路中,除具有数据缓冲器或数据锁存器外,还应具有外设状态标志位,用来反映外部设备数据的情况。比如,在输入时,若数据已准备好,则将该标志位置位;输出时,若数据已空(数据已被取走),则将标志位置位。在接口电路中,状态寄存器也占用端口地址号。使用有条件传送方式控制数据的输入/输出,通常要按图7.4的流程进行。即首先读入设备状态标志信息,再根据所读入的状态信息进行判断,若设备未准备就绪,则程序转移去执行某种操作,或循环回去重新执行读入设备状态信息;若设备准备好,则执行完成数据传送的I/O指令。数据传送结束后,CPU转去执行其他任务,刚才所操纵的设备脱离CPU控制。

  30. 图7.4 条件传送示意图

  31. 有条件传送的优点是:能较好地协调外设与CPU之间的定时关系;缺点是:CPU需要不断查询标志位的状态,这将占用CPU较多的时间,尤其是与中速或慢速的外部设备交换信息时,CPU真正花费在传送数据上的时间极少,绝大部分时间都消耗在查询上。为克服这一缺点,可以采用中断控制方式。有条件传送的优点是:能较好地协调外设与CPU之间的定时关系;缺点是:CPU需要不断查询标志位的状态,这将占用CPU较多的时间,尤其是与中速或慢速的外部设备交换信息时,CPU真正花费在传送数据上的时间极少,绝大部分时间都消耗在查询上。为克服这一缺点,可以采用中断控制方式。

  32. 7.2.2 中断控制方式 有条件传送的缺点除了占用CPU较多的工作时间外,还难以满足实时控制系统对I/O工作的要求。因为在查询方式中,CPU处于主动地位,而外设接口处于消极被查询的被动地位。而在一般实时控制系统中,外设要求CPU为它服务是随机的,而且支持系统的外设往往有几个甚至几十个,若采用查询方式工作,很难实现系统中每一个外设都工作在最佳工作状态。所谓工作在最佳状态,是指一旦某个外设请求CPU为它服务时,CPU应该以最快的速度响应其请求。这就要求系统中的外设,具有主动申请CPU为其服务的权利。

  33. 比如,当某个A/D转换器的模拟量已转换为数字量后,这时它就可以立刻向CPU发出中断请求,CPU暂时中止处理当前的事务,而转去执行优先的中断服务程序,输入A/D转换器的数字量数据。微型计算机都具有中断控制的能力,8086/8088CPU的中断结构灵活,功能很强。所以,微机系统采用中断控制I/O方式是很方便的。CPU执行完每一条指令后,都会去查询外部是否有中断请求,若有,就暂停执行现行的程序,转去执行中断服务程序,完成传送数据的任务。当然,在一个具有多个外设的系统中,在同一时刻就往往不止一个外设提出中断请求,这就引入了所谓中断优先权管理和中断嵌套等问题(有关中断的详细讨论参见第8章)。比如,当某个A/D转换器的模拟量已转换为数字量后,这时它就可以立刻向CPU发出中断请求,CPU暂时中止处理当前的事务,而转去执行优先的中断服务程序,输入A/D转换器的数字量数据。微型计算机都具有中断控制的能力,8086/8088CPU的中断结构灵活,功能很强。所以,微机系统采用中断控制I/O方式是很方便的。CPU执行完每一条指令后,都会去查询外部是否有中断请求,若有,就暂停执行现行的程序,转去执行中断服务程序,完成传送数据的任务。当然,在一个具有多个外设的系统中,在同一时刻就往往不止一个外设提出中断请求,这就引入了所谓中断优先权管理和中断嵌套等问题(有关中断的详细讨论参见第8章)。

  34. 7.2.3 直接存储器存取(DMA)控制方式 采用中断方式,信息的传送是依靠CPU执行中断服务程序来完成的,所以,每进行一次I/O操作,都需要CPU暂停执行当前程序,把控制转移到优先权最高的I/O程序。在中断服务程序中,需要有保护现场和恢复现场的操作,而且I/O操作都是通过CPU来进行的。当从存储器输出数据时,首先需要CPU执行传送指令,将存储器中的数据,读入CPU中的通用寄存器AL(对于字节数据)或AX(对于字数据),然后,执行OUT指令,把数据由通用寄存器AL或AX传送到I/O端口;当从I/O端口向存储器存入数据时,过程正相反。

  35. CPU执行IN指令时,将I/O端口数据读入通用寄存器AL或AX,然后CPU执行传送指令,将AL或AX的内容存入存储器单元。这样,每次I/O操作都需要几十甚至几百微秒,对于一些高速外设,如高速磁盘控制器或高速数据采集系统,中断控制方式往往满足不了它们的需要。为此,提出了数据在I/O接口与存储器之间的传送,不经CPU的干预,而是在专用硬件电路的控制下直接传送。这种方法称为直接存储器存取(Direct Memory Access,缩写为DMA)。为实现这种工作方式而设计的专用接口电路,称为DMA控制器(DMAC)。例如,Intel公司的8257、8237,Zilog公司的Z 8410(Z80 DMAC),Motorola公司的MC6844等,都是能实现DMA方式的可编程DMAC芯片。

  36. 用DMA方式传送数据时,在存储器和外部设备之间,直接开辟高速的数据传送通路。数据传送过程不要CPU介入,只用一个总线周期,就能完成存储器和外部设备之间的数据传送。因此,数据传送速度仅受存储器的存取速度和外部设备传输特性的限制。用DMA方式传送数据时,在存储器和外部设备之间,直接开辟高速的数据传送通路。数据传送过程不要CPU介入,只用一个总线周期,就能完成存储器和外部设备之间的数据传送。因此,数据传送速度仅受存储器的存取速度和外部设备传输特性的限制。

  37. DMA的工作过程大致如下: (1) 当外设准备好,可以进行DMA传送时,外设向DMA控制器发出DMA传送请求信号(DRQ)。 (2) DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,申请占用总线。 (3) CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个方面,一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。

  38. (4) DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK。 (5) DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送。例如,在地址总线上发出存储器的地址,向存储器发出写信号MEMW,同时向外设发出I/O地址、IOR和AEN信号,即可从外设向内存传送一个字节。 (6) DMA控制器自动修改地址和字节计数器,并据此判断是否需要重复传送操作。规定的数据传送完后,DMA控制器就撤消发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤消HLDA信号,并在下一时钟周期重新开始控制总线时,继续执行原来的程序。

  39. DMA方式在传送路径和程序控制下数据传送的途径不同。程序控制下数据传送的途径必须经过CPU,而采用DMA方式传送数据不需要经过CPU。另外,程序控制下数据传送的源地址、目的地址是由CPU提供的,地址的修改和数据块长的控制也必须由CPU承担,数据传送的控制信号也是由CPU发出的。而DMA方式传送数据,则由DMA控制器提供源地址和目的地址,而且修改地址、控制传送操作的结束和发出传送控制信号也都由DMAC承担,即DMA传送数据方式是一种由硬件代替软件的方法,因而提高了数据传送的速度,缩短了数据传送的响应时间。因为DMA方式控制数据传送不需要CPU介入,即不利用CPU内部寄存器,因此,DMA方式不像中断方式控制下的数据传送,需要等一条指令执行结束才能进行中断响应,只要执行指令的某个机器周期结束,就可以响应DMA请求。

  40. 另外,DMA既然不利用CPU内部设备来控制数据传送,因此,响应DMA请求,进入DMA方式时就不必保护CPU的现场。采用中断控制的数据传送,进入中断服务(传送数据)之前,必须保护现场状态,这会大大延迟响应时间。因此,采用DMA控制数据传送的另一个优点是,缩短数据传送的响应时间。所以,一般要求响应时间在微秒以下的场合,通常采用DMA方式。当然用DMA控制传送也存在一些问题,因为采用这种方式传送数据时,DMAC取代CPU控制了系统总线,即CPU要把对总线的控制权让给DMAC。所以,当DMA控制总线时,CPU不能读取指令。另外,若系统使用的是动态存储器,而且是由CPU负责管理动态存储器的刷新,则在DMA操作期间,存储器的刷新将会停止。而且,当DMAC占用总线时,CPU不能去检测和响应来自系统中其他设备的中断请求。另外,DMA既然不利用CPU内部设备来控制数据传送,因此,响应DMA请求,进入DMA方式时就不必保护CPU的现场。采用中断控制的数据传送,进入中断服务(传送数据)之前,必须保护现场状态,这会大大延迟响应时间。因此,采用DMA控制数据传送的另一个优点是,缩短数据传送的响应时间。所以,一般要求响应时间在微秒以下的场合,通常采用DMA方式。当然用DMA控制传送也存在一些问题,因为采用这种方式传送数据时,DMAC取代CPU控制了系统总线,即CPU要把对总线的控制权让给DMAC。所以,当DMA控制总线时,CPU不能读取指令。另外,若系统使用的是动态存储器,而且是由CPU负责管理动态存储器的刷新,则在DMA操作期间,存储器的刷新将会停止。而且,当DMAC占用总线时,CPU不能去检测和响应来自系统中其他设备的中断请求。

  41. DMA传送也存在以下两个额外开销源:第一个额外开销是总线访问时间,由于DMAC要同CPU和其他可能的总线主控设备争用对系统总线的控制权,因此,必须有一些规则来解决争用总线控制权的问题,这些规则一般是用硬件实现排队的,但是排队过程也要花费时间;第二个额外开销是对DMAC的初始化,一般情况下,CPU要对DMAC写入一些控制字,因此,DMAC的初始化建立,比程序控制数据传送的初始化,可能要花费较多时间。所以,对于数据块很短或要频繁地对DMAC重新编程初始化的情况下,可能就不宜采用DMA传送方式。此外,DMA控制数据传送是用硬件控制代替CPU执行程序来实现的。所以它必然会增加硬件的投资,提高系统的成本。因此,只要CPU来得及处理数据传送,就不必采用DMA方式。DMA主要适用以下几种场合:

  42. (1) 硬盘和软盘I/O。可以使用DMAC作磁盘存储介质与半导体主存储器之间传送数据的接口。这种场合需要将磁盘中的大量数据(如磁盘操作系统等)快速地装入内部存储器。 (2) 快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,可作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使CPU脱出来做其他工作。

  43. (3) 多处理机和多程序数据块传送。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用DMA方式可以提高数据传输速度。 (4) 扫描操作。在图像处理中,对CRT屏幕送数据,也可以采用DMA方式。

  44. (5) 快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现,例如,对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和数据传输速率的要求。 (6) 在PC/XT机中还采用DMA方式进行DRAM的刷新操作。 DMA工作过程波形如图7.5所示。

  45. 图7.5 DMA工作波形

  46. 7.2.4 I/O处理机方式 8089是专门用来处理输入/输出的协处理器。它共有52条指令、lMB寻址能力和两个独立的DMA通道。当8086/8088加上8089组成系统后,8089能代替8086/8088,以通道控制方式管理各种I/O设备。以通道控制方式管理I/O设备,目前只有在大中型计算机中才普遍使用,因此,8089为微机的输入/输出系统设计带来换代性的变化。一般情况下,通过接口电路控制I/O外设,必须依靠CPU的支持,对于非DMA方式,从外部设备每读入一个字节或发送给外部设备一个字节,都必须由CPU执行指令来完成。虽然高速设备可以用DMA传送数据,但仍然需要CPU对DMAC进行初始化,启动DMA操作,以及完成每次DMA操作之后都要检查传送的状态。

  47. 对I/O数据的处理,如对数据的变换、拆、装、检查等,更加需要CPU支持,CPU控制I/O如图7.6(a)所示。从图中不难看出,普通I/O接口,不管是DMA方式还是非DMA方式,在I/O传送过程都要占去CPU的开销。8089是一个智能控制器,它可以取出和执行指令,除了控制数据传送外,还可以执行算术和逻辑运算、转移、搜索和转换。当CPU需要进行I/O操作时,它只要在存储器中建立一个信息块,将所需要的操作和有关参数按照规定列入,然后通知8089前来读取。8089读得操作控制信息后,能自动完成全部的I/O操作。对I/O数据的处理,如对数据的变换、拆、装、检查等,更加需要CPU支持,CPU控制I/O如图7.6(a)所示。从图中不难看出,普通I/O接口,不管是DMA方式还是非DMA方式,在I/O传送过程都要占去CPU的开销。8089是一个智能控制器,它可以取出和执行指令,除了控制数据传送外,还可以执行算术和逻辑运算、转移、搜索和转换。当CPU需要进行I/O操作时,它只要在存储器中建立一个信息块,将所需要的操作和有关参数按照规定列入,然后通知8089前来读取。8089读得操作控制信息后,能自动完成全部的I/O操作。

  48. 因此,对配合8089的CPU来说,所有输入/输出的操作过程中,数据都是以块为单位成批发送或接收的,而把一块数据按字或字节与I/O设备(如CRT终端,行式打印机)交换都由8089来完成,当8089控制数据交换时,CPU可以并行处理其他操作。由于引入8089来承担原来必须由CPU承担的I/O操作,这就大大地减轻了CPU控制外设的负担,有效地减少了CPU在I/O处理中的开销。8089控制I/O如图7.6(b)所示。因此,对配合8089的CPU来说,所有输入/输出的操作过程中,数据都是以块为单位成批发送或接收的,而把一块数据按字或字节与I/O设备(如CRT终端,行式打印机)交换都由8089来完成,当8089控制数据交换时,CPU可以并行处理其他操作。由于引入8089来承担原来必须由CPU承担的I/O操作,这就大大地减轻了CPU控制外设的负担,有效地减少了CPU在I/O处理中的开销。8089控制I/O如图7.6(b)所示。

  49. 图7.6 8086、8089控制I/O (a) 8086控制I/O; (b) 8089控制I/O

  50. 7.3 DMA控制器 7.3.1 DMA控制器的功能 通用的DMA控制器应具有以下功能: (1) 编程设定DMA的传输模式及其所访问内存的地址区域。 (2) 屏蔽或接受外部设备的DMA请求(DREQ)。当有多个设备同时请求时,还要进行优先级排队,首先接受最高级的请求。

More Related