指令周期、机器周期与时钟周期

指令周期层级

概念 含义
指令周期 CPU 从主存取出并执行一条指令所需的全部时间
机器周期 又称 CPU 周期,一个指令周期通常由若干机器周期组成
时钟周期 又称节拍、T 周期,是 CPU 操作的基本时间单位

一个指令周期内的机器周期数可以不等,每个机器周期内的节拍数也可以不等。不同指令需要的阶段不同:

指令情况 可能的周期组成
空指令 NOP 取指周期
普通运算指令 取指周期、执行周期
间接寻址指令 取指周期、间址周期、执行周期
响应中断的指令 取指周期、间址周期、执行周期、中断周期

单周期、多周期与流水线处理器

指令执行方案

处理器组织方式 基本做法 主要特点
单周期处理器 每条指令都在一个时钟周期内完成 所有指令使用相同周期长度;时钟周期必须按最慢指令设置,硬件控制相对直接,但短指令也要等待这个长周期结束
多周期处理器 一条指令拆成多个阶段,不同指令可使用不同数量的时钟周期 每个时钟周期完成一部分操作;不同指令只经历自己需要的阶段;同一硬件部件可以在不同周期复用
流水线处理器 把指令执行过程分成若干级,多条指令在不同级中重叠执行 单条指令仍要经过多个阶段,但理想情况下每个周期都能完成一条指令;重点问题变成流水线相关、冲突和性能分析

三者的差别是同样的取指、译码、执行、访存、写回等工作如何占用时钟周期

直观区分

设一条指令大致需要取指、译码、执行、访存、写回五类工作。

  • 单周期处理器:五类工作压进一个很长的时钟周期。
  • 多周期处理器:五类工作拆到多个较短时钟周期,不需要的阶段可以跳过。
  • 流水线处理器:一条指令分阶段前进,同时让后续指令进入前面的阶段。
分析数据通路和控制信号时,要同时看两层:
  1. 功能层:当前阶段要完成什么微操作。
  2. 时序层:这些微操作安排在哪个时钟周期或流水线级中。

三种时序组织对应的数据通路特点见 按时序组织方式分类,流水线的阶段、冲突与性能分析见 CPU-Pipeline

指令周期流程

指令周期流程

指令执行的一般流程是:

1
取指周期 -> 是否需要间址 -> 执行周期 -> 是否响应中断 -> 下一条指令

四个工作周期都可能访问主存,但访存目的不同。

工作周期访存目的

工作周期 访存目的
取指周期 取指令
间址周期 取有效地址
执行周期 取操作数或保存执行结果,具体取决于指令
中断周期 保存程序断点

取指周期

取指周期的任务是从主存中取出当前指令,并形成下一条指令地址。

1
2
3
4
5
(PC) -> MAR
1 -> R
M(MAR) -> MDR
(MDR) -> IR
(PC) + 1 -> PC

其中 1 -> R 表示控制器向主存发出读命令。

间址周期

间址周期的任务是根据指令中的地址码访问主存,取出有效地址。

1
2
3
4
Ad(IR) -> MAR
1 -> R
M(MAR) -> MDR
(MDR) -> Ad(IR)

这里主存读出的不是操作数,而是有效地址。

执行周期

执行周期根据 IR 中指令字的操作码和操作数,通过 ALU 操作产生执行结果。

不同指令的执行周期操作不同,因此没有统一的数据流向。分析执行周期时,应根据具体指令判断数据从哪里来、经过哪些部件、最后写到哪里。

中断周期

中断周期的任务是保存断点并转入中断服务程序。若用栈保存断点,且进栈采用“先修改指针,后写入数据”,可表示为:

1
2
3
4
5
6
(SP) - 1 -> SP
(SP) -> MAR
1 -> W
(PC) -> MDR
(MDR) -> M(MAR)
向量地址 -> PC

1 -> W 表示控制器向主存发出写命令。异常与中断的完整响应和处理流程见 Exception-And-Interrupt-Handling