26考研——中央处理器_指令执行过程(5)
408答疑
文章目录
- 二、指令执行过程
- 指令周期
- 定义
- 指令周期的多样性
- 指令执行的过程
- 注意事项
- 指令周期的数据流
- 取指周期
- 间址周期
- 执行周期
- 中断周期
- 指令执行方案
- 单周期处理器
- 多周期处理器
- 流水线处理器
- 八、参考资料
- 鲍鱼科技课件
- 26王道考研书
- 九、总结
二、指令执行过程
指令周期
定义
CPU 每取出并执行一条指令所需的全部时间称为指令周期。
指令周期的多样性
由于各种指令操作功能不同,所以各种指令的指令周期可能是不同的。
-
无条件转移指令 JMP X:在执行阶段不需要访问主存,只包含取指阶段(包括取指和分析)和执行阶段,所以其指令周期仅包含取指周期和执行周期,如下图所示。
- 取指阶段:完成取指令和分析指令的操作,也称取指周期。
- 执行阶段:完成执行指令的操作,也称执行周期。
-
带有间接寻址的指令:为了取操作数,需要先访问一次主存,取出有效地址,然后访问主存,取出操作数,所以还需包括间址周期。间址周期介于取指周期和执行周期之间,如下图所示。
- 带有中断周期的指令:当 CPU 采用中断方式实现主机和 I/O 设备的信息交换时,CPU 在每条指令执行结束前,都要查询中断查询信号,若有中断请求,则 CPU 进入中断响应阶段,也称中断周期。
中断周期的进栈操作是指 SP 减“1”,这和特殊意义的进栈操作相反,原因是计算机中的堆栈都是有低地址向高地址增长的,所以进栈操作变成“1”而不是“1”。
- 这样,一个完整的指令周期可包括取指、间址、执行和中断 4 个周期,如下图所示。
指令执行的过程
- 当 CPU 执行指令时,首先进入取指周期,从 PC 指出的主存储器单元中取出指令,送至指令寄存器,同时 PC 加“1”以作为下一条指令的地址。当遇到转移指令等改变执行顺序的指令时,在 PC 加“1”后会重新计算并更新 PC 值。
- 然后判断是否有间接寻址,若有,则进入间址周期以获取操作数的有效地址。
- 之后进入执行周期,完成取操作数、执行运算和存储结果的任务。
- 执行周期结束后,若 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)(或 MDR) − ① → -①\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。
指令执行方案
- 一个指令周期通常要包括几个执行步骤,每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。
- 不同的处理器采用不同的方案来安排指令的执行步骤。
单周期处理器
- 单周期处理器对所有指令都选用相同的执行时间来完成。
- 此时每条指令都在一个时钟周期内完成( C P I = 1 CPI=1 CPI=1),指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。因此,指令周期取决于执行时间最长的指令的执行时间。
- 对于那些本来可以在更短时间内完成的指令,仍要在这个较长的周期内完成,会降低整个系统的运行速度。
多周期处理器
- 多周期处理器对不同类型的指令选用不同的执行步骤。
- 指令需要几个周期就为其分配几个周期,因此可选用不同个数的时钟周期来完成不同指令的执行过程( C P I > 1 CPI>1 CPI>1),不再要求所有指令占用相同的执行时间。
- 多指令周期方案中指令之间仍是串行执行的。
流水线处理器
- 流水线处理器采用指令之间并行执行的方案,其追求的目标是力争在每个时钟周期完成一条指令的执行过程(只在理想情况下才能达到该效果,此时 C P I = 1 CPI = 1 CPI=1)。
- 这种方案通过在每个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
八、参考资料
鲍鱼科技课件
b站免费王道课后题讲解:
网课全程班: