内容发布更新时间 : 2024/11/17 6:35:32星期一 下面是文章的全部内容请认真阅读。
第 1 章 习 题 答 案
5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。 程序 P1 P2 M1 指令条数 200×106 300×103 执行时间(ms) 10000 3 指令条数 150×106 420×103 M2 执行时间(ms) 5000 6 请回答下列问题: (1) 对于P1,哪台机器的速度快?快多少?对于P2呢? (2) 在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度
来看,对于P2,哪台机器的速度快?快多少? (3) 假定M1和M2的时钟频率各是800MHz和1.2GHz,则在M1和M2上执行P1时的平均时钟周
期数CPI各是多少? (4) 如果某个用户需要大量使用程序P1,并且该用户主要关心系统的响应时间而不是吞吐率,那么,
该用户需要大批购进机器时,应该选择M1还是M2?为什么?(提示:从性价比上考虑) (5) 如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时
间,那么,应该选择M1还是M2?为什么?
参考答案:
(1) 对于P1,M2比M1快一倍;对于P2,M1比M2快一倍。
(2) 对于M1,P1的速度为:200M/10=20MIPS;P2为300k/0.003=100MIPS。
对于M2,P1的速度为:150M/5=30MIPS;P2为420k/0.006=70MIPS。
从执行速度来看,对于P2,因为100/70=1.43倍,所以M1比M2快0.43倍。 (3) 在M1上执行P1时的平均时钟周期数CPI为:10×800M/(200×106)=40。
在M2上执行P1时的平均时钟周期数CPI为:5×1.2G/(150×106)=40。
(4) 考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性
能应考虑执行时间,其性能为执行时间的倒数。故性价比R为:
R=1/(执行时间×价格)
R越大说明性价比越高,也即,“执行时间×价格”的值越小,则性价比越高。 因为10×5000 > 5×8000,所以,M2的性价比高。应选择M2。
(5) P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。
若用算术平均方式,则:因为 (10+0.003)/2×5000 > (5+0.006)/2×8000,所以M2的性价比高,应选择M2。
若用几何平均方式,则:因为sqrt(10×0.003) ×5000 < sqrt(5×0.006) ×8000,所以M1的性价比高,应选择M1。
6.若机器M1和M2具有相同的指令集,其时钟频率分别为1GHz和1.5GHz。在指令集中有五种不同类型的指令A~E。下表给出了在M1和M2上每类指令的平均时钟周期数CPI。 机器 M1 M2 请回答下列问题:
word文档 可自由复制编辑
A 1 2 B 2 2 C 2 4 D 3 5 E 4 6
(1)M1和M2的峰值MIPS各是多少?
(2)假定某程序P的指令序列中,五类指令具有完全相同的指令条数,则程序P在M1和M2上运行时,哪台机器更快?快多少?在M1和M2上执行程序P时的平均时钟周期数CPI各是多少? 参考答案:
(1)M1上可以选择一段都是A类指令组成的程序,其峰值MIPS为1000MIPS。
M2上可以选择一段A和B类指令组成的程序,其峰值MIPS为1500/2=750MIPS。 (2)5类指令具有完全相同的指令条数,所以各占20%。
在M1和M2上执行程序P时的平均时钟周期数CPI分别为: M1:20%×(1+2+2+3+4)= 0.2×12 = 2.4
M2:20%×(2+2+4+5+6)= 0.2×19 = 3.8
假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:
M1:2.4× N×1/1G = 2.4N (ns) M2:3.8×N×1/1.5G = 2.53 N (ns)
M1执行P的速度更快,每条指令平均快0.13ns,也即M1比M2快0.13/2.53×100%≈5%。 (思考:如果说程序P在M1上执行比M2上快 (3.8–2.4)/3.8×100%= 36.8%,那么,这个结论显然是错误的。请问错在什么地方?)
7.假设同一套指令集用不同的方法设计了两种机器M1和M2。机器M1的时钟周期为0.8ns,机器M2的时钟周期为1.2ns。某个程序P在机器M1上运行时的CPI为4,在M2上的CPI为2。对于程序P来说,哪台机器的执行速度更快?快多少? 参考答案:
假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:
M1:4 N×0.8 = 3.2N (ns) M2:2 N×1.2 = 2.4 N (ns)
所以,M2执行P的速度更快,每条指令平均快0.8ns,比M1快0.8/3.2×100%=25%。
8.假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8×109,其CPI为1.25,则P在M上的执行时间是多少?若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少? 参考答案:
程序P在M上的执行时间为:1.25×8×109×1/4G = 2.5 s,从启动P执行开始到执行结束的总时间为4秒,其中2.5秒是P在CPU上真正的执行时间,其他时间可能执行操作系统程序或其他用户程序。 程序P占用的CPU时间的百分比为:2.5/4 = 62.5%。
9.假定某编译器对某段高级语言程序编译生成两种不同的指令序列S1和S2,在时钟频率为500MHz的
机器M上运行,目标指令序列中用到的指令类型有A、B、C和D四类。四类指令在M上的CPI和两个指令序列所用的各类指令条数如下表所示。 各指令的CPI S1的指令条数 S2的指令条数 A 1 5 1 B 2 2 1 C 3 2 1 D 4 1 5
请问:S1和S2各有多少条指令?CPI各为多少?所含的时钟周期数各为多少?执行时间各为多少? 参考答案:
word文档 可自由复制编辑
S1有10条指令,CPI为 (5×1+2×2+2×3+1×4)/10=1.9, 所含的时钟周期数为10×1.9=19,执行时间为19/500M = 38ns。
S2有8条指令,CPI为 (1×1+1×2+1×3+5×4)/8 =3.25, 所含的时钟周期数为8×3.25=26,执行时间为26/500M = 52ns。
(注:从上述结果来看,对于同一个高级语言源程序,在同一台机器上所生成的目标程序不同,其执行时间可能不同,而且,并不是指令条数少的目标程序执行时间就一定少。)
10.假定机器M的时钟频率为1.2GHz,某程序P在机器M上的执行时间为12秒钟。对P优化时,将其
所有的乘4指令都换成了一条左移2位的指令,得到优化后的程序P?。已知在M上乘法指令的CPI为5,左移指令的CPI为2,P的执行时间是P?执行时间的1.2倍,则P中有多少条乘法指令被替换成了左移指令被执行? 参考答案:
显然,P?的执行时间为10秒,因此,P比P?多花了2秒钟,因此,执行时被换成左移指令的乘法指令的条数为1.2G×2/(5–2) = 800M。
第 二 章 习 题 答 案
3.实现下列各数的转换。
(1) (25.8125)10= (?)2= (?) 8= (?) 16
(2) (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421
(3) (0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16 (4) (4E.C)16 = (?)10= (?) 2 参考答案:
(1) (25.8125)10 = (1 1001.1101)2 = (31.64) 8 = (19.D) 16
(2)(101101.011)2 = (45.375)10 = (55.3) 8 = (2D.6) 16 = (0100 0101.0011 0111 0101) 8421
(3)(0101 1001 0110.0011)8421 = (596.3)10 = (1001010100.01001100110011…) 2 = (254.4CCC…) 16 (4)(4E.C)16 = (78.75)10 = (0100 1110.11) 2
4. 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。
+0.1001,–0.1001,+1.0,–1.0,+0.010100,–0.010100,+0,–0 参考答案:
原码 补码 +0.1001: 0.1001000 0.1001000 –0.1001: 1.1001000 1.0111000 +1.0: 溢出 溢出 –1.0: 溢出 1.0000000 +0.010100: 0.0101000 0.0101000 –0.010100: 1.0101000 1.1011000 +0: 0.0000000 0.0000000 –0: 1.0000000 0.0000000
5. 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
+1001,–1001,+1,–1,+10100,–10100,+0,–0 参考答案:
word文档 可自由复制编辑