【指令周期】
机器周期
CPU 从主存中每取出并执行一条指令所需的全部时间称为指令周期,也就是 CPU 完成一条指令的时间
指令周期常常用若干机器周期来表示,一个机器周期又包含若干时钟周期(也称为节拍或 T 周期,它是 CPU 操作的最基本单位)
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等
指令周期
对于无条件转移指令 JMPX,在执行时不需要访问主存,只包含取指阶段(包括取指和分析)和执行阶段,所以其指令周期仅包含取指周期和执行周期
对于间接寻址的指令,为了取操作数,需要先访问一次主存,取出有效地址,然后再访问主存,取出操作数,所以还需包括间址周期,间址周期介于取指周期和执行周期之间
当 CPU 采用中断方式实现主机和 I/O 设备交换信息时,CPU 在每条指令执行结束前,都要发中断查询信号,如果有中断请求,CPU 则进入中断响应阶段,又称中断周期
这样,一个完整的指令周期应包括取指、间址、执行和中断这四个周期,这些周期都有 CPU 访存操作,只是访存目的不同,取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点
【指令周期的数据流】
取址周期
取指周期的任务是根据 $PC$ 中的内容从主存中取出指令代码并存放在 $IR$ 中
取指周期的数据流如下图所示,$PC$ 中存放的是指令的地址,根据此地址从内存单元中取出的是指令,并放在指令寄存器 $IR$ 中,取指令的同时,$PC +1$
取指周期的数据流取指周期的数据流向如下:
- $PC \rightarrow MAR \rightarrow$ 地址总线 $\rightarrow$ 主存
- $CU$ 发出控制信号 $\rightarrow$ 控制总线 $\rightarrow$ 主存
- 主存 $\rightarrow$ 数据总线 $\rightarrow MDR \rightarrow IR$
- $CU$ 发出读命令 $\rightarrow PC +1$
间址周期
间址周期的任务是取操作数有效地址
以一次间址为例,将指令中的地址码送到 $MAR$ 并送至地址总线,此后 $CU$ 向存储器发读命令,以获取有效地址并存至 $MDR$
一次间址周期的数据流间址周期的数据流向如下:
- $Ad(IR)\rightarrow MAR \rightarrow$ 地址总线 $\rightarrow$ 主存
- $CU$ 发出读命令 $\rightarrow$ 控制总线 $\rightarrow$ 主存
- 主存 $\rightarrow$ 数据总线 $\rightarrow MDR$(存放有效地址)
其中,$Ad(IR)$ 表示取出 $IR$ 中存放的指令字的地址字段
执行周期
执行周期的任务是根据 $IR$ 中的指令字的操作码和操作数通过 $ALU$ 操作产生执行结果
不同指令的执行周期操作不同,因此没有统一的数据流向
中断周期
中断周期的任务是处理中断请求
假设程序断点存入堆栈中,并用 $SP$ 指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据
中断周期的数据流向如下:
- $CU$ 控制将 $SP -1,SP \rightarrow MAR \rightarrow$ 地址总线 $\rightarrow$ 主存
- $CU$ 发出写命令 $\rightarrow$ 控制总线 $\rightarrow$ 主存
- $PC \rightarrow MDR \rightarrow$ 数据总线 $\rightarrow$ 主存(程序断点存入主存)
- $CU$(中断服务程序的入口地址) $\rightarrow PC$
【指令执行方案】
一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。出于性能和硬件成本等考虑,可以选用以下三种方案来安排指令的执行步骤
单指令周期
对所有指令都选用相同的执行时间来完成,称为单指令周期方案
此时每一条指令都在固定的时钟周期内完成,指令之间串行执行,即下一条指令只能在前一条指令执行结束之后才能启动,因此,指令周期取决于执行时间最长的指令的执行时间
对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度
多指令周期
对不同类型的指令选用不同的执行步骤来完成,称为多指令周期方案
指令之间串行执行,即下一条指令只能在前一条指令执行结束之后才能启动,但可选用不同个数的时钟周期来完成不同指令的执行过程,指令需要几个周期就为其分配几个周期,而不再要求所有指令占用相同的执行时间
流水线方案
指令之间可以并行执行的方案,称为流水线方案,其追求的目标是力争在每个时钟脉冲周期完成一条指令的执行过程(只在理想情况下,才能达到该效果)
通过在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中