0%

5.2_指令执行过程

指令周期

指令周期:CPU从主存中取出并执行一条指令的全部时间。

一个指令周期由若干机器周期表示,机器周期也叫CPU周期

一个机器周期包含若干时钟周期(节拍)时钟周期是CPU操作的最基本单位。

  • 每个指令周期内机器周期可以不相等
  • 每个机器周期内节拍数也可以不相等

完整的指令周期如下图所示:

运行时,通过触发器来判断当前处于指令周期内的哪一个阶段。

指令周期的数据流

寻址周期

根据PC的内容从主存中取出指令并存入IR

  1. 将当前指令地址送到存储地址寄存器
    1. (PC)→MAR(PC)→MAR
  2. CU发出控制信号,由控制总线传到主存,标明是读信号
    1. 1→R1→R
  3. 将MAR指向的主存中的内容经数据总线传至MDR
    1. M(MAR)→MDRM(MAR)→MDR
  4. 将MDR中的数据送入指令寄存器IR
    1. (MDR)→IR(MDR)→IR
  5. CU发出控制信号,形成下一条指令的地址
    1. (PC)+1→PC(PC)+1→PC

间址周期

取操作数的有效地址

  1. 将指令的地址码送入MAR
    1. Ad(IR)→MARAd(IR)→MAR
  2. CU发出控制信号,表示读操作
    1. 1→R1→R
  3. 将MAR所指主存中的内容传入MDR
    1. M(MAR)→MDRM(MAR)→MDR
  4. 将得到的有效地址送入IR
    1. (MDR)→Ad(IR)(MDR)→Ad(IR)

执行周期

取操作数,根据IR中的操作码进行相关运算

执行周期的数据流向视不同指令而定,没有统一的数据流向。

中断周期

中断执行前需要保存当前程序的断点

断点一般采用堆栈保存,SP为栈顶指针,进栈的操作顺序为先修改指针,再存入数据。

  1. CU控制SP减一,并将修改后的栈顶地址存入MAR
    1. (SP)-1→SP(SP)-1→SP
    2. (SP)→MAR(SP)→MAR
  2. CU发出控制信号,表明当前为写操作
    1. 1→W1→W
  3. 将断点内容(PC内容)存入MDR
    1. (PC)→MDR(PC)→MDR
  4. CU将中断程序的入口地址存入PC
    1. 向量地址→PC向量地址→PC

指令执行方案

单指令周期

对所有指令都选用相同的执行时间来完成。 指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间。

会降低整个系统的运行速度。

多指令周期

对不同类型的指令选用不同的执行步骤来完成。 指令之间串行执行,可选用不同个数的时钟周期来完成不同指令的执行过程。

需要更复杂的硬件设计。

流水线方案

在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。 指令之间并行执行