指令执行过程

指令周期相关概念

  • 指令周期:CPU 从主存中每取出并执行一条指令所需的全部时间,一个指令周期由多个机器周期组成

  • 指令周期最多有 4 种机器周期:取指周期、间址周期、执行周期、中断周期(都有访问主存的操作)

  • 分别对应标志触发器:FE、IND、EX、INT(“1”表示有效,如 1FE 表示有取值周期)

易混淆知识点

  • 指令
    • CPU 区分指令和数据的依据是指令周期的不同阶段【取指周期取指令,执行周期取数据】
    • 不同长度的指令,取指操作可能不同(如双字指令,三字指令和单字指令);指令长度相同的情况下,指令的取指操作是相同的
    • 指令总是根据 PC 从主存中读出(无条件转移指令或中断返回指令也是如此,最终的结果还是根据 PC 从主存读出)
  • 取指
    • 取指操作是控制器固有的功能,不需要操作码的控制
    • 取指操作是自动进行的,控制器不需要得到相应的指令
    • 取指周期简单来说是取指,即从主存中取出指令字
  • 字长
    • 为了硬件设计方便,指令字长一般取存储字长的整数倍
    • 如果指令字长=存储字长的 2 倍,则取一条指令需要访存 2 次,取指周期是机器周期的 2 倍
    • 指令字长和机器字长无任何关系
  • 中断
    • CPU 在每条指令执行结束前,都要发中断查询信号
    • CPU 响应中断的时间是一条指令执行结束后
  • 周期
    • 指令周期:CPU 从主存中取出并执行一条指令的时间,一个指令周期由多个机器周期组成
    • 机器周期(CPU 周期):一个机器周期包含若干时钟周期
    • 时钟周期(节拍 / T 周期):计算机工作的最小时间周期,是 CPU 操作的基本单位;一个时钟周期内控制信号不发生改变
    • 存取周期:连续启动两次独立的读/写操作所需要的最短时间
  • 周期的关系
    • 机器周期通常由存取周期确定【因为存取周期时间最长】
    • 执行各条指令的机器周期数可变,各机器周期的长度可变
      • 机器周期是指令执行中每步操作(如取指令,存储器读/写)所需要的时间
      • 每个机器周期内的节拍数可以不等,因此长度可变
      • 各种指令的功能不同,所以指令执行时所需的机器周期数可变
    • 采用 DMA 方式传递数据,每传送一个数据就要占用存取周期
  • 其他
    • 不采用 Cache 表明每次取指令都只是要访问内存一次
    • 不采用指令预取技术表明每个指令周期都需要取指令

不同指令的指令周期举例

  1. 无条件转移指令 JMP X
    • 指令周期 = 取指周期 + 执行周期
    • PC 被修改两次【 取值周期结束 PC 自动加 1 + 执行周期 PC 值修改为要调转到的地址】
  2. 间接寻址的指令
    • 指令周期 = 取指周期 + 间址周期 + 执行周期
    • 为了取操作数,需要先访问一次主存,取出有效地址 -取指周期
    • 然后访问主存,取出操作数 -间址周期
    • 间址周期结束时,CPU 中 MDR 中的内容是操作数的有效地址 EA
  3. CPU 采用中断方式实现主机和 I/O 设备的信息交换且有中断请求
    • 指令周期 = 取指周期 + 间址周期 + 执行周期 + 中断周期
    • CPU 在每条指令执行结束前,都要发中断查询信号
    • 若有中断请求,则 CPU 进入中断响应阶段 ---中断周期
    • 中断周期进栈操作是将 SP-1,计算机的堆栈都是向低地址(栈顶)增加,所有进栈操作减 1 而不是加 1

例题

指令周期的数据流

  • 数据流:根据指令要求一次访问的数据序列
  • 指令执行不同阶段,访问的数据序列不同
  • 不同的指令,数据流也不同

取指周期

  • 任务:根据 PC 中的内容从主存中取出指令代码并放在 IR 中
  • 数据流向:PC 中存放的是指令的地址,根据此地址从内存单元中取出的指令,并放在指令寄存器 IR 中,取指同时,PC+1
    1. PC-MAR-地址总线 -主存
    2. CU (控制单元) 发出读命令 -控制总线 -主存
    3. 主存 -数据总线 MDR-IR(存放指令)
    4. CU 发出控制信号 -PC 内容加 1

间址周期

  • 任务:取操作数的有效地址
  • 数据流向:以一次间址为例,将指令中的地址码送到 MAR 并送至地址总线,此后 CU 向存储器发出读命令,以获取有效地址并存至 MDR
    1. Ad(IR)(或 MDR)-MAR-地址总线 -主存
    2. CU 发出读命令 -控制总线 -内存
    3. 主存 -数据总线 -MDR(存放有效地址)
    4. 有效地址 -指令的地址码字段
  • Ad(IR) 表示取出 IR 中存放的指令字的地址字段

执行周期

  • 任务:取操作数,并根据 IR 中的指令字的操作码通过 ALU 操作产出执行结果
  • 数据流向:不同指令操作不同,无统一的数据流向

中断周期

  • 任务:处理中断请求
  • 数据流向:假设程序断点存入堆栈中,并用 SP 指示栈顶指针,而且进栈操作是先修改指针,后存入数据;出栈操作是先删除数据,后修改指针
    1. CU 控制将 SP 减 1,SP-MAR-地址总线 -主存
    2. CU 发出写命令 -控制总线 -主存
    3. PC-MDR-数据总线 -主存(程序断点存入主存
    4. CU(中断服务程序的入口)-PC

指令的执行方案

单周期处理器

  • 定义
    • 每条指令都在固定的时钟周期内完成【CPI = 1】,指令之间串行执行
    • 指令周期取决于执行时间最长的指令的执行时间
  • 特点:串行,相同执行时间

多周期处理器

  • 定义
    • 指令之间串行执行
    • 指令需要几个周期就为其分配几个周期
    • 可以选用不同个数的时钟周期来完成不同指令的执行过程【CPI > 1】
  • 特点:串行,不同执行时间

流水线处理器

  • 定义
    • 力争在每个时间脉冲周期完成一条指令的执行过程【理想情况下,CPI = 1】
    • 尽量让多条指令同时运行,但各自处在不同的执行步骤中
  • 特点:并行