计算机硬件工程师 · 高频练习

DMA 使用周期窃取传输数据时,CPU 为什么可能短暂停顿?

中级 单选题 第 963 题 中等 计算机硬件工程师DMA周期窃取总线仲裁主存访问
题目

采用 DMA 周期窃取方式传送外设数据时,DMA 控制器会在需要传送一个数据字时申请总线。获得控制权后,典型结果是()。

A DMA占用一个或少量存储器总线周期完成传送,CPU相应的访存可能被短暂推迟
B CPU永久失去总线控制权,直到系统重启
C 所有数据仍必须由CPU逐字执行搬运指令
D DMA只能修改寄存器,不能访问主存
题目类型:原创高频练习题 用途:用于帮助理解计算机硬件工程师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

周期窃取让 DMA 控制器按需取得一个或若干总线周期,在外设与主存间直接传送数据。CPU 不必逐字搬运,但若此时也要访问主存,其总线请求可能暂时等待。

选项分析

A

正确。DMA短暂取得总线完成直接传送,可能延迟CPU同时发生的主存访问。

B

错误。总线控制权只在传送周期内暂时转移,随后会按仲裁机制归还。

C

错误。DMA正是为了避免CPU为每个数据字执行搬运指令。

D

错误。DMA的典型用途就是在外设与主存之间直接传送数据。

本题为什么容易错

容易把周期窃取和成组传送混在一起。前者倾向于间歇占用总线,后者可能连续占用一段时间完成数据块,具体实现还受控制器和总线协议影响。

先看结论

简短答案

DMA 使用周期窃取传输数据时,CPU 为什么可能短暂停顿,正确答案是 A(DMA占用一个或少量存储器总线周期完成传送,CPU相应的访存可能被短暂推迟)。周期窃取让 DMA 控制器按需取得一个或若干总线周期,在外设与主存间直接传送数据。CPU 不必逐字搬运,但若此时也要访问主存,其总线请求可能暂时等待。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
DMA占用一个或少量存储器总线周期完成传送,CPU相应的访存可能被短暂推迟 本题正确答案 正确。DMA短暂取得总线完成直接传送,可能延迟CPU同时发生的主存访问。 看到题干核心场景时优先联想到它
CPU永久失去总线控制权,直到系统重启 本题干扰项 错误。总线控制权只在传送周期内暂时转移,随后会按仲裁机制归还。 看到该词不要急着选,先判断是否真正解决题干问题
所有数据仍必须由CPU逐字执行搬运指令 本题干扰项 错误。DMA正是为了避免CPU为每个数据字执行搬运指令。 看到该词不要急着选,先判断是否真正解决题干问题
DMA只能修改寄存器,不能访问主存 本题干扰项 错误。DMA的典型用途就是在外设与主存之间直接传送数据。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • CPU永久失去总线控制权,直到系统重启:错误。总线控制权只在传送周期内暂时转移,随后会按仲裁机制归还。
  • 所有数据仍必须由CPU逐字执行搬运指令:错误。DMA正是为了避免CPU为每个数据字执行搬运指令。
  • DMA只能修改寄存器,不能访问主存:错误。DMA的典型用途就是在外设与主存之间直接传送数据。
复习

知识点详解

DMA 传送前通常由 CPU 设置主存地址、长度、方向和设备参数,随后 DMA 控制器申请总线并直接完成外设与主存间的数据移动,结束后再中断通知 CPU。周期窃取方式按传送需要短时占用存储器总线,降低了对 CPU 的连续阻塞,但会与 CPU 访存竞争。系统设计需要综合外设速率、缓存命中、总线带宽和仲裁优先级。

备考速记

DMA省CPU搬运,不省内存总线;窃取的是短暂总线周期。

DMA 在主存访问场景中的作用

DMA在本题中的核心价值,是解决“采用 DMA 周期窃取方式传送外设数据时,DMA 控制器会在需要传送一个数据字时申请总线。获得控制权后,典型结果是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 判断DMA周期窃取对CPU访存的影响。
  • 比较周期窃取与连续成组传送的总线占用特点。
DMA 在计算机硬件工程师软考中的考法

软考选择题通常不会只考概念定义,还会把DMA放到主存访问场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

DMA 的价值是把搬运工作从 CPU 指令流里拿走,但数据进主存仍要走总线。周期窃取不是一次占住总线到整块传完,而是在需要时拿走短短一个或几个周期。CPU 若正做寄存器运算,影响可能不明显;若恰好要访存,就得让一下。A 对这个取舍描述最准确。

考点定位

“窃取”不是数据被偷,而是 DMA 暂时使用原本也可能由 CPU 使用的存储器总线周期。

易错提醒

  • 认为有DMA后CPU完全不参与,忽略初始化和完成中断。
  • 只计算外设速率,不考虑总线仲裁与主存带宽。
  • 把周期窃取误写成CPU执行一条特殊复制指令。

备考提示

  • 画CPU、DMA、主存三方总线仲裁时序,标出谁在每个周期使用总线。
  • 对比程序查询、中断驱动和DMA三种I/O方式的CPU参与程度。

你可能还想了解

  • DMA周期窃取时CPU还能执行指令吗?
  • 周期窃取和成组传送有什么区别?
  • DMA传送为什么仍需要CPU初始化?

本文小结

DMA周期窃取会短暂取得一个或少量存储器总线周期,直接在外设与主存间传送数据。CPU免于逐字搬运,但同时发生的访存可能被推迟。