计算机组成原理(6)-----指令执行过程

news2025/1/23 6:01:18

目录

1.指令周期的概念

2.指令周期的数据流

(1)取指周期

(2)间址周期

(3)执行周期

(4)中断周期

3.指令执行方案

(1)单指令周期

(2)多指令周期

(3)流水线方案


1.指令周期的概念

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

如下图所示,对指令译码就是分析指令的过程

机器周期:常常用若干机器周期来表示,机器周期又叫CPU周期。

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

注:CPU上标注的主频,例如主频=3.0GHz,就表示每秒钟可以发送3.0G次的时钟周期

每个指令周期内机器周期数可以不等,每个机器周期内的节拍数(时钟周期)也可以不等。例如:

① 对于空指令的执行,当CPU取指,分析这是一条空指令后,这条指令就结束了,就会继续执行下一条指令。所以取指周期(包含分析指令)就是整个指令周期。

② 对于加法指令的执行,当CPU取指,分析这是一条加法指令后,继续执行指令,这条指令周期分为两个机器周期,机器周期内的节拍数可能是不等的。

③ 对于乘法指令的执行,当CPU取指,分析这是一条乘法指令后,继续执行指令,乘法指令的执行本质上是多次的加法和移位,所以取指和执行指令的节拍数可能不等。

④ 对于具有间接寻址的指令的执行间接寻址指的是指令的地址码指向的主存地址中的数据才是最终的操作数的地址。

当CPU取指,分析这是一条具有间接寻址的指令后,还需要将指令中包含的形式地址翻译成最终的有效地址,这段时间称为间址周期,接下来才能继续执行指令。可以看到这条指令包含3个机器周期。

⑤ 对于带有中断周期的指令的执行,执行完指令后,还需检查是否有中断信号需要处理,这段时间称为中断周期,除非CPU处于关中断的状态,否则每执行完一条指令,都需要留出一个机器周期处理中断信号。

所以总结下来,指令周期流程如下:

如何判断此时处于哪一个周期呢?

通常会设置触发器,触发器可以存放1个二进制位。如下图所示,每一个周期都会设置对应的触发器,若处于取指周期,那么控制单元就会将FE触发器设为1,其余触发器设为0,表示此时处于取指周期,其他同理。

四个工作周期都有CPU访存操作,只是访存的目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点。

2.指令周期的数据流

(1)取指周期

•当前指令地址送至存储器地址寄存器,记做:(PC)--->MAR

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

注:主存储器会留两个接口,一个接口表示读,一个接口表示写,若此时要进行读,则读接口置1,所以记1--->R

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

•将MDR中的内容(此时是指令)送入IR,记做:(MDR)--->IR

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

(2)间址周期

•将指令的地址码送入MAR,记做:Ad(IR)---> MAR(将当前指令的地址码送到MAR中)

或Ad(MDR)--->MAR(把MDR的地址信息送到MAR中,因为在间址周期之前,经过了取指阶段,取址阶段指令先从主存储器取出到MDR,再从MDR传送到 IR 中,所以MDR存放的也是当前指令)

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

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

到这一步,MDR存放的是操作数的有效地址

•将MDR的数据传送到MAR,这次传送的是操作数的地址,主存储器就可以通过MAR的地址找到存储单元对应数据,传到MDR中。

还有另一种方法,就是将MDR中的有效地址传送至指令的地址码字段,将原来的形式地址覆盖,记作:(MDR)--->Ad(IR),IR中的地址现在就是有效地址,再传入MAR中,此时间接寻址就变为了直接寻址的方式。

(3)执行周期

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

(4)中断周期

中断就是暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点。一般使用维栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。

如图所示,栈顶在低地址一端,若想记录下程序断点的地址,则需要先将SP-1,接着在SP-1的位置,记录断点的地址,当处理完中断信号后,返回断点地址继续处理程序。

•CU控制将SP-1,修改后的地址送入MAR,用来指明把PC值存到哪一个主存单元中。记作:(SP)- 1--->SP,(SP)--->MAR

本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a--->MAR,由于SP的加减都是由CU控制的,所以某些书上也简化为下图,就是CU将当前的栈顶地址送到MAR中。

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

根据MAR的地址信息,主存储器就能知道往什么地址进行写操作

•将断点(PC内容)送入MDR,记做:(PC)--->MDR

现在执行写操作的地址信息保存在MAR中,数据信息保存在MDR中,主存往对应地址写入数据即可

•保存PC值之后,需要修改PC的值,使其指向中断处理程序的第一条指令。

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

3.指令执行方案

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

(1)单指令周期

对于单指令周期,每条指令的指令周期都是相同的,也就是某些用较短时间就能完成的指令,需要延长到与最长时间完成的指令一样长的时间。这就意味着某些执行很快的指令,可能有很长的时间是浪费了的。

但这样设计的好处是设计指令执行的控制电路时,只需要根据节拍数就可以判断一条指令是否执行结束,因为一条指令执行的节拍数是一样的。这样控制电路设计起来就会方便些。

若采用单指令周期,各个指令之间是串行执行的:指令周期取决于执行时间最长的指令的执行时间。

优点:控制电路设计较简单。

缺点:对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。

(2)多指令周期

对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。这就需要更复杂的硬件设计。

优点:整个系统的运行速度相比于单指令周期快很多。
缺点:需要更复杂的硬件设计。

(3)流水线方案

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

所以指令之间并行执行。意思大致如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 309. 买卖股票的最佳时机含冷冻期

题目来源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C题解:动态规划 状态1:表示持有股票。更新为之前持有股票(dp[i-1][0])或者不持有股票且不处于冷冻期后买入&…

怎么去除图片水印?推荐两个一键去水印方法

在数字时代,图片已成为我们日常交流、学习和工作中的重要媒介。然而,很多时候,我们在网上找到心仪的图片时,却发现它们被加上了水印,影响了观赏和使用。此时我们就需要在保证版权的前提下,去除图片中的水印…

LDRA Testbed软件静态分析_软件质量度量

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建 LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果 LDRA Testb…

华为配置直连三层组网直接转发示例

华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…

【力扣hot100】刷题笔记Day7

前言 身边同学已经陆陆续续回来啦,舍友都开始投简历了,我也要加油啦!刷完hot100就投! 73. 矩阵置零 - 力扣(LeetCode) 标记数组:空间复杂度O(mn) class Solution:def setZeroes(self, matrix:…

LeetCode--代码详解 59. 螺旋矩阵 II

59. 螺旋矩阵 II 题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&a…

【Effective Objective - C】—— 系统框架

【Effective Objective - C】—— 系统框架 47.熟悉系统框架CoreFoundation框架其他框架要点 48. 多用块枚举,少用for循环for循环使用Objective-C 1.0的NSEnumerator遍历快速遍历基于块的遍历方式要点 49.对自定义其内存管理语义的collection使用无缝桥接要点 50.构…

利用MATLAB/Simulink仿真模型加速嵌入式控制系统的开发——以多学科融合的电机控制为例

电机控制涵盖了广泛的应用领域,从家用电器到工业设备,从电动汽车到航空航天,其重要性不言而喻。从过去到现在,再到未来,电机控制技术的发展经历了显著的变革,并持续推动着相关行业的进步。 一、电机控制的…

pip镜像源:清华镜像、阿里云镜像、豆瓣镜像与如何修改默认镜像源

pip镜像源:清华镜像、阿里云镜像、豆瓣镜像与如何修改默认镜像源 🌈 个人主页:高斯小哥 🔥 高质量专栏:【Matplotlib之旅:零基础精通数据可视化】 🏆🏆关注博主,随时获取…

git clone 克隆代码报错

在拉取代码的时候报这个错误,也看了一下地址是正确的的,网络也正常。然后ping gitlab.com执行也没问题,如果有问题就是是环境问题。我以为是git名字和邮箱没有绑定的原因,结果绑定了还是这个问题,这个时候就只好百度啦…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(六)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

数据结构---字典树(Tire)

字典树是一种能够快速插入和查询字符串的多叉树结构,节点的编号各不相同,根节点编号为0 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。 核心思想也是通过空间来换取时间上的…

Elastic Stack--01--简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Elastic Stack 简介为什么要学习ESDB-Engines搜索引擎类数据库排名常年霸榜![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/051342a83f574c8c910cda522…

YOLOv8改进 | 进阶实战篇 | 利用辅助超推理算法SAHI推理让小目标无所谓遁形(支持视频和图片)

欢迎大家订阅我的专栏一起学习YOLO! 一、本文介绍 本文给大家带来的是进阶实战篇,利用辅助超推理算法SAHI进行推理,同时官方提供的版本中支持视频,我将其进行改造后不仅支持视频同时支持图片的推理方式,SAHI主要的推理场景是针对于小目标检测(检测物体较大的不适用,…

WMS仓储管理系统解决方案如何释放智能仓库的潜力

随着科技的不断进步与创新,智能化仓储设备正逐渐成为企业转型升级的必备利器。越来越多的企业纷纷投入巨资,打造智能仓库,以应对激烈的市场竞争。与传统仓库相比,智能仓库凭借其高效、准确、自动化的特点,成为了企业提…

在springboot项目中调用openai API及我遇到的问题

这两天我在自己的网站中集成了openai API,引入chatgpt对话机器人,中途遇到了很多坑,记录一下。文章中会涉及一些付费工具,如果你有类似功能的工具,完全可以使用自己的。(主要是我想澄清一下,我不…

LPDDR6与LPDDR5 ZQ Calibration技术探讨

LPDDR6相比LPDDR5在ZQ校准这一块删除了command-based相关的描述,删除了ZQ校准模式切换的描述,仅支持background-based的校准。 回顾一下LPDDR5 基于background-based的校准: background ZQC是通过MR28 OP[5]来选择的,当选择为0&a…

一个基于C#开发的、开源的特殊字符输入法

emoji表情在社交网络非常流行,我们在手机也非常方便输入,但是在PC电脑我们一般需要到归集好的网页拷贝,所以今天推荐一个Windows小工具,让你方便输入特殊字符和emoji表情。 01 项目简介 这是一个基于C#开发的开源项目&#xff0…

解锁动态体验:探秘文件二维码生成的多重魅力

文件生成二维码,作为一种动态二维码,不仅能够存储丰富的信息,更通过其独特的特点为用户带来了全新的使用体验。让我们一起深入探讨这一引人注目的技术。 1. 数据追踪:揭示用户互动的面纱 在二维彩虹的文件二维码中,数…

使用 Next.js 连接 mysql 数据库

前言 本文主要为大家介绍,如何使用 Next 框架实现一个简单的后端接口,并且从数据库中请求数据返回给前端。 实现 创建api/getData文件夹 项目创建完成后在 app 文件下新建api文件夹,在 api 文件夹下新建 getData 文件夹,在 ge…