您现在的位置:小学生自学网>> 信息>> 学习电脑

CPU利用率最高的方式_DMA方式

作者: 来源: 发布时间:2011年04月11日 点击数:
 

DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。

一个设备接口试图通过总线直接向另一个设备发送数据(一般是大批量的数据),它会先向CPU发送DMA请求信号。外设通过DMA的一种专门接口电路――DMA控制器(DMAC),向CPU提出接管总线控制权的总线请求,CPU收到该信号后,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应DMA信号。CPU对某个设备接口响应DMA请求时,会让出总线控制权。于是在DMA控制器的管理下,外设和存储器直接进行数据交换,而不需CPU干预。数据传送完毕后,设备接口会向CPU发送DMA结束信号,交还总线控制权。

  实现DMA传送的基本操作如下:

  (1)外设可通过DMA控制器向CPU发出DMA请求:

  (2)CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;

  (3)由DMA控制器发送存储器地址,并决定传送数据块的长度;

  (4)执行DMA传送;

  (5)DMA操作结束,并把总线控制权交还CPU。

  用途:

  DMA方式主要适用于一些高速的I/O设备。这些设备传输字节或字的速度非常快。对于这类高速I/O设备,如果用输入输出指令或采用中断的方法来传输字节信息,会大量占用CPU的时间,同时也容易造成数据的丢失。而DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。

  DMA控制器或接口一般包括四个寄存器:

  状态控制寄存器、数据寄存器、地址寄存器和字节计数器。

  这些寄存器在信息传送之前需要进行初始化设置。即在输入输出程序中用汇编语言指令对各个寄存器写入初始化控制字。

DMA 是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

  DMA 传输重要地将一个内存区从一个装置复制到另外一个。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存去。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统 算法和网络是很重要的。

  举个例子,PC ISA DMA 控制器拥有 8 个 DMA 通道,其中的 7 个通道是可以让 PC 的 CPU 所利用。每一个 DMA 通道有一个 16位元 位址暂存器和一个 16 位元 计数暂存器。要初始化资料传输时,装置驱动程式一起设定 DMA 通道的位址和计数暂存器,以及资料传输的方向,读取或写入。然后指示 DMA 硬件开始这个传输动作。当传输结束的时候,装置就会以中断的方式通知 CPU。

_____________________

程序查询方式是一种程序直接控制方式,这是主机与外设间进行信息交换的最简单的方式,输入和输出完全是通过CPU执行程序来完成的。一旦某一外设被选中并启动后,主机将查询这个外设的某些状态位,看其是否准备就绪?若外设未准备就绪,主机将再次查询;若外设已准备就绪,则执行一次I/O操作。

  这种方式控制简单,但外设和主机不能同时工作,各外设之间也不能同时工作,系统效率很低,因此,仅适用于外设的数目不多,对I/O处理的实时要求不那么高,CPU的操作任务比较单一,并不很忙的情况。

______________________________________________

为了减少程序直接控制方式中CPU等待时间以及提高系统的并行工作程度,用来控制外围设备和内存与CPU之间的数据传送称为中断方式。

_____________________________________________

通道方式  因为在这些计算机中连接着许多输入输出设备,其中包括字设备和块设备。 为每一个设备都配置一个专用的DMA控制器是不经济的。 而且多个DMA的并行工作还会使存储器的访问发生冲突。 因而必须在多个设备之间共享DMA控制器,这样就形成了输入输出通道的概念。通道是一个具有输入输出处理器控制的输入输出部件。通道控制器有自己的指令,即通道命令,能够根据程序控制多个外部设备并提供了DMA共享的功能,而DMA只能进行固定的数据传输操作。

  一、通道的类型

  通道处理器本身可看作一个简单的专用计算机,它有自己的指令系统。通道处理器能够独立执行用通道命令编写的输入输出控制程序,产生相应的控制信号控制设备的工作。通道通过数据通路与设备的控制器进行通信。下图是通道结构的例子。采用这种结构的计算机中有两种总线:一种是存储器总线, 它承担CPU与内存、通道之间的数据传输任务;另一种是承担输入输出操作的总线,即通道总线。

  一台计算机中可以有多条通道,一条通道总线可以连接几个设备控制器。设备控制器类似于输入输出设备的接口,它接收通道控制器的命令并向设备发出控制命令。一个设备控制器可控制多个同类的设备,只要这些设备是轮流正作的。通道处理器中只运行输入输出控制程序。每个通道可以连接多个外围设备,根据数据传送方式,通道可分成字节多路通道、选择通道和数组多路通道三种类型。

  1.选择通道

  对于高速的设备,如磁盘等,要求较高的数据传输速度。对于这种高速传输,通道难以同时对多个这样的设备进行操作,只能一次对一个设备进行操作。这种通道称为选择通道,它与设备之间的传输一直维持到设备请求的传输完成为止,然后为其他外围设备传输数据。选择通道的数据宽度是可变的,通道中包含一个保存输入输出数据传输所需的参数寄存器。参数寄存器包括存放下一个主存传输数据存放位置的地址和对传输数据计数的寄存器。选择通道的输入输出操作启动之后,该通道就专门用于该设备的数据传输直到操作完成。选择通道的缺点是设备申请使用通道的等待时间较长。

  2.数组多路通道

  数组多路通道以数组(数据块)为单位在若干高速传输操作之间进行交叉复用。这样可减少外设申请使用通道时的等待时间。数组多路通道适用于高速外围设备,这些设备的数据传输以块为单位。通道用块交叉的方法,轮流为多个外设服务。当同时为多台外设传送数据时,每传送完一块数据后选择下一个外设进行数据传送,使多路传输并行进行。数组多路通道既保留了选择通道高速传输的优点,又充分利用了控制性操作的时间间隔为其它设备服务,使通道的功能得到有效发挥,因此数组多路通道在实际系统中得到较多的的应用。特别是对于磁盘和磁带等一些块设备,它们的数据传输本来就是按块进行的。而在传输操作之前又需要寻找记录的位置,在寻找的期间让通道等待是不合理的。数组多路通道可以先向一个设备发出一个寻找的命令,然后在这个设备寻找期间为其他设备服务。在设备寻找完成后才真正建立数据连接,并一直维持到数据传输完毕。因此采用数组多路通道可提高通道的数据传输的吞吐率。

  3.字节多路通道

  字节多路通道用于连接多个慢速的和中速的设备,这些设备的数据传送以字节为单位。每传送一个字节要等待较长时间,如终端设备等。因此,通道可以以字节交叉方式轮流为多个外设服务,以提高通道的利用率。这种通道的数据宽度一般为单字节。它的操作模式有两种:字节交叉模式和猝发模式。在字节交叉模式中,通道操作分成较短的段。通道向准备就绪的设备进行数据段的传输操作。传输的信息可由一个字节的数据以及控制和状态信息构成。通道与设备的连接时间是很短的。如果需要传输的数据量比较大,则通道转换成猝发的工作模式。在猝发模式下,通道与设备之间的传输一直维持到设备请求的传输完成为止。 通道使用一种超时机制判断设备的操作时间(即逻辑连接时间), 并决定采用哪一种模式。如果设备请求的逻辑连接时间大于某个额定的值,通道就转换成猝发模式,否则就以字节交叉模式工作。

  字节多路通道和数组多路通道都是多路通道,在一段时间内可以交替地执行多个设备的通道程序,使这些设备同时工作。但两者也有区别,首先数组多路通道允许多个设备同时工作,但只允许一个设备进行传输型操作,而其他设备进行控制型操作;而字节多路通道不仅允许多个路同时操作;而且允许它们同时进行传输型操作。其次,数组多路通道与设备之间的数据传送的基本单位是数据块,通道必须为一个设备传送完一个数据块以后才能为别的设备传送数据块,而字节多路通道与设备之间的数据传送基本单位是字节。通道为一个设备传送一个字节之后,又可以为另一个设备传送一个字节,因此各设备与通道之间的数据传送是以字节为单位交替进行的。

  二、通道的功能

  衡量通道性能的指标是通道的流量, 它指通道在传送数据时,1秒钟时间内传送的位数(b/s)。 通道所能达到的最大流量称为通道的极限流量。对于采用字节多路通道,通道的极限流量应大于所接外设的字节传送速率之和,因为字节多路通道同时为多个外设传输数据;对于采用其他两种方式的通道,通道的极限流量应大于所接外设中字节传送速率最大的设备,因为数组多路通道和选择通道是轮流为外设传输数据的。

  1.通道的功能

  (1)接受CPU的输入输出操作指令,按指令要求控制外围设备。

  (2)从内存中读取通道程序,并执行, 即向设备控制器发送各种命令。

  (3)组织和控制数据在内存与外设之间的传送操作。 根据需要提供数据中间绥存空间以及提供数据存入内存的地址和传送的数据量。

  (4)读取外设的状态信息,形成整个通道的状态信息,提供给CPU或保存在内存中。

  (5)向CPU发出输入输出操作中断请求,将外围设备的中断请求和通道本身的中断请求按次序报告CPU。

  CPU通过执行输入输出指令以及处理来自通道的中断, 实现对通道的管理。来自通道的中断有两种:一种是数据传输结束中断;另一种是故障中断。通道的管理是操作系统的任务。

  通道通过使用通道指令控制设备进行数据传送操作,并以通道状态字的形式接收设备控制器提供的外围设备的状态。因此,设备控制器是通道对输入输出设备实现传输控制的执行机构。

  2.设备控制器具体任务

  (1)从通道接受通道指,控制外围设备完成指定的操作;

  (2)向通道提供外围设备的状态;

  (3)将各种外围设备的不同信号转换成通道能够识别的标准信号。

  在具有通道的计算机中,实现数据输入输出操作的是通道指令。CPU的输入输出指令不直接实现输入输出的数据传送, 而是由通道指令实现这种传送,CPU用输入输出指令启动通道执行通道指令。CPU的通道输入输出指令的基本功能主要是启动、停止输入输出过程,了解通道和设备的状态以及控制通道的其他一些操作。

  通道指令也叫通道控制字(CCW,是channel command word 的缩写), 它是通道用于放行输入输出操作的指令,可以由CPU存放在内存中 ,由通道处理器从内存中取出并执行。通道执行通道指令以完成输入输出传输。通道程序由一条或几条通道指令组成,也称通道指令链。

  三、通道工作过程

  通道中包括通道控制器、状态寄存器、中断机构、通道地址寄存器、通道指令寄存器等。这里, 通道地址寄存器相当于一般CPU中的程序计数器。

  通道控制器的功能比较简单,它不含大容量的存储器,通道的指令系统也只是几条与输入输出操作有关的命令。 它要在CFU的控制下工作,某些功能还需CPU承担, 如通道程序的设置、输入输出的异常处理、传送数据的格式转换和校验等。因此,通道不是一个完全独立的处理器。

  通道状态字类似于CPU内部的程序状态字, 用于记录输入输出操作结束的原因,以及输入输出操作结束时通道和设备的状态。通道状态字通常存放在内存的固定单元中,由通道状态字反映中断的性质和原因。

  CPU在进行一个输入输出操作之前, 首先准备好通道程序,然后安排好数据缓冲区,再给通道和设备发启动命令。 CPU准备好的通道程序存放在内存中,由通道控制器读取并执行。

  通道接到启动信号后,首先到指定的内存单元中取通道地址字,放在通道地址寄存器(CAW,是channel address word 的缩写)中。这个存放通道地址字的内存单元的地址可以是固定的,然后根据通道地址寄存器中的值到内存中去取第一条通道指令,并放在通道指令寄存器中。通道程序执行时通过在通道指令寄存器中的相应位进行设置来告诉通道指令执行机构在执行完成当前指令后,自动转入下一条指令或者结束数据传送过程。通道程序的最后一条指令是一条结束指令,通道在执行到这条结束指令时就不再取下一条指令,而是通知设备结束操作。在通道程序执行完毕后,由通道向CPU发中断信号, 并将通道状态字写入内存专用单元, CPU根据通道状态字(CSW,是channel status word的缩写)分析这次输入输出操作的执行情况。

  通道与设备控制器之间的接口是计算机的一个重要界面。为了便于用户根据不同需要配置不同设备,通道—设备控制器的接口一般采用总线式标准接口,使得各设备和通道之间都有相同的接口线和相同的工作方式。这样,在更换设备时,通道不需要作任何变动。

上一篇:存储程序

下一篇:遍历序列