计算机组成与系统结构课后答案全.docx
- 文档编号:20775027
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:130
- 大小:837.40KB
计算机组成与系统结构课后答案全.docx
《计算机组成与系统结构课后答案全.docx》由会员分享,可在线阅读,更多相关《计算机组成与系统结构课后答案全.docx(130页珍藏版)》请在冰豆网上搜索。
计算机组成与系统结构课后答案全
第1章习题答案
5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000
元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。
程序
M1
M2
指令条数
执行时间(ms)
指令条数
执行时间(ms)
P1
6
200>10
10000
6
150>10
5000
P2
300>103
3
420X103
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疋00M/(200X106)=40。
在M2上执行P1时的平均时钟周期数CPI为:
5X1.2G/(150沁06)=40。
(4)考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性
能应考虑执行时间,其性能为执行时间的倒数。
故性价比R为:
R=1/(执行时间x价格)
R越大说明性价比越高,也即,执行时间X格”的值越小,则性价比越高。
因为10X5000>5X000,所以,M2的性价比高。
应选择M2。
(5)P1和P2需要同等考虑,性能有多种方式:
执行时间总和、算术平均、几何平均。
若用算术平均方式,则:
因为(10+0.003)/2X000>(5+0.006)/28X00,所以M2的性价比高,应
选择M2。
若用几何平均方式,贝因为sqrt(100.003)5000 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%X(1+2+2+3+4)=0.212<=2.4 M2: 20%X(2+2+4+5+6)=0.219<=3.8 假设程序P的指令条数为N,则在M1和M2上的执行时间分别为: M1: 2.4 M2: 3.8MX1/1.5G=2.53N(ns) M1执行P的速度更快,每条指令平均快0.13ns,也即M1比M2快0.13/2.53100%〜5%。 (思考: 如果说程序P在M1上执行比M2上快(3.8-.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: 4N<.8=3.2N(ns)M2: 2N<.2=2.4N(ns) 所以,M2执行P的速度更快,每条指令平均快0.8ns,比M1快0.8/3.2<00%=25%。 &假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8X109,其CPI为1.25,则P在M上的执行时间是多少? 若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用 的CPU时间的百分比是多少? 参考答案: 程序P在M上的执行时间为: 1.25 程序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为(5>1+2>2+2X3+1>4)/10=1.9,所含的时钟周期数为10X1.9=19,执行时间为19/500M=38ns。 S2有8条指令,CPI为(1X+1X2+1X3+5>4)/8=3.25,所含的时钟周期数为8X3.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.2GX2/(5-)=800M。 第二章习题答案 3.实现下列各数的转换。 (1)(25.8125)10=(? )2=(? )8=(? )16 (2)(101101.011)2=(? )10=(? )8=(? )16=(? )8421 (3)(010110010110.0011)8421=(? )10=(? )2=(? )16 (4)(4E.C)16=(? )10=(? )2 参考答案: 1)(25.8125)10=(11001.1101)2=(31.64)8=(19.D)16 2)(101101.011)2=(45.375)10=(55.3)8=(2D.6)16=(01000101.001101110101)8421 (3)(010110010110.0011)8421=(596.3)10=(1001010100.01001100110011…)2=(254.4CCC…)16 5. 4)(4E.C)16=(78.75)10=(01001110.11)2 +0.1001,-0.1001, +1.0,-1.0,+0.010100, -0.010100,+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 4.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。 -0 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。 +1001,-001,+1,+10100,-0100,+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 (3)[x]补=0.1010010参考答案: (1)[x]补=1.1100111 (2)[x]补=10000000(3)[x]补=0.1010010(4)[x]补=11010011 2)[x]补=10000000 4)[x]补=11010011 x=00011001B x=-10000000B=-28 x=+0.101001B x=-101101B=-45 7.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2 的内容分别为R1: 0000108BH,R2: 8080108BH。 不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。 假定执行下列运算指令时,操作数为寄存器R1和R2的内 容,则R1和R2中操作数的真值分别为多少? (1)无符号数加法指令 (2)带符号整数乘法指令 (3)单精度浮点数减法指令 参考答案: R1=0000108BH=00000000000000000001000010001011b R2=8080108BH=10000000100000000001000010001011b (1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1: 108BH, R2: 8080108BH。 (2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知,R1 为正数,R2为负数。 R1的真值为+108BH,R2的真值为-0111111101111111111011110111 0100b+1b)=-7F7FEF75H。 (3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。 在IEEE754标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。 由R1中的内容可知,其符号位为0,表示其为正数,阶码为00000000,尾数部分为00000000001000010001011,故其为非规格化浮点数,指数为-126,尾数中没有隐藏的1,用十六进制表示 尾数为+0.002116H,故R1表示的真值为+0.002116HX10-126。 M上执行的C语言 由R2中的内容可知,其符号位为1,表示其为负数,阶码为00000001,尾数部分为00000000001000010001011,故其为规格化浮点数,指数为1-127=-126,尾数中有隐藏的1,用十六进制表示尾数为-.002116H,故R2表示的真值为-1.002116HX10-126 8.假定机器M的字长为32位,用补码表示带符号整数。 下表第一列给出了在机器 程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。 关系表达式 运算类型 结果 说明 0==0U -<0 -<0U 2147483647>2147483647-1 2147483647U>-147483647-1 2147483647>(int)2147483648U ->- (unsigned)->— 无符号整数有符号整数无符号整数有符号整数无符号整数有符号整数有符号整数无符号整数 1 1 0 1 0 1 1 1 00…0B=00…0B 11…1B(-)<00…0B(0) 32 11…1B(2-1)>00…0B(0) 011…1B(231-1)>100•-0B231— 3131 011…1B(2-1)<100…0B (2)011…1B(231-)>100…0B(t231) 11…1B(-)>11…10B(-2) 3232 11…1B(2-1)>11…10B(2-) 9•以下是一个C语言程序,用来计算一个数组a中每个元素的和。 当参数len为0时,返回值应该是0, 但是在机器上执行时,却发生了存储器访问异常。 请问这是什么原因造成的,并说明程序应该如何修改。 1 floatsum_elements(floata[],unsignedlen) 2 { 3 inti; 4 floatresult=0; 5 6 for(i=0;i<=len-;i++) 7 result+=a[i]; 8 returnresult; 9 } 参考答案: 参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为11…1,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。 只要将len声明为int型,或循环的测试条件改为i 10.设某浮点数格式为: 数符 阶码 尾数 1位5位移码6位补码 其中,移码的偏置常数为16,补码采用一位符号位,基数为4。 (1)用这种格式表示下列十进制数: +1.7,-0.12,+19,-/8。 (2)写出该格式浮点数的表示范围,并与12位定点补码整数表示范围比较。 参考答案: (假定采用0舍1入法进行舍入) (1)+1.7=+1.1011001B=0.011011BM1,故阶码为1+16=17=10001B,尾数为+0.011011的补码,即0.011011,所以+1.7表示为010001011011。 -0.12=-0.000111101B=-0.011111B4攵,故阶码为-+16=15=01111B,尾数为-0.011111的补码,即1.100001,所以-0.12表示为101111100001。 +19=+10011B=0.010011B43X故阶码为3+16=19=10011B,尾数为0.010011,所以+19表 示为010011010011。 -1/8=-0.125=-0.001B=-0.1000004攵,阶码为-+16=15=01111B,尾数为-0.100000 的补码,即1.100000,所以-/8表示为101111100000。 (2)该格式浮点数表示的范围如下。 正数最大值: 0.111111B浪1111,即: 0.333X415(-230-109)正数最小值: 0.000001B400000,即: 0.001X4-6(-2-4-10-0)负数最大值: -0.000001B400000,即: -0.001X4-6负数最小值: -.000000B411111,即: -.000X415 因此,该格式浮点数的数量级在10-0〜109之间。 1111 12位定点补码整数的表示范围为: 乞〜+(2-),即: 72048〜2047 由此可见,定点数和浮点数的表示范围相差非常大。 11.下列几种情况所能表示的数的范围是什么? 1)16位无符号整数 (2)16位原码定点小数 (3)16位补码定点小数 (4)16位补码定点整数 (5)下述格式的浮点数(基数为2,移码的偏置常数为128) 数符 阶码 尾数 1位8位移码7位原码 (1) 无符号整数: 0〜216-。 (2) 原码定点小数: -1215)〜 +(1-2-5) (3) 补码定点小数: -〜+(1 E-5)。 (4) 补码定点整数: 432768〜 +32767。 (5) 浮点数: 负数: -(1-2-)X+127〜-- 正数 +2-35〜(1 乞jx+127 参考答案: O O X-28° 12.以IEEE754单精度浮点数格式表示下列十进制数。 +1.75,+19,-1/8,258 参考答案: +1.75=+1.11B=1.11B20,故阶码为0+127=01111111B,数符为0,尾数为1.110…0,小数点前为隐藏位,所以+1.7表示为00111111111000000000000000000000,用十六进制表示为3FE00000H。 +19=+10011B=+1.0011B24X故阶码为4+127=10000011B,数符为0,尾数为1.00110…0,所以 +19表示为01000001100110000000000000000000,用十六进制表示为41980000H。 -/8=-0.125=-0.001B=-1.02^,阶码为£+127=01111100B,数符为1,尾数为1.0…0,所以-1/8表示为10111110000000000000000000000000,用十六进制表示为BE000000H。 258=100000010B=1.0000001B2X,故阶码为8+127=10000111B,数符为0,尾数为1.0000001,所以 258表示为01000011100000010000000000000000,用十六进制表示为43810000H。 13.设一个变量的值为4098,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同? 参考答案: 12 4098=+1000000000010B=+1.000000000012X 32位2-补码形式为: 00000000000000000001000000000010(00001002H) IEEE754单精度格式为: 01000101100000000001000000000000(45801000H) 粗体部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。 14.设一个变量的值为2147483647,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确,哪种表示的是近似值。 参考答案: ^2147483647=-111111111111111111111111111111B =-1.111111111111111111111111111111230X 32位2-补码形式为: 10000000000000000000000000000001(80000001H) IEEE754单精度格式为: 11001110111111111111111111111111(CEFFFFFFH) 32位2-补码形式能表示精确的值,而浮点数表示的是近似值,低位被截断 15.下表给出了有关IEEE754浮点格式表示中一些重要数据的取值,表中已经有最大规格化数的相应内 容,要求填入其他浮点数的相应内容。 (注: 表中a代表一个在1到10之间的正纯小数) 项目 阶码 尾数 单精度 双精度 以2的幂次表示 的值 以10的幂次表 示的值 以2的幂次表示 的值 以10的幂 次表示的值 0 00000000 0….00 0 0 0 0 1 01111111 0….00 1 1 1 1 最大规格化数 11111110 1…11 (2才3X2127 aX1038 (2--2)X21023 aX10308 最小规格化数 00000001 0….00 1.0X2-26 aX10-8 1.0X2^1022 aX1O「308 最大非规格化数 00000000 1…11 (1E-3)X2-26 aX10-8 (1-2节XT1。 22 aX1O「308 最小非规格化数 00000000 0…01 -23亠-26-49 2&=2 aX10-4 2-2X2-022 aX10^? 11111111 0….00 — — — — NaN 11111111 非全0 — — — — 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 系统 结构 课后 答案