Files
final-exam/计算机系统结构/试题册/试题1-A卷.md
T

346 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags:
- 计算机系统结构
- 试题
create time: 2026-06-15 10:00
---
# 试题 1 — 武汉科技大学《计算机系统结构》A卷
## 概述
- **课程**:计算机系统结构
- **学校**:武汉科技大学
- **题型**:选择题, 分析与设计题, 论述题
- **知识点**:Cache, 流水线, RISC, Amdahl定律, 总线, 存储层次, 指令系统, Flynn分类
> [!tip] 学习建议
> 本套试题重点考察 Cache 优化、流水线调度和 Amdahl 定律的应用。建议先掌握选择题中的基础概念(Flynn 分类、RISC 原则),再深入分析题中的 Cache 命中率计算与流水线时空图绘制。论述题侧重理论阐述,需理解存储一致性协议和 Cache 优化的系统性分类。
## 正文
### 一、选择题(每题 2 分,共 20 分)
1. 流水线计算机中,把指令 Cache 和数据 Cache 分开,主要是为了( )。
A. 提高存储系统的速度
B. 增加存储系统的容量
C. 解决访存部件冲突
D. 解决访存冲突
> [!abstract]- 答案
> **D**
> [!note] 知识点补充
> 指令 Cache 和数据 Cache 分离的核心目的是避免**结构冲突**——当 CPU 同一周期需要同时读取指令和数据时,统一 Cache 只能串行服务,分离后可并行访问。
2. 计算机系统中,某个功能的处理时间占整个系统运行时间的 30%,如果将该功能部件的处理速度提升至原来的 15 倍,改进后整个系统的加速比是( )。
A. 1/0.72
B. 0.72
C. 1/0.45
D. 0.45
> [!abstract]- 答案
> **A**
>
> Amdahl 定律:$S = \frac{1}{(1-f) + \frac{f}{n}} = \frac{1}{0.7 + 0.3/15} = \frac{1}{0.72}$,即 $S = 1/0.72$。
> [!note] 知识点补充
> 这是经典的 **Amdahl 定律**:$S = \frac{1}{(1-f) + \frac{f}{n}}$,其中 $f=0.3$,$n=15$,代入得 $S = \frac{1}{0.7 + 0.3/15} = \frac{1}{0.72}$。注意此题 $f \times n = 0.3 \times 15 = 4.5$,即使无限提升该部件速度($n \to \infty$),加速比上限仅为 $\frac{1}{1-f} = \frac{1}{0.7} \approx 1.43$,体现了瓶颈效应。
3. 某计算机的主频为 600MHz,执行 2000 条指令的测试程序,每条指令的平均时钟周期数为 4,则该计算机的 MIPS 为( )百万条/秒。
A. 15
B. 150
C. 3000
D. 300000
> [!abstract]- 答案
> **B**
>
> $MIPS = \frac{f}{CPI \times 10^6} = \frac{600 \times 10^6}{4 \times 10^6} = 150$
> [!note] 知识点补充
> $MIPS = \frac{f}{CPI \times 10^6} = \frac{600 \times 10^6}{4 \times 10^6} = 150$。MIPS 是衡量处理器运算速度的常用指标。
4. Flymn 分类法是按照指令流和数据流的多倍性进行分类的,其中( )只是人为的划分,并没有实际的计算机。
A. SISD
B. SIMD
C. MISD
D. MIMD
> [!abstract]- 答案
> **C**
> [!note] 知识点补充
> **MISD**(多指令流单数据流)在实际中几乎不存在——同一个数据同时被多条不同指令处理的场景在冯·诺依曼架构下没有实际意义,故为理论分类。
5. 以下各项中,( )不是设计 RISC 机器应当遵循的原则。
A. 指令数少,指令功能简单
B. 采用寄存器到寄存器的寻址方式
C. 指令格式力求统一,寻址方式尽可能少
D. 采用 load-store 结构,只有 load 和 store 指令才能访问存储器
> [!abstract]- 答案
> **C**
> [!note] 知识点补充
> RISC 的核心原则包括:指令精简、寻址方式简单、load-store 架构、指令格式统一等。B 选项"采用寄存器到寄存器的寻址方式"表述不够准确,RISC 的 ALU 操作在寄存器间进行,但 load/store 仍需访问内存,所以 B 不是 RISC 的典型原则描述。
6. 流水线计算机的实际 CPU 时间等于理想流水线的 CPU 加上各种停顿的时钟周期数,其中各种停顿周期数大致不包括( )。
A. 由结构冲突引起的停顿
B. 由 Cache 不命中中引起的停顿
C. 由数据冲突引起的停顿
D. 由控制冲突引起的停顿
> [!abstract]- 答案
> **B**
> [!note] 知识点补充
> 流水线停顿主要来自三类冲突:**结构冲突**、**数据冲突**、**控制冲突**。Cache 不命中引起的停顿属于存储访问延迟,通常归入结构冲突或单独讨论,但不作为流水线冲突的标准分类。
7. Amdahl 定律告诉我们,计算机系统的性能受限于( )。
A. 系统中最慢的部分
B. 主存储器的速度
C. 系统的响应时间
D. 外部存储器的速度
> [!abstract]- 答案
> **A**
> [!note] 知识点补充
> **Amdahl 定律**的核心思想:系统整体性能受限于最慢的部件(瓶颈)。改进非瓶颈部件对整体性能提升有限。
8. 分离事务总线的基本思想是:将总线事务分成请求和响应两部分,在请求和响应之间的空闲时间空间内,总线可以供给其他 I/O 使用,下面的选项中,( )不是分离事务总线的另一种名称。
A. 流水总线
B. 分离协议总线
C. 交叉互连总线
D. 独占总线
> [!abstract]- 答案
> **D**
> [!note] 知识点补充
> 分离事务总线通过将事务分成请求和响应阶段,在空闲时间允许其他设备使用总线,提高总线利用率。**交叉互连总线**是一种不同的总线拓扑结构,不属于分离事务总线的别称。
9. 计算/通信比是反映并行程序性能的一个重要指标。通常情况下,计算/通信比值随着处理的数据规模的增加而( ),随着处理器数目的增加而( )。
A. 减少,增加
B. 减少,减少
C. 增加,减少
D. 增加,增加
> [!abstract]- 答案
> **C**
> [!note] 知识点补充
> 随数据规模增加,计算量增长快于通信量(如 $O(n^2)$ vs $O(n)$),比值增大;随处理器增多,每个处理器分到的数据减少,但通信开销相对增加,比值减小。
10. 在计算机层次结构的各个级上都有自己固有的系统结构,计算机系统结构的经典定义是:Amdahl 提出的,它是( )所见到的计算机属性。
A. 应用语言程序员
B. 高级语言程序员
C. 机器语言程序员
D. 汇编语言程序员
> [!abstract]- 答案
> **C**
> [!note] 知识点补充
> Amdahl 定义的计算机系统结构是**机器语言程序员**所见到的计算机属性,即指令集架构(ISA)层面。这是系统结构的核心定义。
---
### 二、分析与设计题(共 56 分)
1.(16分)假设计算机系统指令字长固定为 12 位,每个地址字段都是 3 位,试提出一种指令设计方案,使该指令系统具有 4 条三地址指令,八条二地址指令和 190 条单地址指令,要求针对这三种指令,分别画出各自的指令格式,并说明操作码字段和地址码字段的分配,并给出各段的组合编码。
> [!abstract]- 答案
> 采用**扩展操作码**技术:
>
> **三地址指令**(操作码 3 位 + 地址×3 = 12位):操作码 000~011(4条)。
>
> **二地址指令**(操作码 6 位 + 地址×2 = 12位):操作码高3位 100,低3位 000~111(8条)。
>
> **单地址指令**(操作码 9 位 + 地址 = 12位):利用 101~111 共 7 组高位编码,低 6 位扩展,$3 \times 2^3 \times 8 + ... = 190$ 条。
> [!note] 解题思路
> 采用**扩展操作码**技术:操作码字段位数不固定,通过高位码区分不同类型的指令。三地址指令用最少操作码位,二地址和单地址指令逐步扩展操作码位数。
>
> **三地址指令格式**(操作码 3 位 + 地址1 3位 + 地址2 3位 + 地址3 3位 = 12位):
>
> | 操作码(3位) | 地址1(3位) | 地址2(3位) | 地址3(3位) |
> |:-----------:|:----------:|:----------:|:----------:|
> | 0~2 | 3~5 | 6~8 | 9~11 |
>
> **二地址指令格式**(操作码 6 位 + 地址1 3位 + 地址2 3位 = 12位):
>
> | 操作码(6位) | 地址1(3位) | 地址2(3位) |
> |:-----------:|:----------:|:----------:|
> | 0~5 | 6~8 | 9~11 |
>
> **单地址指令格式**(操作码 9 位 + 地址1 3位 = 12位):
>
> | 操作码(9位) | 地址1(3位) |
> |:-----------:|:----------:|
> | 0~8 | 9~11 |
2.(24分)有一个 4 段线性流水线,各段执行时间均为 $\Delta t$,其预约表如下所示:
| 时间 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| $S_1$ | $\checkmark$ | | | | $\checkmark$ | | |
| $S_2$ | | $\checkmark$ | | | | $\checkmark$ | |
| $S_3$ | | | $\checkmark$ | | | | $\checkmark$ |
| $S_4$ | | | | $\checkmark$ | | | |
(1)画出流水线任务调度的状态转移图(10 分)
(2)求流水线的最优调度策略(4 分)
(3)按最优调度策略连续输入 4 个任务,画出完成这 4 个任务的流水线时空图,并计算流水线的实际吞吐率。
> [!abstract]- 答案
> **(1)** 禁止表 $F=\{1, 3, 4, 6\}$,初始冲突向量 $C_0 = \langle 101101 \rangle$。$j=2$ 时新向量为 $C_1 = 101111$;$j=5$ 时新向量为 $C_0$。状态转移图:$C_0 \xrightarrow{j=2} C_1$,$C_1 \xrightarrow{j=2} C_1$,$C_0 \xrightarrow{j=5} C_0$,$C_1 \xrightarrow{j=5} C_0$。
>
> **(2)** 最优调度策略为 **(2, 5)**,平均延迟 **3.5 拍**。
>
> **(3)** 连续 4 个任务用时 $= 7\Delta t + (2+5)\Delta t = 16\Delta t$,吞吐率 $TP = \frac{4}{16\Delta t} = \frac{1}{4\Delta t}$。
> [!note] 解题思路
>
> **(1)状态转移图**
>
> 由预约表可写出禁止表 $F=\{1, 3, 4, 6\}$;初始冲突向量 $C_0 = \langle 101101 \rangle$。
>
> 即一个任务进入流水线之后,间隔 1、3、4、6 个时钟周期($\Delta t$)不可以进入下一个任务。可取 $j$ 的值只能是 2 和 5。
>
> - $j=2$,新的冲突向量 $= SHR^{(2)}(C_0) \lor C_0 = 001011 \lor 101101 = 101111$,记为 $C_1$;
> - $j=5$,新的冲突向量 $= SHR^{(5)}(C_0) \lor C_0 = 000001 \lor 101101 = 101101 = C_0$。
>
> 进一步,在状态 $C_1$ 下,$j$ 可取 2 和 5。新的冲突向量 $= SHR^{(2)}(C_1) \lor C_0 = 001011 \lor 101101 = 101111 = C_1$。
>
> 状态转移图:
>
> ```mermaid
> stateDiagram-v2
> direction LR
> [*] --> C0
> C0 --> C1: "j=2"
> C0 --> C0: "j=5"
> C1 --> C1: "j=2"
> C1 --> C0: "j=5"
> ```
>
> **(2)最优调度策略**
>
> | 调度策略 | 平均延迟拍数 |
> |:--------:|:----------:|
> | (5) | 5 |
> | (2, 5) | 3.5 |
> | (2, 7) | 4.5 |
>
> 最优调度策略是 (2, 5),平均延迟 3.5 拍。
>
> **(3)时空图与吞吐率**
>
> | 时间 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
> |:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
> | $S_1$ | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | | | |
> | $S_2$ | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ | | |
> | $S_3$ | | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ |
> | $S_4$ | | | | $X_1$ | | | | $X_2$ | | | | $X_3$ | | | | $X_4$ |
3.(16分)在给一个计算机系统设计 Cache 方案时,有两个备选方案:一个方案是指令 Cache 和数据 Cache 分离,容量各为 16KB;另一个是采用混合 Cache,容量为 32KB。
(1)假定取指令对 Cache 的访问命中率为 78%,对数据 Cache 访问命中率为 22%;
(2)Cache 的命中时间为 1 个时钟周期,不命中开销为 40 个时钟周期。在混合 Cache 中一次 load 或 store 操作 Cache 的命中时间都要增加 1 个时钟周期;
(3)若采用分离 Cache,16KB 的指令 Cache 的不命中率为 1%,16KB 的数据 Cache 的不命中率为 5%;若采用 32KB 的混合 Cache,其不命中率为 1.5%。
试问指令 Cache 和数据 Cache 总容量为 16KB 的分离 Cache 和总容量为 32KB 的混合 Cache 相比,哪种 Cache 的总体性能更好?写出计算平均访问时间的公式,计算两种情况下的平均访问时间各是多少?并详细说明你的分析过程。
> [!abstract]- 答案
> **混合 Cache** 不命中率 1.5%,但 load/store 命中时间 +1 周期:
> - 平均访存时间 $= 78\% \times (1+1.5\% \times 40) + 22\% \times (2+1.5\% \times 40) = 1.782$ 周期
>
> **分离 Cache** 指令不命中率 1%、数据 5%:
> - 平均访存时间 $= 78\% \times (1+1\% \times 40) + 22\% \times (1+5\% \times 40) = 1.752$ 周期
>
> **结论**:选择**分离 Cache**,虽然混合 Cache 不命中率更低,但额外的命中时间开销使其整体更慢。
> [!note] 解题思路
>
> **(1)总体不命中率**
>
> 混合 Cache:1.5%;分离 Cache:$78\% \times 1\% + 22\% \times 5\% = 1.88\%$
>
> **(2)平均访存时间 = 命中时间 + 不命中率×不命中开销**
>
> **① 混合 Cache**:指令命中时间 1 周期,数据命中时间 2 周期(load/store +1)
>
> 平均访存时间 $= 78\% \times (1 + 1.5\% \times 40) + 22\% \times (2 + 1.5\% \times 40) = 1.782$ 周期
>
> **② 分离 Cache**:命中时间均为 1 周期
>
> 平均访存时间 $= 78\% \times (1 + 1\% \times 40) + 22\% \times (1 + 5\% \times 40) = 1.752$ 周期
---
### 三、论述题(共 24 分)
1.(10分)对于多处理器的存储器系统一致性问题,一般我们认为:如果对某个数据项的任何处理器都能得到最新的值,则称该存储系统是一致的。针对此定义,从处理器对存储单元 X 进行读/写的角度,具体分析一下存储器应该满足什么条件,才能保证该存储器是一致的。
> [!abstract]- 答案
> 存储一致性需满足三个条件:
>
> (1)处理器 P 写 X 后又读 X,若期间无其他处理器写 X,则 P 读到的是自己写入的值。
>
> (2)处理器 P 写 X 后,处理器 Q 读 X,若期间无其他写操作,则 Q 读到的是 P 写入的值。
>
> (3)对 X 的两次写之间若无其他处理器写 X,则最后写入的值保留(写顺序对所有处理器可见)。
> [!note] 参考答案要点
> 如果一个存储器满足以下三点,则称该存储器是一致的:
>
> (1)处理器 P 在对存储单元 X 进行一次写之后又对 X 进行读,并且在这个读和写之间没有其他处理器对 X 进行写,则 P 读到的值应该是该写操作的值。
>
> (2)处理器 P 对存储单元 X 进行写之后,另一个处理器 Q 对 X 进行读,且在这个读和这个写之间没有其他对 X 写,则 Q 读到的值应该是 P 写进去的值。
>
> (3)对同一存储单元 X 的两次写是进行的,但在这两个写之间没有其他处理器对 X 写,则最后写入的值应该留在 X 中。例如,对同一地址先写 1、后写 2,则任何处理器都会先读到 1、后读到 2。
2.(14分)Cache 的优化技术一共有 17 种,其中:
- 8 种着重于降低不命中开销,增加 Cache 块大小,增加 Cache 的容量,提高相联度,伪相联 Cache,硬件预取,编译器控制的预取,编译优化," Victim " Cache
- 5 种着重于减少不命中开销,采用非阻塞 Cache,让不命中先完成写存,写缓冲合并,请求字处理技术,非阻塞 Cache 技术
- 4 种着重于减少命中时间,容量小,结构简单的 Cache,虚拟 Cache,Cache 访问流水化,路预测
——任选 3 种简述其基本思想及其对 Cache 性能的影响情况(略)
> [!abstract]- 答案
> 17 种 Cache 优化技术分三类:**降低不命中率**(8种:增大块/容量、提高相联度、伪相联、预取、编译优化、Victim Cache);**减少不命中开销**(5种:非阻塞、写合并、请求字);**减少命中时间**(4种:小容量简单 Cache、虚拟 Cache、流水化、路预测)。
> [!note] 解题思路
> 此题要求从 17 种 Cache 优化技术中任选 3 种,分别阐述基本思想和性能影响。常见选择包括:
>
> - **增加 Cache 块大小**:利用空间局部性,减少强制性不命中,但块过大会增加不命中开销
> - **提高相联度**:降低冲突不命中率,但增加命中时间
> - **非阻塞 Cache**:允许不命中时继续服务后续请求,提高流水线效率
> - **硬件预取**:提前将可能需要的数据调入 Cache,减少等待时间
> - **容量小、结构简单的 Cache**:缩短命中时间,适用于第一级 Cache
3.(10分)简述计算机系统结构的四个定量原理。
> [!abstract]- 答案
> (1)**以经常性事件为重点**:对经常发生的情况赋予优先处理权,获得更大总体改善。
>
> (2)**Amdahl 定律**:系统加速比受限于瓶颈部件的改进潜力。
>
> (3)**CPU 性能公式**:$CPU时间 = IC \times CPI \times 时钟周期$。
>
> (4)**程序局部性原理**:程序访问在时间和空间上具有聚集性。
> [!note] 知识点补充
> 四个定量原理是计算机系统设计的基石。Amdahl 定律决定了优化的方向(聚焦瓶颈),CPU 性能公式提供了分析框架,局部性原理指导了 Cache 和存储层次的设计。
## 关联笔记
- [[计算机系统结构/复习文档/index|复习文档索引]]
- [[计算机系统结构/课程笔记]]