DMA详解:让数据传输“甩掉”CPU的搬运工

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习

🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发

❄️作者主页:一个平凡而乐于分享的小比特的个人主页

✨收录专栏:操作系统,本专栏为记录项目中用到的知识点,以及一些硬件常识总结

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

DMA详解:让数据传输"甩掉"CPU的搬运工

一、什么是DMA?

DMA(Direct Memory Access,直接内存访问) 是一种允许硬件子系统直接读写系统内存的技术,无需中央处理器(CPU)的介入。可以把它想象成一个"专业的快递员",能够自主地在内存和设备之间搬运数据,而不需要"老板"(CPU)亲自处理每一个包裹。

传统传输 vs DMA传输对比

对比维度 传统CPU传输 DMA传输
CPU参与度 全程参与,每个字节都需要CPU处理 只需初始设置,传输过程不参与
传输速度 较慢(受CPU指令周期限制) 较快(硬件直接传输,无指令开销)
CPU占用率 高(传输期间CPU无法处理其他任务) 低(CPU可同时执行其他计算任务)
系统效率 低(串行处理,数据传输阻塞计算) 高(并行处理,计算与传输同时进行)
适用场景 小量、零星数据传输 大量、连续、高速数据传输

二、DMA工作原理图解

复制代码
传统CPU传输流程:
┌─────────┐    读取指令    ┌─────────┐    读取数据    ┌─────────┐
│  设备   │ ────────────> │   CPU   │ ────────────> │  内存   │
└─────────┘              └─────────┘              └─────────┘
      传输完成通知 │              │ 写入指令
                  └───────────────┘

DMA传输流程:
┌─────────┐                            ┌─────────┐
│  设备   │ ──────────────────────────> │  内存   │
└─────────┘       直接传输              └─────────┘
        ↑                                ↑
        │                                │
    ┌─────┐         控制信号         ┌─────┐
    │DMA  │<────────────────────────>│CPU  │
    │控制器│      (仅初始设置)       │     │
    └─────┘                          └─────┘

DMA工作三阶段:

  1. 初始化阶段:CPU设置DMA控制器(源地址、目标地址、传输长度)
  2. 传输阶段:DMA控制器自主完成数据传输,CPU可执行其他任务
  3. 完成阶段:DMA传输完成后,通过中断通知CPU

三、什么时候使用DMA?

1. 高速外设数据传输

  • 场景示例:从固态硬盘(SSD)加载大型游戏文件
  • 为何需要DMA:SSD读取速度可达3-5GB/s,若用CPU逐字节搬运,会导致系统完全卡顿
  • 实际效果:游戏加载时,CPU仍能处理音频、输入响应等任务

2. 实时音视频处理

  • 场景示例:网络视频会议
  • 数据流:摄像头采集 → 内存 → 编码压缩 → 网络发送
  • DMA作用:摄像头数据通过DMA直接存入内存,不占用CPU资源,确保视频流畅不卡顿

3. 网络数据包处理

  • 场景示例:千兆/万兆网络数据传输
  • 传统方式问题:1Gbps网络每秒产生约80万个数据包,CPU处理每个包需要数百条指令
  • DMA方案:网卡通过DMA直接将数据包放入内存,CPU批量处理,效率提升数十倍

4. 图形渲染与显示

  • 场景示例:4K视频播放
  • 数据量:4K@60fps ≈ 12Gbps 原始数据
  • DMA应用:GPU通过DMA直接从内存获取纹理和帧数据,CPU仅负责解码控制

四、DMA使用场景详细对比表

应用领域 具体场景 无DMA的问题 使用DMA的收益
存储系统 文件复制/备份 CPU占用率>80%,系统卡顿 CPU占用<10%,可正常使用其他应用
多媒体 音频录制与播放 音频断断续续,有杂音 流畅播放,音质稳定
网络通信 大文件下载 下载时网页都无法打开 下载同时可游戏、视频
工业控制 传感器数据采集 数据丢失,控制延迟 实时采集,精确控制
科学计算 高速数据采集卡 采样率受限,数据不连续 实现高速连续采集

五、深入理解:咖啡店比喻

想象一家咖啡店:

无DMA(传统CPU传输):

  • 顾客(设备)点单 → 服务员(CPU)记录 → 服务员走到吧台 → 告诉咖啡师 → 等待制作 → 端给顾客
  • 问题:一个服务员只能服务一桌,其他顾客需长时间等待

有DMA(DMA传输):

  • 顾客(设备)点单 → 传菜员(DMA控制器)记录并传递 → 服务员(CPU)只需初始安排传菜员
  • 优势:服务员可同时服务多桌,处理复杂需求;传菜员专注送单,效率大增

六、技术实现简析

DMA控制器关键组件:

  1. 地址寄存器:存放源地址和目标地址
  2. 计数寄存器:记录待传输数据量
  3. 控制寄存器:配置传输方向、模式等
  4. 状态寄存器:显示传输状态和错误信息

DMA传输模式:

  • 单次传输:每次请求传输一个字节/字
  • 块传输:连续传输整个数据块
  • 请求传输:设备就绪时持续传输
  • 级联模式:多个DMA控制器协同工作

七、DMA的局限性与注意事项

  1. 缓存一致性问题:DMA直接访问物理内存,可能绕过CPU缓存,需特殊处理
  2. 安全问题:恶意设备可能通过DMA访问敏感内存区域
  3. 配置复杂性:需要正确设置内存地址、缓冲区对齐等参数
  4. 系统资源占用:DMA期间总线被占用,可能影响其他设备

总结

DMA是现代计算机系统中的"隐形英雄",它通过卸载 CPU的数据搬运工作,实现了计算与传输的并行化,大幅提升系统整体性能。从日常的U盘拷贝到专业的视频编辑,从智能手机到超级计算机,DMA技术无处不在,是构建高效计算系统的基石技术之一。

简单记忆 :DMA = D on't M icromanage All(不要事必躬亲),让专业硬件做专业的事,CPU专注核心计算!

相关推荐
清月电子1 天前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
智嵌电子1 天前
【笔记篇】【硬件基础篇】模拟电子技术基础 (童诗白) 第10章 模拟电子电路读图
笔记·单片机·嵌入式硬件
一颗青果1 天前
51单片机 计算指令
单片机·嵌入式硬件·51单片机
一路往蓝-Anbo1 天前
【第20期】延时的艺术:HAL_Delay vs vTaskDelay
c语言·数据结构·stm32·单片机·嵌入式硬件
Aaron15881 天前
AD9084和Versal RF系列具体应用案例对比分析
嵌入式硬件·算法·fpga开发·硬件架构·硬件工程·信号处理·基带工程
LCG米1 天前
低功耗设计艺术:基于STM32U3系列MCU实现人类存在检测(仅6%占空比)
stm32·单片机·嵌入式硬件
电子工程师-C511 天前
基于51单片机的智能调温淋浴器
单片机·嵌入式硬件·51单片机
国科安芯1 天前
RISC-V 异常中断机制全解析
运维·单片机·嵌入式硬件·安全·risc-v·安全性测试
猪八戒1.01 天前
STM32F407 systick延迟
stm32·单片机·嵌入式硬件