2026 组成原理 cache概念 解答题
第 43 题

(本题满分 10 分)某 16 位计算机按字节编址,通用寄存器 R0~R15 的编号为 0~15,存储器地址为 16 位,采用定长指令字,指令格式有 R 型、I 型、M 型三种,如下表所示。

2018_Q7_3

其中:

  • OP1 为 0001、0010 分别表示加、左移指令;
  • OP2 为 0100 表示加立即数指令;
  • OP3 为 1110、1111 分别表示取数、存数指令;
  • R[r] 表示寄存器 r 中的内容;
  • mm 表示移位位数;
  • M[addr] 表示存储器地址 addr 中的内容。请回答下列问题:

(1) 主存单元和通用寄存器的宽度各为多少位?(2 分)

(2) op1 和 op2 的编码是否可以相同?op2 和 op3 的编码是否可以相同?(2 分)

(3) 若 R(2)=ABCDH,R(9)=F001H,则指令 0000 0010 1001 0001 执行后,R2 和 R9 中的内容分别是多少?(2 分)

(4) 若变量x、y均为 16 位带符号整数,在存储器中依次从低地址向高地址连续存放,x的地址在 R15 中。实现y=16x−5的 4 条指令 11–14 如题 43 表所示,写出 ①~④ 处的内容。(4 分)题 43 表:

地址内容
111​ 0000 0000 0000
120000 2​ 0010
130100 0000 3​
141111 4​

[tag_link]

【答案】

(1) 主存单元和通用寄存器的宽度

  • 该计算机是 按字节编址→ 所以主存单元存储的是字节即 8 位

  • 通用寄存器R0∼R15用于参与算术、移位、访存等运算,且指令中的运算(如加法、移位、取数/存数)都是以“字”为基本操作单位→ 寄存器必须能容纳一个完整的字。

结论:

  • 主存单元宽度:8 位
  • 通用寄存器宽度:16 位

(2) op1 和 op2 可以相同,因为两者在指令中占据不同位。op2 和 op3 不能相同,因为两者在指令中占据相同位,若相同会导致指令冲突。 (3) 0000 0010 1001 0001 属于 R 型指令,下表中给出了每个字段的具体含义:

字段 1字段 2字段 3字段 4
0000001010010001
R 型指令前缀目标寄存器为 R[2]源寄存器为 R[9]op 字段为加
所以这个指令的实际含义为:
  • R[2] ← R[2] + R[9]- R[2] = ABCDH + F001H = 9BCEH

所以 R2 中的内容变为 98CEH,R9 中的内容保持不变为 F001H

(4) y = x * 16 需要通过四个步骤得到:

  • x 的地址中获取 x 的值:通过取数指令
  • 通过移位指令实现 x * 16 的乘法操作
  • 通过减法指令实现 - 5 的操作
  • x * 16 - 5 的值存储到 y 中:通过存数指令所以四条指令的二进制如下:
  • R[0] ← M[R[15]]1110 0000 0000 0000
  • R[0] ← R[0] << 4: 0000 0000 0100 0010
  • R[0] ← R[0] + (-5)0100 0000 1111 1011
  • M[R[15] + 2] ← R[0]: 1111 0000 0000 0010所以 ① = 1110,② = 0000 0100,③ = 1111 1011,④ = 0000 0000 0010。