计算机硬件cpu指令执行过程,cpu执行指令的过程详解-程序员宅基地

技术标签: 计算机硬件cpu指令执行过程  

cpu执行指令的过程详解

计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

7944282fabed7abe2a9d9104287c14c9.png

CPU指令执行流程图

下面我们将举个实例来说明指令的执行过程:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:

1、程序计数器的内容(这时是0000H)送到地址寄存器;

2、程序计数器的内容自动加1(变为0001H);

3、地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4、CPU使读控制线有效;

5、在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=“0002H”,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定。

cpu执行指令步骤详解

1、第一步我们首先看一下cpu的内部结构,主要包括寄存器,控制器,ALU算数逻辑运算单元,控制器里面又含有操作控制器,计数器,寄存器等,如下图所示:

c94a7427a262a1e1dc53c9d278213719.png

2、第二步我们了解了cpu的内部结构之后,就比较容易理解cpu是如何执行指令的,cpu执行指令主要分为5个阶段,从取指令,导进行指令译码,执行指令,访问主存,最后回写结果,具体cpu执行过程如下图所示:

986ff19d60c6b51ea4a2e0b0848a6799.png

3、第三步我们首先来看cpu执行指令的一、二阶段,cpu是怎么取指令和进行指令译码,将指令先从主存里面取出,然后放到寄存器,最后进行指令译码,这样就完成cpu执行指令的一、二阶段,具体如下图所示:

0a42f28172dda1b864d7fffa7e0826fc.png

4、第四步cpu执行指令的三、四阶段,首先根据指令规定的操作,完成具体功能,最后访问主存,操作数,得到物理地址,就完成了执行指令和访问主存的三、四阶段,如下图所示:

52ed7878521cc912097a2442896643f0.png

5、第五步在cpu第四阶段访问主存的时候,需要得到物理地址,具体读写过程如下图所示:

7e099e9820badbcb1f7f182ac9f4c53e.png

6、第六步我们也可以看一下cpu是怎么读指令的,下面是cpu的工作原理,如下图所示:

5d1cfdfd0c3239930af4ac0f6b4730da.png

7、第七步cpu执行指令进去到了第五个阶段,也是最后一个阶段回写结果,把第三阶段执行指令的运行结果数据回写到一种存储形式,cpu这样就成功执行完了一条指令,如下图所示

c1f2567988f5bacb420ef68199da84df.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29021195/article/details/118953378

智能推荐

【计算机考研】 408大题怎么复习最有效?看这一篇!_408大题怎么准备-程序员宅基地

文章浏览阅读882次,点赞8次,收藏23次。24变化较大的是选择题,出现了很多冷门知识点。当然,考试不是一成不变的。时间长了,考试的形式、内容都会变。光靠过去的题目,有可能漏掉新题型,到时候就傻眼了。考研408大题虽然整体来看难度和往年相识,但是每年还是会出一些新考点,例如今年的计网BGP,所以最重要的还是掌握知识点。再说了,考试可不只是考你知识储备,更考的是综合能力和解题方法。这些东西可不是光靠做题就能练出来的,得花点心思,多想想,多琢磨琢磨。光凭做真题,你可别指望能应付得了所有情况。总的来说,真题固然重要,但可不能当成唯一标准。_408大题怎么准备

使用 for 和 mv 批量修改文件名_mv批量修改文件名-程序员宅基地

文章浏览阅读375次。命令一次只能操作一个文件或者目录,如果现在我有好几个文件甚至好几百个文件需要处理,是不是就不能用。(这里只有 9 个文件,想一个一个修改也不是不可以。稍微修改一下上面的指令,使输出的文件名转换成指定的格式,即把文件名中的。命令,允许用户创建一个遍历一系列值的循环,以此来重复执行一系列命令。参数不是必须的,完全可以省略,只是为了跟直观地看一下修改的过程而已。编辑器可以根据命令来处理数据流中的数据,这正是我们所需要的。先看测试目录下的文件,这里有 9 个。的文件,需要把他们的文件名都改成。_mv批量修改文件名

CodeForces 554C 组合数学_codeforces 554c a题-程序员宅基地

文章浏览阅读469次。题意K种不同颜色的N个球,要求每种颜色最后一个球的位置必须按照顺序来。求有多少种排列方法。题解排列规则比较简单,首先放最后一个球,这个球一定放在最后一个空位,放完最后一个球之后,其他的a[i]-1个球随便放。按照排列规则计算一下即可。这里用到了一个小技巧,组合数打表。感觉还是挺实用的。代码#include #include#include#_codeforces 554c a题

EduCoder-程序设计技术R-指针-(第1关:用指针法输入12个整数,然后按每行4个)(第2关:指针变量作为函数参数实现两变量交换值)(第3关:报数)(第4关:strcmp函数)_第1关:用指针法输入12个整数,然后按每行4个数输出-程序员宅基地

文章浏览阅读6.2k次,点赞8次,收藏44次。目录第1关:用指针法输入12个整数,然后按每行4个代码示例第2关:指针变量作为函数参数实现两变量交换值代码示例第3关:报数代码示例第4关:strcmp函数代码示例第1关:用指针法输入12个整数,然后按每行4个任务描述题目描述:用指针法输入12个整数,然后按每行4个数输出####相关知识(略)####编程要求请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。输入输入包含一行,有12个整数。输出按顺序,每行输出4个整数。####测试说明样例输入:1 2 3 4 _第1关:用指针法输入12个整数,然后按每行4个数输出

11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性_3d多层拓扑图-程序员宅基地

文章浏览阅读1k次。数据库执行变更遇到发布错误的文件时,客户现场存在着这样一种操作方式:用户将平台下发到客户端的sql文件通过在客户端更改文件内容的方式,来解决发布时遇到错误的问题,这种方式本质上造成了计划发布与实际发布对象的偏离,对于用户后续回溯问题,造成不易察觉的隐藏问题。,非强制,若部分用户在使用数据库变更时,无该使用问题,可以通过不配置该模型实例,正常发布即可。相较于现有的方案,可以有效的提升单位面积内所呈现的信息量,并且由于3D多了一个维度展示的空间,数据中拉开了视觉层级,避免了因数据体量增大,带来的视觉干扰。_3d多层拓扑图

python三维建模可视化与交互,python三维建模可视化_python 写一个具有3d物理引擎的可视化窗口-程序员宅基地

文章浏览阅读814次,点赞25次,收藏26次。前面介绍了pyglet的入门知识, 以及绘制3D场景的基础知识。: 指定点、线段和多边形的顶点。多次调用就可以绘制出几何图形。和glEnd(): 绘制一段图形的开始和结束。glBegin的mode参数可设置填充等样式。: 设置图形颜色, r、g、b的范围是0-1。glFlush(): 刷新绘图缓存, 将绘制的图形显示在屏幕上。: 改变相机位置和视角。下篇:Python pyglet 自制3D引擎入门(二) – 绘制立体心形,动画和相机控制。_python 写一个具有3d物理引擎的可视化窗口

随便推点

LUA教程算术运算的Metamethods-52_bad argument #1 to 'pairs-程序员宅基地

文章浏览阅读1.7k次。这一部分我们通过一个简单的例子介绍如何使用metamethods。假定我们使用table来描述结合,使用函数来描述集合的并操作,交集操作,like操作。我们在一个表内定义这些函数,然后使用构造函数创建一个集合:Set = {}function Set.new (t) local set = {} for _, l in ipairs(t) do set[l] = true end return setend function Set.union (a,b) .._bad argument #1 to 'pairs

微信小程序ar识别_微信小程序识别物品弹出ar动画-程序员宅基地

文章浏览阅读836次。ar识别示例库代码片段_微信小程序识别物品弹出ar动画

深度学习之基本概论(1)-程序员宅基地

文章浏览阅读321次,点赞4次,收藏3次。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。

C++编译器优化问题-程序员宅基地

文章浏览阅读1k次。首先使用a拷贝构造了形参aa,然后aa拷贝构造了copy1,copy1拷贝构造了copy2(注意这里虽然是等号也是拷贝构造,因为这里的copy2还是对象创建初始化阶段,只有对象创建出来之后再给对象赋值才是赋值)copy2拷贝构造了一个临时对象然后传参给test,使用这个临时对象1拷贝构造了aa然后aa重复上面再函数中的拷贝构造,返回值,因为是值返回所以先再main函数的栈帧内开辟一个临时对象2,调用了一次拷贝构造,然后再用哦这个临时对象2,拷贝构造了ret对象。所以编译器进行了优化,那么优化的地方在哪呢?._c++编译器优化

1-径向基(RBF)神经网络PID控制器仿真_rbf神经网络整定的pid控制器设计-程序员宅基地

文章浏览阅读328次。1-可以交流、咨询、答疑。_rbf神经网络整定的pid控制器设计

sccm 2007 r2 step by step 之十四 操作系统分发part3-程序员宅基地

文章浏览阅读74次。场景描述:公司现有一批windowsxp的计算机需要升级到windows7专业版。C盘有很多用户数据,这批计算机也很多,不可能手动一台一台的去备份,我们希望SCCM能自动将用户数据进行备份和还原。SCCM能自动备份和恢复数据,对于管理员来说,可谓一大福音,和以前手动拷贝数据说再见吧。对于以上案例,我们会用到SCCM用户状态迁移角色。步骤:1 在SCCM服务器上添加“用户状态迁移角色” ..._usmt 0x00004005