计算机中的 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操作中解脱出来,去做它最擅长的计算工作,从而极大地提升了计算机的整体性能和效率。这是现代计算机架构中一项至关重要且基础的技术。

相关推荐
折哥的程序人生 · 物流技术专研1 天前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
c238561 天前
Linux C++ 进度条进阶美化与工程化封装
linux·运维·服务器
李小白661 天前
第四天-WEB服务器基本原理,IIS服务
运维·服务器·前端
专注VB编程开发20年1 天前
c#Modbus上位机开发-一次读10个地址和100个地址速度一样
网络·网络协议·tcp/ip
爱喝水的鱼丶1 天前
SAP-ABAP:SAP视图开发入门:四类标准视图的适用场景与创建步骤详解
服务器·数据库·性能优化·sap·abap
凡人叶枫1 天前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法
RisunJan1 天前
Linux命令-pgrep (通过进程名查找进程 ID)
linux·运维
2601_961963381 天前
技术解剖:哈希值、区块链与CA认证如何守护电子合同安全?
网络·人工智能·安全·区块链·智能合约·政务
2601_961963381 天前
从“电子化”到“自动化”:2026年智能合约与电子合同融合的技术逻辑与法律适配
网络·人工智能·区块链·智能合约·政务
回忆2012初秋1 天前
【Nginx】优雅地走进高性能 Web 服务器世界(1)
服务器·前端·nginx