计算机组成原理——指令执行过程
一个指令和一条数据在存储上并没有区别,那么一条指令是如何被执行的呢?
指令周期
CPU从主存中取出并执行一条指令的时间,包括取指、间址、执行(取操作数)、中断四部分
指令周期包括若干机器周期,一个机器周期包括若干时钟周期(也称节拍或T周期)
指令周期的数据流
在指令执行的不同阶段,要求依次访问的数据序列是不同的。我们依据这个特点将指令分为以下几个周期
取指周期
顾名思义,取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中。
取值周期的数据流如下:
程序计数器将当前指令地址送去存储器地址寄存器。
控制单元发出控制信号,经总线传送至主存。
存储器将当前指令地址所指的数据传送至存储器数据寄存器中
存储器数据寄存器将数据发送至指令寄存器中
控制单元发出控制信号,PC++
间址周期
间址周期的任务是获取操作数的有效地址(因为可能是操作数直接记录一个地址,这个反应到我们编程中可以理解为指针,所以也会出现指针的指针等套娃)
从指令寄存器中取出操作数,并将其写入至存储器地址寄存器中。
控制单元发出控制信号,经总线传送至主存。
主存通过数据总线将数据写入至存储器数据寄存器中。
执行周期
顾名思义这个就是执行指令了,不过不同的指令的实现肯定是不同的,因此数据流向肯定也是不同的,这里就不一一列举了。
中断周期
中断周期的任务是处理中断请求. 中断的意思是暂停当前任务,先去执行其他任务,这就需要我们保存断点。否则无法在执行其他任务后恢复任务。
我们用SP表示栈顶地址。并约定进栈操作是先修改地址,再存入数据(这里理解的有些困难的同学建议去看看CSAPP)。
通过控制单元将SP地址--,并将修改后的地址送入存储器地址寄存器。
控制单元向主存发送控制信号
程序计数器经过存储器数据寄存器经过数据总线写入主存(这个操作就是将中断发生前的程序数据写入主存)
控制单元将中断服务程序地址赋值给PC。
作者:山花
链接:https://juejin.cn/post/7022313020550283294
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。