📜  使用DMA控制器8257/8237进行直接存储器访问

📅  最后修改于: 2021-06-28 14:52:52             🧑  作者: Mango

假设连接到输入输出端口的任何设备都希望传输数据以将数据传输到内存,则首先它将发送输入输出端口地址和控制信号,将输入输出读取到输入输出端口,然后将其发送存储器地址和存储器写入信号到必须在其中传输数据的存储器。在正常的输入输出技术中,处理器忙于检查是否对于下一个输入输出操作是否完成了任何输入输出操作,因此该技术很慢。

通过实现直接内存访问(DMA)技术,可以避免输入输出端口与内存之间或两个内存之间的数据传输缓慢的问题。由于绕过了微处理器/计算机,并且将地址总线和数据总线的控制权交给了DMA控制器,因此速度更快。

  • HOLD –保持信号
  • HLDA –确认
  • DREQ – DMA请求
  • DACK – DMA确认

假设连接到输入输出端口的软盘驱动器要将数据传输到内存,请执行以下步骤:

  • 步骤1:首先,软盘驱动器将向DMAC发送DMA请求(DREQ),这意味着软盘驱动器需要其DMA服务。
  • 步骤2:现在,DMAC将向CPU发送HOLD信号。
  • 步骤3:在接受来自DMAC的DMA服务请求后,CPU将向DMAC发送保持确认(HLDA),这意味着微处理器已经释放了对数据总线到DMAC的地址总线的控制,并且绕过了微处理器/计算机在DMA服务期间。
  • 步骤4:现在,DMAC将向在输入输出端口连接的软盘驱动器e =发送一个确认(DACL)。这意味着DMAC会告诉软盘驱动器为其DMA服务做好准备。
  • 步骤5:现在借助输入输出读取和存储器写入信号,数据从软盘驱动器传输到存储器。

DMAC的模式:

  1. 单模式–在此仅使用一个通道的情况下,意味着仅一个DMAC连接到总线系统。

  1. 级联模式–在使用多个通道的情况下,我们可以进一步级联更多数量的DMAC。