(2) 假定某程序 P 的指令序列中, 五类指令具有完全相同的指令条数,
则程序 P 在 Ml 和 M2 上运行时,哪台机器更快?快多少?在 Ml 和 M2
上执行程序 P 时的平均时钟周期 数 CPI 各是多少?
答案:
(1)计算峰值 MIPS 时应该选择 CPI 最少的指令,故在 Ml 上可以选择一段全部
由 A 类指令组成的程序,其峰值 MIPS 为 0.8GHz/l=800MIPS;在 M2 上可以选择
一段全部由 A 类和 B 类指令组成的程序,其峰值 MIPS 为 l.6GHz/2=800MIPS。
( 2 ) 对于程序 P ,每类指令的条数均占 1/5 ,故 Ml 的 CPI 为
CPI1=(1+2+2+3+4)/5=2.4, M2 的 CPI2 为 CPI=(2+2+4+轩的/5=3.8。 当然,
不能根据以上结果 说明程序 P 在 Ml 上运行更快, 因为 Ml 和 M2 的时钟频率不
同。
假设程序 P 的指令条数为 N,则 P 在 Ml 上的执行时间为 2.4 * N
*1/0.8GHz=3.0N (ns); 在 M2 上的执行时间为 3.8*N*l/1.6GHz=2.375N ( ns),
所以, M2 执行 P 的速度更快,每条指令平均快 0.625ns 。
从该题可以看出, 虽然程序 P 在 Ml 中每条指令执行所花的时钟周期数少 ,
但是因为 M2 的时钟频率更快 ,所以时钟周期更短,使得每条指令的平均执行
时间更短。
3. 假设同一套指令集用不同的方法设计了两种机器 Ml 和 M2。机器 Ml 的时
钟周期为 0.8ns 机器陋的时钟周期为 l.2ns。 某个程序 P 在机器 Ml 上
运行时的 CPI 为 4,在 M2 上的 CPI 为 2。对于程序 P 来说, 哪台机器的
执行速度更快?快多少?
答案:
因为 Ml 和 M2 实现的是同一套指令集, 所以程序 P 在机器 Ml 和 M2 上的指
令条数相同,假定是 N 条,则 P 在 Ml 上的执行时间为 4*0.8ns*N=3.2N (ns); P
在 M2 上的执行时间为 2 *1.2ns*N=2.4N ( ns)。 由此可知, 对于程序 P 来说,
M2 的执行速度更快,平均每条指令快 0.8ns。
4. 定某编译器对某段高级语言程序编译生成两种不同的指令序列 Sl 和 S2,
在时钟频率为 500MHz 的机器 M 上运行, 目标指令序列中用到的指令类型
有 A 、 B 、 C 和 D 四类。 四类指令在 M 上的 CPI 和两个指令序列所