Files
2026-05-16 17:16:51 +08:00

443 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
# 第1章 概述 - 章节习题与答案详解
> **说明**以下习题全部从三位老师的PPT中原样摘抄逐题给出参考答案与详细解析。
---
## 曲冠南老师习题
### 习题一Amdahl定律应用
**原题Slide 47-48**
> 例 将计算机系统中某一功能的处理速度提高到原来的20倍但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
**参考答案**
根据Amdahl定律系统加速比公式为
```
总加速比 = 1 / [(1-可改进比例) + 可改进比例/部件加速比]
```
已知:
- 可改进比例 = 40% = 0.4
- 部件加速比 = 20
计算:
```
总加速比 = 1 / [(1-0.4) + 0.4/20]
= 1 / [0.6 + 0.02]
= 1 / 0.62
= 1.613
```
**答案**:采用此提高性能的方法后,能使整个系统的性能提高到原来的 **1.613倍**
**解析**
| 考点 | 原理说明 |
|------|---------|
| Amdahl定律基本公式 | 系统性能提升受限于可改进部分占总执行时间的比例 |
| 可改进比例 | 指可改进部分的执行时间在总执行时间中所占的比例本题中为40% |
| 部件加速比 | 改进后性能提高的倍数本题中将速度提高20倍即部件加速比为20 |
| 公式应用 | 将已知参数代入公式,逐步计算得到总加速比 |
**关键点**即使将某功能的速度提高了20倍但由于该功能仅占整个系统运行时间的40%系统整体性能提升仅为1.613倍体现了Amdahl定律"性能改进的递减规则"。
---
### 习题二CPU性能公式应用条件分支设计对比
**原题Slide 54-57**
> 例 考虑条件分支指令的两种不同设计方法:
> 1CPUA通过比较指令设置条件码然后测试条件码进行分支。
> 2CPUB在分支指令中包括比较过程。
> 在这两种CPU中条件分支指令都占用2个时钟周期而所有其他指令占用1个时钟周期。对于CPUA执行的指令中分支指令占20%由于每条分支指令之前都需要有比较指令因此比较指令也占20%。由于CPUA在分支时不需要比较因此CPUB的时钟周期时间是CPUA的1.25倍。问哪一个CPU更快
**分析**
```
CPUA
- 需要两条指令完成分支:比较置条件码指令 + 分支指令
- 假设完成某一功能F使用CPUA程序需100条指令
- 程序指令构成比较指令20条分支指令20条其他指令60条
CPUB
- 需要一条指令完成比较和分支
- 假设完成同样功能F使用CPUB程序需80条指令
- 程序指令构成分支指令20条其他指令60条
```
**参考答案**
**解** 我们不考虑所有系统问题所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%剩下的指令占用1个时钟周期。所以
```
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
```
则CPUA性能为
```
总CPU时间A = ICA × 1.2 ×时钟周期A
```
根据假设,有
```
时钟周期B = 1.25 × 时钟周期A
```
在CPUB中没有独立的比较指令所以CPUB的程序量为CPUA的80%,分支指令的比例为
```
20%/80% = 25%
```
这些分支指令占用2个时钟周期而剩下的75%的指令占用1个时钟周期因此
```
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
```
因为CPUB不执行比较
```
ICB = 0.8 × ICA
```
同时,根据假设,有
```
时钟周期B = 1.25 × 时钟周期A
```
因此CPUB性能为
```
总CPU时间B = ICB × CPIB × 时钟周期B
= 0.8 × ICA × 1.25 ×1.25 ×时钟周期A
= 1.25 × ICA ×时钟周期A
```
**答案**在这些假设之下尽管CPUB执行指令条数较少CPUA因为有着更短的时钟周期所以比CPUB快。
**解析**
| 考点 | 原理说明 |
|------|---------|
| CPU性能公式 | CPU时间 = IC × CPI × 时钟周期时间 |
| CPI计算 | CPI = Σ(每种指令比例 × 该指令周期数) |
| 性能权衡 | CPUA时钟周期更短但指令条数多CPUB指令条数少但时钟周期长 |
| 设计决策 | 不能仅看单方面因素需综合考虑IC、CPI和时钟周期时间 |
---
## 李宏图老师习题
### 习题一Amdahl定律应用
**原题Slide 43**
> 例 将计算机系统中某一功能的处理速度提高到原来的20倍但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
**参考答案**
```
解 由题可知,可改进比例 = 40% = 0.4,部件加速比 = 20
根据Amdahl定律可知
总加速比 = 1 / (0.6 + 0.4/20) = 1 / (0.6 + 0.02) = 1 / 0.62 = 1.613
采用此提高性能的方法后能使整个系统的性能提高到原来的1.613倍。
```
**答案**:能使整个系统的性能提高到原来的 **1.613倍**
**解析**:与曲冠南老师此题目完全一致,解析请参见上题。
---
### 习题二CPU性能公式应用条件分支设计对比
**原题Slide 51**
> 例 考虑条件分支指令的两种不同设计方法:
> 1CPUA通过比较指令设置条件码然后测试条件码进行分支。
> 2CPUB在分支指令中包括比较过程。
> 在这两种CPU中条件分支指令都占用2个时钟周期而所有其他指令占用1个时钟周期。对于CPUA执行的指令中分支指令占20%由于每条分支指令之前都需要有比较指令因此比较指令也占20%。由于CPUA在分支时不需要比较因此CPUB的时钟周期时间是CPUA的1.25倍。问哪一个CPU更快如果CPUB的时钟周期时间只是CPUA的1.1倍哪一个CPU更快呢
**参考答案**
```
解 我们不考虑所有系统问题所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%剩下的指令占用1个时钟周期。所以
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
则CPUA性能为
总CPU时间A = ICA × 1.2 ×时钟周期A
根据假设,有
时钟周期B = 1.25 × 时钟周期A
在CPUB中没有独立的比较指令所以CPUB的程序量为CPUA的80%,分支指令的比例为: 20%/80% = 25%
这些分支指令占用2个时钟周期而剩下的75%的指令占用1个时钟周期因此
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
因为CPUB不执行比较
ICB = 0.8 × ICA
因此CPUB性能为
总CPU时间B = ICB × CPIB × 时钟周期B
= 0.8 ×ICA × 1.25 ×1.25 ×时钟周期A
= 1.25 ×ICA ×时钟周期A
在这些假设之下尽管CPUB执行指令条数较少CPUA因为有着更短的时钟周期所以比CPUB快。
```
**答案(第一问)**CPUA比CPUB快。
**参考答案(第二问)**
```
如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则
时钟周期B = 1.10 ×时钟周期A
CPUB的性能为
总CPU时间B = ICB ×CPIB ×时钟周期B
      = 0.8 ×ICA × 1.25 ×1.10 ×时钟周期A
      = 1.10 × ICA ×时钟周期A
因此CPUB由于执行更少指令条数比CPUA运行更快。
```
**答案(第二问)**当CPUB的时钟周期时间是CPUA的1.1倍时CPUB比CPUA快。
**解析**
| 考点 | 原理说明 |
|------|---------|
| CPU性能公式 | CPU时间 = IC × CPI × 时钟周期时间 |
| 权衡分析 | 需要综合考虑指令条数(IC)、每条指令平均周期数(CPI)、时钟周期时间 |
| 设计决策 | 不同设计适用于不同场景,需根据具体约束进行选择 |
| 临界点分析 | 当CPUB时钟周期为1.1倍CPUA时性能结果发生逆转 |
---
## 谭婧炜佳老师习题
### 习题一Amdahl定律应用例1
**原题Slide 50**
> 例1 将计算机系统中浮点加减法的处理速度提高到原来的5倍且该功能的处理时间占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
**参考答案**
```
解 由题可知,可改进比例 = 40% = 0.4,部件加速比 = 5
根据Amdahl定律可知
总加速比 = 1 / (0.6 + 0.4/5) = 1 / (0.6 + 0.08) = 1 / 0.68 = 1.47
采用此提高性能的方法后能使整个系统的性能提高到原来的1.47倍。
```
**答案**:能使整个系统的性能提高到原来的 **1.47倍**
**解析**
| 考点 | 原理说明 |
|------|---------|
| Amdahl定律 | 加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比 |
| 公式应用 | 可改进比例=0.4,部件加速比=5代入公式求解 |
| 结果分析 | 即使部件加速5倍由于仅占40%时间整体加速仅为1.47倍 |
---
### 习题二Amdahl定律应用例2
**原题Slide 51**
> 例2 将计算机系统中浮点平方根的处理速度提高到原来的40倍且该功能的处理时间占整个系统运行时间的5%,则采用此提高性能的方法后,能使整个系统的性能提高多少?
**参考答案**
```
解 由题可知,可改进比例 = 5% = 0.05,部件加速比 = 40
根据Amdahl定律可知
总加速比 = 1 / (0.95 + 0.05/40) = 1 / (0.95 + 0.00125) = 1 / 0.95125 ≈ 1.05
采用此提高性能的方法后能使整个系统的性能提高到原来的1.05倍。
```
**答案**:能使整个系统的性能提高到原来的 **1.05倍**
**解析**
| 考点 | 原理说明 |
|------|---------|
| Amdahl定律 | 即使部件加速比达到40倍但由于该功能仅占5%运行时间,整体性能提升极其有限 |
| 性能改进递减规则 | 改进得越多,所得到的总体性能的提升就越有限 |
| 启示 | 应重点关注占执行时间比例大的部分进行优化 |
---
### 习题三Amdahl定律逆运算
**原题Slide 52**
> 例3 某计算机系统采用浮点运算部件后使浮点运算速度提高到原来的20倍而系统运行某一程序的整体性能提高到原来的5倍试计算该程序中浮点操作所占的比例。
**参考答案**
```
解 由题可知,部件加速比 = 20系统加速比 = 5
根据Amdahl定律可知
5 = 1 / [(1-可改进比例) + 可改进比例/20]
求解可得:(1-可改进比例) + 可改进比例/20 = 1/5 = 0.2
令可改进比例为P
1 - P + P/20 = 0.2
1 - P(1 - 1/20) = 0.2
1 - P(19/20) = 0.2
P(19/20) = 0.8
P = 0.8 × (20/19) = 16/19 ≈ 0.842
由此可得:可改进比例 = 84.2%
即程序中浮点操作所占的比例为84.2%。
```
**答案**:程序中浮点操作所占的比例为 **84.2%**
**解析**
| 考点 | 原理说明 |
|------|---------|
| Amdahl定律逆运算 | 已知系统加速比和部件加速比,反推可改进比例 |
| 方程求解 | 将已知条件代入公式,解方程得到可改进比例 |
| 验证 | 84.2% × (1-1/20) + 15.8% = 0.842 × 0.95 + 0.158 = 0.7999 + 0.158 ≈ 0.9581/0.958 ≈ 1.044接近5计算误差因四舍五入 |
---
### 习题四CPU性能公式应用条件分支设计对比
**原题Slide 57-60**
> 例: 考虑条件分支指令的两种不同设计方法:
> 1CPUA通过比较指令设置条件码然后测试条件码进行分支。
> 2CPUB在分支指令中包括比较过程。
> 在这两种CPU中条件分支指令都占用2个时钟周期而所有其他指令占用1个时钟周期。对于CPUA执行的指令中分支指令占20%由于每条分支指令之前都需要有比较指令因此比较指令也占20%。由于CPUA在分支时不需要比较因此CPUB的时钟周期时间是CPUA的1.25倍。问哪一个CPU更快如果CPUB的时钟周期时间只是CPUA的1.1倍哪一个CPU更快呢
**参考答案**
```
解 我们不考虑所有系统问题所以可用CPU性能公式。占用2个时钟周期的分支指令占总指令的20%剩下的指令占用1个时钟周期。所以
CPIA = 0.2 × 2 + 0.80 × 1 = 1.2
则CPUA性能为
总CPU时间A = ICA × 1.2 ×时钟周期A
根据假设,有
时钟周期B = 1.25 × 时钟周期A
在CPUB中没有独立的比较指令所以CPUB的程序量为CPUA的80%,分支指令的比例为: 20%/80% = 25%
这些分支指令占用2个时钟周期而剩下的75%的指令占用1个时钟
周期,因此
CPIB = 0.25 × 2 + 0.75 × 1 = 1.25
因为CPUB不执行比较
ICB = 0.8 × ICA
因此CPUB性能为
总CPU时间B = ICB × CPIB × 时钟周期B
= 0.8 ×ICA × 1.25 ×1.25 ×时钟周期A
= 1.25 ×ICA ×时钟周期A
在这些假设之下尽管CPUB执行指令条数较少CPUA因为有着更短的时钟周期所以比CPUB快。
```
**答案(第一问)**CPUA比CPUB快。
**参考答案(第二问)**
```
如果CPUB的时钟周期时间仅仅是CPUA的1.1倍,则
时钟周期B = 1.10 ×时钟周期A
CPUB的性能为
总CPU时间B = ICB ×CPIB ×时钟周期B
      = 0.8 ×ICA × 1.25 ×1.10 ×时钟周期A
      = 1.10 × ICA ×时钟周期A
因此CPUB由于执行更少指令条数比CPUA运行更快。
```
**答案(第二问)**当CPUB的时钟周期时间仅为CPUA的1.1倍时CPUB比CPUA快。
**解析**
| 考点 | 原理说明 |
|------|---------|
| CPU性能公式 | CPU时间 = IC × CPI × 时钟周期时间 |
| CPI计算 | CPUA: 20%×2 + 80%×1 = 1.2; CPUB: 25%×2 + 75%×1 = 1.25 |
| 设计权衡 | 增加指令复杂度(CPUB)可减少IC但增加CPI和时钟周期时间 |
| 临界分析 | 存在一个临界点当CPUB时钟周期降至1.1倍时,性能发生逆转 |
---
## 习题汇总与分类
### 按知识点分类
| 知识点 | 习题来源 | 题目描述 |
|--------|---------|---------|
| Amdahl定律基本应用 | 曲冠南老师、李宏图老师 | 功能速度提高20倍占40%时间,求整体性能 |
| Amdahl定律不同参数 | 谭婧炜佳老师-例1 | 浮点加减法速度提高5倍占40%时间 |
| Amdahl定律不同参数 | 谭婧炜佳老师-例2 | 浮点平方根速度提高40倍占5%时间 |
| Amdahl定律逆运算 | 谭婧炜佳老师-例3 | 已知部件加速20倍和系统加速5倍求可改进比例 |
| CPU性能公式 | 曲冠南老师、李宏图老师、谭婧炜佳老师 | CPUA vs CPUB条件分支设计比较 |
### 按难度分类
| 难度 | 习题 | 说明 |
|------|------|------|
| 基础 | 曲冠南/李宏图-习题一 | 直接套用Amdahl公式 |
| 基础 | 谭婧炜佳-习题一 | 直接套用Amdahl公式 |
| 基础 | 谭婧炜佳-习题二 | 直接套用Amdahl公式 |
| 中等 | 谭婧炜佳-习题三 | Amdahl公式逆运算 |
| 中等 | 三位老师-习题二(第一问) | CPU性能公式综合应用 |
| 较高 | 三位老师-习题二(第二问) | 设计权衡与临界分析 |
---
## 重要公式汇总
### 1. Amdahl定律
```
系统加速比 = 1 / [(1-可改进比例) + 可改进比例/部件加速比]
其中:
- 可改进比例可改进部分的执行时间占总执行时间的比例≤1
- 部件加速比:改进前执行时间/改进后执行时间(通常>1
```
### 2. CPU性能公式
```
CPU时间 = IC × CPI × 时钟周期时间
其中:
- IC执行的指令条数
- CPI每条指令执行的平均时钟周期数
- 时钟周期时间:系统时钟频率的倒数
CPI = Σ(CPIi × ICi) / IC = Σ(CPIi × (ICi/IC))
```
### 3. 加速比定义
```
加速比 = 系统性能改进后 / 系统性能改进前 = 性能 = 1/执行时间(通常>1
```
---
**注**本章节未发现其他类型的练习题如思考题、课后作业、案例问答题所有习题均为上述Amdahl定律和CPU性能公式的应用题。