zoukankan      html  css  js  c++  java
  • 计算机组成的一些总结(1)执行一条指令的主要步骤

    计算机执行一条指令的主要步骤:取指(fetch)译码(decode)执行(execute)回写(write back)

    计算机执行指令的过程   顺序是

      第一步 取指    控制器将指令的地址送往存储器

                         存储器按给定的地址读出指令内容,送回控制器

    (1.控制器发出控制信号将PC寄存器中的内容通过内部总线传送到MAR中,

        2.MAR把这个地址送到地址总线上,与此同时控制电路会在控制总线上发出相应的控制信号,代表这次访问存储器的操作是要读数据,

        3.这样存储器的MAR寄存器就会收到地址总线上传送来的地址并把它保存下,存储器中的控制逻辑,也会收到控制总线中传来的控制信号得知这次仿真操作是一次读操作,

     4.这样存储器通过地址译码器就可以查找到对应地址的存储单元的内容,并将存储单元的内容送到MDR寄存器中,

        5.然后存储器的控制逻辑,会通过控制总线将CPU反馈,当前的传输已经准备好了,同时MDR中的内容也会送到数据总线上。随后CPU中的控制电路检测到来自控制总线的准备好的READY信号,就知道当前数据总线上已经准备好了数据,

        6.因此MDR寄存器就会将数据总线上传送来的数值保存下来,

        7.MDR中的内容必须要传到指令寄存器中,也就是IR寄存器,

        8.再把PC寄存器更新为下一条指令所需要访问的地址,取指令阶段完成。)

      第二步 译码  控制器分析指令的操作性质

                             控制器向有关部件发出指令所需的控制信号

    (1.当前的指令寄存器IR中指令编码会送到指令译码部件,

        2.指令译码部件根据指令编码确定指令类型,控制电路就据此产生对应的控制信号,发到相关部件中,译码阶段完成)

      第三步 执行     控制器从通用寄存器或存储器取出操作数

                                    控制器命令运算器对操作数进行指令规定的运算

    (1.在MAR中放置要访问的存储器的地址

    2.MAR将地址发到地址总线,同时控制电路在控制总线发出读操作的控制信号,存储器的MAR控制逻辑会接收到相应的信号,然后查找对应的地址,对应的内容会送到MDR寄存器,然后控制逻辑会向CPU反馈当前数据已经准备好了的信号,然后MDR的内容也会被放置到数据总线上,CPU接收数据并保存在MDR寄存器上,

    3.假如数据要进行加法运算,控制器会进一步将MDR中的数据传送到ALU的输入暂存到Y寄存器中,如果另一个数据放在R0中,控制器还会将R0中的数据传送到ALU的另一个输入端,也就是X寄存器,

    4.在控制电路的控制下ALU就会进行运算,再将X、Y中的内容执行加法并计算出结果,执行阶段完成)

      第四步 回写     将运算结果写入通用寄存器或存储器

    (运算结果在ALU的输出端,也就是Z寄存器中,控制电路会给出相应的控制信号,将Z寄存器当中的内容传送到R0中,R0目前的内容是之前的原操作数,随后会被新的结果所覆盖,回写阶段完成)

    然后CPU会执行下一条指令

  • 相关阅读:
    Oracle锁表与解锁 对象锁与解锁
    Unity3D开发之NGUI点击事件穿透响应处理
    Unity 3D 关于给APK包加广告的流程
    Unity 3D 粒子系统的一点经验
    Unity3D模型的细致纹理问题解决办法
    Unity 3D学习之 Prime31 Game Center插件用法
    Unity3D如何制作透贴和使用透贴模型
    NGUI的部分控件无法更改layer?
    关于Unity3D中Resources动态加载NGUI图片的方法
    关于NGUI的动态加载后的刷新显示问题,解决办法!!
  • 原文地址:https://www.cnblogs.com/dreamingoutloudly/p/12944755.html
Copyright © 2011-2022 走看看