资源描述:
《计算机系统结构实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机系统结构实验完成时间:2012年3月27日【补充习题2.14】模拟以下MIPS程序的单条指令运行方式,在表中用16进制编码记录每一步产生的结果。.datan:.word3x:.double0.5.textLDR1,n(R0)L.DF0,x(R0)DADDIR2,R0,1;R2←1MTC1R2,F11;F11←1CVT.D.LF2,F11;F2←1loop:MUL.DF2,F2,F0;F2←F2*F0DADDIR1,R1,-1;decrementR1by1BNEZR1,loop;ifR1≠0continueHALT;此条不填表提示:MI
2、PS浮点数的格式是IEEE754序号结果寄存器名称结果值(16进制)序号结果寄存器名称结果值(16进制)1R138无无2F00.59F20.253R2110R114F110.011无无5F21.012F20.1256F20.513R107R1214无无【实验1】实验要求:用MIPS64指令编写一个尽可能短小的程序,将事先存放在数据区的4字节字符串(例如“3901”)转换为一个4位BCD整数,赋给R9。在WinMIPS64模拟器调试通过。实验报告:(1)程序清单;(2)运行结果(每轮循环末尾R9的数值,高位的0可以不写)循环轮数1234R9的
3、值(BCD整数)(3)程序效率指令总条数(不算HALT)运行总时间(节拍数)解:(1)、程序清单shiyan1.s.datas:.ascii"3901".textDADDIR1,R0,0;R1←0LOOP:LBR2,s(R1);取s串的第一个字符赋值给R2DADDIR2,R2,-48;将ascii码转换为对应数值DADDR9,R9,R2;R9←R2DSLLR9,R9,4;R9左移四位DADDIR1,R1,1;偏移量加1SLTIR2,R1,4;R1小于4,R2置1BNEZR2,LOOP;R2为1跳转到LOOPDSRLR9,R9,4;R9右移4
4、位,循环中多左移了一次HALT(2)、运行结果循环轮数1234R9的值(BCD整数)3393903901(3)、程序效率指令总条数(不算HALT)运行总时间(节拍数)946【实验2】实验要求:在人工完成习题3.11之后,在WinMIPS64模拟器上运行对应的程序,分别按(1)(2)(3)小问的条件设置模拟器的运行模式,记录相应的时钟周期数。实验报告:(1)程序清单;(2)程序时间对比题目小问(1)(2)(3)人工计算的时钟周期数在模拟器上实测的时钟周期数(3)人工计算值与实测值的差异原因分析,如果有差异的话;(4)至少1段自己认为有价值的“
5、时钟周期图”片段抄录或者打印,加注释。解:(1)、程序清单(1)、(2)所用程序shiyan2.s.textDADDIR2,R2,0DADDIR3,R2,396LOOP:LWR1,0(R2)DADDUIR1,R1,1SWR1,0(R2)DADDUIR2,R2,4DSUBR4,R3,R2BNEZR4,LOOPHALT(3)所用程序shiyan3.s.textDADDIR2,R2,0DADDIR3,R2,396LOOP:LWR1,0(R2)DADDUIR2,R2,4DADDUIR1,R1,1DSUBR4,R3,R2BNEZR4,LOOPSWR1
6、,-4(R2)HALT(2)、程序时间对比题目小问(1)(2)(3)人工计算的时钟周期数1684991598在模拟器上实测的时钟周期数1493897606(3)、人工计算值与实测值的差异原因分析实测时钟周期数与人工计算均有差异,具体原因如下:(1),通过观察时钟周期图,发现人工计算的时候,运行跳转指令到下一个循环LW指令,延迟周期为4个时钟周期,而在实测中,这个延迟周期为2个时钟周期,共减少了2*98=196个时钟周期。同时因为添加了两条指令,所以实测比人工计算更少。(2),因为加入了定向路径,所以在运算跳转指令到下一个循环的LW指令,实测
7、延迟周期为减少为2,比人工计算的少了2个,而在执行BNEZ指令的时候,又比人工计算的延迟一个时钟周期。所以总共的减少时间是98*1。同时添加了两条指令,所以实测比人工计算更少。(3),未通过指令调度的时候,执行LW指令会引起一个时钟周期的时延,而调整指令之后,这个时延期间用于执行DADDUIR2,R2,4指令。因而是时延比未进行指令调度相比减少了。而实测值与人工计算不同主要是最后的一次跳转分支指令预测失败,需要回退选择另一条分支继续执行程序。所以导致时钟周期增加。(4)至少1段自己认为有价值的“时钟周期图”片段抄录或者打印,加注释a.未进行
8、指令调度的时钟周期图(最后两次循环):图1未进行指令调度的时钟周期图b.进行指令调度的时钟周期图(最后两次循环):图2进行指令调度的时钟周期图图1在执行LW指令的时候有一个时钟周