DMA如何卸载处理器/控制器?

时间:2015-03-20 12:45:15

标签: memory-management microcontroller dma microprocessors

我知道DMA充当CPU在内存/外设之间传输数据时被绕过的通道,并且在平均时间内CPU可以执行有用的操作。

但我的问题是......

如果DMA传输正在进行,DMA控制器将获取DATA-BUS,因此,如果CPU需要为任何操作获取/检索数据,则需要访问数据总线,以便将其用于数据总线。 DMA数据传输。那么我们究竟怎么说DMA卸载了CPU呢?

enter image description here

1 个答案:

答案 0 :(得分:4)

当然,他们可能共用一条总线,但将DMA与无DMA比较:

DMA:

Periph ==巴士==> RAM

没有DMA:

Periph ==巴士==> CPU ==总线==> RAM

如果没有DMA,大多数外设都有一个或多个寄存器,CPU必须为每个数据单元(通常为1或4个字节)主动读取这些寄存器。使用DMA,设备可以直接写入RAM而无需CPU做任何事情。确实仍然存在对总线的争用,但并不是CPU确实需要总线的每个操作。此外,某些外设发送或接收数据的速度比总线速度慢,这意味着DMA操作不会填满总线,也为CPU腾出空间。