- 学·问
- 帖子详情
主机完成一条指令的过程
王子伟
发表于2018年02月03日
<p>取数指令:</p><p> 机器启动后,PC是一开始存放指令的部件(程序计数器,用来存放当前欲执行指令的地址),PC要将指令的地址送到MAR(存储器地址寄存器,用来存放欲访问的存储单元的地址)PC<span style="text-decoration: none;" >-----></span>MAR,再由MAR送给存储体,在控制器的控制下,存储体把指定存储单元中存储的指令取出来,存储到MDR中(存储器地址寄存器,用来存放从存储体中某单元中取出的代码),这时指令已经存放到MDR中,取出的指令要送入IR(指令寄存器,用来存放当前要处理的指令)MDR---->IR,此时完成取指过程。</p><p> 分析指令的过程是将指令寄存器中的操作码部分送到CU(程序计数器)OP(IR)---->CU,在控制单元内部进行分析当前指令所需完成的操作,因为本例为取指令,所以要把存储单元M中的数据取到ACC寄存器中,为了完成本步骤,因为本指令以及操作数的地址都存储在IR中,所以在控制器的控制下,将IR中的地址码送到MAR,Ad(IR)---->MAR,以便将指令从存储体中取出,然后由MAR送到存储体,在控制器控制下,从存储体中将取数指令要取的数送入到MDR,再有MDR送到运算器的ACC中,MDR--->ACC,完成此指令的执行过程。与此同时,PC完成自动加一的操作(加一只是拟称,具体加几取决于实际计算机),形成下一条指令的地址号。</p><p>存数指令:</p><p> 存数指令的功能是将ACC中的数据放到存储体指定的单元中,取指阶段:将指令从存储体中取出,必须要知道指令的地址,而指令的地址一开始是在PC当中,所以PC要将指令的地址送到MAR中,PC----->MAR,再由MAR送给存储体,在控制单元CU的控制下,存储体把指定存储单元中存储的指令取出来,存储到MDR中,这时指令已经存放到MDR中,取出的指令要送入IR中,MDR---->IR,指令进入控制器,此时完成取指过程。</p><p> 分析指令:把IR中保存的指令的操作码部分送到CU中,OP(IR)---->CU,CU分析指令,发出信号来完成指令所需操作,因为本指令是存数指令,所以要将ACC中的数据放到存储体指定的单元中,在控制器的控制下,将IR中的地址码送到MAR,Ad(IR)---->MAR,然后由MAR送到存储体,告诉存储体要存入数据的地址是多少,然后把ACC中的数据存入到MDR,ACC--->MDR,因为存储体中输入和输出的数据都需要经过MDR,在控制器的控制之下,将MDR中的数据存放到存储体中。完成执行存数指令。</p><p>乘数指令:</p><p> 控制单元CU取出IR中指令的操作码经MDR送到运算器MQ,CU再向运算器发出乘法操作命令,完成a*x的运算,并将运算结果存放到ACC中。略去部分同上。</p><p> 以此类推,逐条取值、分析、执行、直至打印结果执行完停机指令后,机器自动关机。</p>
4
回复