vault backup: 2026-06-16 21:34:37

This commit is contained in:
2026-06-16 21:34:37 +08:00
parent dcb3efa297
commit ff3343cb29
15 changed files with 2343 additions and 0 deletions
@@ -0,0 +1,189 @@
---
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-冯氏分类法与并行度]]