输入输出控制方式:DMA(直接存储器存取)

适合读者:软考中级备考同学

阅读时间:3.5分钟

内容:DMA工作原理、工作流程、与中断对比、优缺点、例题


1. 为什么需要DMA?

程序查询和中断方式虽然解决了CPU与外设的交互问题,但数据传输过程仍然由CPU执行指令完成(从设备读数据再写到内存)。当需要传输大量数据(如磁盘块、视频流)时,CPU会被频繁中断或忙等,效率低下。

DMA(Direct Memory Access,直接存储器存取) 允许外设绕过CPU,直接与内存进行数据交换,传输过程不需要CPU参与,从而解放CPU执行其他任务。


2. DMA的基本原理

  • DMA控制器:一个独立的硬件模块,负责管理外设与内存之间的数据传输。
  • 工作流程
    1. CPU设置DMA控制器:告诉它数据源地址、目标地址、传输字节数、传输方向(读/写)。
    2. DMA控制器接管总线,直接在外设和内存之间传输数据。
    3. 传输完成后,DMA控制器向CPU发送中断,通知传输结束。

在DMA传输期间,CPU可以继续执行其他程序(除非总线被DMA占用,CPU需等待,但时间很短)。


3. DMA工作流程详解

3.1 初始化阶段(CPU参与)

  • CPU向DMA控制器写入以下参数:
    • 内存起始地址(缓冲区地址)
    • 外设地址(如设备的数据寄存器端口)
    • 传输字节数
    • 传输方向(内存→外设 或 外设→内存)

3.2 传输阶段(DMA独立完成)

  • DMA控制器向CPU申请总线控制权(通过总线请求信号)。
  • CPU释放总线控制权,DMA控制器接管总线。
  • DMA控制器在总线上传送数据:从外设读取数据写入内存,或从内存读取数据发送给外设。
  • 每传输一个字节,内存地址加1,字节计数器减1,直到计数器为0。

3.3 结束阶段

  • DMA控制器释放总线控制权,交还给CPU。
  • DMA控制器向CPU发送中断请求,通知传输完成。
  • CPU响应中断,进行后续处理(如通知程序数据已就绪)。

4. DMA传输方式(CPU与DMA的关系)

方式 描述 特点
停止CPU访问 DMA时CPU完全停止访问内存 简单,但CPU效率低
周期窃取 DMA在每个时钟周期末尾占用一个内存周期,CPU暂停一个周期 常用,CPU延迟小
交替访存 内存工作周期分为两部分,CPU和DMA交替使用 硬件复杂,效率高

软考通常默认DMA采用周期窃取方式。


5. DMA vs 中断方式

对比项 中断方式 DMA方式
数据传输单位 一个字(或一个字节) 一个数据块
数据传送路径 外设 → CPU → 内存 外设 ↔ 内存(直接)
CPU参与度 每个数据需CPU执行传输指令 初始化后CPU不参与
中断次数 每次传输一个字都中断 整个块传输完才中断一次
适用场景 少量、随机数据(如键盘输入) 大量、连续数据(如磁盘读写)
硬件复杂度 较低(需要中断控制器) 高(需要DMA控制器)
传输速度 慢(受限于CPU指令执行) 快(直接硬件传输)

6. DMA的优点与缺点

6.1 优点

  • 解放CPU:大块数据传输无需CPU参与,CPU可与DMA并行工作。
  • 传输速度快:硬件直接控制总线,不受CPU指令速度限制。
  • 减少中断次数:整个块传输只需一次中断,降低CPU中断开销。

6.2 缺点

  • 硬件复杂:需要专用的DMA控制器。
  • 总线竞争:DMA占用总线时,CPU可能短暂等待(周期窃取)。

7. 软考常见考点与例题

题目1 :以下关于DMA方式的描述,正确的是( )。

A. DMA传输过程中CPU完全停止工作

B. DMA传输每个字节都需要CPU干预

C. DMA控制器可以直接访问内存

D. DMA传输完成后不会产生中断

答案:C(A错,DMA采用周期窃取,CPU仍可部分工作;B错,DMA独立传输;D错,传输完成会产生中断)


题目2 :与程序中断方式相比,DMA方式的主要优点是( )。

A. 硬件简单

B. 适用于单个字符的输入输出

C. 传输大块数据时CPU负担轻

D. 响应速度快

答案:C


题目3(计算):某计算机采用DMA方式从磁盘读入一个4KB的数据块到内存。磁盘每传输一个字节需0.5μs,DMA初始化需2μs,中断处理需3μs。若没有DMA,CPU用中断方式每字节需5μs处理时间。问DMA方式节省了多少CPU时间?

  • 数据块大小:4KB = 4096字节。
  • 中断方式CPU总时间 = 4096 × 5 = 20480 μs。
  • DMA方式CPU时间 = 初始化2μs + 中断处理3μs = 5μs(传输过程CPU不参与)。
  • 节省时间 = 20480 - 5 = 20475 μs。

答案:约20475 μs


题目4 (概念判断):DMA控制器在传输数据时,必须先向CPU申请总线控制权。( )

答案:正确(DMA需获得总线控制权才能直接访存)


8. 记忆口诀

DMA直接访内存,CPU初始化后腾。
块传完成发中断,周期窃取效率升。
适合大量连续数,硬件复杂速度快。


9. 给备考同学的一句话

DMA是I/O控制方式中效率最高的一种,软考主要考查:

  • 与中断方式的区别(传输单位、CPU参与度、中断次数)
  • 工作流程:初始化 → 请求总线 → 传输 → 中断
  • 适用场景:大量、连续数据传输(磁盘、网卡、显卡)

记住DMA的特点:直接、块传、少中断,选择题中看到"大块数据"、"磁盘"、"无需CPU干预"等关键词,一般选DMA。


🔔 本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅

#软考中级 #软件设计师 #DMA #直接存储器存取 #I/O控制方式 #计算机系统知识

相关推荐
知无不研1 小时前
对套接字的深入理解
linux·服务器·网络·c++·socket·网络套接字
xyzzklk1 小时前
解决Salesforce无法向外发送邮件
android·java·开发语言·网络·crm·salesforce·客户关系管理
cuso4win2 小时前
Feed 流面试笔记
笔记·面试·职场和发展
珠***格4 小时前
实操落地|防逆流装置的安装规范、调试标准与故障处置
网络·数据库·人工智能·分布式·能源·边缘计算
GNG4 小时前
《终身成长》读书笔记
笔记·学习
国科安芯4 小时前
国科安芯推出商业航天级抗辐照全双工 RS485/422 收发器 ASC491S2Y
网络·分布式·单片机·架构·安全性测试
浮芷.5 小时前
鸿蒙PC端 TTS 网络连接错误问题详解:在线/离线模式切换与网络状态管理
网络·华为·开源·harmonyos·鸿蒙·鸿蒙系统
雪度娃娃5 小时前
ASIO异步通信——多线程模型
开发语言·网络·c++·php
luj_17685 小时前
残熵算法:风险缓冲与效率优化的融合
c语言·开发语言·网络·经验分享·算法