Files

190 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags:
- 计算机系统结构
- 重点复习
- CPU性能
- CPI
- MIPS
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)$。计算时注意单位换算。
## 正文
### 一、核心公式体系
```mermaid
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 也更高,最终反而更慢!
## 关联笔记
- [[计算机系统结构/复习文档/计算机系统结构基础与定量原理]]
- [[大题4-Cache性能计算]]
- [[小题1-冯氏分类法与并行度]]