Skip to content

2015年 408 计算机组成原理 第 43 题

计算机组成原理2015年综合题13分

题目

某 16 位计算机的主存按字节编址,存取单位为 16 位;采用 16 位定长指令字格式;CPU 采用单总线结构,主要部分如下图所示。

image-20260501022939719

图中 R0~R3 为通用寄存器;T 为暂存器;SR 为移位寄存器,可实现直送(mov)、左移一位(left)和右移一位(right)3 种操作,控制信号为 SRop,SR 的输出由信号 SRout 控制;ALU 可实现直送 A(mova)、A 加 B(add)、A 减 B(sub)、A 与 B(and)、A 或 B(or)、非 A(not)、A 加 1(inc)这 7 种操作,控制信号为 ALUop。

注:已补充内总线到 MAR 的箭头和内总线到 IR 的箭头。

请回答下列问题。

(1) 图中哪些寄存器是程序员可见的?为何要设置暂存器 T?

(2) 控制信号 ALUop 和 SRop 的位数至少各是多少?

(3) 控制信号 SRout 所控制部件的名称或作用是什么?

(4) 端点①~⑨中,哪些端点须连接到控制部件的输出端?

(5) 为完善单总线数据通路,需要在端点①~⑨中相应的端点之间添加必要的连线。写出连线的起点和终点,以正确表示数据的流动方向。

(6) 为什么二路选择器 MUX 的一个输入端是 2?

解析

本题考查 单总线 CPU 数据通路 的理解。单总线结构的核心矛盾:一条总线同一时刻只能跑一份数据。这就引出几个设计后果——

  • 暂存器 T:ALU 需要两个操作数同时上 A/B 端口,单总线一次只能送一个 → 第一个操作数得先"暂存",第二个再上来;
  • 三态门控制 (SRout / Xout):避免多个寄存器同时驱动总线产生冲突;
  • MUX = 2 输入:把"PC + 2"操作做成定常的硬件捷径。

(1) 程序员可见寄存器与暂存器 T 的作用 [3 分]

程序员可见寄存器:通用寄存器 R0~R3 和 PC

  • R0~R3 在程序中可被指令直接读写;
  • PC 通过转移、调用、返回等指令间接修改(程序员意识到它的存在)。

MAR、MDR、IR、T、SR 都是程序员不可见的内部工作寄存器——它们是 CPU 实现细节,没有汇编指令能直接命名它们。

为什么需要暂存器 T: 单总线 + ALU 双输入端口(A/B)的矛盾。如果直接把寄存器接到 A、B:

  1. R1 上总线 → 同时进 A 和 B(因为 A、B 都来自同一根总线)→ ALU 算的是 R1 op R1,错;
  2. 解决方案:让 R1 先送到 T 暂存(通过总线送入 T),下一拍 R2 上总线进 B,T 同时把先前存的 R1 送 A → 此时 A、B 端口各持一个不同操作数。

编者注(生僻术语): 这是单总线 ALU 的经典做法——所谓"分两拍取操作数"。多总线 CPU(双总线 / 三总线)就不需要 T,可以并行从两条总线把两个操作数同时送进 ALU。

(2) ALUop 与 SRop 的最少位数 [2 分]

控制位数 =

信号操作种类最少位数
ALUop7(mova / add / sub / and / or / not / inc)
SRop3(mov / left / right)

(3) SRout 控制的部件 [2 分]

SRout 控制 三态门(tri-state buffer),决定移位寄存器 SR 的输出端是否驱动内总线。

  • SRout = 0 → 三态门高阻,SR 输出与总线断开;
  • SRout = 1 → 三态门导通,SR 内容上总线。

易错点: 不能用普通 AND 门替代三态门——AND 门"低无效"输出 0,会与其他寄存器输出的 1 短路冲突。三态门的"高阻态"是单总线必备特性。

(4) 须连接到控制部件输出端的端点 [3 分]

控制部件的输出 = 控制信号,凡是改变数据通路状态的端点都属于此类:

应连:① ② ③ ⑤ ⑧

含义大致对应(以题图标号约定):①②③ 控制寄存器写入 / 总线驱动方向;⑤ 触发 ALU 操作;⑧ 触发移位 / 三态门。

不应连(属于数据通路或反馈回控制):④ ⑥ ⑦ ⑨——它们传输的是数据或状态,不是控制信号。

【评分说明】答案包含 ④⑥⑦⑨ 中任一个,不给分;答案不全酌情给分。

(5) 待补充的连线 [2 分]

连线起点终点含义
连线 1把 ALU 的运算结果送入内总线 / 状态寄存器
连线 2把 SR 的输出送向后续部件

【评分说明】回答除上述连线以外的其他连线,酌情给分。

(6) MUX 输入端为什么是 2 [1 分]

每条指令长 16 位 = 2B,按字节编址 → 顺序执行时下条指令地址 = (PC) + 2。

MUX 的一个固定输入端接常数 2,是为了 PC 自增 2 的硬件捷径——不需要专门让 ALU 跑一次 "+2",节省一拍。MUX 的另一输入是分支 / 跳转给定的目标地址;用控制信号选择走哪一路。

易错点: 这是字节编址的特征。如果按字编址(每条指令占 1 个地址单位),MUX 的另一输入应该是 1。MUX 输入是 2 是"按字节编址 + 16 位指令"的强暗示。

最后更新:

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