《计算机组成原理》指令周期数据流的详解

CPU的控制和状态寄存器

CPU执行指令的过程涉及到控制和状态寄存器

(1)MAR:存储器地址寄存器,用于存放将被访问的存储单元的地址

(2)MDR:存储器数据寄存器,用于存放欲存入存储器的数据或从存储器取出的数据

(3)PC:程序计数器,存放现行指令的地址

(4)IR:指令寄存器,存放当前欲执行指令的地址

指令周期的数据流

由于指令周期可以分为取指、间址、执行、中断四个阶段,下面依次介绍。

取指周期的数据流

在这里插入图片描述

  1. PC中存放现行指令的地址,将该地址送到MAR,再送到地址总线
  2. CU控制单元发出读命令,从存储器中取出改地址对应的数据(指令),并存到MDR
  3. 将MDR中的数据(指令)送至指令寄存器IR
  4. CU控制PC加1,指向下一条指令地址

间址周期的数据流

在这里插入图片描述

取指结束后,控制单元CU会检查IR中是否有间接地址(操作数有效地址的地址)。若有,CPU执行如下操作,若没有则跳过。

  1. MDR中的间址送至MAR
  2. CU发出读命令,从存储器中取出该间址对应的操作数有效地址,并存入MDR。

执行周期的数据流

不同指令在执行周期的操作不同,故执行周期的数据流是多种多样的,故无法用统一的数据流图表示

中断周期的数据流

在这里插入图片描述

CPU执行完一条指令后,需要判断是否有中断请求,若有中断请求,则执行一下操作。若没有则跳过,进入下一个指令周期。

  1. 控制单元CU将用于保存程序断点地址的栈寄存器地址送入MAR,再到地址总线
  2. PC将断点程序地址(即中断结束后执行的下一条指令地址)送入MDR,再到数据总线
  3. CU发出写命令,根据MAR和MDR将断点程序地址写入栈寄存器
  4. CU将中断服务程序的入口地址(第一条指令地址)送入PC,CPU开始执行中断服务程序(同上面三个周期)
  5. 中断服务程序结束后,CU根据栈寄存器地址取出断点程序地址,CPU继续执行原程序

版权声明:本文为CSDN博主「晚风Serein」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Dae_Lzh/article/details/121425815

生成海报
点赞 0

晚风Serein

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于AT89C51的蓝牙循迹避障小车

基于AT89C51的蓝牙循迹避障小车 对标题的解读: AT89C51:在下使用的是STC89C52这款芯片,c51和c52在新手入门阶段是一样的,所以不必纠结于到底是哪个名字&#xff