计算机组成以及其-系统结构课后答案~内容免费版全(清华大学出版社-袁春风主编~).doc
《计算机组成以及其-系统结构课后答案~内容免费版全(清华大学出版社-袁春风主编~).doc》由会员分享,可在线阅读,更多相关《计算机组成以及其-系统结构课后答案~内容免费版全(清华大学出版社-袁春风主编~).doc(83页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-_第第 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 上的执行速度又各是多少?从执行速 度来看,对于
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/(200106)=40。 在 M2 上执行 P1 时的平均时钟周期数 CPI 为:51.2G/(150106)=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 1214748
5、3647U 2147483647 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、储器访问异常。请问这是什么原因造成的,并说明程序应该 如何修改。1float sum_elements(float a, unsigned len) 2 3int i; 4float result = 0; 5 6for(i = 0; i 24); int func2(unsigned word) return ( (int) word 24;-_ 假设在一个假设在一个 32 位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑 移位,带符号整数采用算术移位。请填写下表,并说明函数移位,带符号整数采
7、用算术移位。请填写下表,并说明函数 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 位清零(左移位清零(左移 24 位再逻辑右移位再逻辑右移
8、24 位)位) ,结果一定是正的有符,结果一定是正的有符 号数;而函数号数;而函数 func2 的功能是把无符号数的高的功能是把无符号数的高 24 位都变成和第位都变成和第 25 位一样,因为左移位一样,因为左移 24 位后进行算术右位后进行算术右 移,高移,高 24 位补符号位(即第位补符号位(即第 25 位)位) 。4填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。xyxy(截断前)(截断前)xy(截断后)(截断后) 模式模式 机器数机器数值值机器数机器数值值机器数机器数值值机器数机器数
9、值值无符号数无符号数11060102001100121004二进制补码二进制补码1102010+211110041004无符号数无符号数0011111700011171117二进制补码二进制补码001+1111111111111111无符号数无符号数11171117110001490011二进制补码二进制补码11111111000001+1001+15以下是两段以下是两段 C 语言代码,函数语言代码,函数 arith( )是直接用是直接用 C 语言写的,而语言写的,而 optarith( )是对是对 arith( )函数以某个确函数以某个确 定的定的 M 和和 N 编译生成的机器代码反编译生成
10、的。根据编译生成的机器代码反编译生成的。根据 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 2;”两句对应,功能主要由第二句两句对应,功能
11、主要由第二句“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
12、1010,计算过程如下:,计算过程如下: 先对被除数进行符号扩展,先对被除数进行符号扩展,10 补补=00000 01010,6 补补 = 0 0110余数寄存器余数寄存器 R 余数余数/商寄存器商寄存器 Q 说说 明明 0 0 0 0 0 0 1 0 1 0 开始开始 R0 = X+ 1 1 0 1 0 R1=X +Y 1 1 0 1 0 0 1 0 1 0 R1与与Y同号,则同号,则 q5 =1 1 0 1 0 0 1 0 1 0 1 2R1(R 和和 Q 同时左移,空出一位上商同时左移,空出一位上商 1) +0 0 1 1 0 R2 = 2R1+Y 1 1 0 1 0 1 0 1 0 1
13、 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 +-Y 1 1 0 1 1 0 1 0 1 1 R3与与Y同号,则同号,则 q3 = 1 1 0 1 1 0 1 0 1 1 1 2R3(R 和和 Q 同时左移,空出一位上商同时左移,空出一位上商 1) + 0 0 1 1 0 R4 = 2R3 +Y 1 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 同
14、时左移,空出一位上商同时左移,空出一位上商 0) + 0 0 1 1 0 R5= 2R4 +-Y 1 1 1 1 1 0 1 1 1 1 R5与与Y同号,则同号,则 q1= 1, 1 1 1 1 0 1 1 1 1 1 2R5 (R 和和 Q 同时左移,空出一位上商同时左移,空出一位上商 1) + 0 0 1 1 0 R6= 2R5 +Y 0 0 1 0 0 1 1 1 1 0 R6与与Y异号,则异号,则 q 0 = 0,Q 左移,空出一位上左移,空出一位上 商商 1 + 0 0 0 0 0 + 1 商为负数,末位加商为负数,末位加 1;余数不需要修正;余数不需要修正 0 0 1 0 0 1
15、1 1 1 1 所以,所以,X/Y 补补=11111,余数为,余数为 00100。 即:即:X/Y= 0001B = 1,余数为,余数为 0100B = 4 将各数代入公式将各数代入公式“除数除数商商+余数余数= 被除数被除数”进行验证,得:进行验证,得:(6)(1) +4= 10。-_10若一次加法需要若一次加法需要 1ns,一次移位需要,一次移位需要 0.5ns。请分别计算用一位乘法、两位乘法、基于。请分别计算用一位乘法、两位乘法、基于 CRA 的阵列的阵列 乘法、基于乘法、基于 CSA 的阵列乘法四种方式计算两个的阵列乘法四种方式计算两个 8 位无符号二进制数乘积时所需的时间。位无符号二
16、进制数乘积时所需的时间。 参考答案:参考答案: 一位乘法:一位乘法:8 次右移,次右移,8 次加法,共计次加法,共计 12ns; 二位乘法:二位乘法:4 次右移,次右移,4 次加法,共计次加法,共计 6ns; 基于基于 CRA 的阵列乘法:每一级部分积不仅依赖于上一级部分积,还依赖于上一级最终的进位,而的阵列乘法:每一级部分积不仅依赖于上一级部分积,还依赖于上一级最终的进位,而 每一级进位又是串行进行的,所以最长的路径总共经过了每一级进位又是串行进行的,所以最长的路径总共经过了 8+2(81)=22 次全加器,共计约次全加器,共计约 22ns; 基于基于 CSA 的阵列乘法:本级进位和本级和同
17、时传送到下一级,同级部分积之间不相互依赖,只进行的阵列乘法:本级进位和本级和同时传送到下一级,同级部分积之间不相互依赖,只进行 O(N)次加法运算,因此,共计约)次加法运算,因此,共计约 8ns。11在在 IEEE 754 浮点数运算中,当结果的尾数出现什么形式时需要进行左规,什么形式时需要进行右浮点数运算中,当结果的尾数出现什么形式时需要进行左规,什么形式时需要进行右 规?如何进行左规,如何进行右规?规?如何进行左规,如何进行右规?参考答案:参考答案: (1) 对于结果为对于结果为1x . .xxx 的情况,需要进行右规。右规时,尾数右移一位,阶码加的情况,需要进行右规。右规时,尾数右移一位
18、,阶码加 1。右规操作。右规操作 可以表示为:可以表示为:M bM b 2 -1,EbEb+1。右规时注意以下两点:。右规时注意以下两点: a) 尾数右移时,最高位尾数右移时,最高位“1”被移到小数点前一位作为隐藏位,最后一位移出时,要考虑舍入。被移到小数点前一位作为隐藏位,最后一位移出时,要考虑舍入。 b) 阶码加阶码加 1 时,直接在末位加时,直接在末位加 1。 (2) 对于结果为对于结果为0.0001xx 的情况,需要进行左规。左规时,数值位逐次左移,阶码逐次减的情况,需要进行左规。左规时,数值位逐次左移,阶码逐次减 1,直到将第一位,直到将第一位“1”移到小数点左边。假定移到小数点左边
19、。假定 k 为结果中为结果中“”“”和左边第一个和左边第一个 1 之间连续之间连续 0 的个数,的个数, 则左规操作可以表示为:则左规操作可以表示为:M bM b 2k,EbEbk。左规时注意以下两点:。左规时注意以下两点: a) 尾数左移时数值部分最左尾数左移时数值部分最左 k 个个 0 被移出,因此,相对来说,小数点右移了被移出,因此,相对来说,小数点右移了 k 位。因为进行尾数相位。因为进行尾数相 加时,默认小数点位置在第一个数值位(即:隐藏位)之后,所以小数点右移加时,默认小数点位置在第一个数值位(即:隐藏位)之后,所以小数点右移 k 位后被移到了第位后被移到了第 一位一位 1 后面,
20、这个后面,这个 1 就是隐藏位。就是隐藏位。 b) 执行执行 EbEbk 时,每次都在末位减时,每次都在末位减 1,一共减,一共减 k 次。次。12在在 IEEE 754 浮点数运算中,如何判断浮点运算的结果是否溢出?浮点数运算中,如何判断浮点运算的结果是否溢出? 参考答案:参考答案: 浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。尾数溢出时,可通过右浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。尾数溢出时,可通过右 规操作进行纠正。阶码上溢时,说明结果的数值太大,无法表示;阶码下溢时,说明结果数值太小,规操作进行纠正。阶码上溢时,说明结果的数值太大,无
21、法表示;阶码下溢时,说明结果数值太小, 可以把结果近似为可以把结果近似为 0。 在进行对阶、规格化、舍入和浮点数的乘在进行对阶、规格化、舍入和浮点数的乘/除运算等过程中,都需要对阶码进行加、减运算,可能会除运算等过程中,都需要对阶码进行加、减运算,可能会 发生阶码上溢或阶码下溢,因此,必须对阶码进行溢出判断。发生阶码上溢或阶码下溢,因此,必须对阶码进行溢出判断。 (有关对阶码进行溢出判断的方法可参见教材中相关章节。(有关对阶码进行溢出判断的方法可参见教材中相关章节。 )13假设浮点数格式为:阶码是假设浮点数格式为:阶码是 4 位移码,偏置常数为位移码,偏置常数为 8,尾数是,尾数是 6 位补码
22、(采用双符号位)位补码(采用双符号位) ,用浮点运,用浮点运 算规则分别计算在不采用任何附加位和采用算规则分别计算在不采用任何附加位和采用 2 位附加位(保护位、舍入位)两种情况下的值。位附加位(保护位、舍入位)两种情况下的值。 (假(假 定对阶和右规时采用就近舍入到偶数方式)定对阶和右规时采用就近舍入到偶数方式) (1)(15/16) 27 +(2/16) 25 (2)(15/16) 27(2/16) 25 (3)(15/16) 25 +(2/16) 27 (4)(15/16) 25(2/16) 27 参考答案(假定采用隐藏位):参考答案(假定采用隐藏位): X= (15/16) 27 =
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 及其 系统 结构 课后 答案 内容 免费版 清华大学出版社 春风 主编
限制150内