计算机性能
- 如果将计算机比作一个搬砖工人
- 响应时间( 执行时间 ) ( 跑的更快 )
- 我们执行一个程序,到底需要花多少时间
- 吞吐率( 带宽 ) ( 搬的更多 )
- 在一定的时间范围内 处理的数据或者执行的程序指令
提升吞吐率的办法有很多。大部分时候,我们只要多加一些机器,多堆一些硬件就好了
但是响应时间的提升却没有那么容易,因为 CPU 的性能提升其实在 10 年前就处于“挤牙膏”的状态了
-
我们一般把性能,定义成响应时间的倒数
- 性能 = 1/ 响应时间
-
计算机的计时单位:CPU 时钟
- 程序的 CPU 执行时间 =CPU 时钟周期数×时钟周期时间
时钟周期时间:
CPU 的主频。比如我手头的这台电脑就是 Intel Core-i7-7700HQ 2.8GHz,这里的 2.8GHz 就是电脑的主频(Frequency/Clock Rate)。这个 2.8GHz,我们可以先粗浅地认为,CPU 在 1 秒时间内,可以执行的简单指令的数量是 2.8G 条
如果想要更准确一点描述,这个 2.8GHz 就代表,我们 CPU 的一个“钟表”能够识别出来的最小的时间间隔
我们把晶振当成 CPU 内部的电子表来使用。晶振带来的每一次“滴答”,就是时钟周期时间
最简单的提升性能方案,自然缩短时钟周期时间,也就是提升主频
CPU 时钟周期数
指令数×每条指令的平均时钟周期数(Cycles Per Instruction,简称 CPI)
程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time
我们想要解决性能问题,其实就是要优化这三者
- 时钟周期时间,就是计算机主频,这个取决于计算机硬件。我们所熟知的摩尔定律就一直在不停地提高我们计算机的主频。比如说,我最早使用的 80386 主频只有 33MHz,现在手头的笔记本电脑就有 2.8GHz,在主频层面,就提升了将近 100 倍。
- 每条指令的平均时钟周期数 CPI,就是一条指令到底需要多少 CPU Cycle。在后面讲解 CPU 结构的时候,我们会看到,现代的 CPU 通过流水线技术(Pipeline),让一条指令需要的 CPU Cycle 尽可能地少