2021 年冬《计算机组成》期末 A 卷

考试日期为 2021 年 1 月 11 日。源 PDF 没有独立答案页,我只转录题目,不补写答案;原卷中的结构图改写成等价的状态转移表或数据通路说明,避免贴整页试卷。

一、选择题(每题 2 分,共 20 分)

1. 补码与反码

对于 32 位二进制补码与反码的阐述,以下判断正确的是( )。

A. 在进行定点二进制运算时,减法运算通过补码运算的二进制减法器实现。

B. 用反码表示最小的负数为 11⋯111211\cdots111_2,最大的正数为 01⋯111201\cdots111_2。

C. 用反码表示正零为 00⋯000200\cdots000_2,负零为 10⋯000210\cdots000_2。

D. 现代计算机中采用补码的方法占据了统治地位。

2. MIPS 跳转

在 MIPS 指令集中,可以用来实现跳转到 4 GB 空间内任意地址的指令是( )。

A. beq

B. j

C. jal

D. jr

3. addi

MIPS 执行 addi 时,指令中的立即数经符号扩展后被送入( )。

A. PC

B. ALU

C. 累加器

D. 地址寄存器

4. 除法结果

执行 MIPS 除法指令 div 后,商和余数分别放在( )中。

A. $t0、$t1

B. $v0、$v1

C. $Lo、$Hi

D. $k0、$k1

5. 分支地址

下列代码起始地址为 0x00001234,$t0 初值为 0。分支指令执行完后 PC 的值为( )。

Label: addi $t0, $t0, 1
       bgtz $t0, Label

A. 0x00001234

B. 0x00001238

C. 0x0000123C

D. 0x00001240

6. 流水线

为消除单周期数据通路的关键路径,可以通过流水线技术提高 CPU 性能。以下结论正确的是( )。

A. 流水线级数越多,CPU 主频必然越高。

B. 流水线各阶段组合逻辑延迟的最大值决定 CPU 的最高频率。

C. 流水线既能提高系统吞吐率,也能减少单条指令的总执行时间。

D. 流水线技术无法使程序指令并行执行。

7. 存储器扩展

用 1K×41\mathrm{K}\times4 位 RAM 芯片构造 8K×168\mathrm{K}\times16 位存储器,需要的 RAM 芯片数和新增的高位地址线数分别为( )。

A. 16 片和 3 条

B. 32 片和 3 条

C. 32 片和 4 条

D. 64 片和 4 条

原卷把最后两个选项都标成了 C;此处按选项顺序把最后一项记作 D。

8. Cache 映射

若主存中的每一块均只可映射到 Cache 中某个特定的块,则该映射是( )。

A. 直接映射

B. 间接映射

C. 全相联映射

D. 组相联映射

9. I/O 传输

在配有鼠标、键盘的桌面计算机中,要及时处理用户从鼠标、键盘输入的信息,最合适的数据传输方式是( )。

A. 程序查询方式

B. 中断方式

C. DMA 方式

D. I/O 通道方式

10. TLB、页表与 Cache

在虚存系统访存过程中,虚拟地址先通过 TLB 转换为物理地址,再访问 Cache。以下阐述错误的是( )。

A. 若 TLB 命中,可直接获得物理地址再访问 Cache;整个过程至多访问一次主存,最优情况下访问主存 0 次。

B. 若 TLB 命中,则页表可能命中,也可能缺失。

C. 若 TLB 缺失但页表命中,则更新 TLB 后再访问 Cache;整个过程至少访问一次主存,若 Cache 也未命中,则共访问主存两次。

D. 若 TLB 缺失且页表也缺失,则数据一定不在 Cache 中;整个过程需要访问磁盘,并且至少访问内存两次。

二、简答题(每题 5 分,共 20 分)

1. 逻辑函数化简

将下列逻辑函数化为最简与或式:

F=AB‾⋅B+C‾⋅B‾+B.F=\overline{\overline{AB}\cdot B+C}\cdot\overline{B}+B.

2. 三人多数表决器

用 8 选 1 多路选择器 74LS151 实现三人多数表决器。A、B、C 表示三人的投票,高电平(原变量)表示赞成。

  1. 写出三人多数表决器的逻辑函数表达式。
  2. 在 74LS151 上添加适当连线。

原图的空白器件连接关系如下:A、B、C 分别接选择端 A2A_2、A1A_1、A0A_0,输出端为 Y,数据输入端为 D7D_7 到 D0D_0;图旁给出了 VCC 和 GND,等待把各数据输入接到相应电平。

3. I 型指令的寻址方式

在 32 位 MIPS 指令系统中,I 型指令会用到 3 种寻址方式。说明这 3 种寻址方式分别是什么,并说明在每种方式中,立即数字段(指令第 15 到 0 位)的 16 位立即数分别表示什么。

4. 页式虚拟存储

某页式虚拟存储系统按字节编址,逻辑地址为 32 位,主存容量为 256 MB,页大小为 16 KB。每个页表项需要 1 位有效位和 1 位修改位,且假设所有虚页都在使用。

  1. 虚地址和实地址各有多少位?格式如何?(2 分)
  2. 程序虚拟空间最多可有多少页?(1 分)
  3. 每个页表项共有多少位?(1 分)
  4. 每个页表最多占多少内存空间?(1 分)

三、数字逻辑分析题(共 15 分)

一个有限状态机有 S0、S1、S2、S3 四个状态,输入为 0、1 二进制序列。原图中的边以“输入/输出”标注,转录如下:

当前状态输入 0输入 1
S0S1 / 0S0 / 0
S1S1 / 0S2 / 0
S2S3 / 0S0 / 0
S3S0 / 1S2 / 0
  1. 该状态机是 Moore 型还是 Mealy 型?(2 分)
  2. 初始状态为 S0,输入序列为 010100(从左至右输入)。给出对应的状态变化序列和输出序列。(2 分)
  3. 将 S0、S1、S2、S3 分别编码为 00、01、10、11,写出状态转换表,包括输出。(6 分)
  4. 根据状态转换表写出次态和输出的逻辑表达式并化简。当前状态、输入、次态、输出分别用 S1S0S_1S_0、AA、S1′S0′S'_1S'_0、QQ 表示。(5 分)

四、MIPS 汇编题(共 10 分)

1. 补全 swap 过程(6 分)

下面是 C 语言的 swap 过程和编译后的 MIPS 代码片段。$a0 是数组 v 的地址,$a1 是 k,返回地址在 $ra 中。根据注释补全横线。

void swap(int v[], int k) {
    int temp;
    temp = v[k];
    v[k] = v[k + 1];
    v[k + 1] = temp;
}
swap: sll $t0, $a1, 2       # $t0 = k * 4
      add $t0, $t0, $a0     # 原卷注释:$t0 = v + k + 4
      lw  $t1, __________   # $t1 = v[k]
      lw  $t2, __________   # $t2 = v[k + 1]
      sw  $t2, __________   # v[k] = $t2
      sw  $t1, __________   # v[k + 1] = $t1
      ___________________   # 返回

2. 调用 swap(4 分)

将数组 a 的地址和 10 作为参数,调用 swap(a, 10)。补全编译后的代码片段。

la  $a0, __________
li  $a1, __________
________  __________

五、主存储器(共 10 分)

采用若干容量为 1M×41\mathrm{M}\times4 位的 DRAM 芯片,构建按字节编址、容量为 4M×84\mathrm{M}\times8 位的存储器。

  1. 若 DRAM 芯片内部采用二维地址结构,且行地址和列地址数量相同,芯片内的行选择线和列选择线分别有多少条?(2 分)
  2. 若存储器采用分布式(异步)刷新,且存储单元最长刷新间隔为 4 ms,刷新周期是多少?(1 分)
  3. 构建该存储器需要多少 DRAM 芯片?用于产生片选信号的地址有多少位?最适合采用哪种译码器产生片选信号?(3 分)
  4. 写出上述扩展中各片选信号(低电平有效)生成电路的逻辑函数表达式。(4 分)

六、Cache(共 10 分)

某机主存容量为 1 MB,Cache 容量为 16 KB,采用 4 路组相联结构,数据块大小为 128 字节,每个数据块需要 1 位有效位和 1 位修改位。

  1. 计算 Cache 的组数、主存的组数和每个主存组内的数据块数。(3 分)
  2. 给出主存地址格式,包括各字段名称和位数。(3 分)
  3. Cache 的地址标记 Tag 有多少位?(1 分)
  4. 计算 Cache 的实际总容量。(1 分)
  5. Cache 存取时间为 10 ns,主存存取时间为 90 ns;Cache 缺失时依次访问主存和 Cache。若 Cache 命中率为 0.9,计算该两级存储系统的平均存取时间,并计算它相对单级主存的加速比。(2 分)

七、MIPS CPU(共 15 分)

1. 数据相关(4.5 分)

指出下列指令片段中所有存在数据相关(读写相关或写读相关)的寄存器及相应指令序列。

I1: or  $5, $4, $22
I2: lw  $8, 4($16)
I3: and $4, $8, $5
I4: add $2, $16, $16
I5: sw  $8, 0($2)

答题格式示例为“$8, {I2, I3, I5}”,但正式答案不能包含这个示例。

2. 判断数据通路不支持的指令(10.5 分)

原图是一条 D、E、M、W 四段的流水数据通路,主要连接如下:

  • PC 只有经加法器加 4 后回写 PC 的路径,指令存储器输出进入 D 段寄存器。
  • D 段用指令的 [25:21]、[20:16] 读取寄存器堆,并直接用 [15:11] 作为写寄存器编号。
  • E 段两路 ALU 输入前各有一个二选一多路器,但图中没有立即数扩展单元。
  • ALU 结果进入 M 段;M 段的数据存储器以 ALU 结果作地址,并接收流水寄存器传来的写数据。
  • W 段在数据存储器读出值和 ALU 结果间二选一,结果回写寄存器堆。
  • 图中还画出了从后级到 E 段输入多路器的转发路径,但没有画出跳转目标生成或 PC 选择路径。

结合这条数据通路,指出下列代码中完全无法正确执行的指令,并简要说明原因。

I1: jal LF
I2: ori $4, $5, -9
I3: lw  $6, 8($2)
I4: add $1, $2, $6
I5: sub $7, $1, $3
LF:

答题格式示例为:“I2:(1)没有立即数扩展功能;(2)ALU 输入源中不包含立即数。”正式答案不能包含这个示例。

评论