2021 年冬《计算机组成》期末 A 卷
考试日期为 2021 年 1 月 11 日。源 PDF 没有独立答案页,我只转录题目,不补写答案;原卷中的结构图改写成等价的状态转移表或数据通路说明,避免贴整页试卷。
一、选择题(每题 2 分,共 20 分)
1. 补码与反码
对于 32 位二进制补码与反码的阐述,以下判断正确的是( )。
A. 在进行定点二进制运算时,减法运算通过补码运算的二进制减法器实现。
B. 用反码表示最小的负数为 ,最大的正数为 。
C. 用反码表示正零为 ,负零为 。
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. 存储器扩展
用 位 RAM 芯片构造 位存储器,需要的 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. 逻辑函数化简
将下列逻辑函数化为最简与或式:
2. 三人多数表决器
用 8 选 1 多路选择器 74LS151 实现三人多数表决器。A、B、C 表示三人的投票,高电平(原变量)表示赞成。
- 写出三人多数表决器的逻辑函数表达式。
- 在 74LS151 上添加适当连线。
原图的空白器件连接关系如下:A、B、C 分别接选择端 、、,输出端为 Y,数据输入端为 到 ;图旁给出了 VCC 和 GND,等待把各数据输入接到相应电平。
3. I 型指令的寻址方式
在 32 位 MIPS 指令系统中,I 型指令会用到 3 种寻址方式。说明这 3 种寻址方式分别是什么,并说明在每种方式中,立即数字段(指令第 15 到 0 位)的 16 位立即数分别表示什么。
4. 页式虚拟存储
某页式虚拟存储系统按字节编址,逻辑地址为 32 位,主存容量为 256 MB,页大小为 16 KB。每个页表项需要 1 位有效位和 1 位修改位,且假设所有虚页都在使用。
- 虚地址和实地址各有多少位?格式如何?(2 分)
- 程序虚拟空间最多可有多少页?(1 分)
- 每个页表项共有多少位?(1 分)
- 每个页表最多占多少内存空间?(1 分)
三、数字逻辑分析题(共 15 分)
一个有限状态机有 S0、S1、S2、S3 四个状态,输入为 0、1 二进制序列。原图中的边以“输入/输出”标注,转录如下:
| 当前状态 | 输入 0 | 输入 1 |
|---|---|---|
| S0 | S1 / 0 | S0 / 0 |
| S1 | S1 / 0 | S2 / 0 |
| S2 | S3 / 0 | S0 / 0 |
| S3 | S0 / 1 | S2 / 0 |
- 该状态机是 Moore 型还是 Mealy 型?(2 分)
- 初始状态为 S0,输入序列为 010100(从左至右输入)。给出对应的状态变化序列和输出序列。(2 分)
- 将 S0、S1、S2、S3 分别编码为 00、01、10、11,写出状态转换表,包括输出。(6 分)
- 根据状态转换表写出次态和输出的逻辑表达式并化简。当前状态、输入、次态、输出分别用 、、、 表示。(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 分)
采用若干容量为 位的 DRAM 芯片,构建按字节编址、容量为 位的存储器。
- 若 DRAM 芯片内部采用二维地址结构,且行地址和列地址数量相同,芯片内的行选择线和列选择线分别有多少条?(2 分)
- 若存储器采用分布式(异步)刷新,且存储单元最长刷新间隔为 4 ms,刷新周期是多少?(1 分)
- 构建该存储器需要多少 DRAM 芯片?用于产生片选信号的地址有多少位?最适合采用哪种译码器产生片选信号?(3 分)
- 写出上述扩展中各片选信号(低电平有效)生成电路的逻辑函数表达式。(4 分)
六、Cache(共 10 分)
某机主存容量为 1 MB,Cache 容量为 16 KB,采用 4 路组相联结构,数据块大小为 128 字节,每个数据块需要 1 位有效位和 1 位修改位。
- 计算 Cache 的组数、主存的组数和每个主存组内的数据块数。(3 分)
- 给出主存地址格式,包括各字段名称和位数。(3 分)
- Cache 的地址标记 Tag 有多少位?(1 分)
- 计算 Cache 的实际总容量。(1 分)
- 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 输入源中不包含立即数。”正式答案不能包含这个示例。