计算机组成习题-答案~(清华大学出版社~).doc

上传人:小** 文档编号:2195108 上传时间:2019-05-01 格式:DOC 页数:76 大小:1.29MB
下载 相关 举报
计算机组成习题-答案~(清华大学出版社~).doc_第1页
第1页 / 共76页
计算机组成习题-答案~(清华大学出版社~).doc_第2页
第2页 / 共76页
计算机组成习题-答案~(清华大学出版社~).doc_第3页
第3页 / 共76页
计算机组成习题-答案~(清华大学出版社~).doc_第4页
第4页 / 共76页
计算机组成习题-答案~(清华大学出版社~).doc_第5页
第5页 / 共76页
点击查看更多>>
资源描述

1、-_第 1 章 习 题 答 案5若有两个基准测试程序 P1 和 P2 在机器 M1 和 M2 上运行,假定 M1 和 M2 的价格分别是 5000 元和8000 元,下表给出了 P1 和 P2 在 M1 和 M2 上所花的时间和指令条数。M1 M2程序指令条数 执行时间(ms) 指令条数 执行时间(ms)P1 200106 10000 150106 5000P2 300103 3 420103 6请回答下列问题:(1) 对于 P1,哪台机器的速度快?快多少?对于 P2 呢?(2) 在 M1 上执行 P1 和 P2 的速度分别是多少 MIPS?在 M2 上的执行速度又各是多少?从执行速度来看,对

2、于 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

3、快一倍。(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/(20010 6)=40。在 M2 上执行 P1 时的平均时钟周期数 CPI 为:51.2G/(15010 6)=40。(4) 考虑运行 P1 时 M1 和 M2 的性价比,因为该用户主要关心

4、系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比 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 2147483647 12147483647U 21

5、47483647 12147483647 (int) 2147483648U1 2(unsigned) 1 2无符号整数有符号整数无符号整数有符号整数无符号整数有符号整数有符号整数无符号整数11010 111000B = 000B111B (1) 000B(0)0111B (2311) 1000B (231)0111B (2311) 1000B (231)111B (1) 1110B (2)111B (2321) 1110B (2322)9以下是一个 C 语言程序,用来计算一个数组 a 中每个元素的和。当参数 len 为 0 时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。请问

6、这是什么原因造成的,并说明程序应该如何修改。1 float sum_elements(float a, unsigned len)2 3 int i;4 float result = 0;56 for (i = 0; i 24);int func2(unsigned word)return ( (int) word 24;假设在一个 32 位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑-_移位,带符号整数采用算术移位。请填写下表,并说明函数 func1 和 func2 的功能。W func1(w) func2(w)机器数 值 机器数 值 机器数 值0000 007F

7、H 127 0000 007FH +127 0000 007FH +1270000 0080H 128 0000 0080H +128 FFFF FF80H 1280000 00FFH 255 0000 00FFH +255 FFFF FFFFH 10000 0100H 256 0000 0000H 0 0000 0000H 0函数 func1 的功能是把无符号数高 24 位清零(左移 24 位再逻辑右移 24 位) ,结果一定是正的有符号数;而函数 func2 的功能是把无符号数的高 24 位都变成和第 25 位一样,因为左移 24 位后进行算术右移,高 24 位补符号位(即第 25 位)

8、。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 +15以下是两段 C 语言代码,函数 arit

9、h( )是直接用 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 = x; x = 4; x-=t;”三句对应,这些语句实现了 x 乘 15 的功能(左移

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。