📜  直视存储管(1)

📅  最后修改于: 2023-12-03 15:40:59.930000             🧑  作者: Mango

直视存储管

介绍

直视存储管(Direct Memory Access,简称 DMA)是一种直接访问主存的技术,用于在系统中实现高速数据传输,一般应用于存储器到外设的数据传输。DMA 处理器可以从 I/O 设备直接读取或写入数据而不需要 CPU 的干预,从而大幅度降低了 CPU 的占用率,提高了数据传输的速度和效率。

在计算机体系结构中,有一种传统的架构设计叫做 Input/Output System(I/O System),它主要由 CPU、内存和 I/O 设备三部分组成。当 I/O 设备需要与内存交换数据时,CPU 需要完成以下操作:

  1. 从应用程序中读取数据;
  2. 把数据复制到内核地址空间中;
  3. 把数据从内核地址空间中复制到 I/O 端口。

这个过程中,CPU 参与了两次拷贝,非常耗费时间和资源。直视存储管的引入,就是为了解决这个问题。

工作原理

DMA 存在的目的就是为了从数据源快速的传输数据到目标地址,其中包含以下步骤:

  1. 程序通过 CPU 发出 DMA 的请求;
  2. DMA 负责控制总线并直接从主存中读取数据;
  3. DMA 往下一个目标地址写入刚刚从主存中读取的数据;
  4. DMA 不断循环以上两个步骤,直到完成所有的数据传输。

CPU 可以轻易地将需要 DMA 部件进行的任务加入到缓冲区中,然后即时返回到取得缓冲区的程序中,以便 CPU 可以继续其它任务。在整个 DMA 过程中,CPU 只需进行一次初始化,然后就可以选择等待 DMA 完成,或者继续执行其它程序。

应用场景

DMA 被广泛应用于发送数据包、接收数据包、磁盘 I/O、音频采集、视频采集等场景。其中,它最常见的用途是在网络传输协议中,支持高速的数据传输。

总结

通过本文的介绍,我们了解了直视存储管技术的原理、工作方式和应用场景。相较于传统的 I/O System 架构,DMA 可以降低 CPU 占用率、提高数据传输速度和效率,使得计算机系统更加高效稳定。