最早用来衡量计算机性能的速度指标是每秒钟完成单个运算(如加法) 指令的条数。
指令速度所用的计量单位为MIPS (Million Instructions Per Second) ,其含义是平增多每秒钟执行多少百万条指令
即MIPS: 平均每秒钟执行多少百万条指令
一 还有一个概念:指令平均执行时间,也称等效指令速度法或Gibson混合法。根据该法,通过统计各类指令在程序中所占比例进行折算。
设某类指令 i 在程序中所占比例为Wi, 执行时间为 ti, 则等效指令的执行时间为 T = w1 * t1 + w2 * t2 + ...+ wn * tn(n 为指令种类数). 若指令执行时间用时钟周期数来衡量的话, 则上式计算的结果就是 CPI。 对指令平均执行时间求倒数能够得到 MIPS 值。
二 选取一组指令组合, 使得得到的平均CPI最小, 由此得到的MIPS就是峰值MIPS (Peak MIPS)
三 MIPS反映了机器执行定点指令的速度, 但是用MIPS来对不同的机器进行性能比较有时是不准确或不客观的。
看一个例子:假定某程序 P 编译后生成的目标代码由A、B、C、D四类指令组成,它们在程序中所占的比例分别为43%, 21%, 12%, 24%, 已知它们的CPI分别为1 、2、2、2。 现重新对程序P进行编译优化,生成的新目标代码中 A 类指令条数减少了50%, 其他类指令的条数没有变。 请回答下列问题。
(1) 编译优化前后程序的 CPI 各是多少?
(2) 假定程序在一台主频为 50 MHz 的计算机上运行,则优化前后的 MIPS各是多少?
解: 优化后 A类指令的条数减少了50%, 因而各类指令所占比例分别计算如下。
A类指令: 21.5/(21.5 + 21 + 12+ 24)= 27%
B类指令: 21 / (21.5+ 21 + 12 +24) = 27%
C类指令:12/(21.5+21+12+24)=15%
D类指令: 24/ (21.5+21+12+24) = 31%
(1) 优化前后程序的CPI分别计算如下。
优化前: 43% *1 + 21%*2 + 12%*2 + 24%*2 = 1.57
优化后:27%*1 + 27% * 2 + 15% *2 + 31%*2 = 1.73
(2)优化前后程序的 MIPS 分别计算如下, 依据公式: 时钟频率 / CPI = MIPS
优化前 50 M / 1.57 = 31.8 MIPS
优化后: 50M / 1.73 = 28.9 MIPS
从MIPS来看,优化后程序执行速度反而变慢了。 从这个例子可以看出,用MIPS数进行性能估计是不可靠的。