- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE
PAGE59
习题解答
第1章计算机系统概述
教材中图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给出每条指令的执行过程以及所包含的微操作。
参考答案:
实现z=(x-y)*y的程序在主存部分单元中的初始内容如下。
主存地址
主存单元内容
内容说明(Ii表示第i条指令)
指令的符号表示
0
11100111
I1:R[0]←M[7];op=1110:取数操作
loadr0,7#
1
00000100
I2:R[1]←R[0];op=0000:传送操作
movr1,r0
2
11100110
I3:R[0]←M[6];op=1110:取数操作
loadr0,6#
3
00100001
I4:R[0]←R[0]-R[1];op=0010:减操作
subr0,r1
4
00110001
I5:R[0]←R[0]*R[1];op=0011:乘操作
mulr0,r1
5
11111000
I6:M[8]←R[0];op=1111:存数操作
store8#,r0
6
00010001
操作数x,值为17
7
00000001
操作数y,值为1
8
00000000
结果z,初始值为0
实现z=(x-y)*y的程序中每条指令的执行过程如下。
指令阶段
I1:11100111
I2:00000100
I3:11100110
I4:00100001
I5:00110001
I6:11111000
取指令
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[0111]
A←R[0]、mov
MDR←M[0110]
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]=1
R[1]=1
R[0]=17
R[0]=17-1=16
R[0]=16*1=16
M[8]=16
2.若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。
程序
M1
M2
指令条数
执行时间
指令条数
执行时间
P1
200×106
1000ms
150×106
500ms
P2
300×103
3ms
420×103
6ms
请回答下列问题:
对于P1,哪台机器的速度快?快多少?对于P2呢?
在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度来看,对于P2,哪台机器的速度快?快多少?
假定M1和M2的时钟频率各是800MHz和1.2GHz,则在M1和M2上执行P1时的CPI各是多少?
如果某用户需要大量使用程序P1,并且该用户主要关心系统的响应时间而不是吞吐率,那么,该用户需要大批购进机器时,该选择M1还是M2?为什么?(提示:从性价比上考虑)
如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时间,那么,应该选择M1还是M2?为什么?
参考答案:
如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时间,那么,应该选择M1还是M2?为什么?(1)对于程序P1,M1上执行时间是M2的2倍,故M2比M1快1倍;对于程序P2,M2上的执行时间是M1的2倍,故M1比M2快1倍。
在M1上P1的速度为200M/1s=200MIPS,P2的速度为0.3M/0.003s=100MIPS;在M2上P1的速度为150M/0.5s=300MIPS,P2的速度为0.42M/0.006s=70MIPS。从执行速度来看,对于P2,因为100/70=1.43,所以M1比M2快0.43
文档评论(0)