计算机组成原理5.2指令执行过程

桃浪十七丶
• 阅读 1744

一、指令周期的概念:

CPU从主存中取出并执行一条指令的时间被称为指令周期。 一个指令周期包含若干机器周期(机器周期也称为CPU周期); 一个机器周期包含若干时钟周期(时钟周期又称为节拍或者T周期或者CPU时钟周期,是CPU操作的最基本单位)。 每个指令周期内的机器周期数量可以不同,每个机器周期内的时钟周期数量也可以不同。 不同的指令的指令周期可能不同,如: 计算机组成原理5.2指令执行过程


1.注:分析指令所需时间足够短因此归于取出指令的阶段

2.注:一般情况下每执行一条指令结束后都会进入中断周期 3.注:间址周期CPU进行间接取址


机器周期又可分为定长机器周期和不定长机器周期,其实质是一个机器周期内包含的时钟周期数量不同,如下图,一个方波代表一个时钟周期,不同长度的机器周期包含不同数量的波(下图画红色代表一个时钟周期)。 计算机组成原理5.2指令执行过程
1.2上述指令中涉及到的四种周期:

取指周期:从主存中取出一条指令。 间址周期:把形式地址转化成有效地地址,即取操作数的有效地址。 执行周期:执行指令对应的操作。 中断周期:在非关中断的状态下,每条指令结束时都会留下中断周期以检测中断信号。

Q:如何判断CPU处于哪个周期:

计算机组成原理5.2指令执行过程 A:设置四个触发器,每个触发器中存放一个0或1,1表示处于当前周期,0表示不在当前周期,控制单元CU控制触发器中是0还是1。

二、指令周期的数据流向:

2.1 取指周期

1).PC中存放了下一条指令存放地址,因此把PC中保存的地址发送到MAR,记作(PC)->MAR; 2).控制单元CU(Control Unit)通过控制总线发出控制信号给主存储器,发出的是读(R)信号,记作1->R; 3).MAR所指主存地址存放的数据经数据总线发送到MDR,记作M(MAR)->MDR; 4).CU发出控制信号,形成下一条指令的地址,记作(PC)+1->PC。 数据流向的图解为:

计算机组成原理5.2指令执行过程
2.2 间址周期

1).IR中指令的地址码送入MAR,此时MDR中也还存留着送入IR时的数据,因此也可以直接通过MAR送入MDR,记作Ad(IR)->MAR或者Ad(MDR)->MAR; 2).CU通过通知总线发出读(R)控制信号给主存储器,记作1->R; 3).MAR所指主存地址存放的数据经数据总线发送到MDR,记作M(MAR)->MDR; 4).把有效地址送入指令的地址码字段,拼出新的指令,记作(MDR)->Ad(IR)。这一步可以不操作,只属于部分类型的CPU。 数据流向的图解为: 计算机组成原理5.2指令执行过程

2.3 执行周期

执行周期的指令各种各样

2.4 中断周期

1).CU控制栈顶地址SP-1,把修改后的地址送入MAR,记作(SP)-1->SP,(SP)->MAR,实质是把进程断点存储到主存的存储单元; 2).CU通过控制总线发出写控制信号到主存,记作1->W; 3).断点信息的内容送入MDR,记作(PC)->MDR; 4).CU控制将中断服务的程序入口地址送入PC,记作向量地址->PC。 数据流向的图解为:

计算机组成原理5.2指令执行过程

1.注:W和R分别指的是写和读操作,主存设置两个接口W和R,W通高电平为1则写操作,R同理。 2.注:类似M(MAR)->MDR这样的写法,M(MAR)意为MAR中存储的内容。 3.注:间址周期标红部分,前面文章有介绍到指令只由操作码和地址码构成,地址码部分可以存放指令所在地址也可以存放其他操作数存放地址。 4.注:实际上计算机中堆栈寄存器的栈顶指针,是由上到下即由高到低,因此中断周期有“CU控制栈顶地址SP-1”这一操作,意为栈顶指针向下移动一指向新位置。


三、指令执行方案:

3.1单指令周期
计算机组成原理5.2指令执行过程 指令之间串行执行,每条指令的执行周期长度相同。指令周期的长度取决于执行过程中最长一条指令的执行时间。
3.2多指令周期

与单指令周期不同,多指令周期中每个指令的执行周期可以长短不一。多指令周期的指令也是串行执行。

3.3流水线方案

当每条指令使用到的硬件不同时,可以采用流水线方案。

计算机组成原理5.2指令执行过程

这里留坑等待后续补充。。。。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
vue 节流、拖拽指令
1、在开发中时长遇到按钮重复点击或者多次点击的情况比如创建订单或者其他情况,当然也可以通过设置变量开关,禁止状态,这里就分享一个节流的指令javascriptVUE3好像指令的生命周期和组件的生命周期同步了//立即执行版本,点击后会执行一次,然后进入定时器exportconstthrottle{inserted:function
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
桃浪十七丶 桃浪十七丶
2年前
计算机组成原理4.1指令格式
4.1.1指令的基本概念和指令的基本格式操作码:指明CPU进行什么操作。地址码:知指明CPU对谁进行操作。PC:程序计数器,每执行一条指令会1指向下一条指令。指令的概念和基本格式:是指一台计算机执行某种操作的命令,一台计算机的所有指令的集合构成指令集,也叫做指令系统,位于计算机的硬件和OS层面。不同计算机只能执行自己系统的指令,如Intel的x86架构,手
Wesley13 Wesley13
2年前
java高并发(三)并发编程的基础
CPU多级缓存为什么需要CPU缓存?原因是,CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题。CPU缓存有什么意义?时间局部性:如果某个数据被访问,那么在不久的将
Stella981 Stella981
2年前
Linux下定时执行任务 crontab 命令
1、什么是crontab         crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一
Wesley13 Wesley13
2年前
PIC中档单片机汇编指令详解(5)
位操作指令详述BCF数据寄存器指定位清0语法形式:BCFf,b操作数:f为数据寄存器的低7位地址(0x00~0x7F)B为数据位编号(0~7)执行时间:一个指令周期执行过程:使数据寄存器f的的b位清0状态标志影响:无说明:该指令可对任何数据寄存器的任意一个位置清0,常用于标志位的设定和清除,或者把某一管脚置成低电平。指
Easter79 Easter79
2年前
SpringBoot定时任务动态修改cron表达式改变执行周期
一、场景引入前不久做过一个根据下载指令定时下载文件到服务器的需求。轮询下载的周期需要根据下载任务量的大小动态修改,下载任务密集的时候就周期缩小,下载任务少量时就扩大周期时间。java本身和第三方开源框架Spring共有三种执行定时任务的方式:1)Java自带的java.util.Timer类:这个类允许你调度一个java.util.TimerT
Stella981 Stella981
2年前
SpringBoot定时任务动态修改cron表达式改变执行周期
一、场景引入前不久做过一个根据下载指令定时下载文件到服务器的需求。轮询下载的周期需要根据下载任务量的大小动态修改,下载任务密集的时候就周期缩小,下载任务少量时就扩大周期时间。java本身和第三方开源框架Spring共有三种执行定时任务的方式:1)Java自带的java.util.Timer类:这个类允许你调度一个java.util.TimerT
Wesley13 Wesley13
2年前
MCU的心脏
晶振是石英晶体谐振器(quartzcrystaloscillator)的简称,它被称为电路系统的心脏,它为整个系统提供“心跳”。中央处理器(CPU)一切指令的执行都是建立在这个“心跳”上的,这个心跳就是CPU执行指令所必须的时钟频率信号,一般来说时钟信号频率越高,CPU的运行速度也就越快。只要是包含CPU的电子产品,都至少包含一个时钟源,有些在外面看不到晶