采用 DMA 周期窃取方式传送外设数据时,DMA 控制器会在需要传送一个数据字时申请总线。获得控制权后,典型结果是()。
周期窃取让 DMA 控制器按需取得一个或若干总线周期,在外设与主存间直接传送数据。CPU 不必逐字搬运,但若此时也要访问主存,其总线请求可能暂时等待。
选项分析
正确。DMA短暂取得总线完成直接传送,可能延迟CPU同时发生的主存访问。
错误。总线控制权只在传送周期内暂时转移,随后会按仲裁机制归还。
错误。DMA正是为了避免CPU为每个数据字执行搬运指令。
错误。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免于逐字搬运,但同时发生的访存可能被推迟。