Skip to content

2016年 408 计算机组成原理 第 18 题

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

题目

某计算机主存空间为 4GB,字长为 32 位,按字节编址,采用 32 位定长指令字格式,若指令按字边界对齐存放,则程序计数器 (PC) 和指令寄存器 (IR) 的位数至少分别是( )。

错因

A

PC 算对了 30 位,但 IR 也按 30 位算就错了。IR 装的是"取出的整条指令本身",而本题指令字长是 32 位——IR 必须能完整容纳一条指令,至少 32 位,不能因为"按字对齐"就缩水。把"装地址"和"装指令"混了。

C

把 PC 和 IR 的角色反了:以为 PC 是 32 位、IR 是 30 位。实际刚好相反——PC 因为"按字对齐"省了 2 位(30 位够用),IR 必须装下整条 32 位指令一位都不能省。记忆:PC 装"指针"(可压缩),IR 装"内容"(不能压缩)。

D

PC 算成 32 位(没意识到字对齐能省 2 位低位)。"4GB 主存按字节编址 = 32 位字节地址"是对的;但既然指令必须 4 字节对齐,所有指令地址低 2 位永远是 0,完全可以不存。题目问"至少"——按字对齐场景下 PC 至少 30 位即可。

总解析

第一步:算字节地址位数

主存 4 GB = B,按字节编址,单字节地址需要 32 位

第二步:判断 PC 至少需要多少位

PC(程序计数器)保存"下一条指令的地址"。

  • 指令长 32 位 = 4 字节
  • 按"字边界对齐"存放 = 每条指令的起始字节地址必须是 4 的倍数 → 地址末 2 位永远是 00

由于末 2 位是固定值,硬件实现时不必存这 2 位——只需存高 30 位的"字地址",取指时硬件自动在末尾补 00 拼出字节地址。

第三步:判断 IR 至少需要多少位

IR(指令寄存器)保存"刚刚取出的整条指令"。

  • 指令字长 32 位 → IR 必须能容纳 32 位完整指令(操作码 + 操作数字段都在里面)
  • 这是"指令本身的位数",与地址压缩无关

汇总:PC = 30 位,IR = 32 位。

最终答案是 B(30、32)

对比表

寄存器装的东西是否能因字对齐压缩至少位数
PC下一条指令的地址(指针)✓(地址末 2 位恒 0 可省)30
IR取出的整条指令(内容)✗(指令本身没有"对齐冗余")32

易错点速查

  1. PC 是"指向"指令的指针,所以受地址对齐规则影响(可压缩)
  2. IR 是"装载"指令的容器,必须容纳完整指令字(不可压缩)
  3. "至少"意味着按最紧凑设计算,能省的位都省

最后更新:

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