DMA 数据传输的必要性


微型计算机系统基本上由三个模块组成

  • 微处理器
  • 微处理器的存储器,例如 EPROM 和 RAM,以及
  • 它们连接的 I/O 端口。

下面指出了可能的数据传输方式。

  • 存储器和微处理器之间的数据传输是使用 LDA 和 STA 指令进行的。

  • 微处理器和 I/O 端口之间的数据传输也是借助于两个指令 IN 和 OUT 进行的。

  • 通过 DMA 数据传输,数据在输入输出端口和存储器之间传输。

如果用于从内存位置 3456H 读取数据然后写入到输出端口号 50H 的数据传输仅需 13 个时钟周期(使用 LDA 3456H 指令从内存位置 3456H 读取)和 10 个时钟周期(写入到输出端口号 50H),总共 23 个时钟周期。如果处理器以 3MHz 的内部频率工作,时钟周期为 0.33μs,则外部工作时间为 7.66μs 的一小部分。使用程序数据传输方案,读取输入端口 40H 并写入到内存位置输入端口 2345H。

如果我们使用 DMA 数据传输从内存位置 3456H 读取数据并写入到输出端口号 50H,则只需要四个时钟周期,这导致仅需 1.33μs 的一小部分时间。一些设备,如硬盘和软盘,可以以非常快的速度执行数据传输。一个 1.44 MB 的软盘,以 360 rpm 的速度旋转,每磁道 18 个扇区,最多可以存储 512 字节的内存,当数据传输速率达到每秒 54K 字节或大约每字节 19μs 时。硬盘可以轻松地将数据传输速度提高至少十倍。因此,它变成了每字节 1.9μs。当 DMA 数据传输变得必不可少时,情况就是这样。在程序数据传输过程中,我们每字节需要 7.66μs,只有 4 个字节会重复地从硬盘中出来。因此,可以得出结论,I/O 设备在 DMA 数据传输过程中起着重要的作用。

为了获得平均值、最大值和最小值等统计数据,我们使用模数转换器。使用程序数据传输方案,需要 1000 × 7.66 = 7660μs 的处理器时间。但令人惊讶的是,使用 DMA 数据传输方案只需要 1000 × 1.33 = 1330μs 的时间。因此,当需要在内存和 I/O 端口之间传输大量数据时,通过微处理器路由每个字节会花费大量时间,为了缩短时间,I/O 端口可以直接访问内存进行数据传输。此方案称为 DMA 数据传输。

更新于:2019年7月30日

2K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告