输入输出控制方式:DMA(直接存储器存取)
适合读者:软考中级备考同学
阅读时间:3.5分钟
内容:DMA工作原理、工作流程、与中断对比、优缺点、例题
1. 为什么需要DMA?
程序查询和中断方式虽然解决了CPU与外设的交互问题,但数据传输过程仍然由CPU执行指令完成(从设备读数据再写到内存)。当需要传输大量数据(如磁盘块、视频流)时,CPU会被频繁中断或忙等,效率低下。
DMA(Direct Memory Access,直接存储器存取)允许外设绕过CPU,直接与内存进行数据交换,传输过程不需要CPU参与,从而解放CPU执行其他任务。
2. DMA的基本原理
- DMA控制器:一个独立的硬件模块,负责管理外设与内存之间的数据传输。
- 工作流程:
- CPU设置DMA控制器:告诉它数据源地址、目标地址、传输字节数、传输方向(读/写)。
- DMA控制器接管总线,直接在外设和内存之间传输数据。
- 传输完成后,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控制方式 #计算机系统知识
