Skip to content

2011年 408 计算机组成原理 第 19 题

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

题目

假定不采用 Cache 和指令预取技术,且机器处于"开中断"状态,则在下列有关指令执行的叙述中,错误的是( )。

错因

A

A 是正确叙述(题目要找的是错的)。每条指令的指令周期至少要做一次"取指(IF)"——把指令从内存读到 IR,这一步必然访存。题目假设"不采用 Cache 和指令预取"——意味着每次取指都要真的去主存拿,A 严格成立。误选 A 多半是把"指令本身不访存"(如 ADD、SUB)当成"指令周期不访存",忽略了取指阶段也是访存。

B

B 是正确叙述。指令周期是执行一条完整指令所需的时间,至少包含取指 → 译码 → 执行(再加可能的访存、写回),无论怎么压缩都得有"取指"这一拍——所以指令周期 ≥ 1 个时钟周期永远成立。即便是单周期 CPU,也是 1 个时钟周期完成 1 条指令,等号成立。误选 B 是把"机器周期"和"时钟周期"搞混。

D

D 是正确叙述。CPU 在每条指令执行结束(一条指令周期的尾部)会检查中断请求线,开中断状态下若有外部中断挂起 → 立即响应进入中断服务。每条指令尾部都是中断响应窗口,所以"每条指令执行结束时都可能被外部中断打断"在开中断时确实成立。误选 D 是误以为中断响应受其他条件约束(如指令类型),但 408 教材里就是按"每条指令结束检查"来描述的。

总解析

核心考点:空操作(NOP)指令真的"什么都不做"吗?

NOP 不改变通用寄存器内存,但它仍然是一条指令——指令周期里至少包含:

  1. 取指(IF):把 NOP 的机器码从内存读到 IR
  2. 译码:识别这是 NOP
  3. PC 更新 —— 这一步必然修改 PC

所以 NOP 虽然不动通用寄存器,但 PC 这个特殊寄存器一定被修改——否则 CPU 卡在原地永远执行 NOP。

C 选项说"任何寄存器的内容都不会被改变",把 PC 也排除在外,与事实矛盾——这就是要找的"错误叙述"。

逐项核验

选项内容真假关键点
A每个指令周期至少访存一次取指阶段必访存(无 Cache / 预取的前提下)
B指令周期 ≥ 1 个时钟周期取指本身至少占 1 拍
CNOP 中任何寄存器都不变PC 必然 +=指令长度,IR 也会更新
D每条指令结束时都可能被中断打断CPU 在指令尾检查中断(开中断状态下)

额外加深印象

  • 即便是 NOP,IR(指令寄存器)也会被填进 NOP 的机器码——又一个被改变的寄存器
  • 在五段流水线讨论里,NOP 通常作为"气泡(bubble)"使用,但每个气泡仍占一个流水阶段——本质上还是一条要走完所有阶段的指令

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

判定口诀:408 题里凡说"NOP / 空操作不动任何东西"——一律警觉 PC 这个反例。

最后更新:

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