Lecture 2:知识 - 计算机性能指标
Chinese-language Computer Science 408 note: Lecture 2:知识 - 计算机性能指标. Original source available where applicable.
On this page
This note is currently available in Chinese. The original wording, formulas and diagrams are preserved to avoid an unverified technical translation.
描述:性能题先辨别“容量、位宽、时间、频率、平均周期数、指令条数”分别在说什么,再使用统一关系式。主频高不自动代表程序更快,必须同时考虑 CPI 与指令条数。
1.1 容量与位宽指标
| 名称 | 含义 | 高频辨析 |
|---|---|---|
| 字(word) | 被处理信息的基本单位,用于度量数据类型宽度 | x86 传统上把 16 位称为一个字 |
| 机器字长 | CPU 整数数据通路宽度,通常与 ALU、通用寄存器位数相关 | 反映整数处理能力 |
| 指令字长 | 一条指令包含的二进制位数 | 在本 PDF 所采用的常见字节可寻址模型中通常为字节整数倍,并常取存储字长的整数倍;一般体系结构仍应以其编码和最小可寻址单位为准 |
| 存储字长 | 一个存储单元保存的位数 | 与 MDR 宽度通常相等 |
| 数据通路带宽 | 一次可并行传输的数据位数 | 本讲通常指外部数据总线宽度,不必等于 CPU 内部总线/寄存器宽度 |
定义:#主存容量
主存可保存信息的最大量,可用字节数表示,也可写为“字数 $\times$ 字长”。
- MAR 有 $m$ 位,表示可寻址 $2^m$ 个存储单元;MDR 有 $n$ 位,表示每单元宽 $n$ 位。
- 例如 MAR 为 16 位、MDR 为 32 位:单元数 $2^{16}=64K$,容量为 $64K\times32$ 位,即 $64K\times4$ B。
- 在“一次访存至多读出一个存储字、指令按存储字边界对齐且忽略 Cache”的教材模型中,若指令字长是存储字长的两倍,取一条指令需 2 个访存周期;二者相等时,取指通常只需 1 个访存周期。不要把“指令字长”误当“机器字长”。
1.2 系统时间与速度
1.2.1 吞吐量和响应时间
| 指标 | 含义 | 关注点 |
|---|---|---|
| 吞吐量 | 单位时间处理请求的数量 | 适合衡量批处理、服务器等整体能力 |
| 响应时间 | 从提交请求到获得结果的总历时(墙钟时间) | 包含 CPU 时间与各类等待时间,适合衡量交互体验 |
- 吞吐量受输入、取指、主存读写、输出等环节共同影响;系统主存的存取周期往往是关键限制。
- 响应时间除了程序实际占用 CPU 的时间,还包括磁盘、存储器、I/O、调度和 OS 开销造成的等待。
1.2.2 时钟周期、主频与 CPI
定义:#时钟周期与主频
时钟周期 $T$ 是相邻两个同相位有效时钟边沿之间的时间,也是同步 CPU 推进状态的基本时间单位;教材有时简称为“主时钟脉冲的宽度”,但严格说它不等于高电平或低电平的脉冲宽度。主频 $f$ 是时钟频率,二者互为倒数:
$$f=\frac{1}{T}$$
- 时钟周期需覆盖相邻状态单元间组合逻辑的最大延迟;流水线机器中还要计入最慢流水段的组合逻辑延迟、流水寄存器开销和必要的时钟裕量。
- 同型号、同微结构且其他条件近似时,主频越高,完成一个时钟步骤的时间越短;跨架构比较不能只看主频。
定义:#CPI
**CPI(Cycles Per Instruction)**是平均每条指令需要的时钟周期数。不同指令耗时可不同,程序 CPI 是按动态执行次数加权的平均值。
若第 $i$ 类指令动态执行 $IC_i$ 次、每条需 $CPI_i$ 个周期,则
$$ CPI_{avg}=\frac{\sum_i IC_i\times CPI_i}{\sum_i IC_i} $$
| 处理器类型 | CPI 特征 |
|---|---|
| 单周期 CPU | 所有指令一个时钟周期完成,$CPI=1$ |
| 多周期 CPU | 一条指令拆成多个时钟周期完成,$CPI>1$ |
| 基本流水线 | 理想、流水线充满时每周期完成一条指令,$CPI=1$;有冒险时一般 $CPI>1$ |
| 超标量流水线 | 具备同周期发射/完成多条指令的能力;资源利用充分且并行度足够时平均 $CPI$ 可小于 1,但受相关、分支失误和 Cache 未命中影响时并不保证小于 1 |
1.3 性能公式与单位
1.3.1 CPU 执行时间
CPU 性能由指令条数、CPI、主频共同决定:
$$ \begin{aligned} \text{CPU 时钟周期数} &= \text{指令条数}\times CPI\ \text{CPU 执行时间} &= \frac{\text{指令条数}\times CPI}{\text{主频}} \end{aligned} $$
- 要缩短 CPU 时间,可减少动态指令数、降低平均 CPI 或提高主频;优化一种因素时可能伤害另一种,必须算总结果。
- 程序 $A$ 比 $B$ 快 $k$ 倍,按执行时间定义为 $T_B/T_A=k$;性能与执行时间成反比。
教材补充:加速比与局部优化上限
NOTE · 教材补充(非源 PDF) 性能比较不能只看“被优化部分快了多少”,还要看它原来占总时间的比例。Amdahl 定律把这一边界写成可计算形式。
若可优化部分原来占执行时间比例为 $f$,该部分获得 $s$ 倍加速,其余部分不变,则总体加速比为:
$$ S=\frac{T_{old}}{T_{new}} =\frac{1}{(1-f)+\frac{f}{s}} $$
- 即使把该部分加速到无限快,整体加速比上限仍为 $S_{max}=1/(1-f)$;未被优化的串行部分决定天花板。
- 若有多个彼此独立的优化部分,可把新时间分别写成原时间比例再相加,而不能把各自加速比直接相乘。
- 例:访存停顿占原时间 40%,将其加速 5 倍,则 $S=1/(0.6+0.4/5)\approx1.47$,不是 5 倍。
- 若题目同时改变指令数、CPI 和主频,应优先分别计算优化前后的 $T=IC\times CPI/f$;Amdahl 定律适合题目明确给出“某部分时间占比和局部加速倍数”的场景。
1.3.2 IPS、MIPS 与 FLOPS
| 指标 | 含义 | 公式/备注 |
|---|---|---|
| IPS | 每秒执行指令数 | $IPS=\dfrac{\text{主频}}{CPI}$ |
| MIPS | 每秒百万条指令数 | $MIPS=\dfrac{\text{指令条数}}{\text{执行时间}\times10^6}=\dfrac{\text{主频}}{CPI\times10^6}$ |
| FLOPS | 每秒浮点运算次数 | 适合浮点密集型任务,不能概括所有程序性能 |
源 PDF 按十进制前缀逐项列出 FLOPS 单位:
| 单位 | 名称 | 换算 |
|---|---|---|
| MFLOPS | Mega FLOPS | $10^6,\text{FLOPS}$ |
| GFLOPS | Giga FLOPS | $10^9,\text{FLOPS}$ |
| TFLOPS | Tera FLOPS | $10^{12},\text{FLOPS}$ |
| PFLOPS | Peta FLOPS | $10^{15},\text{FLOPS}$ |
| EFLOPS | Exa FLOPS | $10^{18},\text{FLOPS}$ |
| ZFLOPS | Zetta FLOPS | $10^{21},\text{FLOPS}$ |
- 上表相邻单位相差 $10^3$;例如 $93,PFLOPS=93\times10^{15}=9.3\times10^{16}$ FLOPS。
- 注意大小写:存储容量语境中 $K=2^{10}$ 常见;性能数量级中的 k、M、G 等常按 $10^3$ 递进,必须看题目约定。
- MIPS 与主频都不能脱离指令集、CPI 和程序特征直接比较不同机器;一条“指令”在不同 ISA 上完成的工作量可能完全不同。
源 PDF 最后一页还专门对照了速率与容量单位:
| 量 | 基本单位 | 常用换算 | 读题要点 |
|---|---|---|---|
| 数据传输速率 | b/s(bit/s) |
$1,kb/s=10^3,b/s$,$1,Mb/s=10^6,b/s$,$1,Gb/s=10^9,b/s$,$1,Tb/s=10^{12},b/s$ | 小写 b 表示 bit,网络速率通常按十进制前缀 |
| 存储容量 | B(Byte) |
$1,B=8,b$;408 题常约定 $1,KB=2^{10},B$、$1,MB=2^{20},B$、$1,GB=2^{30},B$ | 大写 B 表示字节;严格 SI/IEC 记法中 $2^{10},B$ 写作 KiB,做题以题设约定为准 |
因此 10 b/s 表示每秒 10 bit,不是每秒 10 B;容量与速率之间换算时还必须处理 $1,B=8,b$。
题型:#性能比较
第一部分:解题方法
- 统一时间单位,先写 $T=IC\times CPI/f$。
- 给出多类指令时,先算平均 $CPI=\sum_i CPI_i\times\dfrac{IC_i}{IC}$。
- 题目给“优化后指令数变化、CPI 变化、主频变化”时,分别代入优化前后公式,再取时间比。
- 不把“访存次数”直接当“时钟周期数”;除非题目明确给出命中时间、存取周期或各阶段耗时。
第二部分:易错点
- 单周期 CPU 的 CPI 是 1,但其时钟周期必须按最慢指令确定,未必比多周期机器快。
- 基本流水线的理想 $CPI=1$ 指的是稳态吞吐率;第一条指令仍要经历多个流水段,存在装入和排空时间。
- “字长”“指令字长”“存储字长”“数据总线宽度”是四个不同维度,不能因数值相同就等同。
相关知识
- 科目导航:计算机组成原理导航
- 阅读顺序:上一篇:计算机系统层次结构 · 下一篇:数制与编码
- 关联专题:处理器调度
1.4 本节复盘
- MAR 决定可寻址单元数,MDR 与存储字长对应;容量可写为字数乘字长。
- 主频 $f$ 和时钟周期 $T$ 满足 $f=1/T$,但衡量程序速度还需 CPI 和动态指令条数。
- 计算 CPU 时间的主公式是 $T=IC\times CPI/f$;IPS、MIPS 都可由主频和 CPI 推出。局部优化还应按 Amdahl 定律计入未优化部分,不能把局部倍数当整体倍数。
- 评估系统整体能力用吞吐量,评估一次请求等待用响应时间;比较异构机器不能只看主频或 MIPS。