Skip to content

408 > ### 计算机组成原理 > #### DMA方式


一、定位信息

项目内容
知识单元编号CO-06-07
所属章节第六章 总线与I/O系统
核心主题DMA方式的工作原理、传送方式与特点
考试权重★★★★(高频重点,选择+大题均可出)
前置知识CO-06-05 程序查询方式、CO-06-06 中断方式
后续衔接无(本章最后一单元)

二、知识点讲解

2.1 DMA方式的基本概念

DMA(Direct Memory Access,直接存储器访问) 是一种不经过CPU,由DMA控制器直接控制外设与主存之间数据传送的I/O方式。

在程序查询和中断方式中,每一个数据的传送都必须经过CPU(外设→CPU→主存 或 主存→CPU→外设),CPU是数据传送的"中转站"。而DMA方式中,数据直接在外设和主存之间传送,CPU只需在传送开始时进行初始化设置(传送方向、数据量、起始地址等),传送过程中CPU不参与,传送结束后DMA控制器通过中断通知CPU。

2.2 DMA控制器的组成

DMA控制器(DMAC)主要包含以下寄存器:

寄存器名称作用
MAR主存地址寄存器存放主存中数据的起始地址,每传送一个数据自动+1
WC字计数器存放要传送的数据总数,每传送一个数据自动-1,减到0时传送结束
BR数据缓冲寄存器暂存传送过程中的数据
CR控制/状态寄存器存放控制命令和状态信息(传送方向、DMA允许等)

此外还需要:

  • DMA请求触发器:外设准备好数据时置1,向DMAC发出DMA请求
  • 中断逻辑:传送结束时向CPU发出中断请求

2.3 DMA方式的工作过程

(1) 预处理阶段(CPU完成)

CPU执行初始化程序,向DMA控制器设置:

  • 传送方向(读/写)
  • 主存起始地址 → MAR
  • 数据传送数量 → WC
  • 启动DMA控制器

设置完成后,CPU继续执行原程序。

(2) 数据传送阶段(DMA控制器完成,CPU不参与)

外设准备好数据


外设向DMAC发出DMA请求


DMAC向总线仲裁器发出总线请求(BRQ)


总线仲裁器授权(BG),DMAC获得总线控制权


DMAC发出:
  - 主存地址(MAR → 地址总线)
  - 读/写命令(控制总线)
  - 数据传送(数据总线)


MAR ← MAR + 1(地址递增)
WC ← WC - 1(计数递减)


WC = 0? ──否──→ 继续传送下一个数据



传送结束,DMAC向CPU发出中断请求

(3) 后处理阶段(CPU完成)

CPU响应中断,执行中断服务程序:

  • 校验传送数据的正确性
  • 判断是否需要继续传送
  • 进行必要的数据处理

2.4 DMA的三种传送方式

(1) 停止CPU访问主存(CPU停止法)

  • DMA传送期间,CPU完全放弃总线控制权,不能访问主存
  • DMA传送结束后,CPU重新获得总线控制权
  • 优点:控制简单,适合高速数据传送
  • 缺点:CPU在DMA期间完全停止工作,浪费严重

(2) 周期挪用/窃取(Cycle Stealing)

  • DMA控制器在CPU不访问主存的空闲周期中"借用"总线进行一次数据传送
  • 若CPU正在访问主存,则DMA等待当前存取周期结束后再挪用
  • 优点:CPU损失较小(仅损失个别周期)
  • 缺点:每次挪用一个周期,传送效率较低;控制较复杂

(3) DMA与CPU交替访问(交替分时访问)

  • 将一个CPU周期分为两个时间片:一个给CPU,一个给DMA
  • CPU和DMA交替访问主存,互不影响
  • 优点:既不浪费CPU时间,DMA传送效率也高
  • 缺点:需要复杂的时序控制;硬件实现复杂

三、三种I/O方式对比表

对比维度程序查询方式中断方式DMA方式
数据传送主体CPUCPUDMA控制器
CPU参与程度全程参与每个数据都参与仅预处理和后处理
CPU与外设并行性无(串行)部分并行高度并行
数据传送路径外设→CPU→主存外设→CPU→主存外设↔主存(直传)
响应速度慢(轮询等待)较快(中断响应)最快(硬件控制)
适用场景低速简单设备中低速设备高速大批量数据
硬件复杂度最低中等最高
CPU效率最低中等最高
单位数据传送字(每次1字)字(每次1字)块(每次一批)
结束通知CPU程序判断中断(每字)中断(整块传完)

四、DMA三种传送方式对比表

对比维度停止CPU访问周期挪用交替访问
CPU活动完全停止仅损失个别周期不受影响
总线使用权DMA独占DMA借用空闲周期CPU和DMA分时
CPU效率影响大(完全停顿)小(仅个别周期)
DMA效率最高(独占)较低(每次挪一周期)高(稳定分时)
控制复杂度简单中等复杂
适用场景高速传送一般速度传送高性能系统

五、记忆辅助

  1. DMA = "不用CPU搬砖":CPU只负责"开工交底"(预处理)和"验收成果"(后处理),中间的搬数据工作交给DMA控制器。

  2. DMA三个阶段"预→传→后"——预处理(CPU设置)→数据传送(DMAC干活)→后处理(CPU验收中断)。

  3. DMA四个关键寄存器"地缓数控"——MAR(地址)、BR(缓冲)、WC(字计数)、CR(控制)。口诀:"马(MAR)帮(BR)我(WC)控(CR)"

  4. 三种传送方式

    • 停止CPU = "你歇着,我全干"(CPU完全停)
    • 周期挪用 = "你不用时我借用"(借用空闲周期)
    • 交替访问 = "咱俩轮流来"(分时共享)
  5. 三种I/O方式递进:程序查询(CPU全程)→ 中断(CPU每字参与)→ DMA(CPU基本不参与)。CPU参与度递减,效率递增。


六、例题精解

例题1

题目:某系统采用DMA方式从磁盘向主存传送数据。磁盘数据传输率为4MB/s,主存周期为0.5μs,采用"周期挪用"方式。问:(1) 每次DMA传送占用几个主存周期?(2) DMA传送对CPU的影响有多大?

四步解题

Step 1 审题:DMA周期挪用方式,磁盘4MB/s,主存周期0.5μs。

Step 2 知识定位

  • 周期挪用:每次DMA传送占用1个主存周期
  • 主存带宽 = 1 / 0.5μs = 2M次/秒

Step 3 计算

(1) 每次DMA传送占用1个主存周期(0.5μs)

(2) DMA需要的主存访问频率:

  • 磁盘传输率 4MB/s,假设每次传送1字节
  • 每秒DMA访问主存次数 = 4M次/秒
  • 每次占用0.5μs
  • DMA每秒占用总线时间 = 4M × 0.5μs = 2Mμs = 2秒

这超过了1秒,说明在0.5μs主存周期下,主存带宽(2M次/秒)不足以支撑4MB/s的DMA传输。

重新分析(假设每次传送1个字=4字节):

  • 每秒DMA传送次数 = 4MB / 4B = 1M次/秒
  • DMA占用时间 = 1M × 0.5μs = 0.5秒
  • CPU损失率 = 0.5 / 1 = 50%

Step 4 答案: (1) 每次DMA传送占用 1个主存周期(0.5μs) (2) CPU每秒损失约 50% 的主存访问时间(假设每次传送4字节)


例题2

题目:某计算机系统需要将一块10KB的数据从I/O设备传送到主存,起始地址为1000H。系统采用DMA方式,每次传送1个字节。主存存取周期为1μs,采用"停止CPU访问主存"方式。CPU预处理需要20μs,后处理(中断服务)需要30μs。求:(1) DMA传送阶段的时间;(2) CPU的总开销时间;(3) 整个传送过程的时间。

四步解题

Step 1 审题:10KB数据,DMA停止CPU方式,主存周期1μs,预处理20μs,后处理30μs。

Step 2 知识定位

  • 停止CPU方式:DMA独占总线,每次传送1个字节占用1个主存周期
  • CPU在DMA传送期间完全停止工作

Step 3 计算

(1) DMA传送阶段时间:

  • 数据量 = 10KB = 10 × 1024 = 10240字节
  • 每字节传送时间 = 1个主存周期 = 1μs
  • DMA传送时间 = 10240 × 1μs = 10240μs = 10.24ms

(2) CPU总开销时间:

  • 预处理 + 后处理 = 20μs + 30μs = 50μs
  • DMA传送期间CPU不工作,不计入CPU开销
  • CPU实际开销 = 50μs

(3) 整个传送过程时间:

  • 总时间 = 预处理 + DMA传送 + 后处理
  • = 20μs + 10240μs + 30μs = 10290μs ≈ 10.29ms

Step 4 答案: (1) DMA传送阶段时间为 10240μs(约10.24ms) (2) CPU总开销时间为 50μs (3) 整个传送过程时间为 10290μs(约10.29ms)

CPU效率分析:CPU开销仅占总时间的 50/10290 ≈ 0.49%,远优于程序查询和中断方式。


七、考情分析

维度分析
出题频率近10年约出现15-18次,最高频考点之一
题型选择题(DMA特点辨析、三种方式对比)、综合题(DMA传送时间计算)
难度★★★★(概念+计算结合)
考查重点DMA三种传送方式的区别;DMA与中断方式的对比;DMA传送时间计算
命题趋势三种I/O方式的对比是必考内容;DMA传送时间计算与效率分析是综合题热点

八、易错点

  1. DMA不需要CPU参与是错误的:DMA的预处理和后处理都需要CPU参与。"不需要CPU参与"仅指数据传送阶段。

  2. DMA传送的单位是"块"不是"字":程序查询和中断方式每次传送1个字(CPU参与每个字的传送);DMA方式一次传送整个数据块(CPU只参与开头和结尾)。

  3. 周期挪用≠不中断CPU:周期挪用虽然只"借用"一个主存周期,但如果CPU正好要访问主存,就必须等待。对CPU来说,相当于这个存取周期被"偷走"了。

  4. DMA结束用中断通知CPU:DMA传送结束后,通过中断方式通知CPU进行后处理。不要以为DMA完全不涉及中断。

  5. 停止CPU访问 vs 周期挪用的效率:停止CPU方式DMA效率最高但CPU损失最大;周期挪用方式CPU损失小但DMA效率较低。选择时需要权衡。

  6. DMA地址自动递增:MAR在每次传送后自动+1(指向下一个存储单元),WC自动-1(计数递减)。这是硬件自动完成的,不需要CPU干预。


九、来源标注

来源说明
《计算机组成原理》(唐朔飞)第8章 I/O系统,DMA方式
《计算机组成原理》(蒋本珊)第7章 DMA方式
408统考大纲第六章 总线与I/O系统 - DMA方式
历年真题2009-2025年408真题高频考点,几乎每年都有涉及

考研全科复习资料 - 基于2026考研统考大纲