本小节讲述为何使用 CPI 分析程序性能的意义。若是已经很是了解 CPI 对分析程序性能的意义,能够跳过本小节的阅读。算法
理解什么是 CPI,首先让咱们思考一个问题:在一个给定的处理器上,如何才能让程序跑得更快呢?性能
假设程序跑得快慢的标准是程序的执行时间,那么程序执行的快慢,就能够用以下公式来表示:优化
程序执行时间 = 程序总指令数 x 每 CPU 时钟周期时间 x 每指令执行所需平均时钟周期数
所以,要想程序跑得快,即减小程序执行时间,咱们就须要在如下三个方面下功夫:spa
减小程序总指令数scala
要减小程序执行的总指令数,可能有如下手段:设计
这一点很容易理解,缩短 CPU 时钟周期的时间,实际上就是要提升 CPU 的主频。这正是 Intel 过去占无不胜的法宝之一。今天,因为主频的提升已经到了制造工艺的极限,CPU 时钟周期的时间很难再继续下降了。code
减小每指令执行所需平均时钟周期数ip
如何减小每指令执行所需平均 CPU 时钟周期数呢?让咱们先从 CPU 设计角度看一下:编译器
所以不难看出,若是使用支持超标量处理器的 CPU,利用 CPU 流水线提升指令并行度,那么就能够达到咱们的目的了。流水线的并行度越高,执行效率越高,那么每指令执行所需平均时钟周期数就会越低。编译