Appearance
题目
下列有关 I/O 接口的叙述中,错误的是( )。
错因
A
A 是正确叙述,被误判成错。状态字段(标记设备忙/闲、错误等)和控制字段(触发启动、复位等)经常合用一个寄存器的不同位——节省接口寄存器数。"合用同一个寄存器"指的是不同位段共用一个物理寄存器,并不意味着"端口数变成一个"。
B
B 是正确叙述。I/O 端口的标准定义就是"I/O 接口中 CPU 可寻址、可读写的寄存器",包括数据端口、状态端口、控制端口三类。把这条当作错的人,多半是和"端口 = 物理插座"这种生活语义混了。
C
C 是正确叙述。独立编址意味着 I/O 地址空间和主存地址空间完全独立——CPU 用专门的 I/O 指令(如 x86 的 IN/OUT)访问 I/O 端口,用 load/store 指令访问主存。地址值即使相同,因走的是不同地址译码通路,不会冲突。所以"地址可能相同"是合法的。
总解析
逐项判断:
| 项 | 内容要点 | 判定 |
|---|---|---|
| A | 状态/控制端口可合用同一个寄存器(不同位段) | ✓ 正确 |
| B | I/O 端口 = I/O 接口中 CPU 可访问的寄存器 | ✓ 正确(是定义) |
| C | 独立编址下 I/O 地址与主存地址可相同(空间独立) | ✓ 正确 |
| D | 统一编址下 CPU 不能用访存指令访问 I/O 端口 | ✗ 错误 |
D 为什么错——这是把"统一编址"的定义反着记了:
统一编址(Memory-Mapped I/O,内存映射 I/O):把 I/O 端口映射到主存地址空间的某个区域,CPU 用普通的 load/store(访存)指令直接读写 I/O 端口。这正是"统一"两个字的精髓——不需要专门的 I/O 指令。
独立编址(Port-Mapped I/O):I/O 地址空间与主存地址空间分开,CPU 用专门的 I/O 指令(如 IN OUT)访问 I/O 端口,访存指令只能访问主存。
对照表:
| 编址方式 | 地址空间 | 访问 I/O 用什么指令? | 代表架构 |
|---|---|---|---|
| 统一编址 | I/O 与主存共享同一空间 | 访存指令(load/store) ✓ | RISC-V、ARM、MIPS |
| 独立编址 | I/O 单独空间 | 专门的 I/O 指令(IN/OUT) | x86 早期(保留至今) |
D 选项把"统一编址"和"独立编址"对访问指令的要求完全弄反——统一编址恰恰是能用访存指令访问 I/O 端口,所以"不能"二字是错的。
最终答案是 D(这是叙述错误的项)。
审题提醒:题面说"错误的是"——多选题里出现这种反向措辞("错误的""不正确的""不能"),命题人通常会同时埋一两个让人差点漏看的"正确叙述"诱饵(如本题 A 那种细节),考生顺着读以为都对就栽了。先把每条标 ✓ / ✗,再选,不要边读边下结论。