1.3.1 计算机的主要性能指标

衡量计算机性能时,常见指标包括:吞吐量、响应时间、主频、时钟周期、CPI、IPS、CPU 执行时间、MIPS 和 FLOPS

吞吐量与响应时间

吞吐量(Throughput)

吞吐量是系统在单位时间内完成的任务或处理的请求数量,例如每秒处理的请求数、事务数或数据块数。

系统吞吐量会受到多个部分影响:

  • CPU 的处理能力;
  • 主存访问速度;
  • I/O 设备速度;
  • 磁盘和网络速度;
  • 软件及操作系统的调度效率。

重点: 系统吞吐量取决于整个系统中的瓶颈,而不只是主存。

响应时间(Response Time)

响应时间是从用户发出请求,到系统完成请求并返回结果所经历的总时间:

响应时间=CPU 执行时间+各种等待时间\text{响应时间}=\text{CPU 执行时间}+\text{各种等待时间}

等待时间可能包括 I/O 等待、磁盘访问、内存访问,以及操作系统调度和排队等待等。

吞吐量关注“单位时间能完成多少任务”,响应时间关注“一个任务多久完成”,二者并不完全等价。例如,增加处理器数量可能明显提高系统吞吐量,但单个程序的响应时间未必同比缩短。

主频与 CPU 时钟周期

CPU 时钟周期

CPU 内部由时钟信号驱动工作。**时钟周期(Clock Cycle)**是相邻两个时钟有效边沿之间的时间,可作为同步 CPU 工作的基本时间尺度,通常记作 TT

我今天就背了个新的周期单词,但我忘记了。

常用单位包括 s、ms、μs\mu s 和 ns。时间换算很重要⭐️:

1s=103ms=106μs=109ns\boxed{1\,s=10^3\,ms=10^6\,\mu s=10^9\,ns}

因此,1ns=109s1\,ns=10^{-9}\,s

主频(CPU 时钟频率)

主频是 CPU 时钟信号的频率,单位为 Hz。它与时钟周期互为倒数:

f=1T\boxed{f=\frac{1}{T}}

其中,ff 表示主频,TT 表示时钟周期。因此,主频越高,时钟周期越短。

不能只看主频判断性能

只有在架构、程序、CPI 等其他因素基本相同时,主频越高通常才意味着执行时间越短。

不同 CPU 之间不能只根据 GHz 判断性能,因为 CPU 性能还会受到 CPI、微体系结构、缓存、流水线和并行程度等因素影响。

CPI 与 IPS

CPI

CPI(Cycles Per Instruction)表示平均执行一条指令需要的时钟周期数

CPI=总时钟周期数指令条数\boxed{CPI=\frac{\text{总时钟周期数}}{\text{指令条数}}}

IPS

IPS(Instructions Per Second)表示 CPU 每秒能够执行的指令条数:

IPS=主频平均 CPI\boxed{IPS=\frac{\text{主频}}{\text{平均 CPI}}}

从单位上看,主频表示“时钟周期/秒”,CPI 表示“时钟周期/指令”,因此:

时钟周期/时钟周期/指令=指令/\frac{\text{时钟周期}/\text{秒}}{\text{时钟周期}/\text{指令}} =\text{指令}/\text{秒}

CPU 执行时间

这是性能计算中最重要的公式之一:

TCPU=CPU 时钟周期数f=IC×CPIf=IC×CPI×Tclk\boxed{ T_{CPU} =\frac{\text{CPU 时钟周期数}}{f} =\frac{IC\times CPI}{f} =IC\times CPI\times T_{clk} }

其中:

  • ICIC:Instruction Count,指令条数;
  • CPICPI:平均每条指令所需的时钟周期数;
  • ff:主频;
  • TclkT_{clk}:时钟周期。

因此,CPU 性能主要受指令条数 ICIC、CPI 和主频 ff 三个因素影响。执行时间越短,性能越高:

Performance1TCPU\boxed{Performance\propto\frac{1}{T_{CPU}}}

CISC、RISC 与三个指标

  • CISC: 指令较复杂,一个复杂操作可能只需较少指令,因此 ICIC 可能降低,但复杂指令也可能使 CPU 实现更加复杂。
  • RISC: 指令较简单,一个复杂任务可能需要更多条简单指令,因此 ICIC 可能升高。

最终性能仍应根据 TCPU=IC×CPIfT_{CPU}=\dfrac{IC\times CPI}{f} 综合判断,任何一个变量发生变化,都可能影响执行时间。

MIPS

MIPS(Million Instructions Per Second)表示每秒执行的百万条指令数。

MIPS 不适合直接比较不同 ISA 的计算机性能。例如,一台机器可能用一条指令完成 A+B×CA+B\times C,另一台机器则需要多条指令。即使后一台机器每秒执行的指令更多,也不代表它完成相同任务更快。

此外,不同机器的指令功能、CPI 和时钟周期都可能不同,因此跨体系结构比较时,MIPS 很容易产生误导。

重点: MIPS 衡量的是指令执行数量,而不是这些指令实际完成了多少工作。

FLOPS

FLOPS(Floating-point Operations Per Second)表示每秒能够执行的浮点运算次数。

重点: FLOPS 衡量的是浮点运算次数,而不是指令条数。

常见单位如下:

名称 含义 数量级
MFLOPS Million FLOPS 10610^6
GFLOPS Giga FLOPS 10910^9
TFLOPS Tera FLOPS 101210^{12}
PFLOPS Peta FLOPS 101510^{15}
EFLOPS Exa FLOPS 101810^{18}
ZFLOPS Zetta FLOPS 102110^{21}

例如,1TFLOPS=10121\,TFLOPS=10^{12} 次浮点运算/秒。

FLOPS 特别适合衡量以浮点计算为主的系统和任务,例如科学计算、矩阵运算、超级计算机、GPU 和 AI 计算。

基准程序(Benchmark)

基准程序是一组专门用于计算机性能测试的典型程序,目的是尽量模拟实际应用中的工作负载,从而评价计算机在真实使用场景中的性能。

评价方法

一种直接的评价方式是在不同机器上运行相同的基准程序,比较其执行时间。在任务相同的情况下,执行时间越短,通常说明性能越高。

局限性

某些基准程序的性能可能高度依赖少数关键代码片段。硬件厂商或编译器开发者如果专门针对这些代码进行优化,可能获得非常漂亮的测试结果,但这种优化不一定能代表机器处理一般程序时的真实性能。

Benchmark 成绩所有实际应用的真实性能\boxed{\text{Benchmark 成绩}\neq\text{所有实际应用的真实性能}}