指令周期
指令周期:CPU从主存中取出并执行一条指令的全部时间。
一个指令周期由若干机器周期表示,机器周期也叫CPU周期。
一个机器周期包含若干时钟周期(节拍),时钟周期是CPU操作的最基本单位。
- 每个指令周期内机器周期可以不相等
- 每个机器周期内节拍数也可以不相等
完整的指令周期如下图所示:
运行时,通过触发器来判断当前处于指令周期内的哪一个阶段。
指令周期的数据流
寻址周期
根据PC的内容从主存中取出指令并存入IR
- 将当前指令地址送到存储地址寄存器
- (PC)→MAR(PC)→MAR
- CU发出控制信号,由控制总线传到主存,标明是读信号
- 1→R1→R
- 将MAR指向的主存中的内容经数据总线传至MDR
- M(MAR)→MDRM(MAR)→MDR
- 将MDR中的数据送入指令寄存器IR
- (MDR)→IR(MDR)→IR
- CU发出控制信号,形成下一条指令的地址
- (PC)+1→PC(PC)+1→PC
间址周期
取操作数的有效地址
- 将指令的地址码送入MAR
- Ad(IR)→MARAd(IR)→MAR
- CU发出控制信号,表示读操作
- 1→R1→R
- 将MAR所指主存中的内容传入MDR
- M(MAR)→MDRM(MAR)→MDR
- 将得到的有效地址送入IR
- (MDR)→Ad(IR)(MDR)→Ad(IR)
执行周期
取操作数,根据IR中的操作码进行相关运算
执行周期的数据流向视不同指令而定,没有统一的数据流向。
中断周期
中断执行前需要保存当前程序的断点。
断点一般采用堆栈保存,SP为栈顶指针,进栈的操作顺序为先修改指针,再存入数据。
- CU控制SP减一,并将修改后的栈顶地址存入MAR
- (SP)-1→SP(SP)-1→SP
- (SP)→MAR(SP)→MAR
- CU发出控制信号,表明当前为写操作
- 1→W1→W
- 将断点内容(PC内容)存入MDR
- (PC)→MDR(PC)→MDR
- CU将中断程序的入口地址存入PC
- 向量地址→PC向量地址→PC
指令执行方案
单指令周期
对所有指令都选用相同的执行时间来完成。 指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间。
会降低整个系统的运行速度。
多指令周期
对不同类型的指令选用不同的执行步骤来完成。 指令之间串行执行,可选用不同个数的时钟周期来完成不同指令的执行过程。
需要更复杂的硬件设计。
流水线方案
在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。 指令之间并行执行。