计算机指令集实验,作业2—lab2指令集流水化实验—计算机体系结构

《作业2—lab2指令集流水化实验—计算机体系结构》由会员分享,可在线阅读,更多相关《作业2—lab2指令集流水化实验—计算机体系结构(7页珍藏版)》请在人人文库网上搜索。

1、Lab2 指令集流水化实验报告学号:12281166 姓名:崔雪莹Exercise 1:What is hex code for NOP or SLL R0, R0, R0 00 00 00 00 H .Exercise 2: By looking at the binary code of the instruction, discover the following fields: Rs: 00100 , Rt: 00011 , Rd 00101 , 16-bit Imm (Imm16) 0010 1000 0010 0000 , Shift amount 00000 , Function。

2、 Code 100000 , Write MemWrite 0 and RegWrite 1 for this instruction. What is use of 16-bit Immediate field in this instruction? 16位立即数是对branch指令来说的跳转目的地址的偏移地址,add指令没有作用 。 If the same instruction were a Branch instruction, the immediate field would have represented a Branch Offset. What is the potent。

3、ial Target Address 43092 立即数十进制表示为10272,目的地址为10272*4+2004=43092 Exercise 3:LW Instruction Rs: 01000 , Rt 00111 , Rd 32(00000) , 16-bit Imm (Imm16) 1111 1111 0011 1000 , Shift amount 29(11101) , Function Code 100011 , Write MemWrite 0 and RegWrite 1 for this instruction. What is use of Function filed。

4、 and Shift Amount in this instruction? 操作数表明操作为LW读操作,是指令操作的唯一标记,移位量是相对与移位指令来说移几位,在LW指令没有作用 。If the same instruction were a Branch instruction, the immediate field would have represented a Branch Offset. What is the potential Target Address 1204 ,(-200*4)+2004=1204 。Exercise 4: Branch Target Found Ad。

5、ress 1204 , Is It same as EX.3 是 ? B input to ALU -200 , Why? 因为对于I型指令只有rs,rt和立即数,没有rd,是rs和立即数Imm运算的结果进行操作,所以B最终送ALU的是立即数而不是rt , ALUOut 800 , ALUOP = ADD , Why 因为立即数是偏移量,所以运算器是对R8和-200求和,得到的为目的地址 . LMD 525252 , Rdest 7 why this? 因为没有rd,但是是取800地址的内容,回送到R7里 。 RegWrite 1 , MemWrite 0 , What are two val。

6、ues at the input of very last MUX in the WB stage 525252 , 800 , Which value is selected 525252 , why 因为最终写回的是525252的值,而不是ALU运算的结果800 . Final Register File Values. R7 , 525252 , R8 , 1000 .Exercise 5: SW instruction Rs: 01000 , Rt 00111 , Rd 32(00000) , 16-bit Imm (Imm16) 1111 1111 0011 1000 , Shift。

7、 amount 28(11100) , Function Code 101011 , Write MemWrite 1 and RegWrite 0 for this instruction. What is use of Function filed and Shift Amount in this instruction? 操作数表明操作为SW读操作,是指令操作的唯一标记,移位量是相对与移位指令来说移几位,在SW指令没有作用 。If the same instruction were a Branch instruction, the immediate field would have 。

8、represented a Branch Offset. What is the potential Target Address 1204 ,(-200*4)+2004=1204 。Exercise 6:Branch Target Found Adress 1204 , Is It same as EX.3 是 ? B input to ALU -200 , Why? 因为对于I 型指令只有rs,rt和立即数,没有rd,是rs和立即数Imm运算的结果进行操作,所以B最终送ALU的是立即数而不是rt , ALUOut 800 , ALUOP = ADD , Why 因为SW是想把R7里的内容存。

9、到目的地址,立即数是偏移量,所以运算器是对R8和-200求和,得到的为目的地址 . LMD 7777 , Rdest 7 why this? 因为没有rd,但是是把R7里的内容存到目的地址800里。 RegWrite 0 , MemWrite 1 , Why 因为现在是存数,存到memory里,不是register里,所以MemWrite置1,RegWrite置0 , What are two values at the input of very last MUX in the WB stage 7777 , 800 , What is selected 800 why 因为写回memory。

10、地址为800(不太懂) . Final Register File Values. R7 , 7777 , R8 , 1000 .Exercise 7:Signal NameValueWhyID.A22222ID正在分析SW R1, 200(R2)Rs=Reg2=22222ID.B11111Rt=Reg1=11111ALUOUT in EXE9000EXE正在执行SLTI R9, R10, -1000运算结果为10000-1000=9000ALUOUT in MEM88988MEM正在进行LW R7, 100(R8)运算结果为100+88888=88988ALUOUT IN WB122221W。

11、B正在写回ADD R4, R5, R6结果为55555+66666=122221RDEST in ID0ID正在分析SW R1, 200(R2)没有涉及到RdRDEST in EXE9EXE正在执行SLTI R9, R10, -1000R9作为Rt,在选择时被选为RdRDEST in MEM7同理,R7被选为RdRDEST in WB4对于ADD R4, R5, R6R4为RdLMD in MEM77777从memory地址88988读到的数据为77777LMD in WB999上一个NOP的LMD为999没有被选择Final Values of Register FileR1=11111,R。

12、2=22222,R3=0,R4=122221,R5=55555,R6=66666,R7=77777,R8=88888,R9=0,R10=10000,R11=-1000,R12=12000,R13=13000Exercise 8: Expected Values of Register File ADD R1,R2,R3 R2=22222,R3=33333,所以R1=55555SUB R5,R6,R1 R6=66666,R1=55555,所以R5=11111ADD R4,R1,R5 R1=55555,R5=11111,所以R4=66666SW R1,200( R4 ) R4=66666, 所以m。

13、emory地址为66866值为55555LW R4,100( R1 ) R1=55555, 令55655地址内容为77777,所以R4=77777综上,R1=55555,R2=22222,R3=33333,R4=77777,R5=11111,R6=66666Actual Values of Register File 实际上,R1=55555,R2=22222,R3=33333,R4=77777,R5=55555,R6=66666Reason on difference发现期望值与实际实验的值不一样,我仔细观察指令的流水化过程,比如ADD R1,R2,R3 R2=22222,R3=33333,。

14、所以R1=55555SUB R5,R6,R1 R6=66666,R1=55555,所以R5=11111这是我期望的结果和过程,但实际上第一条指令走到WB阶段,R1值55555还没写回时,第二条指令已经取到了原始的没有写回R1的值11111,计算得到的R5为55555,当第一条指令写回后第二条指令走到了WB,结果没改变,造成错误,同理,接下来的计算类似,只是因为赋值特殊,所以看不出来变化,实际实现机制是不一样的。所以上述结果出现错误。Exercise 9:InstructionClock Cycle123456789101112ADD R1, R2, R3IFIDEXEMEMWBNOPIFIDE。

15、XEMEMWBNOPIFIDEXEMEMWBSUB R5, R6, R1IFIDEXEMEMWBExercise 10:InstructionClock Cycle1234567891011121314151617ADD R1, R2, R3IFIDEXEMEMWBSUB R5, R6, R1IFIDIDIDEXEMEMWBADD R4, R1, R5IFIFIFIDIDIDEXEMEMWBSW R1, 200(R4)IFIFIFIDIDIDEXEMEMWBLW R4, 100(R1)IFIFIFIDIDIDEXEMEMWB实验体会与心得:这次实验是关于指令流水化的内容,课上关于流水化只讲解了。

16、一些概念,并没有一个相对直观的感受,实验使用软件模拟化直观的看出指令的流水,印象十分深刻。实验过程中,我发现流水化的一些疑问,比如说上一条指令的结果是下一条指令的源,这样在流水化过程中就会出现错误,这个问题在exercise8,exercise10,可以直观的看到,并且exercise10通过引入了NOP,很好的实现了等待,结果不会出现错误。另外一个疑问就是关于指令格式,上一次实验我们学习了一些指令格式,但是有一些指令格式是没有目的寄存器的,关于这个问题exercise4和exercise6都有类似的问题。实际上,硬件对每一条指令处理都按照相同的机制,比如说无论什么类型的指令,都要生成一个目的寄存器Rd,都根据16位立即数,生成一个跳转的目的地址,等等,在实现的过程中,有的被选择是正确的,比如执行跳转指令,16位立即数是有用的,有的在选择的时候被舍弃,比如执行ADD指令,就算计算出来跳转目的地址也被舍弃,如exercise2。所以对于硬件来说,所有的指令都是“一视同仁”的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值