好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

第1章习题答案

5 .若有两个基准测试程序 P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000 元,下表给出了 P1和P2在M1和M2上所花的时间和指令条数。 程序 P1 指令条数 200 ×06 300 ×03 M1 执行时间(ms) 10000 3 指令条数 150×106 420×103 M2 执行时间(ms) 5000 6 P2 请回答下列问题:

(1) 对于P1,哪台机器的速度快?快多少?对于 P2呢?

(2) 在M1上执行P1和P2的速度分别是多少 MlPS ?在M2上的执行速度又各是多少?从执行速度 来看,

对于P2,哪台机器的速度快?快多少?

(3) 假定M1和M2的时钟频率各是 800MHZ和1.2GHZ,则在M1和M2上执行P1时的平均时钟周 期数

CPI各是多少?

(4) 如果某个用户需要大量使用程序 P1 ,并且该用户主要关心系统的响应时间而不是吞吐率,

该用户需要大批购进机器时,应该选择 那么,应该选择 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∕(200×106)=40。 在M2上执行P1时的平均

时钟周期数 CPI为:5X1.2G/(150 ×06)=40°

(4) 考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性

能应考虑执行时间,其性能为执行时间的倒数。故性价比

R=1∕(执行时间×介格)

R越大说明性价比越高,也即,

执行时间×介格”的值越小,则性价比越高。

因为10×5000 > 5 ×000,所以,M2的性价比高。应选择 M2。

(5) P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。

若用算术平均方式,则:因为 选择M2。

若用几何平均方式, 贝因为Sqrt(10 ×003) ×000 < sqrt(5 0×06) 8000,所以M1的性价比高, 应选择M1 。

6.若机器M1和M2具有相同的指令集,其时钟频率分别为

机器 M1

那么,

M1还是M2 ?为什么?(提示:从性价比上考虑)

P1和P2一样多,主要关心的也是响应时 间,

(5) 如果另一个用户也需要购进大批机器,但该用户使用

R为:

(10+0.003)/2 ×000 > (5+0.006)/2 8×00,所以M2的性价比高,应

1GHz和1.5GHZ。在指令集中有五种不同类

CPI。 D 3 5 E 4 6 C 2 4 型的指令A~E。下表给出了在 M1和M2上每类指令的平均时钟周期数 A 1 2 B 2 2 M2 请回答下列问题:

(1) M1和M2的峰值 MlPS各是多少? (2)

序列中,五类指令具有完全相同的指令条数,则程序

(1) M1上可以选择一段都是 A类指令组成的程序,其峰值 MlPS为1000MIPS。

M2上可以选择一段 A和B类指令组成的程序,其峰值 MIPS为1500/2=75OMlPS。 (2)

M1 : 20%×(1+2+2+3+4)= 0.2 1×= 2.4 M2 : 20%×(2+2+4+5+6)= 0.2 1×= 3.8

假设程序P的指令条数为N ,则在M1和M2上的执行时间分别为:

M1 : 2.4 ×N ×∕1G = 2.4N (ns) M2 : 3.8 ××1/1.5G = 2.53 N (ns) M1执行P的速度更快,每条指令平均快 问错在什么地方?)

7.假设同一套指令集用不同的方法设计了两种机器

机器的执行速度更快?快多少? 参考答案:

假设程序P的指令条数为N ,则在M1和M2上的执行时间分别为:

M1 : 4 N ×.8 = 3.2N (ns) M2 : 2 N ×.2 = 2.4 N (ns) 所以,M2执行P的速度更快,每条指令平均快

0.8ns,比M1快0.8/3.2 ×00%=25%。 M1和M2。机器M1的时钟周期为0.8ns,机器M2 0.13ns ,也即M1比M2快0.13/2.53 1×% ≈ 5%。

5类指令具有完全相同的指令条数,所以各占 20%。

在M1和M2上执行程序P时的平均时钟周期数 CPI分别为:

假定某程序P的指令P在M1和M2上运

行时,哪台机器更快?快多少?在 M1和M2上执行程序P时的平均时钟周期数 CPI各是多少? 参考答案:

(思考:如果说程序 P在M1上执行比M2上快(3.8 -.4)/3.8 ×0%= 36.8% ,那么,这个结论显然是 错误的。请

的时钟周期为1.2ns。某个程序P在机器M1上运行时的CPI为4,在M2上的CPI为2。对于程序P 来说,哪台

&假设某机器 M的时钟频率为4GHz,用户程序P在M上的指令条数为8×109,其CPI为1.25,则P在 M上的执行时

间是多少?若在机器

的CPU时间的百分比是多少? 参考答案:

程序P在M上的执行时间为:1.25 ×X109X1∕4G = 2.5 S ,从启动P执行开始到执行结束的总时间为 4秒,其中2.5秒是P在CPU上真正的执行时间,其他时间可能执行操作系统程序或其他用户程序。 程序P占用的CPU时间的百分比为:2.5/4 = 62.5%。

M上从程序P开始启动到执行结束所需的时间是

4秒,则P占用

9.

成两种不同的指令序列

机器M上运行,目标指令序列中用到的指令类型有 两个指令序列所用的各类指令条数如下表所示。

假定某编译器对某段高级语言程序编译生S1和S2,在时钟频率为 500MHZ的

A、B、C和D四类。四类指令在 M上的CPI和

A 各指令的CPI S1的指令条数

B 2 2 1 C 3 2 1 D 4 1 5 1 5 1 S2的指令条数 请问:S1和S2各有多少条指令? CPI各为多少?所含的时钟周期数各为多少?执行时间各为多少? 参考答案:

S1有10条指令,CPl为(5 ×+2 >2+2 ×3+1 ×4)∕1O=1.9,所含的时钟周期数为 间为 19/500M = 38ns 。

S2有8条指令,CPI为(1 ×+1 >2+1 ×3+5 >4)/8 =3.25,所含的时钟周期数为 间为 26∕500M = 52ns 。

10 ×.9=19,执行时 8 >3.25=26 ,执行时

(注:从上述结果来看,对于同一个高级语言源程序,在同一台机器上所生成的目标程序不同,其 执行时间可能不同,而且,并不是指令条数少的目标程序执行时间就一定少。)

10. 假定机器M的时钟频率为1.2GHZ ,某程序P在机器M上的执行时间为12秒钟。对P优化时,将其 所有的乘4

指令都换成了一条左移 令被执行? 参考答案:

显然,P的执行时间为10秒,因此,P比P多花了 2秒钟,因此,执行时被换成左移指令的乘 法指令的条数为 1?2GX2∕(5 -) = 800M 。

2位的指令,得到优化后的程序

P'已知在M上乘法指令的CPI

为5,左移指令的CPI为2,P的执行时间是P'执行时间的1.2倍,则P中有多少条乘法指令被替换 成了左移指

第 二 章 习 题 答 案

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) 2)

(25.8125)10 = (1 1001.1101)2 = (31.64) 8 = (19.D) 16

(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, -参考答案:

+1.0,-1.0, +0.010100, -0.010100,

-0

原码

+0.1001: -0.1001: +1.0: -1.0: +0.010100: -0.010100: +0: -0:

0.1001000 1.1001000 溢出 溢出 0.0101000 1.0101000 0.0000000 1.0000000

补码 0.1001000 1.0111000 溢出 1.0000000 0.0101000 1.1011000 0.0000000 0.0000000

5. 假定机器数为 8位(1 位符号, 7 位数值),写出下列各二进制数的补码和移码表示。

+1001 ,-1001 , +1, -1, +10100, -10100, +0, -0

参考答案:

移码 10001001 01110111 10000001 011111111 10010100 01101100 10000000 10000000

补码 00001001 11110111 00000001 11111111 00010100 11101100 00000000 00000000

+1001 : -1001 : +1 : -1 : +10100: -10100: +0: -0:

6. 已知 [x] ,求 x

(1)[x] 补=1.1100111 (3)[x] 补=0.1010010 参考答案: ( 1) [x]

2)[x] 补=10000000 4)[x] 补=11010011

=1.1100111 ( 2)

X = 00011001B X = -000OoooB = -28 X = +0.101001B X = -101101B = —45

[x] 补=10000000 ( 3) [x] 补=0.1010010 ( 4) [x] 补

7.假定一台 32位字长的机器中带符号整数用补码表示,浮点数用 IEEE 754 标准表示,寄存器 R1 和 R2 的内容

分别为 R1: 0000108BH , R2: 8080108BH。不同指令对寄存器进行不同的操作,因而,不同 指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器 容,则 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中是操作数的无符号数表示,

R2: 8080108BH。

( 2)对于带符号整数乘法指令, R1 和 R2 中是操作数的带符号整数补码表示,由最高位可知,

为正数, 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,用十六进制 表示尾数为 —.002116H ,故 R2表示的真值为 -1.002116H ×10-126

8.假定机器 M 的字长为 32 位,用补码表示带符号整数。下表第一列给出了在机器

R1 和 R2 的内

因此,其真值分别为R1: 108BH,

R1

M 上执行的 C 语言

程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。 关系表达式 0 == OU -< 0 -< 0U 2147483647 > 2147483647 -1 2147483647U > -147483647 -1 2147483647 > (int) 2147483648U -> - (UnSigned)- > —

运算类型 结果 1 说明 OO …OB = 00 …OB 11 …1B ( -) < OO…OB (O) 11 …1B (232 - 1) > OO …OB(O) 011 …1B (231- 1) > 100 …OB231- 011 …1B (231 -1) < 100 …0B(231) 31 31 无符号整数 有符号整数 无符号整数 有符号整数 无符号整数 有符号整数 有符号整数 无符号整数 1 0 1 0 1 1 1 011 …1B (2 -) > 100…OB ( τ2 ) 11 …1B ( -) > 11 …10B ( -2) 11 …1B (232 -1) > 11 …10B (2 32-) 9?以下是一个 C语言程序,用来计算一个数组 1 float SUm_eIements(float a[], UnSigned

{ 2 Ien)3 int i; 4 fIoat resuIt = 0; 5

for (i = 0; i <= Ien -; i++) 6

7 resuIt += a[i]; 8 return resuIt; 9 }

a中每个元素的和。当参数 Ien为O时,返回值应该是 O,

但是在机器上执行时,却发生了存储器访问异常。请问这是什么原因造成的,并说明程序应该如何 修改。

参考答案:

参数Ien的类型是UnSigned,所以,当Ien=O时,执行Ien-I的结果为11???1 ,是最大可表示的无符号 数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储 器访问异常。 只要将Ien声明为int型,或循环的测试条件改为 10.设某浮点数格式为:

数符 1 位

5位移码

阶码 6位补码 尾数 i

其中,移码的偏置常数为 16,补码采用一位符号位,基数为 (1) (2)

4。

用这种格式表示下列十进制数: +1.7, -0.12, +19, -/8。

写出该格式浮点数的表示范围,并与 12位定点补码整数表示

范围比较。 参考答案:(假定采用0舍1入法进行舍入)

(1) +1.7 = +1.1011001B = 0.011011B ×1,故阶码为 1 +16 = 17 = 10001B,尾数为 +0.011011 的补码, 即

0.011011 ,所以 +1.7 表示为 0 10001 011011o

-0.12 = -0.000111101B = -0.011111B 4×,故阶码为 -+ 16 =15 = 01111B,尾数为-0.011111 的补码,即 1.100001,所以-0.12 表示为 1 01111 100001 o +19 = +10011B = 0.010011B 示为 0 10011 010011o

-/8 = -0.125 = -0.001B = -0.100000 4× ,阶码为 -+ 16 = 15 = 01111B ,尾数为-0.100000 的补码,即

43× 故阶码为 3 + 16 = 19 = 10011B,尾数为 0.010011 ,所以 +19 表

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

第1章习题答案5.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。程序P1指令条数200×06300×03M1执行时间(ms)100003指令条数150×106420×103M2执行时间(ms)50006
推荐度:
点击下载文档文档为doc格式
9evw80rqi310e609m87w9sc9l3ppgr019x8
领取福利

微信扫码领取福利

微信扫码分享