阅读 117

计算机组成原理——指令执行过程

一个指令和一条数据在存储上并没有区别,那么一条指令是如何被执行的呢?

指令周期

CPU从主存中取出并执行一条指令的时间,包括取指、间址、执行(取操作数)、中断四部分

指令周期包括若干机器周期,一个机器周期包括若干时钟周期(也称节拍或T周期)

指令周期的数据流

在指令执行的不同阶段,要求依次访问的数据序列是不同的。我们依据这个特点将指令分为以下几个周期

取指周期

顾名思义,取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中。

image.png

取值周期的数据流如下:

  • 程序计数器将当前指令地址送去存储器地址寄存器。

  • 控制单元发出控制信号,经总线传送至主存。

  • 存储器将当前指令地址所指的数据传送至存储器数据寄存器中

  • 存储器数据寄存器将数据发送至指令寄存器中

  • 控制单元发出控制信号,PC++

间址周期

间址周期的任务是获取操作数的有效地址(因为可能是操作数直接记录一个地址,这个反应到我们编程中可以理解为指针,所以也会出现指针的指针等套娃)

image.png

  • 从指令寄存器中取出操作数,并将其写入至存储器地址寄存器中。

  • 控制单元发出控制信号,经总线传送至主存。

  • 主存通过数据总线将数据写入至存储器数据寄存器中。

执行周期

顾名思义这个就是执行指令了,不过不同的指令的实现肯定是不同的,因此数据流向肯定也是不同的,这里就不一一列举了。

中断周期

中断周期的任务是处理中断请求. 中断的意思是暂停当前任务,先去执行其他任务,这就需要我们保存断点。否则无法在执行其他任务后恢复任务。

我们用SP表示栈顶地址。并约定进栈操作是先修改地址,再存入数据(这里理解的有些困难的同学建议去看看CSAPP)。

  • 通过控制单元将SP地址--,并将修改后的地址送入存储器地址寄存器。

  • 控制单元向主存发送控制信号

  • 程序计数器经过存储器数据寄存器经过数据总线写入主存(这个操作就是将中断发生前的程序数据写入主存)

  • 控制单元将中断服务程序地址赋值给PC。


作者:山花
链接:https://juejin.cn/post/7022313020550283294


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐