Skip to content

8.6 DMA的实现 (Implementation of DMA)

老师强调:DMA是解决“高速外设 ↔ 主存”数据交换的专用接口 + 总线控制权切换机制,核心是让外设与主存直接对话,尽量不占用CPU。


1. DMA控制器的“硬核”组成 (DMAC)

DMA控制器本身就是一个专用接口芯片(如 Intel 8237),关键在于硬件自运算 + 总线控制权交接

  1. 主存地址计数器 (MAR):存放要交换数据的主存地址,硬件自动 +1。
  2. 传送长度计数器 (WC, Word Count):记录剩余数据量,硬件自动 -1,减到 0 时结束。
  3. 数据缓冲寄存器 (DB):数据中转。
  4. DMA请求触发器:记录外设发来的 DMA 请求。
  5. 自动加1/减1装置:DMAC 内置硬件修改地址/计数,不占用CPU的ALU
  6. 中断机构(内置中断触发器):传送结束(WC=0)时,以“中断”通知CPU做收尾。

2. ★ 核心考点:DMA与中断的 5 大区别

特性程序中断方式DMA方式
数据传送CPU执行程序(软件)DMA控制器控制(硬件)
响应时间指令周期结束时机器周期结束时(更快)
现场保护需保护断点与寄存器不用保护现场(不切换程序)
优先级较低最高(高于所有中断请求)
应用场景异常/低速 I/O高速外设成组传送

3. 三种传送方式(老师的“三板斧”)

  1. CPU停止访存法:DMA 工作时 CPU 完全闲置,简单但霸道。
  2. 存储器分时法:把周期一分为二,CPU/DMA 各用一半;缺点是内存需提速到 2 倍。
  3. 周期挪用法(Cycle Stealing)——最常考
    • 外设无请求:CPU正常访存。
    • 外设有请求:DMA“挪用”一个访存周期,CPU短暂停一下。
    • 优势:兼顾 CPU 运行与 DMA 需求,适配低/中速设备。

4. DMA传送过程(三大阶段)—— 全过程考点

阶段1:预处理 (Initialization)

  • 控制者CPU
  • 操作:CPU执行几条I/O指令,向DMAC写入:
    • 传输方向(读还是写)。
    • 主存起始地址。
    • 传输字数。
  • :此时CPU是主设备,DMAC是从设备。

阶段2:数据传送 (Data Transfer) —— 最核心步骤

  • 控制者DMAC
  • 操作:DMAC接管总线,控制数据在外设主存之间直接流动。
  • 握手信号流程(含 MEMR/MEMW 细节,必背顺序)
    1. DREQ (外设→DMAC):外设准备好数据,请求 DMA。
    2. HRQ (DMAC→CPU):总线请求;DMAC 要求接管总线。
    3. HLDA (CPU→DMAC):总线响应;CPU 三态门高阻,交出总线权并挂起
    4. DACK (DMAC→外设):确认外设请求,开始传送。
    5. 传送阶段:DMAC 发出 MEMR/MEMWIOR/IOW,数据直达主存,不进 CPU 寄存器。
    6. WC=0 善后:DMAC 拉低 HRQ,把总线权还给 CPU,并用内置中断触发器通知 CPU 收尾。

阶段3:后处理 (Post-processing)

  • 控制者CPU
  • 操作:当字节计数器减为0(传送结束):
    1. DMAC向CPU发送中断请求
    2. CPU恢复现场,检查传输是否正确(校验),决定是否继续或报错。

💡 学习要点

关键信号记忆法

  • DREQ:Device Request(设备请求)
  • HRQ:Hold Request(保持请求)
  • HLDA:Hold Acknowledge(保持确认)
  • DACK:DMA Acknowledge(DMA确认)
  • MEMR/MEMW:主存读/写;配合 IOR/IOW 完成“外设 ↔ 主存”直传。

三大阶段的控制权转移

预处理阶段:CPU控制 → 数据传送阶段:DMAC控制 → 后处理阶段:CPU控制

老师的“坑点”提醒

  • DMA请求 vs 总线请求:外设→DMAC 叫 DMA 请求;DMAC→CPU 叫总线请求(HRQ),别混。
  • 为什么 DMA 优先级最高:磁盘等高速外设数据不及时取会丢失,CPU必须先让路。
  • 谁是主设备:预处理时 CPU 为主、DMAC 为从;传送时 DMAC 为主,主存为从,CPU挂起。

考试重点

  • 必背:握手信号完整流程(含 MEMR/MEMW / IOR/IOW 的控制权交接)。
  • 理解:DMA 与中断的 5 大区别、DMA 优先级最高的原因。
  • 应用:能根据题干判断当前阶段,画出控制权/信号时序,比较三种传送方式的优劣。