DMA技术

目录

前言

[1. DMA简介](#1. DMA简介)

[2. DMA 的核心工作流程与优势](#2. DMA 的核心工作流程与优势)

2.1工作流程

2.2优势

潜在挑战

[3. DMA 的三种工作模式](#3. DMA 的三种工作模式)


前言

DMA(Direct Memory Access,直接存储器访问)是计算机科学中一个至关重要的概念,特别是在嵌入式系统、高频交易和高性能计算领域。简单来说,它就像是给计算机雇了一个"搬运工",让 CPU 从繁琐的数据搬运工作中解脱出来,但一般不用在FPGA中,因为FPGA可以并行处理。但像Zynq(PS + PL)中会用到DMA。本文将对DMA技术进行介绍。

1. DMA简介

DMA 是一种允许外设(如网卡、显卡、磁盘、ADC 等)直接与系统内存(RAM)进行数据交换的机制,而无需 CPU 的全程干预。

在没有 DMA 的年代,数据交换采用 PIO(Programmed I/O) 模式:

  • CPU 发出读取指令。

  • CPU 等待外设准备好数据。

  • CPU 将数据读入寄存器。

  • CPU 将数据从寄存器写入内存。

    该模式流程如图1-1所示*。结果:* 大量 CPU 时钟周期被浪费在单纯的"搬运"上。

图 1-1PIO模式流程图

2. DMA 的核心工作流程与优势

2.1工作流程

DMA 的操作通常分为四个阶段:

  • 初始化: CPU 通过设置 DMA 控制器的寄存器(源地址、目的地址、传输数据量、控制字等)来"下达任务"。

  • 请求(DMA Request): 外设准备好数据后,向 DMA 控制器发送请求信号。

  • 接管总线(Bus Arbitration): DMA 控制器向 CPU 申请总线控制权(Hold)。CPU 完成当前总线周期后释放总线(HLDA),由 DMA 接管。

  • 数据传输: DMA 直接控制地址总线和数据总线,完成内存与外设间的数据移动。

  • 结束(Interrupt): 传输完成后,DMA 控制器向 CPU 发起中断,告知"活儿干完了"。

该流程如图2-1所示。
图 2-1 DMA控制器的五个关键阶段

将传统的CPU搬运方式和DMA架构方式做对比,如图2-2所示。
图 2-2 DMA工作原理对比

2.2优势

DMA搬运数据具有以下优势:

  • 提升 CPU 效率: CPU 可以并行处理逻辑运算,而不是卡在 I/O 等待上。

  • 提高吞吐量: 数据路径更短,减少了寄存器中转带来的延迟。

  • 低功耗: 在某些应用中,可以让 CPU 进入睡眠模式,只留 DMA 在搬运传感器数据。

潜在挑战

  • 缓存一致性(Cache Coherency): DMA 直接改写了内存,但 CPU 的 Cache 里可能还是旧数据。这需要硬件维护一致性或软件进行 Invalidate/Flush 操作。

  • 总线竞争: 如果 DMA 占用总线太久,会造成 CPU "饥饿"。

3. DMA 的三种工作模式

根据对总线占用方式的不同,DMA 有以下三种常见模式:

模式 描述 优缺点
停止 CPU 访问 (Burst Mode) DMA 一旦获得总线,就连续传输完所有数据才释放。 快,但传输期间 CPU 被完全挂起,实时性差。
周期挪用 (Cycle Stealing) 每次 DMA 只传输一个字/字节就归还总线,等下一个请求再申请。 对 CPU 影响小,但总线申请开销大,适合慢速外设。
透明模式 (Transparent Mode) 仅在 CPU 不使用总线(如译码阶段)时才偷偷传输。 对 CPU 完全透明,但电路设计极其复杂且传输效率不可控。

以上就是本次笔记的内容。

相关推荐
国科安芯1 小时前
无方向脚如何既快又稳:ASC0101S 自动方向感应机理与边沿加速应用研究
网络·嵌入式硬件·低轨卫星·商业航天·抗辐射
额额额对了1 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
zcmodeltech1 小时前
沙盘模型控制系统STM32和PLC方案对比:选型逻辑与代码实现
stm32·嵌入式硬件·自动化
HQB20262 小时前
EG11731|屹晶微电子 100V 内置功率管大电流同步降压 DC‑DC
嵌入式硬件·硬件工程
2501_922639582 小时前
率能半导体 SS6209L半桥MOSFET驱动器:28V/4A集成方案,覆盖电子烟、无线充电、半桥应用三大场景
单片机·嵌入式硬件·硬件工程
HQB20262 小时前
EG1192S|屹晶微电子 100V 内置 MOS 异步降压 DC‑DC(零功耗使能)
嵌入式硬件·硬件工程
沐欣工作室_lvyiyi3 小时前
基于单片机的货物物流轨迹监测系统设计(论文+源码)
单片机·嵌入式硬件·腾讯云·云平台·货物物流轨迹监测
Lxx_Zw4 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·stm32·单片机·嵌入式硬件
逐光者9335 小时前
四位加法器:从半加器到全加器的数字电路设计详解
嵌入式硬件
老当益壮梁奶奶6 小时前
驱动学习(二):从零开始:驱动工程搭建与字符设备驱动框架详解(基于IMX6ULL)
c语言·arm开发·驱动开发·嵌入式硬件·学习