当前页面访问量: 457

计算机系统基础(第2版)袁春风编著 课后习题参考答案

Posted by

计算机系统基础(第2版)袁春风编著 资料合集索引

可能侵权的内容已删除

计算机系统基础(第二版)

课后习题参考答案

袁春风编著

说明

类别 参数
书名 《计算机系统基础(第二版)》 袁春风
整理日期 2019-10-27
当前版本 2020.10.14
整理人 幽弥狂
内容 《计算机系统基础(第二版)》 袁春风编著 课后习题参考答案
邮箱 1768478912@qq.com
QQ 1768478912
网址 https://feater.top/ebooks/36/

声明

1、如果有侵权或者其他问题欢迎联系我。

2、参考书目为https://github.com/JackeyLea/NJUCS中README.md文件中列出的参考书目。

3、括号里的P**表示在书本的第几页。

4、作者只有一本配套的习题解答,里面包含部分习题的解释和参考答案,也就是说本书本参考答案是我制作的不保证准确率,如果有错误欢迎联系我。

版本信息

2020-04-30:添加所有的第一版的参考答案

2019-10-27:新建文档,从试题文档中复制模板

第一部分 系统概述和可执行目标文件的生成

第一章 计算机系统概述

1、见《计算机系统基础习题解答与教学指导》

2、简单回答下列问题。

(1)冯·诺依曼计算机由哪几部分组成?各部分的功能是什么?

控制器:用于控制主动执行指令;
运算器:用于执行指令;
存储器:存放数据和指令;
输入输出设备:通过输入输出设备使用计算机;

(2)什么是“存储程序”工作方式?

必须将事先编好的程序和原始数据送人主存后才开能执行程序,
一旦程序被启动执行,
计算机能在必须操作人员干预的情况下自动完成逐条指令取出和执行任务。(P3)

(3)一条指令的执行过程包含哪几个阶段?

程序的执行就是指令的执行过程。
阶段:取指令、取数、传数、ALU运算阶段。(P6)

(4)计算机系统的层次结构如何划分?

电路设计、数字设计、ISA、汇编程序、编译程序、应用程序、操作系统(P18 图1.11)

(5)计算机系统的用户可分哪几类?每类用户工作在哪个层次?

用户有四种:
最终用户:应用程序级
系统管理员:操作系统
应用程序员:编译程序
系统程序员:汇编程序和ISA之间

(6)程序的 CPI 与哪些因素有关?

总时钟周期数、指令条数(P20)

(7)为什么说性能指标 MIPS 不能很好地反映计算机的性能?

MIPS反映了机器执行定点指令的速度。
首先,不同机器的指令集是不同的,而且指令的功能也是不同的,也许在机器1上一条指令完成的功能机器2需要多条指令。
其次,不同机器的CPI和时钟周期也是不同的,因此同一条指令在不同的机器上所用的时间也不同。(P20 最后一段)

3、略

4、略

5、图1.1所示模型机(采用图1.2所示指令格式)的指令系统中,除了有mov(op=0000)、add(op=0001)、load(op=1110)和store(op=1111)指令外,R型指令还有减(sub,op=0010)和乘(mul,op=0011)等指令,请仿照图1.3给出求解表达式“z=(x-y)* y;”

所对应的指令序列(包括机器代码和对应的汇编指令)以及在主存中的存放内容,并仿照图1.5给出每条指令的执行过程以及所包含的微操作。

主存地址 主存单元地址 内容说明(Ii表示第i条指令) 指令的符号表示
0 1110 0111 I1:R[0]←M[7];op=1110;取数操作 load r0,7#
1 0000 0100 I2:R[1]←R[0];op=0000;传送操作 mov r1,r0
2 1110 0101 I3:R[0]←M[6];op=1110;取数操作 load r0,6#
3 0010 0001 I4:R[0]←R[0]-R[1];op=0010;减操作 sub r0,r1
4 0011 0001 I5:R[0]←R[0]*R[1];op=0011;乘操作 mul r0,r1
5 1111 1000 I6:M[8]←R[0];op=1111;存数操作 store 8#,r0
6 0001 0000 操作数x,值为16 |
7 0010 0001 操作数y,值为33 |
8 0000 0000 结果z,初始值为0 |

仿照图1.5

操作 I1:1110 0111 I2:0000 0100 I3:1110 0101 I4:0010 0001 I5:0011 0001 I6:1111 1000
取指令 IR←M[0000] IR←M[0001] IR←M[0010] IR←M[0011] IR←M[0100] IR←M[0101]
指令译码 op=1110,取数 op=0000,传送 op=1110,取数 op=0010,减 op=0011,乘 op=1111,存数
PC增量 PC←0000+1 PC←0001+1 PC←0010+1 PC←0011+1 PC←0100+1 PC←0101+1
取数并执行 MDR←M[0110] A←R[0]、mov MDR←M[0101] A←R[0]、B←R[1]、sub A←R[0]、B←R[1]、mul MDR←R[0]
送结果 R[0]←MDR R[1]←F R[0]←MDR R[0]←F R[0]←F M[1000]←MDR
执行结果 R[0]=33 R[1]=33 R[0]=16 R[0]=16-33=-17 R[0]=-17×33 M[8]=-561

6、若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。

程序 M1 M2
指令条数 执行时间(ms) 指令条数 执行时间(ms)
P1 $ 200×10^6 $ 10000 $150×10^6$ 5000
P2 $300×10^3$ 3 $420×10^3$ 6

请回答下列问题:

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

对于P1,M2比M1快一倍;对于P2,M1比M2快一倍。

(2)在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度来看,对于P2,哪台机器的速度快?快多少?

对于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和M2的时钟频率各是800MHz和1.2GHz,则在M1和M2上执行P1时的平均时钟周期数CPI各是多少?

在M1上执行P1时的平均时钟周期数CPI为:10×800M/(200×106)=40。
在M2上执行P1时的平均时钟周期数CPI为:5×1.2G/(150×106)=40。

(4)如果某个用户需要大量使用程序P1,并且该用户主要关心系统的响应时间而不是吞吐率,那么,该用户需要大批购进机器时,应该选择M1还是M2?为什么?(提示:从性价比上考虑)

考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比R为:

R=1/(执行时间×价格)

R越大说明性价比越高,也即,“执行时间×价格”的值越小,则性价比越高。

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

(5)如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时间,那么,应该选择M1还是M2?为什么?

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

若用算术平均方式,则:因为 (10+0.003)/2×5000 > (5+0.006)/2×8000,所以M2的性价比高,应选择M2。

若用几何平均方式,则:因为sqrt(10×0.003) ×5000 

7.若机器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各是多少?

M1上可以选择一段都是A类指令组成的程序,其峰值MIPS为1000MIPS。
M2上可以选择一段A和B类指令组成的程序,其峰值MIPS为1500/2=750MIPS。

(2)假定某程序P的指令序列中,五类指令具有完全相同的指令条数,则程序P在M1和M2上运行时,哪台机器更快?快多少?在M1和M2上执行程序P时的平均时钟周期数CPI各是多少?

5类指令具有完全相同的指令条数,所以各占20%。
在M1和M2上执行程序P时的平均时钟周期数CPI分别为:
M1:20%×(1+2+2+3+4)= 0.2×12 = 2.4
M2:20%×(2+2+4+5+6)= 0.2×19 = 3.8
假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:
M1:2.4× N×1/1G = 2.4N (ns)
M2:3.8×N×1/1.5G = 2.53 N (ns)
M1执行P的速度更快,每条指令平均快0.13ns,也即M1比M2快0.13/2.53×100%≈5%。

8.假设同一套指令集用不同的方法设计了两种机器M1和M2。机器M1的时钟周期为0.8ns,机器M2的时钟周期为1.2ns。某个程序P在机器M1上运行时的CPI为4,在M2上的CPI为2。对于程序P来说,哪台机器的执行速度更快?快多少?

假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:
M1:4 N×0.8 = 3.2N (ns)
M2:2 N×1.2 = 2.4 N (ns)
所以,M2执行P的速度更快,每条指令平均快0.8ns,比M1快0.8/3.2×100%=25%。

9.假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8×109,其CPI为1.25,则P在M上的执行时间是多少?若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少?

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

10.假定某编译器对某段高级语言程序编译生成两种不同的指令序列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+2×3+1×4)/10=1.9, 所含的时钟周期数为10×1.9=19,执行时间为19/500M = 38ns。
S2有8条指令,CPI为 (1×1+1×2+1×3+5×4)/8 =3.25, 所含的时钟周期数为8×3.25=26,执行时间为26/500M = 52ns。 

11.假定机器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.2G×2/(5–2) = 800M。
  1. 假定机器M的时钟频率为2.5GHz,运行某程序P的过程中,共执行了500×10^6条浮点数指令、4000×10^6条整数指令、3000×10^6条访存指令、1000×10^6条分支指令,这4种指令的CPI分别是2、4、1。若要使程序P的执行时间减少一半,则浮点数指令的CPI应如何改进?若要使程序P的执行时间减少一半,则访存指令的CPI应如何改进?若浮点数指令和整数指令的CPI减少20%,访存指令和分支指令的CPI减少40%,则程序执行时间会减少多少?

第二章 计算机系统基本功能和基本组成

  1. 见习题解答。
  2. 简单回答下列问题。

(1)为什么计算机内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数?

赞赏

微信赞赏支付宝赞赏

5 comments

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注