Skip to content

2023年 408 计算机组成原理 第 22 题

计算机组成原理2023年选择题2分

题目

下列关于 I/O 控制方式的叙述中,错误的是( )。

错因

A

A 是正确叙述。程序查询方式由 CPU 轮询设备状态寄存器,循环检查"准备好了吗",准备好就 IN/OUT 搬数据——整个 I/O 都由 CPU 软件代码完成。题面"通过 CPU 执行查询程序"完全符合定义。

B

B 也正确。中断方式下,设备准备好后向 CPU 发中断请求,CPU 跑 ISR 一字节一字节搬数据——传送动作仍然是 CPU 在 ISR 里用 IN/OUT 执行的。"通过 CPU 执行中断服务程序"正是这个意思。

D

D 也正确。SSD(每秒数百 MB 到 GB)和网络适配器(千兆/万兆网卡每秒上百 MB)数据率极高,只能用 DMA——用程序查询或中断方式 CPU 全部时间都耗在搬数据上了,根本来不及。教科书标配高速设备配 DMA。

总解析

C 错在哪——"DMA 传送程序"是矛盾说法

DMA 方式的本质就是"绕过 CPU 让 DMA 控制器自己搬"——

  • CPU 在预处理阶段调驱动程序设置 DMA 控制器(这是软件)
  • DMA 控制器在数据传送阶段直接控总线搬数据(这不是 CPU 在执行任何程序,而是 DMA 控制器的硬件电路在动)
  • CPU 在后处理阶段跑 ISR 收尾(这是软件)

C 说"CPU 执行 DMA 传送程序"——这话有两个错:

  1. 没有"DMA 传送程序"这个东西——传送阶段是 DMA 硬件电路在动,没有任何软件被 CPU 跑着
  2. CPU 不参与传送过程——这恰恰是 DMA 区别于程序查询/中断的核心优势:CPU 在 DMA 传送期间继续干自己的事,不被打扰

如果"CPU 执行 DMA 传送程序"成立,那 DMA 就退化成了"另一种程序中断",丧失了"硬件并行搬运"的核心意义。

三种 I/O 方式 CPU 参与度对照

方式预处理数据传送后处理CPU 总参与度
程序查询CPU 检查状态CPU 跑查询程序逐字节搬CPU 收尾极高(全程 CPU)
程序中断CPU 启动设备CPU 跑 ISR 逐字节搬(被中断打断时)CPU 收尾较高(每字节都中断一次)
DMACPU 设置参数DMA 控制器直接控总线搬整块CPU 收尾(处理结束中断)极低(只在头尾参与)

逐项审计

选项说法真实情况对/错
A查询方式 CPU 跑查询程序整个 I/O 由 CPU 软件做
B中断方式 CPU 跑 ISR传送由 ISR 软件做
CDMA 方式 CPU 跑 DMA 传送程序传送由 DMA 控制器硬件做,CPU 不跑任何"传送程序"
DSSD / 网卡用 DMA高速设备的标准配

最终答案是 C(这是错误叙述)

记忆要点:DMA 的核心标语就是"直接存储器访问,不经 CPU"——只要看到选项里说"CPU 执行 XX 程序在 DMA 传送阶段做事",立刻判错。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题