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