《计算机组成习题答案(清华大学出版社)》由会员分享,可在线阅读,更多相关《计算机组成习题答案(清华大学出版社)(76页珍藏版)》请在人人文库网上搜索。
1、第 1 章 习 题 答 案5若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。程序M1M2指令条数执行时间(ms)指令条数执行时间(ms)P1200106100001501065000P230010334201036请回答下列问题:(1) 对于P1,哪台机器的速度快?快多少?对于P2呢?(2) 在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度来看,对于P2,哪台机器的速度快?快多少?(3) 假定M1和M2的时钟频率各是800MHz和1.2GHz,。
2、则在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;P。
3、2为420k/0.006=70MIPS。从执行速度来看,对于P2,因为100/70=1.43倍,所以M1比M2快0.43倍。 (3) 在M1上执行P1时的平均时钟周期数CPI为:10800M/(200106)=40。在M2上执行P1时的平均时钟周期数CPI为:51.2G/(150106)=40。(4) 考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比R为:R=1/(执行时间价格)R越大说明性价比越高,也即,“执行时间价格”的值越小,则性价比越高。因为105000 58000,所以,M2的性价比高。应选择M2。。
4、(5) P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。若用算术平均方式,则:因为 (10+0.003)/25000 (5+0.006)/28000,所以M2的性价比高,应选择M2。若用几何平均方式,则:因为sqrt(100.003) 5000 2147483647 12147483647U 2147483647 12147483647 (int) 2147483648U1 2(unsigned) 1 2无符号整数有符号整数无符号整数有符号整数无符号整数有符号整数有符号整数无符号整数11010 111000B = 000B111B (1) 000B(0)0111B (。
5、2311) 1000B (231)0111B (2311) 1000B (231)111B (1) 1110B (2)111B (2321) 1110B (2322)9以下是一个C语言程序,用来计算一个数组a中每个元素的和。当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。请问这是什么原因造成的,并说明程序应该如何修改。1float sum_elements(float a, unsigned len)23int i;4float result = 0;56for(i = 0; i 24);int func2(unsigned word)return ( (int。
6、) word 24;假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写下表,并说明函数func1和func2的功能。Wfunc1(w)func2(w)机器数值机器数值机器数值0000 007FH1270000 007FH+1270000 007FH+1270000 0080H1280000 0080H+128FFFF FF80H1280000 00FFH2550000 00FFH+255FFFF FFFFH10000 0100H2560000 0000H00000 0000H0函数func1的功能是把无符号数高24位清零。
7、(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。4填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。模式xyxy(截断前)xy(截断后)机器数值机器数值机器数值机器数值无符号数11060102001100121004二进制补码1102010+211110041004无符号数0011111700011171117二进制补码001+1111111111111111无符号数11171117110001490011二进制补码111111110。
8、00001+1001+15以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定的M和N编译生成的机器代码反编译生成的。根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少?#define M #define N int arith(int x, int y)int result = 0 ;result = x*M + y/N; return result;int optarith ( int x, int y)int t = x;x 2;return x+y;参考答案:可以看出x*M和“int t =。
9、 x; x 2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。而第一句“if ( y 2=1而1/4=0,两者不等;调整后 1+3=2,22=0,两者相等。思考:能否把 if ( y 0,则q 0 = 1商的数值部分为:00001。所以,X/Y原=00001 (最高位为符号位),余数为0100。(5) 将10和6分别表示成补码形式为:10 补 = 0 1010 , 6 补 = 1 1010,计算过程如下:先对被除数进行符号扩展,10 补=00000 01010,6 补 = 0 0110余数寄存器R 余数/商寄存器Q 说 明0 0 0 0 0 0 1 0 1。
10、 0 开始R0 = X+ 1 1 0 1 0 R1=X +Y1 1 0 1 0 0 1 0 1 0 R1与Y同号,则q5 =11 0 1 0 0 1 0 1 0 1 2R1(R和Q同时左移,空出一位上商1)+0 0 1 1 0 R2 = 2R1+Y1 1 0 1 0 1 0 1 0 1 R2与Y同号,则q4= 1,1 0 1 0 1 0 1 0 1 1 2R2(R和Q同时左移,空出一位上商1)+ 0 0 1 1 0 R3 = 2R2 +-Y1 1 0 1 1 0 1 0 1 1 R3与Y同号,则q3 = 11 0 1 1 0 1 0 1 1 1 2R3(R和Q同时左移,空出一位上商1)+ 0 0 1 1 0 R4 = 2R3 +Y1 1 1 0 0 1 0 1 1 1 R4与Y同号,则q 2 = 11 1 0 0 1 0 1 1 1 1 2R4 (R和Q同时左移,空出一位上商0) + 0 0 1 1 0 R5= 2R4 +-Y1 1 1 1 1 0 1 1 1 1。