计算机架构中的直接内存访问(DMA)

为了执行计算机程序,它需要多个组件的同步工作。例如,处理器- 提供必要的控制信息,地址...等,总线 - 将信息和数据传输到内存到I / O设备等。系统的有趣因素将是处理器,内存和I / O设备之间传输信息的方式。通常,处理器控制传输数据的所有过程,从启动到目的地的数据存储。这增加了处理器上的负载,大部分时间都处于理想状态,从而降低了系统的效率。为了加快I / O设备和内存之间的数据传输,DMA控制器充当站主机。DMA控制器通过最小的处理器进行介入来传输数据。

什么是DMA控制器?

术语DMA代表直接内存访问。用于直接存储器访问的硬件设备称为DMA控制器。DMA控制器是一个控制单元,I / O设备的一部分接口电路,它可以在I / O设备和主存储器之间传输数据块,并具有从处理器的最小干预。


计算机架构中的DMA控制器图

DMA控制器提供总线和输入输出设备之间的接口。虽然它在没有处理器的干预的情况下传输数据,但它由处理器控制。处理器通过在数据块中发送起始地址,单词数和数据的传输方向来启动DMA控制器。从I / O设备到存储器或从主内存到I / O设备。可以将多个外部设备连接到DMA控制器。

DMA在计算机架构中
DMA在计算机架构中

DMA控制器包含一个地址单元,用于生成地址和选择I / O设备进行传输。它还包含控制单元和数据计数,以保持传输的块数的数量并指示数据传输方向。转移完成后,DMA通过提高中断通知处理器。DMA控制器的典型框图如下图所示。

DMA控制器的典型框图
DMA控制器的典型框图

DMA控制器的工作

DMA控制器必须与处理器共享总线以进行数据传输。在给定时间保持总线的设备称为总线主控器。当必须进行从I / O设备转移到存储器或副常见节时,处理器停止执行当前程序,增量该程序计数器,通过堆叠移动数据,然后通过地址总线向DMA控制器发送DMA选择信号。

如果DMA控制器是免费的,它通过提高总线请求信号,请求从处理器控制总线。处理器通过提高总线授权信号将总线授予控制器,现在DMA控制器是总线主控器。处理器通过发送存储器地址,要传输的数据块数和数据传输方向来启动DMA控制器。在将数据传输任务分配给DMA控制器之后,而不是理想地等待直到完成数据传输,则处理器在检索来自堆栈的指令之后恢复程序的执行。


DMA通过DMA在计算机中转移数据
DMA控制器在计算机中传输数据

DMA控制器现在可以完全控制总线,可以直接与独立于CPU的内存和I / O设备进行交互。它根据处理器接收的控制指令进行数据传输。在完成数据传输之后,它禁用总线请求信号,CPU禁用总线授权信号,从而将总线的控制移动到CPU。

当I / O设备想要启动转移时,它将DMA请求信号发送到DMA控制器,该控制器如果它是自由的,则控制器确认。然后,控制器请求处理器的总线,提高总线请求信号。收到总线授权信号后,它会从设备传输数据。对于N通道的DMA控制器,可以连接外部设备。

DMA以三种模式传输数据,该模式包括以下内容。

一种)突发模式:在此模式下,DMA仅在整个数据传输完成后切换到CPU的总线。同时,如果CPU要求公共汽车必须保持理想并等待数据传输。

b)循环窃取模式:在此模式下,DMA在传输每个字节之后控制对CPU的总线。它不断发布总线控制请求,使一个字节传输并返回总线。如果此CPU不需要等待很长时间,如果它需要一个用于更高优先级任务的总线。

C)透明模式:在这里,DMA仅在CPU执行不需要使用总线的指令时传输数据。

8237 DMA控制器

  • 8237具有4个I / O通道,以及增加通道数量的灵活性。
  • 每个通道可以单独编程并具有64k地址和数据能力。
  • 定时控制块,程序命令控制块,优先级编码器块是8237A的三个主块。
  • 内部定时和外部控制信号由定时控制块驱动。
  • 通过程序命令控制块解码微处理器给DMA给出的各种命令。
  • 必须给予哪个频道最高优先级由优先级决定编码器块
    8237A有27个内部寄存器。

8237A在两个循环中操作 - 理想的循环和活动周期,每个周期包含每个由每个时钟周期组成的7个单独的状态。

S0-第一个状态,控制器要求总线并等待处理器确认。

S1,S2,S3,S4称为8237A的工作状态,其中进行实际的数据传输。如果需要更多时间来转移等待状态,则在这些状态之间添加SW。

对于内存 - 内存传输,必须进行读取从内存和写入内存传输。单次转移需要八种状态。具有下标S11,S12,S13,S14的前四个状态是读取从存储器传输和接下来的四个S21,S22,S23,S24用于写入存储器传输。

当没有频道正在请求服务并执行SI状态时,DMA进入理想状态。Si是一个非活动状态,DMA处于非活动状态,直到它收到请求。在这种状态下,DMA在程序条件下,处理器可以编程DMA。

当DMA处于理想状态并且没有进一步的频道请求时,它将HRQ信号输出到处理器,并进入在活动状态下,可以通过突发模式,周期窃取模式或透明模式开始传输数据。

8237 Pindiagram.
8237针图

8257 DMA控制器

当与单个英特尔8212 I / O端口设备配对时,8257 DMA控制器形成完整的4通道DMA控制器。在接收到转移请求后,8257控制器 -

  • 从处理器获取对系统总线的控制。
  • 已确认连接到最高优先级信道的外设。
  • 存储器地址的最低有效位通过系统总线的地址线A0-A7移动。
  • 最重要的8位存储器地址通过数据线驱动到8212 I / O端口。
  • 生成适当的控制信号,用于在外围设备之间传输数据和寻址存储器位置。
  • 当传输指定的字节数时,控制器通过激活终端数(TC)输出来通知CPU转移结束。

对于每个通道8257包含两个16位寄存器- 1)DMA地址寄存器和2)终端计数寄存器,应该在启用频道之前初始化。要访问的第一存储位置的地址已加载在DMA地址寄存器中。在终端计数寄存器中加载的值的较低阶14位指示在激活终端计数输出之前减去一个DMA循环的数量。通道的操作类型由终端计数寄存器的最重要两位表示。

8257针图
8257针图

DMA控制器的优点和缺点

DMA控制器的优点和缺点包括以下内容。

好处

  • DMA通过绕过CPU的参与来加速存储器操作。
  • CPU的工作过载减少。
  • 对于每个转移,只需要几个时钟周期

缺点

  • 当DMA用于数据传输时,可以看到缓存相干问题。
  • 增加了系统的价格。

DMA(直接内存访问)控制器正在图形卡,网卡,声卡等... DMA也用于多核处理器中的芯片内传输。在其三种模式之一中操作,DMA可以大大减少处理器的负载。在哪种DMA中你合作了吗?您认为哪种模式更有效?

添加评论