Skip to content

2014年 408 计算机组成原理 第 12 题

计算机组成原理2014年选择题2分

题目

程序 P 在机器 M 上的执行时间是 20 秒,编译优化后,P 执行的指令数减少到原来的 70%,而 CPI 增加到原来的 1.2 倍,则 P 在 M 上的执行时间是( )。

错因

A

把 CPI 的变化方向搞反、还叠加了错误的折扣系数。误把"CPI 增加到 1.2 倍"理解成"机器变快了 → 时间应当 ÷1.2",又粗略把 1/1.2 当成 0.6,于是用 。CPI 变大意味着每条指令耗的周期数更多,时间应当而不是除。

B

只把 CPI 这一项的方向弄反了:。同样把"CPI 增加到 1.2 倍"误想成"性能变 1.2 倍 → 时间÷1.2"。CPI 在 CPU 时间公式里是分子,变大就是慢,应当 ×1.2。

C

只算了指令数那一刀:,把 CPI 增大的影响漏了。题目同时给出指令数和 CPI 两个变化,两个系数都要乘,缺一不可。

总解析

核心公式

机器 M 不变(主频 不变),优化前后只有指令数和 CPI 在变。设原指令数 、原 CPI

原执行时间

优化后(指令数 → ,CPI → ):

代入数字

优化前优化后比例
指令数× 0.7
CPI× 1.2
主频不变
时间20 s16.8 s× 0.84

最终答案是 D(16.8 秒)

两个常见审题陷阱

  1. "指令数减少原来的 70%" = 新值是 (剩 70%);如果说"减少 70%",那才是剩 30%。本题是"减少到",不要再 1 - 0.7。
  2. "CPI 增加原来的 1.2 倍" = 新 CPI 是 ,时间应 ×1.2 不是 ÷1.2。"优化"二字容易让人下意识觉得"什么都变快",但本题恰恰是"指令数变少 / CPI 变多"的折衷——典型的编译器以更复杂指令换更短指令序列。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题