首页/计算机组成原理/01-overview/计算机性能指标 🔗 在 Obsidian 中打开
计算机组成原理 · 01-overview

计算机性能指标

难度 ★★★重要度 ★★★★★ 考查频率 低 MIPSMFLOPS吞吐量性能指标响应时间计算机系统概述
速查
CPU 执行时间 = 指令数 × CPI × 时钟周期;主频高≠性能好,还取决于 CPI 与指令数;Amdahl 定律指出瓶颈部分决定整体加速上限。

速查

项目
核心公式$\text{CPU执行时间} = \text{指令数} \times \text{CPI} \times \text{时钟周期}$
CPICycles Per Instruction,每条指令的平均时钟周期数
MIPS每秒百万条指令 $= \dfrac{\text{主频}}{\text{CPI} \times 10^6}$
MFLOPS每秒百万次浮点运算

概述

计算机性能指标是衡量计算机系统处理能力的量化标准。理解这些指标对于系统设计、选型和性能优化至关重要。性能指标主要分为 CPU 性能指标系统整体性能指标两大类。

基本概念

时钟周期(Clock Cycle)

  • CPU 中最小的时间单位,也称节拍脉冲或 T 周期
  • 主频(时钟频率)的倒数:$T = \dfrac{1}{f}$
  • 例:主频 1GHz → 时钟周期 = 1ns

CPI(Cycles Per Instruction,每条指令时钟周期数)

  • 执行一条指令所需的时钟周期数
  • 不同指令的 CPI 可能不同(如访存指令 CPI 较大)
  • 平均 CPI $= \dfrac{\text{总时钟周期数}}{\text{指令条数}}$
  • CPI 越大,CPU 执行单条指令越慢
  • 公式:$\text{CPU执行时间} = \text{指令条数} \times \text{CPI} \times \text{时钟周期}$
  • 影响 CPI 的因素:微架构设计、流水线深度、缓存命中率

IPC(Instructions Per Cycle,每时钟周期执行指令数)

  • $\text{IPC} = \dfrac{1}{\text{CPI}}$
  • 现代超标量处理器 IPC 可大于 1(如 $IPC=4$ 表示每周期执行 4 条指令)
  • IPC 是衡量处理器并行度的重要指标

MIPS(Million Instructions Per Second)

  • 每秒百万条指令数
  • $\text{MIPS} = \dfrac{\text{指令条数}}{\text{执行时间} \times 10^6}$
  • $\text{MIPS} = \dfrac{\text{主频}}{\text{CPI} \times 10^6}$
  • 局限性:
    • 不同指令集的 MIPS 不可比(RISC 的 MIPS 通常高于 CISC)
    • 同一程序在不同架构上 MIPS 差异大
    • 不能反映指令的功能复杂度
  • 例:某 CPU 主频 1GHz,$\text{CPI}=0.5$,则 $\text{MIPS} = \dfrac{1000}{0.5 \times 1} = 2000$

MFLOPS(Million Floating-point Operations Per Second)

  • 每秒百万次浮点运算数
  • 专门衡量浮点运算能力
  • $\text{MFLOPS} = \dfrac{\text{浮点运算次数}}{\text{执行时间} \times 10^6}$
  • $\text{GFLOPS} = 10^3\ \text{MFLOPS}$,$\text{TFLOPS} = 10^6\ \text{MFLOPS}$
  • 适用场景:科学计算、深度学习、图形渲染
  • 局限性:不能代表整数运算性能

吞吐量与响应时间

吞吐量(Throughput)

  • 单位时间内完成的任务数量
  • $\text{系统吞吐量} = \dfrac{\text{任务总数}}{\text{总时间}}$
  • 与 CPU 性能、I/O 带宽、内存带宽都相关
  • 服务器更关注吞吐量(如 Web 服务器 QPS)

响应时间(Response Time / Latency)

  • 从提交任务到完成任务的总时间
  • 也称执行时间(Execution Time)
  • 个人计算机更关注响应时间
  • $\text{响应时间} = \text{CPU时间} + \text{I/O等待时间} + \text{其他开销}$

吞吐量与响应时间的关系

  • 通常提高吞吐量会增加响应时间(资源竞争)
  • 多核处理器可在不增加单任务响应时间的前提下提高吞吐量

CPU 执行时间的计算

公式

$$\textbf{CPU执行时间} = \text{CPU时钟周期数} \times \text{时钟周期} = \frac{\text{CPU时钟周期数}}{\text{主频}} = \frac{\text{指令条数} \times \text{CPI}}{\text{主频}}$$

程序执行时间

$$\text{总执行时间} = \text{CPU时间} + \text{等待I/O时间} + \text{操作系统开销}$$

经典例题

某程序在 A 机上运行需 100 万条指令,$\text{CPI}=2.0$,主频 500MHz;在 B 机上需 200 万条指令,$\text{CPI}=1.2$,主频 600MHz。

  • A 机执行时间 $= \dfrac{10^6 \times 2.0}{500 \times 10^6} = 4\ \text{ms}$
  • B 机执行时间 $= \dfrac{2 \times 10^6 \times 1.2}{600 \times 10^6} = 4\ \text{ms}$
  • → 两机执行时间相同

Amdahl 定律(阿姆达尔定律)

公式

$$\textbf{S} = \frac{1}{(1-f) + \dfrac{f}{S_k}}$$

  • $f$ = 可改进比例(可加速部分占总执行时间的比例)
  • $S_k$ = 该部分的加速倍数

特例

  • 当 $S_k \to \infty$ 时,$S_{max} = \dfrac{1}{1-f}$
  • 若 $f=50\%$,即使无限加速该部分,总加速比也只有 2
  • 说明瓶颈部分对整体性能影响巨大

例题

某系统浮点运算占总时间 25%,现将浮点部件加速为原来的 4 倍:

$$S = \frac{1}{(1-0.25) + \dfrac{0.25}{4}} = \frac{1}{0.75 + 0.0625} = \frac{1}{0.8125} \approx 1.23$$

基准测试程序(Benchmark)

SPEC 基准

  • SPEC CPU2006/2017:评估 CPU 整数和浮点性能
  • SPECrate:衡量吞吐量
  • SPECspeed:衡量单任务响应时间

其他基准

  • LINPACK:高性能计算基准(TOP500 排名依据)
  • TPC:数据库事务处理基准
  • CoreMark:嵌入式处理器基准

各指标对比总结

指标含义关注点局限
CPI每指令周期数微架构效率不同指令集不可比
MIPS每秒百万指令整数吞吐忽略指令复杂度
MFLOPS每秒百万浮点运算浮点性能不代表整数性能
吞吐量单位时间任务数系统整体不反映单任务速度
响应时间任务完成时间用户体验受 I/O 影响

易错点

必记
  1. MIPS 不适合比较不同指令集架构的性能
  2. CPI 是平均值,不同程序在同一 CPU 上 CPI 不同
  3. Amdahl 定律中 $f$ 是指时间比例,不是代码行数比例
  4. 主频高不等于性能好(还要看 CPI 和指令数)
  5. MFLOPS 只衡量浮点运算,不能代表整体性能
  6. 提升性能时,优先优化瓶颈部分(Amdahl 定律)

记忆卡片

CPU 执行时间的核心公式?
CPU执行时间 = 指令条数 × CPI × 时钟周期 = 指令条数×CPI / 主频。
MIPS 的含义与公式?
每秒百万条指令;MIPS = 主频 / (CPI×10⁶)。不同指令集架构之间不可比。
IPC 与 CPI 的关系?
IPC = 1/CPI;超标量处理器 IPC 可大于 1。
Amdahl 定律的核心结论?
总加速比 S = 1/((1-f)+f/Sk);瓶颈部分决定上限,S_max=1/(1-f)。
主频高是否一定性能好?
不一定,还要看 CPI 和指令数(见 CPU 执行时间公式)。

交互动画 · CPU 执行时间公式分解

手动模式
指令数 N CPI 时钟周期 T × CPU执行时间
CPU执行时间 = 指令数 N × CPI × 时钟周期 T
点击上方按钮或左侧节点,了解每个因子的含义;或「播放」逐步代入一个数值例子。
例:N=100 条,CPI=4,主频 f=500 MHz → 求执行时间

相关知识点

暂无关联知识点

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。