16 KiB
第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性能公式的应用题。