26考研——中央处理器_指令执行过程(5)

408答疑


文章目录


二、指令执行过程

指令周期

定义

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。

  • 取指周期的数据流如下:

    1. PC − ① → -①\rightarrow −①→ MAR − ② → -②\rightarrow −②→ 地址总线 − ③ → -③\rightarrow −③→ 存储器。
    2. CU 发出读命令 − ④ → -④\rightarrow −④→ 控制总线 − ⑤ → -⑤\rightarrow −⑤→ 主存储器。
    3. 主存储器 − ⑥ → -⑥\rightarrow −⑥→ 数据总线 − ⑦ → -⑦\rightarrow −⑦→ MDR − ⑧ → -⑧\rightarrow −⑧→ IR(存放指令)。
    4. CU 发出控制信号 − ⑨ → -⑨\rightarrow −⑨→ PC 加 1。

间址周期

  • 间址周期的任务是取操作数有效地址。
  • 以一次间址为例,如下图所示,将指令中的地址码送到 MAR 并送至地址总线,此后 CU 向主存储器发出读命令,以获取有效地址并存至 MDR。
  • 间址周期的数据流向如下:
    1. Ad(IR)(或 MDR) − ① → -①\rightarrow −①→ MAR − ② → -②\rightarrow −②→ 地址总线 − ③ → -③\rightarrow −③→ 主存储器。
    2. CU 发出读命令 − ④ → -④\rightarrow −④→ 控制总线 − ⑤ → -⑤\rightarrow −⑤→ 主存储器。
    3. 主存储器 − ⑥ → -⑥\rightarrow −⑥→ 数据总线 − ⑦ → -⑦\rightarrow −⑦→ MDR(存放有效地址)。

其中,Ad(IR) 表示取出 IR 中存放的指令字的地址字段。

执行周期

  • 执行周期的任务是取操作数,并根据 IR 中的指令字的操作码通过 ALU 操作产生执行结果。
  • 不同指令的执行周期操作不同,因此没有统一的数据流向。

中断周期

  • 中断周期的任务是处理中断请求。
  • 假设程序断点存入堆栈中,并用 SP 指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据,数据流如下图所示。
  • 中断周期的数据流如下:
    1. CU 控制将 SP 减 1,SP − ① → -①\rightarrow −①→ MAR − ② → -②\rightarrow −②→ 地址总线 − ③ → -③\rightarrow −③→ 主存储器。
    2. CU 发出写命令 − ④ → -④\rightarrow −④→ 控制总线 − ⑤ → -⑤\rightarrow −⑤→ 主存储器。
    3. PC − ⑥ → -⑥\rightarrow −⑥→ MDR − ⑦ → -⑦\rightarrow −⑦→ 数据总线 − ⑧ → -⑧\rightarrow −⑧→ 主存储器(程序断点存入主存储器)。
    4. 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站免费王道课后题讲解:

网课全程班:

26王道考研书

相关推荐
愚润求学38 分钟前
【递归、搜索与回溯】专题一:递归(二)
c++·笔记·算法·leetcode
愚润求学1 小时前
【Linux】基础 IO(一)
linux·运维·服务器·开发语言·c++·笔记
Wallace Zhang1 小时前
STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调
笔记·stm32·学习
大白的编程日记.2 小时前
【Linux学习笔记】理解一切皆文件实现原理和文件缓冲区
linux·笔记·学习
孞㐑¥2 小时前
Linux之进程控制
linux·开发语言·c++·经验分享·笔记
Alessio Micheli2 小时前
奇怪的公式
笔记·线性代数
愚润求学2 小时前
【Linux】简单设计libc库
linux·运维·开发语言·c++·笔记
chennalC#c.h.JA Ptho2 小时前
Bodhi linux 系统详解
linux·经验分享·笔记·系统架构·系统安全
zhuziheniaoer3 小时前
rust-candle学习笔记11-实现一个简单的自注意力
笔记·学习·自然语言处理·rust
LAM LAB3 小时前
【WIN】笔记本电脑忘记密码解决办法/笔记本电脑重装系统笔记/bitlocker忘记密码的解决办法
笔记·电脑