Files

6.1 KiB
Raw Permalink Blame History

tags, create time
tags create time
计算机系统结构
重点复习
CPU性能
CPI
MIPS
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 也更高,最终反而更慢!

关联笔记