中央处理器——指令执行过程

简介: 中央处理器——指令执行过程

指令周期


指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。


指令周期常常用若干机器周期来表示,机器周期又叫CPU周期


一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。


每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。如下图可分为定长的机器周期与不定长的机器周期。


CLK:时钟脉冲



几种常见的指令周期


每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。



指令周期流程



四个工作周期都有CPU访存操作,只是访存的目的不同。


  1. 取指周期是为了取指令


  1. 间址周期是为了取有效地址


  1. 执行周期是为了取操作数


  1. 中断周期是为了保存程序断点。


这四个周期在计算机内部是用触发器控制的


触发器,可以存放1个二进制位。


CLK(时钟脉冲)通过判断四个触发器的状态来判断该指令执行的是哪个周期。具体状态判断如下图



指令周期的数据流


取指周期


取指周期步骤:


  1. 当前指令地址送至存储器地址寄存器,记做:(PC) → MAR


  1. 将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR) → MDR


  1. CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1 → R


  1. 将MDR中的内容(此时是指令)送入IR,记做:(MDR) → IR


  1. CU发出控制信号,形成下一条指令地址,记做:(PC)+1 → PC


具体数据流向图如下图所示:



间址周期


间址周期步骤:


  1. 将指令的地址码送入MAR,记做:Ad(IR) → MAR或Ad(MDR) → MAR


  1. CU发出控制信号,启动主存做读操作,记做:1 → R


  1. 将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR) → MDR


  1. 将有效地址送至指令的地址码字段,记做:(MDR)→ Ad(IR)


具体数据流向图如下图所示:



执行周期


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


不同指令的执行周期操作不同,因此没有统一的数据流向。


中断周期


中断:暂停当前任务去完成其他任务。


为了能够恢复当前任务,需要保存断点。


一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。


中断周期步骤:


  1. CU控制将SP减1,修改后的地址送入MAR记做: (SP)-1 → SP,(SP) → MAR

本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a → MAR


  1. CU发出控制信号,启动主存做写操作,记做:1 → W


  1. 将断点(PC内容) 送入MDR,记做:(PC) → MDR


  1. CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→ PC


具体数据流向图如下图所示:



指令执行方案


一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。


方案1.单指令周期


对所有指令都选用相同的执行时间来完成 。


指令之间串行执行;


指令周期取决于执行时间最长的指令的执行时间。


缺点:


对于那些本来可以在更短时间内完成的指令,要

使用这个较长的周期来完成,会降低整个系统的

运行速度。


方案2.多指令周期


对不同类型的指令选用不同的执行步骤来完成 。


指令之间串行执行;


可选用不同个数的时钟周期来完成不同指令的执行过程 。


缺点:


需要更复杂的硬件设计。


方案3.流水线方案


在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中 。


指令之间并行执行


例如这个样子



本章小结


相关文章
|
6月前
|
Kubernetes 监控 容器
k9s常用的指令
K9s 是一个用于 Kubernetes 群集管理的命令行工具,它提供了一系列常用的指令,用于查看、管理和监控 Kubernetes 资源。以下是一些常用的 K9s 指令: 1. **查看资源列表:** - `:po`:查看 Pod 列表。 - `:svc`:查看 Service 列表。 - `:deploy`:查看 Deployment 列表。 - `:ns`:查看 Namespace 列表。 2. **在资源列表中的操作:** - 使用上下箭头键浏览资源列表。 - `Enter` 键进入资源的详细信息视图。 - `d`:删除选定的资源。
387 4
v-if 指令
1.v-if指令的作用是:根据表达式的真假切换元素的显示状态 2.本质是通过操纵dom元素来切换显示状态 3.表达式的值为true,元素存在于dom树中,为false,从dom树中移除 4.频繁的切换使用v-show,反之使用v-if,前者的切换消耗小
|
索引
03ZSTI4-00-501 处理器设计通常包括前任的指令
03ZSTI4-00-501 处理器设计通常包括前任的指令
91 0
03ZSTI4-00-501 处理器设计通常包括前任的指令
|
存储 缓存
CPU-逻辑移位操作与空指令说明
CPU-逻辑移位操作与空指令说明
1483 0
CPU-逻辑移位操作与空指令说明
|
Go Docker 容器
Dockfile指令
笔记:Dockfile指令
204 0
|
前端开发 安全 JavaScript
内置指令
内置指令
135 0
|
网络协议 NoSQL C语言
CPU-移动操作指令说明
CPU-移动操作指令说明
245 0
|
存储
【计算机系统】CPU指令执行流程与指令流水线原理
【计算机系统】CPU指令执行流程与指令流水线原理
1783 0
【计算机系统】CPU指令执行流程与指令流水线原理
AT指令1
FUNCTIONSAT COMMANDSDETAILS厂家认证AT+CGMI获得厂家的标识模式认证AT+CGMM查询支持频段修订认证AT+CGMR查询软件版本生产序号AT+CGSN查询IMEI NO.
989 0