计算机中的 DMA是什么技术

什么是DMA?

DMA 的全称是 直接内存访问 。它是一种允许计算机中的外部设备 (如硬盘、网卡、声卡、显卡等)不通过中央处理器(CPU) ,直接与内存(RAM) 进行数据读写操作的技术。

你可以把它想象成一个"数据搬运专员"。在没有DMA的情况下,CPU需要亲自处理所有数据的搬运工作,这就像公司CEO亲自去楼下搬打印纸一样,非常浪费其核心能力。

为什么需要DMA?(解决的问题)

在没有DMA的传统程序控制I/O(PIO) 模式下,数据传送的过程是这样的:

  1. 外部设备(如硬盘)准备好数据。
  2. 设备向CPU发出中断请求。
  3. CPU暂停当前的工作。
  4. CPU执行一小段程序(驱动程序),将数据从设备接口的缓冲区一个字节(或一个字)一个字节地读入CPU的寄存器。
  5. CPU再将寄存器中的数据写入内存。
  6. CPU恢复之前被中断的工作。

这个过程存在两个主要问题:

  1. CPU被严重占用:在整个数据搬运过程中,CPU必须全程参与,无法处理其他更重要的计算任务,导致效率低下。
  2. 速度不匹配:高速的CPU需要等待慢速的I/O设备,造成计算资源的巨大浪费。

DMA是如何工作的?

DMA通过一个专门的硬件控制器------DMA控制器(DMAC)------来解决上述问题。其工作流程大致如下:

  1. 发起请求:当设备(如硬盘)需要传输数据时,CPU先对DMA控制器进行初始化设置,告诉它:

    • 数据的源地址(如设备缓冲区地址)
    • 数据的目标地址(内存中的某个位置)
    • 要传输的数据量是多少
  2. 接管总线:设置完成后,CPU就去忙别的任务了。当设备准备好数据后,它会向DMA控制器发送一个请求(DREQ)。

  3. 申请控制权 :DMA控制器接收到请求后,会向CPU发出一个总线占用请求(HOLD),申请接管系统总线的控制权。

  4. 授权与传输 :CPU完成当前总线周期后,会释放总线控制权,并回应一个总线认可(HLDA) 信号。此时,DMA控制器正式接管系统总线。

  5. 直接传输 :DMA控制器开始直接在内存I/O设备之间搬运数据,完全绕开了CPU。

  6. 完成与中断 :当预定数量的数据全部传输完毕后,DMA控制器会向CPU发出一个中断信号(IRQ),通知CPU:"任务已完成"。

  7. 交还控制权:DMA控制器释放总线控制权,CPU重新接管总线。

在整个数据传输过程中,CPU只在开始(初始化)和结束(处理中断)时参与,中间的核心传输阶段完全解放了出来。

DMA的优点

  1. 大幅提升系统效率:解放了CPU,使其可以专注于计算任务,而不是简单的数据搬运,显著提高了整个系统的吞吐量和并行处理能力。
  2. 降低延迟:减少了数据传递的中间环节,加快了数据传输速度。
  3. 降低功耗:CPU不需要频繁地为I/O操作保持活跃状态。

DMA的应用场景

几乎所有需要大量数据传输的现代计算机部件都会使用DMA技术:

  • 磁盘驱动:从硬盘读写文件。
  • 网络适配器:发送和接收网络数据包。
  • 图形卡:将纹理和数据传输到显存。
  • 声卡:播放和录制音频流。
  • 内存之间:甚至在内存的不同区域之间拷贝大量数据(如某些操作系统操作)。

简单来说,DMA就是一个专门负责"搬数据"的协处理器。它让CPU从繁琐的低级I/O操作中解脱出来,去做它最擅长的计算工作,从而极大地提升了计算机的整体性能和效率。这是现代计算机架构中一项至关重要且基础的技术。

相关推荐
嵌入式×边缘AI:打怪升级日志21 小时前
[特殊字符] USBX 学习笔记(基于 Azure® RTOS)
网络
Nick.Q21 小时前
vim插件的管理与离线安装
linux·编辑器·vim
米羊1211 天前
Linux 内核漏洞提权
网络·安全·web安全
运维行者_1 天前
2026 技术升级,OpManager 新增 AI 网络拓扑与带宽预测功能
运维·网络·数据库·人工智能·安全·web安全·自动化
Ar呐1 天前
软考网规篇之局域网——网关冗余技术VRRP
网络·计算机网络
代码的奴隶(艾伦·耶格尔)1 天前
Nginx
java·服务器·nginx
头发还没掉光光1 天前
HTTP协议从基础到实战全解析
linux·服务器·网络·c++·网络协议·http
小白同学_C1 天前
Lab2-system calls && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os
物理与数学1 天前
linux内核 struct super_block
linux·linux内核
Getgit1 天前
Linux 下查看 DNS 配置信息的常用命令详解
linux·运维·服务器·面试·maven