输入输出控制方式: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控制方式 #计算机系统知识

相关推荐
小李不想当小白27 分钟前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
boxiansheng1632 小时前
408计算机网络
网络·计算机网络·智能路由器
2601_965384262 小时前
口腔黏膜清洁的工程化路径:从表面形貌表征到清洁策略匹配
经验分享·笔记
泡泡鱼(敲代码中)3 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
闲云野鹤在人间3 小时前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php
orange....3 小时前
VMware 双网卡配置:宿主机切换网络时 Ubuntu 固定 IP 访问方案
网络·ubuntu·网络安全
yi碗汤园4 小时前
MQTT消息队列遥测传输协议
网络·网络协议·unity
Hotchip_MEMS4 小时前
传统咪头与MEMS硅麦:雾化器气流传感方案对比
人工智能·笔记·物联网·电脑·制造
志尊宝4 小时前
Vue3 零基础每日笔记(040):Vite 创建 Vue3 + TS 项目——企业标配从这一篇开始
笔记·vue·html·前端开发·软件开发
水云桐程序员5 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算