DMA概述
1、什么是DMA
直接内存访问 (Direct Memory Access ,DMA) 单元是计算机体系结构中的数字逻辑元件,可与同一芯片上的主微处理器结合使用,以卸载内存传输操作。 这显着降低了 CPU 负载。 由于 DMA 控制器可以执行内存到内存的数据传输以及外围设备到内存的数据传输,反之亦然。 DMA 与 CPU 的存在可以将其吞吐量提高几个数量级。
在无 DMA 计算机体系结构中,就会发现它看起来像下图所示的样子:
正如上图所示,CPU(主处理器)必须完成从闪存获取指令(代码)、执行解码指令以及将数据移入和移出外围设备和内存的所有工作。想象一下有一个 UART1 数据接收器,它获取数据流,CPU 必须立即将数据流传输到内存中的本地缓冲区,以免丢失任何数据包。这转化为每秒由 UART、SPI、ADC 等不同外设触发的疯狂数量的中断。 CPU 必须处理所有事情并浪费越来越多的时间。
将上下文切换到中断处理程序和从中断处理程序切换上下文会占用一些完全浪费的周期,并且随着中断信号的持续触发而定期发生,这一事实在一定程度上使这种架构存在问题。拥有 10kB/s 的数据流可能会使没有 DMA 的 CPU 变得如此繁忙并错过应用程序的时序约束。 CPU 可以被看作是被抑制了,为了释放它的全部工作
|