核心概念

DMA (Direct Memory Access) 即直接存储器访问。它在主存与外设之间建立专用的数据通路。

  • DMA 控制器 (DMAC): 一种特殊的接口装置, 能够接管总线控制权, 在没有 CPU 干预的情况下控制数据传输。

DMAC 的内部组成 重点

  1. 内存地址计数器: 存放主存缓冲区的首地址, 每传输一个单位数据自动加 1。
  2. 传输长度计数器: 存放需传输的总信息量, 每传输一个单位数据自动减 1。
  3. 数据缓冲寄存器: 暂存每次传输的数据。
  4. 中断机构: 传输结束后发出中断请求, 通知 CPU 进行善后处理。

DMA 与中断方式的区别 重点

特性中断方式DMA 方式
响应时间指令周期结束时响应机器周期结束时即可响应 (更快)
数据路径经过 CPU 寄存器不经过 CPU, 走专用数据通路
CPU 介入参与数据传输 (执行服务程序)仅参与初始化和善后, 传输过程不干预
优先级较低高于中断请求
主要目标处理异常事件/低速 I/O高速主存与外设的数据交换

工作流程

  1. 预处理: CPU 执行程序设置 DMAC 参数 (地址、长度等)。
  2. 数据传输: 外设向 DMAC 发请求, DMAC 向 CPU 申请总线权, 随后控制主存与外设直接交换数据。
  3. 后处理: 传输完成后, DMAC 发出中断请求, CPU 接管总线并进行校验、结束处理。