Skip to content

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

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

题目

下列关于 CPU 中的数据通路和控制器的叙述中,错误的是( )。

错因

B

任何 CPU 都要根据"当前指令的操作码"决定该发哪些控制信号——这一步必须由操作码译码器完成(不管是硬连线还是微程序,前端都得先把 OP 字段译开)。B 描述正确——题目找"错误的",不选 B。

C

单周期 CPU 每条指令都在 1 个时钟内走完,控制信号是组合逻辑直接由当前指令译码得出,不需要状态机。多周期 CPU 把指令切成多个步骤,控制器要按周期数推进、维护"现在走到第几步",自然要状态机/计数器,比单周期复杂C 描述正确,不选 C。

D

流水线 CPU 多条指令并行在不同段——前一条指令还没写回,后一条已经在 ID 段读寄存器,数据相关(RAW/WAW/WAR)和控制相关(分支跳转后续指令何时取)就会爆发。这是流水线的基本课题,要靠转发、阻塞、分支预测等机制处理。D 描述正确,不选 D。

总解析

题目问"错误的"叙述,A 是错的

A 错在哪里

通用寄存器组程序计数器是 CPU 里两类不同的寄存器

类别例子用途程序员怎么用
通用寄存器(GPR)x0–x31(RISC-V)、R0–R31(ARM)、EAX 等(x86)保存运算操作数和中间结果指令明确用编号引用
专用寄存器PC(程序计数器)、IR(指令寄存器)、PSW(程序状态字)、MAR、MDR控制取指流程、暂存机器状态通常不能用普通运算指令直接读写

PC 的特殊性:

  1. 每个时钟周期自动 +指令长度(顺序执行)或被分支指令改写
  2. 由控制器内部时序逻辑直接管理,不需要程序员"显式 mov 给 PC"
  3. 在大多数 ISA 里,PC 没有寄存器编号,指令字段也没办法直接索引到它(少数例外如 ARM 的 R15 = PC,是历史遗留的特殊设计)
  4. PC 与通用寄存器组在物理上往往完全分开——通用寄存器组是一个多端口的 RegFile(典型 2 读 1 写),PC 是一个独立的更新逻辑(PC ← PC+4 或 PC ← 分支目标)

把 PC 塞进通用寄存器组,会破坏它的自动推进机制和保护语义——所以通用寄存器组不应、也不会包含 PC

逐项核验

选项内容对/错理由
A通用寄存器组中应该包含 PCPC 是专用寄存器,与通用寄存器组分开
B控制器一定包含操作码译码电路不译码就无法发对应控制信号
C单周期 CPU 控制器更简单单周期 = 组合逻辑,无状态机
D流水线 CPU 需解决相关与冒险多指令并行,相关性必然出现

最终答案是 A

寄存器分类速记

寄存器是否程序员可见是否在通用寄存器组
通用寄存器 R0–Rn可见、可指定
PC(程序计数器)通常不可直接读写
IR(指令寄存器)不可见
MAR / MDR不可见
PSW / FLAGS部分位可见否(独立)

把 PC 当通用寄存器,等于让程序员"在做加法时顺手改变下一条要执行的指令"——这显然破坏了控制流的稳定性。考研考点里 PC 永远归在"专用寄存器"那一栏。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数