精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

计算机的性能指标

大纲定位

对应大纲第一章(三)计算机的性能指标:吞吐量、响应时间;CPU 时钟周期、主频、CPI、CPU 执行时间;MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS、ZFLOPS。

考情分析

这一节的计算题套路很固定,一个核心公式打天下。真正拉开差距的是三个"以为自己懂了"的地方:程序的 CPI 从哪来(它不是一个由指令集定死的常数)、只加速一部分时整体快多少时钟周期是谁定的。下面把这三处单独拎出来讲。

吞吐量与响应时间

  • 吞吐量:系统在单位时间内处理请求的数量
  • 响应时间:从用户发出请求到系统返回结果的总等待时间

响应时间不等于 CPU 时间。它还包含磁盘访问、I/O、操作系统开销、多道程序下等待其他程序的时间。

时间口径含义
用户 CPU 时间CPU 执行该用户程序本身所花的时间
系统 CPU 时间CPU 为该程序执行操作系统代码(系统调用等)所花的时间
CPU 时间上面两者之和
响应时间(墙钟时间)CPU 时间 + I/O 等待 + 其他程序占用 CPU 的时间

题面说"用户 CPU 时间"时,用的就是标准公式 指令条数×CPI/主频——它已经是纯 CPU 口径了,不要再往里加什么。

主频与时钟周期

CPU 时钟周期=1主频
  • CPU 时钟周期:CPU 工作的最小时间单位
  • 主频(时钟频率):每秒包含的时钟周期数,单位 Hz

主频 2GHz 意味着每秒 2×109 个时钟周期,每个周期 0.5ns。

时钟信号是怎么来的、由谁定长短

这段每一句都是判断题的原材料:

  1. 来源:时钟脉冲信号由机器脉冲源(晶振)发出的脉冲信号,经整形和分频后形成。
  2. 时钟周期的定义:时钟脉冲信号的宽度就是时钟周期,它的倒数是主频
  3. 周期长短由谁决定:以相邻两个状态单元(寄存器/触发器)之间组合逻辑电路的最大延迟为基准确定。信号必须在一个周期内从上一级寄存器出发、穿过组合逻辑、稳定地到达下一级寄存器的输入端——所以最长的那条路径决定了周期不能再短。这条路径就是关键路径

一个时钟脉冲 ≠ 一条指令

"处理器每来一个时钟脉冲就开始执行一条新指令"是错误说法。只有单周期 CPU 才是一条指令一个周期。

CPU 类型时钟周期怎么定一个周期做多少事
单周期= 最耗时那条指令的完整执行时间一条完整指令(CPI = 1,但周期极长)
多周期= 单个执行步骤的关键路径(远短于单周期)一条指令的一个阶段(CPI > 1)
流水线= 最长流水段的延迟 + 锁存器开销每条指令的一个流水段;理想稳态下每周期完成一条

流水线的"每周期完成一条指令"说的是吞吐,不是"每周期开始一条全新指令的全部执行"——一条指令仍然要跨多个周期才走完。

同一型号 CPU 主频越高执行越快,但不同型号的 CPU 不能仅凭主频比较性能——CPI 和指令条数都可能不同。

CPI 与 IPS

CPI(Cycles Per Instruction):执行一条指令所需的平均时钟周期数。

CPI=总时钟周期数指令条数

IPS(Instructions Per Second):每秒执行的指令条数。

IPS=主频CPI

不同类型指令的 CPI 不同,程序的 CPI 是加权平均:

CPI=i=1nCPIi×fi

其中 fi 是第 i 类指令在程序中出现的频率。

程序的 CPI 不是常数

这是本节最容易被误解的一条

上面那个加权平均公式只算了"指令本身理想情况下要几个周期"。真实程序的 CPI 还要加上执行过程中被迫等待的周期,其中最大的一块是 Cache 缺失

CPI有效=CPI理想+每条指令平均访存次数×缺失率×缺失代价

举个数:理想 CPI = 1.0,每条指令平均访存 1.3 次,缺失率 5%,缺失代价 100 个周期。

CPI有效=1.0+1.3×0.05×100=7.5

缺失率降到 2%,CPI 就降到 1.0+1.3×0.02×100=3.6Cache 缺失率直接、而且显著地影响程序的 CPI。

所以"程序的 CPI 与 Cache 缺失率无关"是错的。除了 Cache 缺失,流水线冒险造成的阻塞、分支预测失败的开销,也都会算进程序实测的 CPI 里。

一句话:指令的 CPI 由指令类型和微架构决定;程序的 CPI 是运行时测出来的,跟访存行为、缺失率、冒险全部相关。

CPU 执行时间(核心公式)

CPU 执行时间=指令条数×CPI主频=总时钟周期数主频

CPU 性能取决于三个要素:指令条数CPI主频。三者由不同的层次决定,也因此可以从不同层次去优化:

要素主要受谁影响优化手段举例
指令条数指令集 + 编译器编译优化、更强的指令
CPI微架构(数据通路、流水线、Cache)优化数据通路、增大 Cache
主频工艺 + 关键路径长度提高工艺、缩短关键路径

由这张表可以直接判定"能缩短程序执行时间的措施":提高时钟频率(降低 1/f)、优化数据通路结构(降低 CPI)、对程序进行编译优化(减少指令条数)——三条都能,因为它们分别打在公式的三个因子上。

CISC 与 RISC 的取舍也在这个公式里:CISC 指令条数少但 CPI 高、主频难提;RISC 指令条数多但 CPI 低、主频容易提。

只加速一部分:整体能快多少

考场上出现频率不低、却常被漏讲的一类题:系统里只有一部分变快了,整体时间是多少

方法只有一句话:把总时间拆成"能加速的"和"不能加速的"两段,只除能加速的那段。

T=T不可加速+T可加速k

其中 k 是那一部分的加速倍数。整体加速比就是

S=TT=1(1p)+pk

p 是可加速部分占原时间的比例。这就是阿姆达尔定律

两个必须分清的措辞

  • "速度提高 50%""性能是原来的 1.5 倍" k=1.5,时间除以 1.5
  • "时间减少 50%" 时间直接乘 0.5

把"速度提高 50%"错当成"时间减少 50%",是这类题唯一的失分点。

推论kS1/(1p)。不可加速的那部分是整体性能的天花板——CPU 再快,那 10 秒 I/O 也一秒都少不了。

MIPS

MIPS=指令条数CPU 执行时间×106=主频CPI×106

MIPS 表示每秒执行多少百万条指令。

局限性:不同机器指令集不同,一条指令的功能强度不等,MIPS 不适合跨指令集比较。一台机器 MIPS 高,可能只是因为它的指令做的事少,完成同一任务反而要更多条指令。

FLOPS 系列

FLOPS 表示每秒执行的浮点运算次数(不是指令条数)。

指标含义数量级中文
MFLOPS百万次浮点运算/秒106百万次
GFLOPS109十亿次
TFLOPS1012万亿次
PFLOPS1015千万亿次
EFLOPS1018百亿亿次
ZFLOPS1021十万亿亿次

算例:某程序含 2×109 次浮点运算,在主频 2GHz、浮点运算平均 CPI = 4 的机器上运行(忽略其他指令)。

浮点部分耗时 =2×109×42×109=4 秒,故 FLOPS=2×1094=0.5 GFLOPS

K/M/G 的两种含义

场景KMG
存储容量210=1024220230
速率 / 频率 / 运算次数103=1000106109

1KB=1024B,但 1GHz=109Hz1PFLOPS=1015 次/秒。

基准程序

基准程序(Benchmarks)是一组专门用于性能评测的标准程序:在不同机器上运行同一套程序并比较执行时间。

局限性:硬件或编译器可能针对基准程序的关键代码做特殊优化,使评测结果不能代表处理一般负载的能力。

考场动作清单

  1. 先把三个量凑齐:指令条数、CPI、主频。题面给什么就填什么,缺哪个就用其他两个和时间反推。
  2. CPI 是加权的就先加权CPIi×fi,比例记得化成小数。
  3. 看清问的是时间、速度还是比值。问"运行时间的比值"就把两台机器各算一遍再相除,不要试图直接约。
  4. 只加速一部分时先拆段:不可加速部分原样保留,只除可加速部分。
  5. 单位换算放最后:MIPS 记得除 106;秒和毫秒、微秒差三个数量级,选项里往往就靠这个区分。

例题

例 1(三要素反推):机器 M 主频 1.5GHz,程序 P 的指令条数 5×105,平均 CPI 为 1.2。求指令执行速度和用户 CPU 时间。

IPS=1.5×1091.2=1.25×109=1.25 GIPST=5×105×1.21.5×109=4×104 s=0.4 ms

注意 0.4ms 不是 0.4μs——差三个数量级,两个都在选项里。

例 2(加权 CPI):主频 1GHz,程序共 10000 条指令,其中 80% 平均需 1 个时钟周期,20% 平均需 10 个时钟周期。求平均 CPI 和 CPU 执行时间。

CPI=0.8×1+0.2×10=2.8

T=10000×2.81×109=2.8×105 s=28 μs

例 3(同 ISA 比性能):M1 与 M2 的 ISA 相同,主频分别 1.5GHz 和 1.2GHz,运行程序 P 的平均 CPI 分别为 2 和 1。求 P 在 M1 和 M2 上运行时间的比值。

:ISA 相同 指令条数 n 相同,可约掉。

T1T2=n×2/1.5Gn×1/1.2G=2/1.51/1.2=1.3330.833=1.6

M1 主频更高却更慢——CPI 是 2 倍,抵消还有余。这就是"主频不能单独比性能"的具体样子。

例 4(编译优化):程序 P 在机器 M 上执行 20 秒。编译优化后指令数减少到原来的 70%,CPI 增加到原来的 1.2 倍。求新的执行时间。

:主频不变,时间正比于"指令数 × CPI":

T=20×0.7×1.2=16.8 

例 5(MIPS):主频 1.2GHz,四类指令占比与 CPI 为 A(50%, 2)、B(20%, 3)、C(10%, 4)、D(20%, 5)。求 MIPS。

CPI=2×0.5+3×0.2+4×0.1+5×0.2=3

MIPS=12003=400

例 6(只加速一部分):基准程序 A 运行 100 秒,其中 90 秒为 CPU 时间,其余为 I/O 时间。若 CPU 速度提高 50%、I/O 速度不变,运行 A 需要多少时间?

:先拆段。I/O 的 10 秒一秒都不会变

  • "速度提高 50%" k=1.5,CPU 时间 =90/1.5=60
  • 总时间 =60+10=70

常见错解 55 秒 = 100/1.5+ 的变体,来自把整个 100 秒都当成可加速部分。整体加速比只有 100/701.43,低于 CPU 部分的 1.5——被那 10 秒 I/O 拖住了。

例 7(超算单位):某超级计算机浮点运算速度为 93.0146 PFLOPS,即每秒完成多少次浮点操作?

1 PFLOPS=1015 次/秒(千万亿次),故约 9.3×1016 次,即 9.3 亿亿次

别在这里用 250——速率类指标一律十进制。

交互可视化

加载可视化中...

易混淆知识点

1. 主频高就一定快吗?

不一定。CPU 执行时间 = 指令条数 × CPI / 主频。主频只是三个因子之一,例 3 就是主频高反而慢的例子。

2. MIPS 数越大性能越好吗?

不一定,且不能跨指令集比较。见 MIPS 一节。

3. 翻译程序、汇编程序、编译程序、解释程序有什么区别?

翻译程序是统称,包括汇编程序和编译程序。汇编程序把汇编语言翻译成机器语言;编译程序把高级语言整体翻译成目标代码后再执行;解释程序对高级语言逐条翻译并立即执行,不生成目标程序。详见 计算机系统层次结构

考点清单

  • CPU 执行时间 = 指令条数 × CPI / 主频(最核心公式)
  • CPI = 总时钟周期数 / 指令条数;IPS = 主频 / CPI;MIPS = 主频 / (CPI ×106)
  • 程序的 CPI 受 Cache 缺失率、流水线阻塞影响,不是由指令集定死的常数
  • 时钟脉冲由脉冲源经整形分频产生;时钟周期由相邻状态单元间组合逻辑的最大延迟决定
  • 单周期时钟周期 = 最耗时指令;多周期 = 单步关键路径;流水线 = 最长流水段
  • 一个时钟脉冲不等于开始一条新指令
  • 只加速一部分时:T=T不可加速+T可加速/k,"速度提高 50%"是除以 1.5
  • MIPS 不能跨指令集比较;FLOPS 数的是浮点运算次数
  • 存储用 210,速率用 103
  • 基准程序存在针对性优化的局限

真题练习