直接内存访问如何提高性能

直接内存访问如何提高性能

维基百科上有一篇关于 DMA 的文章说,由于外设和 CPU 共享内存总线,因此必须将 CPU 置于保持状态以防止总线争用,但如果 DMA 机制提高性能的主要方式是让 CPU 可以自由地执行其他任务,那么如果它无法访问 RAM,它又如何执行其他任务呢?这篇维基百科文章总线控制说必须有总线仲裁,其他设备也不能同时访问内存,而另一个设备正在访问它。

那么 DMA 是如何提高性能的呢?

答案1

尝试回答:
根据非常古老的信息、记忆和参考文章的 TLDR,所以请耐心阅读

DMA 的主要思想是使用...进行数据传输。

IO 电路 -> CPU/软件 -> 目的地

被替换为

输入输出电路 -> 目的地

... 这里显示为“输入”,但大多数情况下也可能显示为“输出”。

在 CPU 上运行的软件比“直接内存访问”慢得多 - 这是因为 CPU 必须做两件事;通常对每个字节/字/长度进行获取和存储 - 因此需要至少两次访问数据总线。
相比之下,DMA 通常涉及设置一次传输的模式,以便一次性传输大量数据,“无需干预”。CPU 可能需要等待,因此会有轻微的延迟;取决于“模式”(请参阅​​下面的参考文章)。

当有多个设备能够使用 DMA 时,仲裁就成为必需。

參考文獻:
https://en.wikipedia.org/wiki/Direct_memory_access

相关内容