-
DMA 的核心作用
DMA(Direct Memory Access,直接存储器访问)的核心作用是减轻 CPU 在数据传输过程中的负担,实现外设与内存之间或内存与内存之间的高速、成块数据传输。传统 I/O 传输方式(如程序查询和中断控制)需要 CPU 参与每一个数据的读写操作,效率低下。而 DMA 允许在不经过 CPU 的情况下,由专用硬件——DMA 控制器(DMAC)直接管理数据流动。CPU 仅在传输开始前进行初始化设置(如源地址、目标地址、传输长度),并在传输结束后通过中断获知完成状态,从而大幅提升系统整体性能。 -
DMA 的传送流程
以典型架构为例,DMA 数据传输流程如下(共4步): -
外设请求:当外设(如硬盘、网卡)准备好数据传输时,向 DMA 控制器发出 DMA 请求信号(DREQ);
-
DMAC 请求总线:DMA 控制器接收到请求后,向 CPU 发出总线请求信号(HOLD),要求获取系统总线(地址总线、数据总线、控制总线)的控制权;
-
CPU 响应并释放总线:CPU 在完成当前总线周期后,回应 HLDA(Hold Acknowledge)信号,将总线置于高阻态,暂时放弃对总线的控制;
-
DMAC 控制传输:DMA 控制器获得总线控制权后,代替 CPU 直接协调外设与内存之间的数据交换,每传输一个数据单元自动更新地址和计数器,直到整块数据传输完毕。结束后,DMAC 释放总线,并可向 CPU 发送中断通知任务完成。
该知识点的定位
DMA 是计算机 I/O 子系统中关键的数据传输机制之一,属于 I/O 控制方式的高级形式,介于“完全 CPU 参与”与“完全独立 I/O 处理器”之间。相比程序查询和中断驱动方式,DMA 更适用于大批量、高带宽、低延迟要求的应用场景,如磁盘读写、音频播放、网络数据包收发等。它是现代操作系统实现高效 I/O 调度和提升 CPU 利用率的重要基础技术。
DMA 与中断方式的主要区别在于 CPU 参与数据传输的程度、传输效率以及适用场景。具体对比如下:
| 比较维度 | 中断方式 | DMA 方式 |
|---|---|---|
| CPU 参与度 | 高:每次数据传输都需要 CPU 执行中断服务程序来读取或写入数据 | 低:仅在传输开始前初始化和结束后处理中断,传输过程由 DMA 控制器独立完成 |
| 数据传输单位 | 以字节或字为单位逐个传输 | 以“块”为单位进行成批传输 |
| 响应机制 | 外设准备好后通过中断请求(IRQ)通知 CPU | 外设向 DMA 控制器发请求(DREQ),DMAC 自主接管总线 |
| 总线控制权 | 始终由 CPU 控制,所有数据通路经过 CPU | 传输期间由 DMA 控制器临时接管总线控制权 |
| 传输速度与效率 | 较慢,受限于中断处理开销和 CPU 执行速度 | 快速高效,适合大数据量连续传输 |
| 硬件支持 | 仅需中断控制器(如 PIC) | 需要专用的 DMA 控制器(DMAC) |
| 典型应用场景 | 键盘输入、鼠标操作等低速、零星数据传输 | 磁盘读写、内存复制、网络数据收发等高速批量传输 |
总结:
- 中断方式 是“事件驱动 + CPU 亲力亲为”,适用于小量、异步、不规则的数据输入;
- DMA 方式 是“请求触发 + 硬件自主执行”,实现“零 CPU 干预”的高速数据搬运,显著提升系统吞吐量。
因此,DMA 实质上是对中断方式在高带宽需求下的优化补充,两者常结合使用:DMA 负责传输全过程,结束时通过中断通知 CPU 进行后续处理。


511

被折叠的 条评论
为什么被折叠?



