vault backup: 2026-06-15 22:39:56
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
---
|
||||
tags:
|
||||
- 计算机系统结构
|
||||
- 试题册
|
||||
- 索引
|
||||
create time: 2026-06-15 10:00
|
||||
---
|
||||
|
||||
# 计算机系统结构试题册索引
|
||||
|
||||
## 概述
|
||||
|
||||
本文档为武汉科技大学「计算机系统结构」课程试题合集索引。试题册包含 A 卷和 B 卷两套完整试卷,涵盖选择题、判断题、分析与设计题、论述题和综合题等多种题型,附有详细参考答案。
|
||||
|
||||
> [!tip] 使用建议
|
||||
> 建议先通读题目尝试作答,再对照答案检查。重点关注 **Cache 命中率计算**、**流水线调度** 和 **指令系统设计** 三类高频大题。
|
||||
|
||||
## 试题目录
|
||||
|
||||
| 序号 | 试卷 | 题型概要 |
|
||||
|:----:|------|----------|
|
||||
| 1 | [[试题1-A卷]] | 选择题(10题/20分), 分析与设计题(3题/56分), 论述题(3题/24分) |
|
||||
| 2 | [[试题1-B卷]] | 选择题(5题/10分), 判断题(10题/10分), 分析题(3题/48分), 综合题(2题/32分) |
|
||||
|
||||
## 知识点分布
|
||||
|
||||
```mermaid
|
||||
quadrantChart
|
||||
title "试题知识点覆盖"
|
||||
x-axis "低频" --> "高频"
|
||||
y-axis "简单" --> "困难"
|
||||
quadrant-1 "高难度高频"
|
||||
quadrant-2 "高难度低频"
|
||||
quadrant-3 "低难度低频"
|
||||
quadrant-4 "低难度高频"
|
||||
"Cache优化": [0.85, 0.75]
|
||||
"流水线调度": [0.75, 0.85]
|
||||
"Amdahl定律": [0.80, 0.55]
|
||||
"指令系统设计": [0.70, 0.60]
|
||||
"存储一致性": [0.30, 0.80]
|
||||
"Flynn分类": [0.45, 0.25]
|
||||
"RISC原则": [0.40, 0.35]
|
||||
"并行处理": [0.35, 0.75]
|
||||
"I/O系统": [0.25, 0.30]
|
||||
"总线技术": [0.30, 0.40]
|
||||
```
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[计算机系统结构/复习文档/index|复习文档索引]]
|
||||
@@ -0,0 +1,345 @@
|
||||
---
|
||||
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. 计算机系统中,某个功能的处理时间占整个系统运行时间的 20%,如果将该功能部件的处理速度提升至原来的 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.8 + 0.2/15} \approx 1.228$,即 $1/S \approx 0.814 \approx 1/0.72$。
|
||||
|
||||
> [!note] 知识点补充
|
||||
> 这是经典的 **Amdahl 定律**:$S = \frac{1}{(1-f) + \frac{f}{n}}$,其中 $f=0.2$,$n=15$,代入得 $S = \frac{1}{0.8 + 0.2/15} \approx 1.228$。注意题目问的是"改进后整个系统的加速比",即 $1/S_{new}$,需仔细审题。
|
||||
|
||||
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|复习文档索引]]
|
||||
- [[计算机系统结构/课程笔记]]
|
||||
@@ -0,0 +1,312 @@
|
||||
---
|
||||
tags:
|
||||
- 计算机系统结构
|
||||
- 试题
|
||||
create time: 2026-06-15 10:00
|
||||
---
|
||||
|
||||
# 试题 2 — 武汉科技大学《计算机系统结构》B卷
|
||||
|
||||
## 概述
|
||||
|
||||
- **课程**:计算机系统结构
|
||||
- **学校**:武汉科技大学
|
||||
- **题型**:选择题, 判断题, 分析题, 综合题
|
||||
- **知识点**:Cache, 流水线, 指令系统, Amdahl定律, 存储层次, Flynn分类, RISC, I/O系统
|
||||
|
||||
> [!tip] 学习建议
|
||||
> 本套试题新增了**判断题**和**综合题**两种题型,综合题侧重于 Amdahl 定律的计算应用和并行系统性能分析。判断题考察基本概念的准确性,分析题中的流水线数据相关和 Cache 设计计算是重点难点,建议配合 A 卷对比复习。
|
||||
|
||||
## 正文
|
||||
|
||||
### 一、选择题(每题 2 分,共 10 分)
|
||||
|
||||
1. 在相联映像,LRU 替换的 Cache 存储器,不影响 Cache 命中率的是( )。
|
||||
A. 增加主存容量
|
||||
B. 增加块的大小
|
||||
C. 增大 Cache 容量
|
||||
D. 减少 Cache 中的块数
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **A**
|
||||
|
||||
> [!note] 知识点补充
|
||||
> Cache 命中率主要受 Cache 容量、块大小、相联度和替换策略影响。**主存容量**的增减不影响 Cache 的命中率,因为 Cache 只缓存主存中被访问过的数据块。
|
||||
|
||||
2. 按 Flymn 提出的计算机系统分类方法,多处理机属于( )。
|
||||
A. SISD
|
||||
B. SIMD
|
||||
C. MISD
|
||||
D. MIMD
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **D**
|
||||
|
||||
> [!note] 知识点补充
|
||||
> 多处理机(MPP)属于 **MIMD**(多指令流多数据流),每个处理器可以独立执行不同的指令流处理不同的数据流。
|
||||
|
||||
3. 评价 I/O 系统性能的主要参数包括( )。
|
||||
A. 连接特性
|
||||
B. I/O 系统的容量
|
||||
C. 响应时间和吞吐率
|
||||
D. 以上都是
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **D**
|
||||
|
||||
> [!note] 知识点补充
|
||||
> I/O 系统性能评价是多维度的:连接特性(设备数量和带宽)、容量(存储空间)、响应时间(延迟)和吞吐率(单位时间处理量)都是关键指标。
|
||||
|
||||
4. 以下不属于 RISC 机器遵循的设计原则的是( )。
|
||||
A. 指令字长尽量是 32 位
|
||||
B. 指令数量少,采用等长格式,寻址方式不超过 2 种
|
||||
C. 采用流水线机制,大部分指令能在单个时钟周期内完成
|
||||
D. 大多数指令采用硬连线逻辑来实现
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **A**
|
||||
|
||||
> [!note] 知识点补充
|
||||
> RISC 的核心原则是精简指令集、等长格式、load-store 架构、硬连线控制等。**指令字长尽量是 32 位**并非 RISC 的必须原则,RISC 强调的是指令精简和规整性。
|
||||
|
||||
5. 从程序开发的角度看待,计算机性能更重要的指标是( )。
|
||||
A. 单个程序的执行时间
|
||||
B. CPU 的架构
|
||||
C. 数据访问效率
|
||||
D. 任务吞吐率
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **A**
|
||||
|
||||
> [!note] 知识点补充
|
||||
> 从程序员角度,最关心的是**单个程序的执行时间**——即自己的程序跑多快。CPU 架构、数据访问效率都是影响因素,但最终体现为执行时间。
|
||||
|
||||
---
|
||||
|
||||
### 二、判断题(每题 1 分,共 10 分)
|
||||
|
||||
1. 理想 CPI 是衡量流水线性能的一个指标。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
2. 并行,即是在计算机系统某一时刻或者一段时间内进行多种运算或操作。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
3. 吞吐率是指单位时间内流水线完成的任务数或输出结果的数量。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
4. 采用分离 Cache 指令中不必使用延迟槽。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **F**
|
||||
|
||||
5. I/O 系统的性能对 CPU 的利用率影响不大,两者的性能不匹配,I/O 系统就有可能成为整个系统的瓶颈。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
6. 从基于目录的 Cache 一致性机制中,可以看出这些点并非全是一个结点。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **F**
|
||||
|
||||
7. 对于绝大多数程序来说,程序访问的局部性在地址空间的分布上不是均匀的,而是相对地聚集。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
8. 计算机的主存是由按块随机存取,但主存和 Cache 的大小不一样。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **F**
|
||||
|
||||
9. 如果对某个数据项的任何处理器都能得到最新的值,则称这个存储系统是一致的。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **T**
|
||||
|
||||
10. 计算机完成一条任务依次所经历的层次是:数据准备、存储器访问、计算、输入/输出、结果存储等。( )
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **F**
|
||||
|
||||
> [!note] 解题思路
|
||||
> 判断题需注意关键词和细节。例如第 2 题,并行强调的是"同一时刻"或"一段时间内"的并发操作,但定义中"某一时刻或者一段时间内"表述过于宽泛。第 9 题是存储一致性的经典定义。
|
||||
|
||||
---
|
||||
|
||||
### 三、分析题(每题 16 分,共 48 分)
|
||||
|
||||
1. 在设计某计算机的指令系统时,如果只需要设计单地址指令和双地址指令两种类型,而且其指令字长固定为 16 位,每个地址字段都是 6 位,一共需要设计 12 条双地址指令,请问采用以下两种方式时的操作码设计,分别计算可以设计的单地址指令条数,并画出各自的指令格式。(操作码字段中地址码字段的位数分配)
|
||||
|
||||
(1)定长操作码格式
|
||||
|
||||
(2)等长扩展码
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **(1)定长操作码**:操作码 4 位($16-6\times2=4$),共 $2^4=16$ 条指令,双地址占 12 条,单地址最多 **4 条**。
|
||||
>
|
||||
> **(2)等长扩展码**:基本操作码 4 位中 12 个用于双地址,剩余 4 个(1100~1111)扩展为 10 位操作码 + 6 位地址,单地址最多 $4 \times 2^6 =$ **256 条**。
|
||||
|
||||
> [!note] 解题思路
|
||||
>
|
||||
> **(1)定长操作码**
|
||||
>
|
||||
> 指令字长 16 位,每个地址码字段 6 位。操作码字段位数 $= 16-6 \times 4 = 4$ 位,共 $2^4=16$ 条指令。双地址指令有 12 条,最多可设计 $16-12=4$ 条单地址指令。
|
||||
>
|
||||
> **(2)等长扩展码**
|
||||
>
|
||||
> 基本操作码 4 位中,12 个编码(0000~1011)用于双地址指令,其余 4 个编码(1100~1111)用于操作码扩展,和一个地址字段(共 6 位)编码。单地址指令最多 $4 \times 2^6 = 256$ 条。
|
||||
|
||||
2. 假设某计算机有一条流水线,该流水线没有定向传送机制,有多个操作部件,其中 MOVE 部件可以完成数据传送,ADD 部件可以完成加法操作,DIV 部件可以完成除法操作,其在处理器上执行以下三条指令构成的程序段,操作数放在 R1 寄存器中,结果放在 R4 寄存器中:
|
||||
|
||||
k: SUB R2, R1, R3 ;(R2)←(R1)-(R0)
|
||||
k+1: MOVE R4, R2 ;(R4)←(R2)
|
||||
k+2: DIV R4, R1, R3 ;(R4)←(R4)/(R3)
|
||||
|
||||
(1)首先分析以上三条指令组成的序列,它们存在哪些相关,在哪些段。
|
||||
|
||||
(2)在以下给定条件下,画出指令执行的时空图,分析完成以上 3 条指令一共需要多少个时钟周期?
|
||||
|
||||
给定条件:
|
||||
- 在流水线中,每种指令的取指段、译码段各需要一个时钟周期。
|
||||
- MOVE、SUB 和 DIV 指令的具体执行部件分别需要 2 个、3 个和 4 个时钟周期。
|
||||
- 所有指令都在第一个时钟周期从通用存储器中读取操作数,在最后一个时钟周期将运算结果写回到通用寄存器。
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **(1)** k→k+1 存在 **RAW 数据相关**(R2);k+1→k+2 存在 **RAW 数据相关**(R4);k+1 与 k+2 之间存在名相关中的**输出相关**(R4)。
|
||||
>
|
||||
> **(2)** 无定向传送,共需 **10 个时钟周期**:
|
||||
>
|
||||
> | 部件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
||||
> |:----:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:--:|
|
||||
> | IF | k | k+1 | k+2 | | | | | | | |
|
||||
> | ID | | k+1 | k+2 | | | | | | | |
|
||||
> | ADD | | | k | k | k | | | | | |
|
||||
> | MOVE | | | | | | | k+1 | k+1 | | |
|
||||
> | DIV | | | | | | | k+2 | k+2 | k+2 | k+2 |
|
||||
|
||||
> [!note] 解题思路
|
||||
>
|
||||
> **(1)数据相关分析**
|
||||
>
|
||||
> - **k 和 k+1 之间存在写后读相关(RAW)**:指令 k+1 需要读取 k 的结果 R2
|
||||
> - **k+1 和 k+2 之间存在写后读相关(RAW)**:指令 k+2 需要读取 k+1 的结果 R4
|
||||
> - **k 和 k+2 之间不存在直接相关**
|
||||
>
|
||||
> 由于没有定向传送机制,相关指令之间必须插入气泡(空闲周期)来避免数据冲突。
|
||||
>
|
||||
> **(2)时空图与时钟周期分析**
|
||||
>
|
||||
> 各指令执行时间:
|
||||
> - SUB:取指(1) + 译码(1) + 执行(3) + 写回(1) = 6 个时钟周期
|
||||
> - MOVE:取指(1) + 译码(1) + 执行(2) + 写回(1) = 5 个时钟周期
|
||||
> - DIV:取指(1) + 译码(1) + 执行(4) + 写回(1) = 7 个时钟周期
|
||||
>
|
||||
> **(3)流水线相关的 3 种类型**
|
||||
>
|
||||
> - **数据相关**(真数据相关):两条指令 i 和 j,若 j 使用 i 的计算结果,则 j 与 i 数据相关。反映了数据流动关系。
|
||||
> - **名相关**:两条指令使用相同寄存器/存储器名称,但无数据传递。包括反相关(写后读)和输出相关(写后写),可通过换名消除。
|
||||
> - **控制相关**:由分支指令引起,需根据分支结果确定后续执行路径。
|
||||
|
||||
3. 在给一个计算机系统设计 Cache 方案时,有两个备选方案,分别是直接映像 Cache 和两路组相联 Cache,请根据以下列出的系统基本情况,分析计算不同方案下的平均访问时间以及 CPU 的价格,选择合适的方案。
|
||||
|
||||
(1)如果 Cache 情况下的 CPI 为 2.5,时钟周期为 2ns,平均每条指令访存 1.5 次。
|
||||
|
||||
(2)但根据 Cache 中的多路选择器使 CPU 的时钟周期增加了 10%。
|
||||
|
||||
(3)这种 Cache 的不命中率总是为 90‰。
|
||||
|
||||
(4)命中时间为 1 个时钟周期。
|
||||
|
||||
(5)直接映像 Cache 的不命中率为 1.5%,两路组相联 Cache 的不命中率为 1.2%。
|
||||
|
||||
> [!abstract]- 答案
|
||||
> **直接映像**:时钟 2ns,不命中率 1.5% → 平均访存 $= 1 + 1.5\% \times 90 = 2.35$ns,$CPU时间 = IC \times (2.5 \times 2 + 1.5\% \times 90) = 7.025IC$ ns
|
||||
>
|
||||
> **两路组相联**:时钟 2.2ns,不命中率 1.2% → 平均访存 $= 0.8 + 2.2 + 1.2\% \times 90 = 0.28$ns,$CPU时间 = IC \times (2.5 \times 2.2 + 1.2\% \times 90) = 7.12IC$ ns
|
||||
>
|
||||
> **结论**:选择**直接映像 Cache**。虽然组相联访存时间略短,但时钟周期增长导致 CPU 时间更长,且直接映像实现更简单。
|
||||
|
||||
> [!note] 解题思路
|
||||
>
|
||||
> **(1)平均访存时间 = 命中时间 + 不命中率×不命中开销**
|
||||
>
|
||||
> - 直接映像:$T_1 = 1 + 1.5\% \times 90 = 2.35$ns
|
||||
> - 两路组相联:$T_2 = 0.8 + 2.2 + 1.2\% \times 90 = 0.28$ns
|
||||
>
|
||||
> **(2)CPU 时间**
|
||||
>
|
||||
> $CPU时间 = IC \times (CPI \times 时钟周期 + 每指令访存次数 \times 不命中率 \times 不命中开销)$
|
||||
>
|
||||
> - 直接映像:$7.025IC$ ns
|
||||
> - 两路组相联:$7.12IC$ ns
|
||||
>
|
||||
> 性能比 $\frac{7.12}{7.025} \approx 1.0135$,直接映像更快。
|
||||
|
||||
---
|
||||
|
||||
### 四、综合题(每题 16 分,共 32 分)
|
||||
|
||||
1. 自第一台通用计算机问世以来,计算机的性能以每年近人的速度增长。这得益于计算机系统结构设计技术,特别是基于计算机系统设计中广泛的定量原理。你知道系统设计中经常使用的定量原理有哪些?简述它们的主要内容和含义。
|
||||
|
||||
> [!abstract]- 答案
|
||||
> 四个定量原理:
|
||||
>
|
||||
> (1)**以经常性事件为重点**:对高频事件优先处理,获得更大总体改善。
|
||||
>
|
||||
> (2)**Amdahl 定律**:加速比受限于瓶颈部件在系统中的重要性。
|
||||
>
|
||||
> (3)**CPU 性能公式**:$CPU时间 = IC \times CPI \times 时钟周期$。
|
||||
>
|
||||
> (4)**程序局部性原理**:程序访问在时间/空间上具有聚集性,非随机分布。
|
||||
|
||||
> [!note] 参考答案要点
|
||||
>
|
||||
> **(1)以经常性事件为重点**(最主要原理 2 分)
|
||||
>
|
||||
> 在计算机系统的设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,从而得到更多的总体上的改善。
|
||||
>
|
||||
> **(2)Amdahl 定律**(2 分)
|
||||
>
|
||||
> 加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。
|
||||
>
|
||||
> **(3)CPU 性能公式**(2 分)
|
||||
>
|
||||
> 执行一个程序所需的 CPU 时间 $= IC \times CPI \times$ 时钟周期时间。
|
||||
>
|
||||
> **(4)程序的局部性原理**(2 分)
|
||||
>
|
||||
> 程序在执行时所访问的地址空间的分布不是随机的,而是相对地聚集。
|
||||
|
||||
2. 并行处理面临着两个重要挑战:一个是程序中的并行性有限;另一个相对较大的通信开销,比如多处理器中从远端内存访问的巨大延迟。某单位需要评估程序在远程访问时间对多处理器性能的影响,作了以下试验:每单位(使用含 32 个处理器的计算机集群,处理程序的执行时间为 10ns,基于单处理器的 CPI 为 1.0),分为两种情况进行实验:第一种情况没有远程访问,第二种情况有 0.5% 的指令需要远程访问,对远程处理器访问时间为 2000ns,预测一下前后对比会快多少?(除通信以外,假设计算中的访问均匀中都局部存储器。当发出一个远程请求时,此处理器就挂起)
|
||||
|
||||
> [!abstract]- 答案
|
||||
> 远程访问时钟 $= 2000 / 10 = 200$ 个时钟
|
||||
>
|
||||
> 有远程访问时 $CPI = 1.0 + 0.5\% \times 200 = 2.0$
|
||||
>
|
||||
> 无远程访问时 $CPI = 1.0$
|
||||
>
|
||||
> **结论**:无远程访问的机器速度是有 0.5% 远程访问机器的 **2 倍**。
|
||||
|
||||
> [!note] 参考答案要点
|
||||
>
|
||||
> 有 0.5% 远程访问的机器的实际 CPI 为:
|
||||
>
|
||||
> $CPI = \text{基本 CPI} + \text{远程访问率} \times \text{远程访问开销}$
|
||||
>
|
||||
> $= 1.0 + 0.5\% \times 200 = 2.0$
|
||||
>
|
||||
> 它为只有局部访问的机器的 $2.0 / 1.0 = 2$ 倍。
|
||||
>
|
||||
> 因此在没有远程访问状态下这台机器速度是有 0.5% 远程访问的机器速度的 2 倍。
|
||||
|
||||
## 关联笔记
|
||||
- [[计算机系统结构/复习文档/index|复习文档索引]]
|
||||
- [[计算机系统结构/课程笔记]]
|
||||
Reference in New Issue
Block a user