1.3.1 计算机的主要性能指标
衡量计算机性能时,常见指标包括:吞吐量、响应时间、主频、时钟周期、CPI、IPS、CPU 执行时间、MIPS 和 FLOPS。
吞吐量与响应时间
吞吐量(Throughput)
吞吐量是系统在单位时间内完成的任务或处理的请求数量,例如每秒处理的请求数、事务数或数据块数。
系统吞吐量会受到多个部分影响:
- CPU 的处理能力;
- 主存访问速度;
- I/O 设备速度;
- 磁盘和网络速度;
- 软件及操作系统的调度效率。
重点: 系统吞吐量取决于整个系统中的瓶颈,而不只是主存。
响应时间(Response Time)
响应时间是从用户发出请求,到系统完成请求并返回结果所经历的总时间:
等待时间可能包括 I/O 等待、磁盘访问、内存访问,以及操作系统调度和排队等待等。
吞吐量关注“单位时间能完成多少任务”,响应时间关注“一个任务多久完成”,二者并不完全等价。例如,增加处理器数量可能明显提高系统吞吐量,但单个程序的响应时间未必同比缩短。
主频与 CPU 时钟周期
CPU 时钟周期
CPU 内部由时钟信号驱动工作。**时钟周期(Clock Cycle)**是相邻两个时钟有效边沿之间的时间,可作为同步 CPU 工作的基本时间尺度,通常记作 。
我今天就背了个新的周期单词,但我忘记了。
常用单位包括 s、ms、 和 ns。时间换算很重要⭐️:
因此,。
主频(CPU 时钟频率)
主频是 CPU 时钟信号的频率,单位为 Hz。它与时钟周期互为倒数:
其中, 表示主频, 表示时钟周期。因此,主频越高,时钟周期越短。
不能只看主频判断性能
只有在架构、程序、CPI 等其他因素基本相同时,主频越高通常才意味着执行时间越短。
不同 CPU 之间不能只根据 GHz 判断性能,因为 CPU 性能还会受到 CPI、微体系结构、缓存、流水线和并行程度等因素影响。
CPI 与 IPS
CPI
CPI(Cycles Per Instruction)表示平均执行一条指令需要的时钟周期数:
IPS
IPS(Instructions Per Second)表示 CPU 每秒能够执行的指令条数:
从单位上看,主频表示“时钟周期/秒”,CPI 表示“时钟周期/指令”,因此:
CPU 执行时间
这是性能计算中最重要的公式之一:
其中:
- :Instruction Count,指令条数;
- :平均每条指令所需的时钟周期数;
- :主频;
- :时钟周期。
因此,CPU 性能主要受指令条数 、CPI 和主频 三个因素影响。执行时间越短,性能越高:
CISC、RISC 与三个指标
- CISC: 指令较复杂,一个复杂操作可能只需较少指令,因此 可能降低,但复杂指令也可能使 CPU 实现更加复杂。
- RISC: 指令较简单,一个复杂任务可能需要更多条简单指令,因此 可能升高。
最终性能仍应根据 综合判断,任何一个变量发生变化,都可能影响执行时间。
MIPS
MIPS(Million Instructions Per Second)表示每秒执行的百万条指令数。
MIPS 不适合直接比较不同 ISA 的计算机性能。例如,一台机器可能用一条指令完成 ,另一台机器则需要多条指令。即使后一台机器每秒执行的指令更多,也不代表它完成相同任务更快。
此外,不同机器的指令功能、CPI 和时钟周期都可能不同,因此跨体系结构比较时,MIPS 很容易产生误导。
重点: MIPS 衡量的是指令执行数量,而不是这些指令实际完成了多少工作。
FLOPS
FLOPS(Floating-point Operations Per Second)表示每秒能够执行的浮点运算次数。
重点: FLOPS 衡量的是浮点运算次数,而不是指令条数。
常见单位如下:
| 名称 | 含义 | 数量级 |
|---|---|---|
| MFLOPS | Million FLOPS | |
| GFLOPS | Giga FLOPS | |
| TFLOPS | Tera FLOPS | |
| PFLOPS | Peta FLOPS | |
| EFLOPS | Exa FLOPS | |
| ZFLOPS | Zetta FLOPS |
例如, 次浮点运算/秒。
FLOPS 特别适合衡量以浮点计算为主的系统和任务,例如科学计算、矩阵运算、超级计算机、GPU 和 AI 计算。
基准程序(Benchmark)
基准程序是一组专门用于计算机性能测试的典型程序,目的是尽量模拟实际应用中的工作负载,从而评价计算机在真实使用场景中的性能。
评价方法
一种直接的评价方式是在不同机器上运行相同的基准程序,比较其执行时间。在任务相同的情况下,执行时间越短,通常说明性能越高。
局限性
某些基准程序的性能可能高度依赖少数关键代码片段。硬件厂商或编译器开发者如果专门针对这些代码进行优化,可能获得非常漂亮的测试结果,但这种优化不一定能代表机器处理一般程序时的真实性能。