DMA控制器(直接内存访问控制器)是计算机系统中一种重要的专用硬件芯片(或集成在CPU/芯片组中的模块),它的核心作用是在特定外设(比如硬盘、网卡、显卡、声卡)和系统主内存之间直接传输数据,而无需中央处理器(CPU)的持续干预。
以下是关于DMA控制器关键点的详细说明:
-
核心目的:解放CPU,提高效率
- 在传统的程序控制I/O(PIO)模式下,CPU需要亲自执行指令来读取外设数据再写入内存,或者读取内存数据再写入外设(例如
in和out指令)。 - 这种方式会大量占用CPU时间,尤其是在传输大量数据(如磁盘读写、网络包收发、图形显示数据)时,CPU效率极低。
- DMA控制器就是为了解决这个问题而生的。它像一个“数据搬运工”,接过数据搬运的脏活累活。
- 在传统的程序控制I/O(PIO)模式下,CPU需要亲自执行指令来读取外设数据再写入内存,或者读取内存数据再写入外设(例如
-
核心工作原理:接管总线,直接传输
- 发起请求: 当外设准备好需要传输数据时(例如硬盘读取了一个扇区),它会向DMA控制器发出一个DMA请求信号。
- 仲裁总线: DMA控制器接收到请求后,会向CPU发出一个总线请求信号,请求暂时接管系统总线(地址总线、数据总线、控制总线)的控制权。
- CPU回应: CPU在当前总线周期结束时,如果允许总线出让,会向DMA控制器发出一个总线授权信号,并暂时挂起(或执行与总线无关的内部操作),交出总线控制权。
- DMA传输: DMA控制器获得总线控制权后:
- 向内存发送读写控制信号。
- 在地址总线上放置要读写的内存地址。
- 在数据总线上传输来自(或送往)外设的数据。
- 控制传输的字节(或数据块)计数。
- 传输完成/中断: 当DMA控制器完成了预定数量(由CPU初始化设定)的数据传输后:
- 它会释放总线控制权(撤销总线请求)。
- 向CPU发出一个中断请求信号,通知CPU数据传输已完成。
- CPU恢复: CPU收回总线控制权,恢复正常执行。如果收到中断,会执行相应的中断服务程序进行后续处理(例如处理接收到的网络包)。
-
关键要素(初始化过程):
- 源地址: 数据从哪里来?(内存地址还是I/O端口地址?)
- 目标地址: 数据到哪里去?(内存地址还是I/O端口地址?)
- 传输方向: 内存到外设(写操作),还是外设到内存(读操作)?
- 传输大小: 需要传输多少字节(或数据块数量)?
- 传输模式: 单字节模式、块传输模式、请求传输模式、级联模式等。
- 这些信息通常由CPU在执行I/O操作前,通过向DMA控制器写入特定的寄存器来设置(编程)。
-
主要优点:
- 显著降低CPU占用率: CPU只在传输开始和结束时参与(初始化和中断处理),传输过程完全由DMA硬件完成,极大地释放了CPU资源。
- 提高系统吞吐量和效率: CPU可以并行处理其他计算任务,同时数据在后台高效传输。
- 提高数据传输速率: DMA通常能以接近系统总线带宽的速度进行传输。
- 适用于高速设备: 对硬盘、高速网络接口卡(NIC)、图形卡、音频设备等需要大量数据传输的外设至关重要。
-
应用场景:
- 硬盘读写(IDE/SATA/AHCI控制器、NVMe控制器内部都集成或利用PCIe总线上的DMA)。
- 网络数据包收发(网卡控制器)。
- 图形数据写入显卡显存。
- 声卡播放或录制音频流。
- 内存到内存的快速复制(某些高级DMA控制器支持)。
- 许多其他需要高速数据传输的I/O设备。
-
本质区别:
- DMA控制器 vs. CPU搬运: DMA是硬件直接搬运,CPU是软件执行指令搬运。
- DMA控制器 vs. I/O处理器(如GPU): DMA专注于简单的数据移动(搬砖);更复杂的I/O处理器(如某些高端网卡上的处理器、GPU)不仅搬运数据,还能执行特定计算任务(如网络协议处理、图形渲染)。
总结:DMA控制器是现代计算机架构中提升I/O性能的核心部件。它通过硬件接管CPU的数据搬运工作,在内存和外设(或内存之间)之间建立直接的高速数据通道,最大限度地释放CPU计算能力,保证系统整体高效运行。
dma控制器的组成
一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加DMA机构组成。习惯上将DMA方式的接口电路称为DMA控制器。
2019-04-01 16:08:06
请问DMA控制器可以减轻CPU负担吗?
直接存储器访问 ( DMA )控制器,可以在内存和/或外设之间传输数据,而不需要 CPU 参与每次传输。合理利用 DMA 控制器,可以减轻CPU的负担。
2024-03-28 09:41:01
ZYNQ开发案例之DMA控制器系统设计
断给中断控制器; 5. 拥有8个DMA触发事件并且可以编码控制; 6. 128个(64bit)的MFIFO,在传输的时候读写端可写入到此FIFO; 7. 支持任意内存到内存的传输; 整个系统中的DMA
2020-12-05 10:17:17
浅析DMA控制器与FSMC控制器
直接存储器存取DMACPU太忙了,那DMA你来帮我吧,这样很多事情CPU就不用停下来去管了。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈
可口可甜
2021-12-09 06:00:30
通过DMA控制器进行介质访问控制
通过 DMA 控制器进行介质访问控制 (MAC)STM32F4xx系列控制器内部集成了一个以太网外设,它实际上是一个通过DMA控制器进行介质访问控制(MAC),它的功能就是实现MAC 层的任务。借助
费加罗
2021-08-13 08:47:19
使用STM32F101xx和STM32F103xx DMA控制器
这篇应用笔记描述了怎么使用STM32F101xx和STM32F103xx的直接内存访问(DMA)控制器。STM32F101xx和STM32F103xx DMA控制器、Cortex-M3内核、先进
2022-12-23 11:42:28
stm32的dma控制器有多少个通道
stm32的dma控制器有多少个通道,DMA简介直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU
csw_ying
2021-08-05 07:29:16
使用STM32F101xx和STM32F103xx的DMA控制器
这篇应用笔记描述了怎么使用STM32F101xx 和 STM32F103xx的直接存储器访问(DMA)控制器。STM32F101xx和STM32F103xx的DMA控制器、CortexTM-M3内核
K_Ming
2023-10-10 08:20:48
DMA控制器是如何将数据从ADC12转换内存移动到RAM上的
DMA控制器模块的特点有哪些?DMA控制器是如何将数据从ADC12转换内存移动到RAM上的?
最强海贼王
2022-02-11 07:37:08
OMAP5910的DMA控制器进行通用功能传输时的特点是什么?
OMAP5910实时图像系统中的DMA数据传输,看完你就懂了OMAP5910的DMA控制器进行通用功能传输时的特点是什么?
hy381
2021-05-28 07:02:24
怎样使用DMA控制器来实现串口通信呢
本文在前两篇USART串口通信的基础上,使用DMA控制器来实现串口通信文章目录一、DMA1.DMA简介2.DMA主要特性3.部分代码原理二、实验代码三、实验结果四、总结五、参考资料一
uwjfisgw
2022-02-22 07:00:29
怎么使用DMA控制器通过UART发送数据?
嗨,我第一次尝试使用DMA。到目前为止还没有成功。我试图让我的应用程序尽可能简单,如果我开始运行它,我可以在它上面建立。我想使用DMA控制器通过UART将缓冲区(5字节)传送到我的PC。我花了一些
旅客功夫
2019-09-30 13:02:22
PrimeCellµ DMA控制器(PL230)技术参考手册
µDMAC是一种符合高级微控制器总线架构(AMBA)的片上系统(SoC)外围设备,由ARM开发、测试和许可。 它是一个非常低的门计数DMA控制器,与AMBA AHB Lite协议兼容
hdfsf
2023-08-02 15:36:45
ZNEO CPU 上的 DMA 控制器特性分析
本应用笔记介绍了 ZNEO CPU 中的 DMA 控制器及其突出的特性,例如 DMA 和 CPU 带宽共享控制以及四个独立的 DMA 通道。本文档还描述了 DMA 模式,以及它的软件实现和应用程序
2021-06-21 17:28:25
CKS32F107xx系列的DMA控制器简介
直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道
2025-02-18 17:24:46
怎么实现8237 DMA控制器中使用的优先级编码器
大家好,我正在尝试实现8237 DMA控制器中使用的优先级编码器,它使用Verilog工作在固定和旋转优先模式,但是在行为模拟输出仅在第一个周期生成并且无论应用什么值都保持不变。我附加生成的波形
ccuu
2019-04-24 13:36:44
请问STM32F4以太网所用的DMA控制器和DMA1、DMA2是一回事吗?
原子大哥和各位大神,我想问一下,1、STM32F407以太网所用的DMA控制器和和DMA1、DMA2控制器是一回事吗?2、为什么我在看DMA1、DMA2请求映射(STM32F4xx中文参考手册)时找不到关于以太网的请求?
Dreamyjia
2019-07-24 22:59:34
意法半导体STM8L050低成本8引脚内集成丰富的模拟外设和DMA控制器
意法半导体推出了全新的8位微控制器STM8L050的推出,以提升低成本、低功耗8位微控制器(MCU)的功能集成度。作为超高能效的STM8L系列的产品,STM8L050在低成本的SO-8封装基础上,集成了多达6个用户I/O接口的丰富的模拟外设、DMA控制器和独立的数据EEPROM。
2024-01-18 15:46:10
dma控制器是什么_dma控制器工作方式
DMA(Direct Memory Access)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来 执行传输的。
2019-11-15 10:25:56
STM32的DMA的五大问题
1,DMA控制器的内部结构STM32中的DMA控制器是一种用于在外设和存储器之间传输数据的专用硬件。DMA控制器的内部结构主要包括以下几个关键部分:通道:DMA控制器可以有多个通道,每个通道独立管理
2023-12-10 08:00:56
雅特力AT32F423 DMA使用指南
DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道。每个
2024-02-22 08:13:55
AT32讲堂049 | 雅特力AT32F435/437 DMA使用指南
DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道。每个
2023-03-31 11:04:08
雅特力AT32F402/F405 DMA使用指南
DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储器,存储器到外设和外设到存储器的传输提供了7个通道。每个
2024-11-20 01:03:39
利用STM32系列丰富的外设资源来外扩SRAM芯片
具有高达2MB的嵌入式闪存,在某些设备上具有读-写功能。两个用于以太网的通用DMA控制器和专用DMA控制器(在某些变型中),高速USB On-The-Go接口和Chrom-ART图形加速器(在某些变型中)。
2022-11-18 15:56:26
AVR32 MCU上的ABDAC外设音频播放设计
ABDAC 可以连接到设备上的 DMA 控制器。在将数据从 RAM 中的缓冲区传输到 ABDAC 时,这将减轻 CPU 的负担。应用程序只需要填充缓冲区并将缓冲区地址传递给 DMA 控制器。
2022-08-16 11:36:06