443 lines
16 KiB
Markdown
443 lines
16 KiB
Markdown
# 第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)**:
|
||
|
||
> 例 考虑条件分支指令的两种不同设计方法:
|
||
> (1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
> (2)CPUB:在分支指令中包括比较过程。
|
||
> 在这两种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)**:
|
||
|
||
> 例 考虑条件分支指令的两种不同设计方法:
|
||
> (1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
> (2)CPUB:在分支指令中包括比较过程。
|
||
> 在这两种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.958,1/0.958 ≈ 1.044,接近5(计算误差因四舍五入) |
|
||
|
||
---
|
||
|
||
### 习题四:CPU性能公式应用(条件分支设计对比)
|
||
|
||
**原题(Slide 57-60)**:
|
||
|
||
> 例: 考虑条件分支指令的两种不同设计方法:
|
||
> (1)CPUA:通过比较指令设置条件码,然后测试条件码进行分支。
|
||
> (2)CPUB:在分支指令中包括比较过程。
|
||
> 在这两种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性能公式的应用题。 |