313 lines
13 KiB
Markdown
313 lines
13 KiB
Markdown
|
|
---
|
|||
|
|
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|复习文档索引]]
|
|||
|
|
- [[计算机系统结构/课程笔记]]
|