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

愿天堂没有BUG

共 988字,需浏览 2分钟

 ·

2021-10-25 08:23

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

指令周期

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

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

指令周期的数据流

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

取指周期

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

取值周期的数据流如下:

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

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

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

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

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

间址周期

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

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

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

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

执行周期

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

中断周期

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

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

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

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

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

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


作者:山花
链接:https://juejin.cn/post/7022313020550283294
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



浏览 139
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报