CPU 核心寄存器功能(权威正确版・含教材常见错误辨析)
原题目
权威标准答案
教材常见错误辨析
| 寄存器缩写 | 全称 | 核心功能 | 程序员可见 |
|---|---|---|---|
| IR | 指令寄存器 | 保存当前正在执行的指令 | ❌ |
| AR | 地址寄存器 | 保存当前正在访问的主存地址(即当前指令地址) | ❌ |
| PC | 程序计数器 | 保存下一条将要执行的指令地址 | ✅ |
| ACC | 累加器 | 存放 ALU 的操作数和运算结果 | ✅ |
| MDR/DR | 数据寄存器 | CPU 与主存之间的数据缓冲 | ❌ |
| PSW | 程序状态字寄存器 | 保存程序运行状态(进位、溢出、中断等标志) | ✅ |
| 寄存器 | 全称 | 唯一核心功能 | 位置 | 程序员能否直接访问 |
|---|---|---|---|---|
| ACC(累加器) | Accumulator | 存放 ALU 的操作数 和运算结果 | 运算器内部 | ✅ 可以 |
| 通用寄存器(R0~Rn) | General Purpose Register | 灵活存放运算数据、地址、中间结果 | 运算器内部 | ✅ 可以 |
| MDR(数据寄存器,也叫 DR) | Memory Data Register | CPU 与主存之间的数据缓冲 | CPU 与主存的接口上 | ❌ 不能(由硬件自动控制) |
保存当前正在执行的指令地址的寄存器是地址寄存器(AR)。程序计数器(PC)保存的是下一条将要执行的指令地址。
| 对比维度 | 程序计数器(PC) | 地址寄存器(AR) |
|---|---|---|
| 保存的地址 | 下一条将要执行的指令地址 | 当前正在执行的指令地址 |
| 时间点 | 指向未来 | 指向现在 |
| 核心功能 | 控制程序的执行流程,实现顺序执行和跳转 | CPU 与主存之间的地址接口,负责向主存发送地址 |
| 程序员可见性 | ✅ 可见,汇编指令可以直接修改(如 JMP、CALL) | ❌ 不可见,完全由硬件自动控制 |
| 值的变化时机 | 指令取出后立即自动加 1,或被跳转指令修改 | 每次取指时被 PC 赋值,在指令执行期间保持不变 |
控制存储器容量估算(含考试必看向上取整考点)
一、题目描述
假设某机器有 80 条指令,平均每条指令由 4 条微指令组成,其中有一条取指微指令是所有指令公用的。已知微指令长度为 32 位,请估算控制存储器容量。
二、前置核心概念
在解题前,必须明确两个决定答案正确性的关键概念:
- 控制存储器(CM):存放所有微程序的只读存储器(ROM),容量 = 微指令总条数 × 每条微指令的位数。
- 半导体存储器的铁律 :所有存储器的容量必须是 2 的整数次幂。这是由地址译码电路决定的:n 位地址线最多只能译码出 2^n 个唯一的存储单元,不存在能寻址 241 个单元的译码器。
三、完整满分解答步骤
| 项目 | 理论估算值 | 工程实际值 & 考试满分答案 |
|---|---|---|
| 微指令条数 | 241 条 | 256 条 |
| 总容量 | 7712 位(964 字节) | 8192 位(1KB) |
考试避坑指南
微指令控制字段编码(字段直接编码法・标准正确例题解析)
某机有 8 条微指令I1~I8,每条微指令所含的微命令控制信号如下表所示:
| 微指令 | a | b | c | d | e | f | g | h | i | j |
|---|---|---|---|---|---|---|---|---|---|---|
| I1 | √ | √ | ||||||||
| I2 | √ | √ | √ | |||||||
| I3 | √ | √ | √ | |||||||
| I4 | √ | √ | ||||||||
| I5 | √ | √ | √ | |||||||
| I6 | √ | √ | √ | |||||||
| I7 | √ | √ | ||||||||
| I8 | √ | √ | √ |
为 a、b、c、d、e、f、g、h、i、j 这 10 个微命令设计格式并安排编码。
步骤 1:严格分析微命令的互斥性
字段直接编码法的核心是将两两互斥(从未在同一条微指令中同时出现)的微命令放在同一个字段中。我们逐一分析:
- 第一组(互斥组 1):b、c、d观察所有微指令,b、c、d 从未同时出现,满足互斥条件。
- 第二组(互斥组 2):e、f、ge、f、g 也从未在同一条微指令中同时出现,满足互斥条件。
- 第三组(互斥组 3):h、i、j h、i、j 同样从未同时出现,满足互斥条件。
- 微命令 a:与所有其他微命令都有同时出现的记录(如I1中 a 与 d 同时出现),属于全局相容微命令,必须单独作为一个字段。






