计算机硬件cpu指令执行过程,cpu执行指令的过程详解

news/2025/2/26 13:26:43

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


http://www.niftyadmin.cn/n/3754984.html

相关文章

Optional简单使用

前言 package com.hlj.Optional;import com.hlj.Optional.bean.User; import org.junit.Test;import java.util.Optional; import java.util.logging.Logger;/*** Desc:* Author HealerJean* Date 2018/9/7 上午11:29.*/ public class MainTest {/*** get* 如果Optional有值则…

小学5年级计算机考试作文,小学五年级关于期末考试作文400字

小学五年级关于期末考试作文400字【第一篇】光阴似箭,日月如梭,一眨眼,一个学期马上就要过去了。期末考试将近,你准备的怎么样了?我现在正在加紧复习。我先把语文要背的内容背得滚瓜乱熟。我牢牢记住老师所说的这些话&#xff0c…

加快对接接口开发速度Json转化为实体类

1、比如,在对接淘客接口的时候,我们看到接口中给的例子返回了json数据 Json返回示例: { "code": 1, "msg": "SUCCESS", "data": [{ "id": "178", "name": &qu…

中职计算机专业课课堂教学反思,中职计算机教学反思.doc

文档介绍:中职计算机教学反思计算机专业课是计算机及电子商务专业课程的重要组成部分。本学期我担任计算机专业的《网页制作》这门课程的教学工作。这门课程对于有一定计算机基础的学生来说,动手操作能力强,通俗易懂,但老师们却普遍反映不好教,学生的学****兴趣也不…

Mysql给表添加约束

前言 这个其实很常见吧,经常我们会使用主键作为唯一约束,如果是手机用户,或者是邮箱用户进行登录,那么这个登录的字段并不是主键。在高并发,注册的时候,如果不设置唯一约束,则可能会导入两个相…

女生学计算机和遥感哪个好就业,遥感科学与技术有性别歧视吗知乎

遥感科学与技术有性别歧视吗知乎以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!遥感科学与技术有性别歧视吗知乎搞科学研究的没有性别歧视!遥感科学与技术是遥感科学与技术是在测…

Java10_var的用法

前言 package com.hlj.java10.study;import org.junit.jupiter.api.Test;import java.util.List;/*** Desc: var 局部变量的类型推断* 1、 var并不是保留字,是允许“var”作为变量名使用。* Author HealerJean* Date 2018/10/9 下午3:32.*/ public class…

Java9_模块化

前言 1、必须是java文件夹下面才可以创建module-info.java,添加两个maven。module项目。分别为one和two module one { }module two { }2、设置模块的依赖和权限 2.1、设置modulej级别为9(我的idea初始为5) 2.2、one中创建两个包和方法 packa…