了解指令执行过程之前,需要了解指令的一些基本概念。
指令周期
指令周期是CPU从主存中每取出并执行一条指令所需的全部时间。
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。
而一个机器周期又包含若干时钟周期(也成为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)
由上图可得每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。
指令工作周期总共可以区分为四个阶段:取值周期、间址周期、执行周期和中断周期,而为了区别不同的工作周期,在CPU内设置4个标志触发器FE(对应取值)、IND(对应间址)、EX(对应执行)、INT(对应中断)来区别为哪个工作周期。
指令周期的数据流
取指周期
若想进行取指,首先PC会想MAR发送当前指令地址,然后CU会发出控制信号,经控制总线传到主存,同时MAR中地址信息也会通过地址总线发送到主存中,此时主存中所读出的数据会通过数据总线传到MDR中,最后将MDR中获取到的数据放到IR中,就完成了一次取指操作。
间指周期
有些指令取完后会进入间指周期,此时IR中已经放着数据的地址,要再通过取指操作来进行间接寻址。
指令执行方案
单指令周期
将所有指令都选用相同的执行时间(即最长的那条指令)来完成。
指令之间串行执行,每条指令只能等前一条指令执行结束后才能启动。
缺点:对于本来可以在短时间完成的指令需要使用较长的周期来完成。
多指令周期
对不同类型的指令选用不同的执行步骤,指令间串行执行,在前一条执行结束后才能执行下一条,可以用不同个数的时钟周期完成不同指令的执行过程。
缺点:需要设计更复杂的硬件设计。
流水线方案
指令之间可以并行执行的方案,其追求是在每个时钟脉冲周期完成一条指令的执行过程。可以使尽量让多条指令同时运行。