指令执行过程
指令周期相关概念

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

-
指令周期最多有 4 种机器周期:取指周期、间址周期、执行周期、中断周期(都有访问主存的操作)
-
分别对应标志触发器:FE、IND、EX、INT(“1”表示有效,如 1⇒FE 表示有取值周期)

易混淆知识点
- 指令:
- CPU 区分指令和数据的依据是指令周期的不同阶段【取指周期取指令,执行周期取数据】
- 不同长度的指令,取指操作可能不同(如双字指令,三字指令和单字指令);指令长度相同的情况下,指令的取指操作是相同的
- 指令总是根据 PC 从主存中读出(无条件转移指令或中断返回指令也是如此,最终的结果还是根据 PC 从主存读出)
- 取指:
- 取指操作是控制器固有的功能,不需要操作码的控制
- 取指操作是自动进行的,控制器不需要得到相应的指令
- 取指周期简单来说是取指,即从主存中取出指令字
- 字长:
- 为了硬件设计方便,指令字长一般取存储字长的整数倍
- 如果指令字长=存储字长的 2 倍,则取一条指令需要访存 2 次,取指周期是机器周期的 2 倍
- 指令字长和机器字长无任何关系
- 中断:
- CPU 在每条指令执行结束前,都要发中断查询信号
- CPU 响应中断的时间是一条指令执行结束后
- 周期:
- 指令周期:CPU 从主存中取出并执行一条指令的时间,一个指令周期由多个机器周期组成
- 机器周期(CPU 周期):一个机器周期包含若干时钟周期
- 时钟周期(节拍 / T 周期):计算机工作的最小时间周期,是 CPU 操作的基本单位;一个时钟周期内控制信号不发生改变
- 存取周期:连续启动两次独立的读/写操作所需要的最短时间
- 周期的关系:
- 机器周期通常由存取周期确定【因为存取周期时间最长】
- 执行各条指令的机器周期数可变,各机器周期的长度可变
- 机器周期是指令执行中每步操作(如取指令,存储器读/写)所需要的时间
- 每个机器周期内的节拍数可以不等,因此长度可变
- 各种指令的功能不同,所以指令执行时所需的机器周期数可变
- 采用 DMA 方式传递数据,每传送一个数据就要占用存取周期
- 其他:
- 不采用 Cache 表明每次取指令都只是要访问内存一次
- 不采用指令预取技术表明每个指令周期都需要取指令
不同指令的指令周期举例
- 无条件转移指令 JMP X:
- 指令周期 = 取指周期 + 执行周期
- PC 被修改两次【 取值周期结束 PC 自动加 1 + 执行周期 PC 值修改为要调转到的地址】
- 间接寻址的指令:
- 指令周期 = 取指周期 + 间址周期 + 执行周期
- 为了取操作数,需要先访问一次主存,取出有效地址 -⇒取指周期
- 然后访问主存,取出操作数 -⇒间址周期
- 间址周期结束时,CPU 中 MDR 中的内容是操作数的有效地址 EA
- CPU 采用中断方式实现主机和 I/O 设备的信息交换且有中断请求:
- 指令周期 = 取指周期 + 间址周期 + 执行周期 + 中断周期
- CPU 在每条指令执行结束前,都要发中断查询信号
- 若有中断请求,则 CPU 进入中断响应阶段 ---⇒中断周期
- 中断周期进栈操作是将 SP-1,计算机的堆栈都是向低地址(栈顶)增加,所有进栈操作减 1 而不是加 1
例题

指令周期的数据流
- 数据流:根据指令要求一次访问的数据序列
- 指令执行不同阶段,访问的数据序列不同
- 不同的指令,数据流也不同
取指周期
- 任务:根据 PC 中的内容从主存中取出指令代码并放在 IR 中
- 数据流向:PC 中存放的是指令的地址,根据此地址从内存单元中取出的指令,并放在指令寄存器 IR 中,取指同时,PC+1
- PC-⇒MAR-⇒地址总线 -⇒主存
- CU (控制单元) 发出读命令 -⇒控制总线 -⇒主存
- 主存 -⇒数据总线 MDR-⇒IR(存放指令)
- CU 发出控制信号 -⇒PC 内容加 1

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

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

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

指令的执行方案
单周期处理器
- 定义:
- 每条指令都在固定的时钟周期内完成【CPI = 1】,指令之间串行执行
- 指令周期取决于执行时间最长的指令的执行时间
- 特点:串行,相同执行时间
多周期处理器
- 定义:
- 指令之间串行执行
- 指令需要几个周期就为其分配几个周期
- 可以选用不同个数的时钟周期来完成不同指令的执行过程【CPI > 1】
- 特点:串行,不同执行时间
流水线处理器
- 定义:
- 力争在每个时间脉冲周期完成一条指令的执行过程【理想情况下,CPI = 1】
- 尽量让多条指令同时运行,但各自处在不同的执行步骤中
- 特点:并行