6.1 KiB
tags, create time
| tags | create time | |||||
|---|---|---|---|---|---|---|
|
2026-06-16 21:21 |
大题 1 — CPU 性能参数计算
概述
本题考查 CPU 性能参数的计算方法,包括 CPI(每条指令平均时钟周期数)的计算、根据 CPI 求 MIPS(每秒百万条指令数),以及 CPU 执行时间的计算。这是课程最基础的计算题,几乎每年必考。
[!tip] 考试重点 熟练掌握三个核心公式:$T = IC \times CPI \times \tau$、$MIPS = \frac{f}{CPI \times 10^6}$、$CPI = \sum_{i=1}^{n}(CPI_i \times F_i)$。计算时注意单位换算。
正文
一、核心公式体系
graph TD
T["CPU Time = IC x CPI x tau"] --> IC["IC: Instruction Count"]
T --> CPI["CPI: Cycles Per Instruction"]
T --> tau["tau: Clock Period"]
MIPS["MIPS = f / (CPI x 10^6)"] --> f["f: Clock Frequency"]
MIPS --> CPI2["CPI"]
T -->|"T = IC / (MIPS x 10^6)"| MIPS
1.1 CPU 执行时间
T_{CPU} = IC \times CPI \times \tau
| 符号 | 含义 | 单位 |
|---|---|---|
T_{CPU} |
CPU 执行时间 | 秒 (s) |
IC |
指令条数 (Instruction Count) | 条 |
CPI |
每条指令平均时钟周期数 | 周期/条 |
\tau |
时钟周期时间 (Clock Period) | 秒/周期 |
等价形式:
T_{CPU} = \frac{IC \times CPI}{f}
其中 f = 1/\tau 为主频(单位 Hz)。
1.2 MIPS 的计算
MIPS = \frac{f}{CPI \times 10^6}
或者等价地:
MIPS = \frac{IC}{T_{CPU} \times 10^6}
| 符号 | 含义 | 单位 |
|---|---|---|
MIPS |
每秒百万条指令 | 百万条/秒 |
f |
时钟频率 | Hz |
CPI |
每条指令平均时钟周期数 | 周期/条 |
1.3 加权 CPI 的计算
当程序包含多种类型的指令时,CPI 需要加权平均:
CPI = \sum_{i=1}^{n} CPI_i \times F_i
| 符号 | 含义 |
|---|---|
CPI_i |
第 i 类指令的时钟周期数 |
F_i |
第 i 类指令在程序中的占比(频率) |
n |
指令类型的数量 |
二、典型例题(参考例 1.3)
[!example] 例题 1:由指令类型占比求 CPI 和 MIPS
题目:某计算机有四类指令,各类指令的 CPI 和在程序中的比例如下:
指令类型 CPI 占比 算术逻辑 1 60% Load/Store 2 18% 分支 4 12% 访存 3 10% 时钟频率为 500MHz。求:(1) 平均 CPI;(2) MIPS;(3) 执行 1000 万条指令需要多少时间?
解题步骤:
Step 1:计算加权平均 CPI
CPI = 1 \times 0.60 + 2 \times 0.18 + 4 \times 0.12 + 3 \times 0.10= 0.60 + 0.36 + 0.48 + 0.30 = \mathbf{1.74}Step 2:计算 MIPS
MIPS = \frac{f}{CPI \times 10^6} = \frac{500 \times 10^6}{1.74 \times 10^6} = \frac{500}{1.74} \approx \mathbf{287.4}Step 3:计算执行时间
T = \frac{IC}{MIPS \times 10^6} = \frac{10 \times 10^6}{287.4 \times 10^6} = \frac{10}{287.4} \approx \mathbf{0.0348 \text{ 秒}} \approx 34.8 \text{ ms}或者直接:
T = IC \times CPI \times \tau = 10^7 \times 1.74 \times \frac{1}{500 \times 10^6} = 0.0348 \text{ 秒}
[!example] 例题 2:两种方案的性能对比(参考 A/B 卷风格)
题目:同一程序在两种处理器 X 和 Y 上运行,时钟频率均为 2GHz。
参数 方案 X 方案 Y 指令条数 IC 50 亿条 10 亿条 平均 CPI 1.2 5.0 (1) 哪个方案执行时间更短?(2) MIPS 分别是多少?
解题步骤:
Step 1:计算执行时间
T_X = \frac{IC \times CPI}{f} = \frac{5 \times 10^9 \times 1.2}{2 \times 10^9} = \mathbf{3.0 \text{ 秒}}T_Y = \frac{1 \times 10^9 \times 5.0}{2 \times 10^9} = \mathbf{2.5 \text{ 秒}}方案 Y 更快,加速比
= 3.0/2.5 = \mathbf{1.2}倍。Step 2:计算 MIPS
MIPS_X = \frac{2 \times 10^6}{1.2} \approx \mathbf{1666.7}MIPS_Y = \frac{2 \times 10^6}{5.0} = \mathbf{400.0}分析:方案 X 的 MIPS(1666.7)远高于方案 Y(400),但方案 X 的执行时间反而更长!这说明 MIPS 不能单独作为性能比较指标——它不考虑指令的功能复杂度差异。CPI 低不等于性能好,必须综合考虑 $IC \times CPI \times \tau$。
三、MIPS 的局限性
[!warning] 考试常考 MIPS 的局限性包括:
问题 说明 不同 ISA 不可比 RISC 的 MIPS 通常高于 CISC,但不代表性能更好 不反映指令功能差异 一条复杂指令和一条简单指令在 MIPS 中等价 程序依赖性 不同程序在同一机器上的 MIPS 不同 可被人为优化 减少指令数量但增加 CPI 可能导致 MIPS 上升但性能下降
四、练习题
[!example] 练习 1
某处理器主频 800MHz,执行某程序共 2000 条指令,平均 CPI 为 4。
(1) CPU 执行时间是多少?(2) MIPS 是多少?
[!abstract]- 答案 (1)
T = \frac{2000 \times 4}{800 \times 10^6} = \frac{8000}{8 \times 10^8} = 10^{-5} \text{ 秒} = 10 \text{ μs}(2)
MIPS = \frac{800}{4} = 200百万条/秒
[!example] 练习 2(A 卷原题改编)
某计算机主频 600MHz,执行 2000 条指令,每条指令平均时钟周期数为 4。求 MIPS。
[!abstract]- 答案
MIPS = \frac{f}{CPI \times 10^6} = \frac{600 \times 10^6}{4 \times 10^6} = \mathbf{150}
[!example] 练习 3
某程序在处理器 A 上运行需要 10 秒,处理器 A 的主频为 2GHz,CPI 为 1.5。
(1) 该程序有多少条指令?(2) 如果处理器 B 的主频为 3GHz,CPI 为 2.0,执行同一程序需要多长时间?
[!abstract]- 答案 (1)
IC = \frac{T \times f}{CPI} = \frac{10 \times 2 \times 10^9}{1.5} \approx 1.333 \times 10^{10}条(2)
T_B = \frac{1.333 \times 10^{10} \times 2.0}{3 \times 10^9} \approx \mathbf{8.89 \text{ 秒}}处理器 B 主频更高但 CPI 也更高,最终反而更慢!