错题日记 01 · 计算机组成原理
错题日记 01 · 计算机组成原理
[CO] 相同高级语言程序的性能比较
Question
在计算机 M1 和计算机 M2 上分别运行功能完全相同的高级语言程序,程序在 M1 和 M2 上的平均 CPI 相等,则对于该类程序而言()
A. M1 和 M2 执行速度相等 B. M1 和 M2 中主频高的计算机执行速度快 C. M1 和 M2 中主频低的计算机执行速度快 D. 无法确定哪台机器的执行速度快
My Answer
我的选择:B 理由:我当时认为”功能完全相同的高级语言程序”在底层执行的工作量是一样的,于是认为主频高的机器执行更快。
Correct Answer
正确答案:D(无法确定哪台机器的执行速度快) 正解:
- 写出决定计算机执行速度的核心公式(CPU 执行时间):T = (IC × CPI) / f(IC 为指令条数,f 为主频)。
- 逐一比对公式中的变量。已知条件仅给出 CPI₁ = CPI₂。
- 分析未知变量:由于 M1 和 M2 的指令集与编译器未知,同一份高级语言代码编译出的指令条数 IC 无法比较;同时两台机器的主频 f 大小关系也未给出。公式中存在两个未定变量,因此总时间 T 无法估算。
Error Pattern
严重的概念想当然——误以为”功能完全相同的高级语言程序”在底层执行时的”工作量”是一样的,完全忽略了不同机器可能具有不同的 ISA(指令集架构)和编译器,导致最终生成的机器码数量存在天壤之别。
Core Concept
- CPU 执行时间
- ISA(指令集架构)
- CPI
- 主频
- 指令条数(IC)
Expected Context
- 笔记路径:CPU 与流水线、数据的表示与运算、指令系统
- 检索关键词:CPU 执行时间公式 T=(IC×CPI)/f、CPI、指令条数 IC、主频、ISA、编译器、高级语言程序性能比较
Fix Plan
性能比较三要素:IC、CPI、主频,缺一不可比。看到”相同的高级语言程序”,第一反应必须警惕”高级语言相同 ≠ 底层汇编指令数相同”;只有明确说明”相同的机器语言/ISA”才能判定 IC 相同。
变式自测:若两台机器具有相同的 ISA 且使用相同的编译器,运行同一高级语言程序,CPI 也相同,能否判断哪台更快?(提示:此时指令条数 IC 相等,公式仅剩主频变量。答案:主频越高的机器执行速度越快。)
[CO] 平均 CPI 与执行时间的量纲计算
Question
用一台 40MHz 的 CPU 执行标准测试程序,共包含 100 条指令,它所包含的指令混合比和不同指令的 CPI 见下表。该程序的平均 CPI 和程序的执行时间分别为()
| 指令类型 | CPI | 指令混合比 |
|---|---|---|
| 算术和逻辑 | 1 | 60% |
| 高速缓存命中的访存 | 2 | 18% |
| 转移 | 4 | 12% |
| 高速缓存失效的访存 | 8 | 10% |
A. 2.26, 5.6 × 10⁻⁸ s B. 2.26, 5.6 × 10⁻⁶ s C. 2.24, 5.6 × 10⁻⁶ s D. 2.24, 5.6 × 10⁻⁸ s
My Answer
我的选择:B 理由:心算加权平均出错(算成 2.26),且在计算执行时间时主频量纲 MHz → 10⁶ Hz 的换算上犹豫。
Correct Answer
正确答案:C(2.24, 5.6 × 10⁻⁶ s) 正解:
- 计算平均 CPI(按各指令类型 CPI 乘占比加权求和):CPI = 1×0.6 + 2×0.18 + 4×0.12 + 8×0.10 = 0.6 + 0.36 + 0.48 + 0.8 = 2.24。
- 统一量纲:CPU 主频 f = 40MHz = 40 × 10⁶ Hz。
- 代入 CPU 执行时间公式:T = (指令总数 × CPI) / f = (100 × 2.24) / (40 × 10⁶) = 224 / (40 × 10⁶) = 5.6 × 10⁻⁶ s。
Error Pattern
纯粹的加权平均数计算失误。面对包含多个小数的乘加运算心算出错(误算出 2.26);此外计算执行时间时可能未将主频的 MHz 正确转化为 10⁶ Hz,导致数量级判断犹豫。
Core Concept
- CPI
- CPU 执行时间
- 主频
Expected Context
- 笔记路径:数据的表示与运算、CPU 与流水线
- 检索关键词:平均 CPI 加权计算、指令混合比、CPU 执行时间公式、主频量纲换算 MHz→10⁶ Hz
Fix Plan
量纲强关联映射:做组原大题时建立肌肉记忆——遇到 GHz 立刻写下 10⁹(纳秒 ns 级),遇到 MHz 立刻写下 10⁶(微秒 μs 级)。计算 CPI 时最后一步的小数点加法务必列竖式,切忌心算进位。
变式自测:若已知某程序在 200MHz CPU 上执行时间为 10μs,共 500 条指令,求平均 CPI。(提示:变形公式 CPI = T × f / IC。答案:4。)
[CO] 同 ISA 架构下的执行时间比值
Question
【2017 统考真题】假定计算机 M1 和 M2 具有相同的指令集体系结构(ISA),主频分别为 1.5GHz 和 1.2GHz。在 M1 和 M2 上运行某基准程序 P,平均 CPI 分别为 2 和 1,则程序 P 在 M1 和 M2 上运行时间的比值是()
A. 0.4 B. 0.625 C. 1.6 D. 2.5
My Answer
我的选择:B 理由:代入比例关系时搞反了分子分母(误算成 M2/M1),或未看透”具有相同 ISA 且运行同一程序”背后隐藏的等量关系。
Correct Answer
正确答案:C(1.6) 正解:
- 挖掘隐蔽的等量关系:题干”相同 ISA + 同一基准程序”意味着无论硬件底层时钟怎么变,程序编译后动态执行的指令条数 IC 完全相等。
- 设指令条数为 N,分别列出 M1、M2 执行时间:T1 = (N × 2) / 1.5GHz;T2 = (N × 1) / 1.2GHz。
- 严格按题意求 T1 / T2,约去 N 和 GHz:(2 / 1.5) / (1 / 1.2) = (4/3) / (5/6) = (4/3) × (6/5) = 1.6。
Error Pattern
代入比例关系时搞反了分子分母(误算成 M2/M1),且未看透”具有相同 ISA 且运行同一程序”这一表述背后隐藏的核心等量关系。
Core Concept
- ISA
- CPU 执行时间
- 主频
Expected Context
- 笔记路径:CPU 与流水线、指令系统、数据的表示与运算
- 检索关键词:CPU 执行时间比值、相同 ISA、指令条数 IC 相等、CPI、主频、繁分数化简
Fix Plan
比例题防反指北:绝不要悬空心算连除。在草稿纸上老老实实写下 T1 和 T2,然后画一条贯穿的大横线做繁分数除法化简。命题人特别喜欢把倒数(如 1/1.6 = 0.625)放在干扰选项,专收割心算出错的人。
变式自测:若 M1 使用新型编译器使指令数减少为原来的 80%,其余条件不变,求新的 T1 / T2。(提示:分子额外乘 0.8。答案:1.28。)
[CO] 微秒与毫秒的量纲降维打击
Question
【2022 统考真题】某计算机主频为 1GHz,程序 P 运行过程中,共执行了 10000 条指令,其中,80% 的指令执行平均需 1 个时钟周期,20% 的指令执行平均需 10 个时钟周期。程序 P 的平均 CPI 和 CPU 执行时间分别是()
A. 2.8, 28μs B. 28, 28μs C. 2.8, 28ms D. 28, 28ms
My Answer
我的选择:B 理由:加权算术失误,错把加权平均 0.8 × 1 + 0.2 × 10 算成 28,或将比例直接视作绝对数值盲目相加。
Correct Answer
正确答案:A(2.8, 28μs) 正解:
- 求平均 CPI(频率占比加权求和,并用常识验证——绝大多数指令是 1 周期,平均值必靠近 1):CPI = 80% × 1 + 20% × 10 = 0.8 + 2.0 = 2.8。
- 代入公式计算执行时间:T = (指令总数 × CPI) / 主频 = (10⁴ × 2.8) / 10⁹ = 28 × 10⁻⁶ s。
- 量纲转换:10⁻³ s = 1ms(毫秒),10⁻⁶ s = 1μs(微秒),因此结果锁定为 28μs。
Error Pattern
极其不应该的加权算术失误——错把加权平均 0.8 × 1 + 0.2 × 10 算成 28,或将比例直接视作绝对数值盲目相加。
Core Concept
- CPI
- 主频
- 量纲转换
Expected Context
- 笔记路径:数据的表示与运算、CPU 与流水线
- 检索关键词:平均 CPI 加权计算、CPU 执行时间公式、量纲转换 μs/ms/ns、主频 GHz→10⁹ Hz、极值排除法
Fix Plan
极值排除法:遇到算平均 CPI,先看极端分布。本题 80% 都是 1,最高才 10,平均值绝对不可能超过 10。利用常识瞬间排雷,直接秒杀 CPI = 28 的选项。
变式自测:若主频改为 1MHz,其余条件不变(10000 条指令,CPI = 2.8),执行时间和量纲分别变为多少?(提示:主频降 10³ 倍,时间放大 10³ 倍。答案:28ms。)
术语表
- CPU 执行时间:程序在 CPU 上运行的总时间,公式 T = (IC × CPI) / f,其中 IC 为指令条数,CPI 为平均每指令时钟周期数,f 为主频。
- 主频:CPU 的时钟频率,单位为 Hz(GHz/MHz),决定每个时钟周期的物理时长。
- 指令条数(IC):程序执行过程中实际执行的机器指令总数,受 ISA 和编译器影响。
- CPI(Cycles Per Instruction):执行一条指令所需的平均时钟周期数,是衡量 CPU 架构效率的关键指标。
- ISA(指令集架构):CPU 能够识别和执行的指令集合,决定了汇编语言的格式和功能,不同 ISA(如 x86、ARM)的指令效率不同。
- 量纲转换:不同时间单位之间的换算关系,1s = 10³ms = 10⁶μs = 10⁹ns。
相关链接
cd ..