计算机组成与系统结构课后规范标准答案全(清华大学出版社袁春风主编).doc

收藏

编号:2649966    类型:共享资源    大小:1.72MB    格式:DOC    上传时间:2020-04-26
12
金币
关 键 词:
计算机 组成 系统 结构 课后 规范 标准答案 清华大学出版社 袁春风 主编
资源描述:
.\ 第 1 章 习 题 答 案 5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。 程序 M1 M2 指令条数 执行时间(ms) 指令条数 执行时间(ms) P1 200106 10000 150106 5000 P2 300103 3 420103 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为:10800M/(200106)=40。 在M2上执行P1时的平均时钟周期数CPI为:51.2G/(150106)=40。 (4) 考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比R为: R=1/(执行时间价格) R越大说明性价比越高,也即,“执行时间价格”的值越小,则性价比越高。 因为105000 > 58000,所以,M2的性价比高。应选择M2。 (5) P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。 若用算术平均方式,则:因为 (10+0.003)/25000 > (5+0.006)/28000,所以M2的性价比高,应选择M2。 若用几何平均方式,则:因为sqrt(100.003) 5000 < sqrt(50.006) 8000,所以M1的性价比高,应选择M1。 6.若机器M1和M2具有相同的指令集,其时钟频率分别为1GHz和1.5GHz。在指令集中有五种不同类型的指令A~E。下表给出了在M1和M2上每类指令的平均时钟周期数CPI。 机器 A B C D E M1 1 2 2 3 4 M2 2 2 4 5 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.212 = 2.4 M2:20%(2+2+4+5+6)= 0.219 = 3.8 假设程序P的指令条数为N,则在M1和M2上的执行时间分别为: M1:2.4 N1/1G = 2.4N (ns) M2:3.8N1/1.5G = 2.53 N (ns) M1执行P的速度更快,每条指令平均快0.13ns,也即M1比M2快0.13/2.53100%≈5%。 (思考:如果说程序P在M1上执行比M2上快 (3.8–2.4)/3.8100%= 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 N0.8 = 3.2N (ns) M2:2 N1.2 = 2.4 N (ns) 所以,M2执行P的速度更快,每条指令平均快0.8ns,比M1快0.8/3.2100%=25%。 8.假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8109,其CPI为1.25,则P在M上的执行时间是多少?若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少? 参考答案: 程序P在M上的执行时间为:1.2581091/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和两个指令序列所用的各类指令条数如下表所示。 A B C D 各指令的CPI 1 2 3 4 S1的指令条数 5 2 2 1 S2的指令条数 1 1 1 5 请问:S1和S2各有多少条指令?CPI各为多少?所含的时钟周期数各为多少?执行时间各为多少? 参考答案: S1有10条指令,CPI为 (51+22+23+14)/10=1.9, 所含的时钟周期数为101.9=19,执行时间为19/500M = 38ns。 S2有8条指令,CPI为 (11+12+13+54)/8 =3.25, 所含的时钟周期数为83.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.2G2/(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 参考答案: 移码 补码 +1001: 10001001 00001001 –1001: 01110111 11110111 +1: 10000001 00000001 –1: 011111111 11111111 +10100: 10010100 00010100 –10100: 01101100 11101100 +0: 10000000 00000000 –0: 10000000 00000000 6. 已知 [x]补,求x (1)[x]补=1.1100111 (2)[x]补=10000000 (3)[x]补=0.1010010 (4)[x]补=11010011 参考答案: (1)[x]补=1.1100111 x = –0.0011001B (2)[x]补=10000000 x = –10000000B = –128 (3)[x]补=0.1010010 x = +0.101001B (4)[x]补=11010011 x = – 101101B = – 45 7.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少? (1) 无符号数加法指令 (2) 带符号整数乘法指令 (3) 单精度浮点数减法指令 参考答案: R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011b R2 = 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b (1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1:108BH, R2:8080108BH。 (2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知, R1为正数, R2为负数。R1的真值为+108BH, R2的真值为–(0111 1111 0111 1111 1110 1111 0111 0100b + 1b) = –7F7FEF75H。 (3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。在IEEE 754 标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。 由R1中的内容可知,其符号位为0,表示其为正数,阶码为0000 0000,尾数部分为000 0000 0001 0000 1000 1011,故其为非规格化浮点数,指数为–126,尾数中没有隐藏的1,用十六进制表示尾数为+0.002116H,故R1表示的真值为+0.002116H 10-126。 由R2中的内容可知,其符号位为1,表示其为负数,阶码为0000 0001, 尾数部分为000 0000 0001 0000 1000 1011,故其为规格化浮点数,指数为1–127 = –126,尾数中有隐藏的1,用十六进制表示尾数为–1.002116H,故R2表示的真值为–1.002116H 10-126 8.假定机器M的字长为32位,用补码表示带符号整数。下表第一列给出了在机器M上执行的C语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。 关系表达式 运算类型 结果 说明 0 == 0U –1 < 0 –1 < 0U 2147483647 > –2147483647 – 1 2147483647U > –2147483647 – 1 2147483647 > (int) 2147483648U –1 > –2 (unsigned) –1 > –2 无符号整数 有符号整数 无符号整数 有符号整数 无符号整数 有符号整数 有符号整数 无符号整数 1 1 0 1 0 1 1 1 00…0B = 00…0B 11…1B (–1) < 00…0B (0) 11…1B (232–1) > 00…0B(0) 011…1B (231–1) > 100…0B (–231) 011…1B (231–1) < 100…0B(231) 011…1B (231–1) > 100…0B (–231) 11…1B (–1) > 11…10B (–2) 11…1B (232–1) > 11…10B (232–2) 9.以下是一个C语言程序,用来计算一个数组a中每个元素的和。当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。请问这是什么原因造成的,并说明程序应该如何修改。 1 float sum_elements(float a[], unsigned len) 2 { 3 int i; 4 float result = 0; 5 6 for (i = 0; i <= len–1; i++) 7 result += a[i]; 8 return result; 9 } 参考答案: 参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为11…1,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。 只要将len声明为int型,或循环的测试条件改为i> 24); } int func2(unsigned word) { return ( (int) word <<24 ) >> 24; } 假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写下表,并说明函数func1和func2的功能。 W func1(w) func2(w) 机器数 值 机器数 值 机器数 值 0000 007FH 127 0000 007FH +127 0000 007FH +127 0000 0080H 128 0000 0080H +128 FFFF FF80H –128 0000 00FFH 255 0000 00FFH +255 FFFF FFFFH –1 0000 0100H 256 0000 0000H 0 0000 0000H 0 函数func1的功能是把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。 4.填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。 模式 x y xy(截断前) xy(截断后) 机器数 值 机器数 值 机器数 值 机器数 值 无符号数 110 6 010 2 001100 12 100 4 二进制补码 110 –2 010 +2 111100 –4 100 –4 无符号数 001 1 111 7 000111 7 111 7 二进制补码 001 +1 111 –1 111111 –1 111 –1 无符号数 111 7 111 7 110001 49 001 1 二进制补码 111 –1 111 –1 000001 +1 001 +1 5.以下是两段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 << = 4; x - = t; if ( y < 0 ) y += 3; y>>2; return x+y; 参考答案: 可以看出x*M和“int t = x; x << = 4; x-=t;”三句对应,这些语句实现了x乘15的功能(左移4位相当于乘以16,然后再减1),因此,M等于15; y/N与“if ( y < 0 ) y += 3; y>>2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。而第一句“if ( y < 0 ) y += 3;”主要用于对y=–1时进行调整,若不调整,则–1>>2=–1而–1/4=0,两者不等;调整后 –1+3=2,2>>2=0,两者相等。 思考:能否把 if ( y < 0 ) y += 3; 改成 if ( y < 0 ) y += 2; ? 不能!因为y = - 4时不正确。 6.设A4~A1和B4~B1分别是四位加法器的两组输入,C0为低位来的进位。当加法器分别采用串行进位和先行进位时,写出四个进位C4 ~C1的逻辑表达式。 参考答案: 串行进位: C1 = X1C0+Y1C0 + X1 Y1 C2 = X2C1+Y2C1 + X2 Y2 C3 = X3C2+Y3C2 + X3 Y3 C4 = X4C3+Y4C3 + X4 Y4 并行进位: C1 = X1Y1 + (X1+Y1)C0 C2 = X2Y2 + (X2 +Y2) X1Y1 + (X2+Y2) (X1+Y1)C0 C3 = X3Y3 + (X3 + Y3) X2Y2 + (X3 + Y3) (X2 + Y2) X1Y1 + (X3 + Y3) (X2 + Y2)(X1 + Y1)C0 C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:计算机组成与系统结构课后规范标准答案全(清华大学出版社袁春风主编).doc
链接地址:https://www.taowenge.com/p-2649966.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开