计算机硬件cpu指令执行过程,cpu执行指令的过程详解
cpu执行指令的过程详解
计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。
取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。
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算数逻辑运算单元,控制器里面又含有操作控制器,计数器,寄存器等,如下图所示:
2、第二步我们了解了cpu的内部结构之后,就比较容易理解cpu是如何执行指令的,cpu执行指令主要分为5个阶段,从取指令,导进行指令译码,执行指令,访问主存,最后回写结果,具体cpu执行过程如下图所示:
3、第三步我们首先来看cpu执行指令的一、二阶段,cpu是怎么取指令和进行指令译码,将指令先从主存里面取出,然后放到寄存器,最后进行指令译码,这样就完成cpu执行指令的一、二阶段,具体如下图所示:
4、第四步cpu执行指令的三、四阶段,首先根据指令规定的操作,完成具体功能,最后访问主存,操作数,得到物理地址,就完成了执行指令和访问主存的三、四阶段,如下图所示:
5、第五步在cpu第四阶段访问主存的时候,需要得到物理地址,具体读写过程如下图所示:
6、第六步我们也可以看一下cpu是怎么读指令的,下面是cpu的工作原理,如下图所示:
7、第七步cpu执行指令进去到了第五个阶段,也是最后一个阶段回写结果,把第三阶段执行指令的运行结果数据回写到一种存储形式,cpu这样就成功执行完了一条指令,如下图所示
计算机硬件cpu指令执行过程,cpu执行指令的过程详解相关推荐
- 计算机指令要素,【计算机系统】CPU指令执行流程与指令流水线原理
[计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...
- 【计算机系统】CPU指令执行流程与指令流水线原理
[计算机系统]CPU指令执行流程与指令流水线原理 一.指令执行流程 冯诺依曼架构CPU指令执行的五个阶段: 阶段 涉及的功能部件 IF 指令寄存器IR.程序计数器PC ID 指令译码器ID EXE C ...
- 下面的3条指令执行后,CPU几次修改IP?
下面的3条指令执行后,CPU几次修改IP? 都是在什么时候?最后IP中的值是什么? mov ax, bx sub ax, ax jmp ax 一共修改了4次. 第1次:从存储器中读取mov ax, b ...
- Android Studio CPU profiler性能分析工具介绍和使用详解
Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...
- 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解
linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...
- 【转】angularjs指令中的compile与link函数详解
这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在使用 ...
- FANUC机器人动作指令的定位类型FINE和CNT详解
FANUC机器人动作指令的定位类型FINE和CNT详解 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. FANUC机器人的定位类型,即定义动作指令中 ...
- arm 饱和指令_ARM平台下NEON使用方法详解
NEON介绍 在移动平台上进行一些复杂算法的开发,一般需要用到指令集来进行加速.NEON 技术是 ARM Cortex™-A 系列处理器的 128 位 SIMD(单指令,多数据)架构扩展,专门针对大规 ...
- PHP连接redis并执行redis相关命令的方法详解
PHP连接redis并执行redis相关命令的方法详解 连接redis库的方法 共性的运算归类 redis服务类函数 set 操作增删改查 List栈的结构,注意表头表尾,创建更新分开操作 Set,没 ...
- Pinterest 3.0 for iOS设计过程——升级iOS7设计思路详解
Pinterest 3.0 for iOS设计过程--升级iOS7设计思路详解 时间2013-12-11 11:39:31 苹果开发中文站 原文 http://www.cocoachina.com ...
最新文章
- java for与foreach_java中for和foreach的区别是什么?
- vue 心跳监控_vue websocket 加心跳
- 消息中间件NetMQ结合Protobuf简介
- 【Android】Eclipse JNI开发
- jmeter ForEach控制器学习
- Queue Explorer过期处理
- 运算符重载——算术运算符重载
- linux下select,poll,epoll的使用与重点分析
- ASP.NET MVC 第四个预览版(第一部分)
- vue点击下载图片的实现
- mac m1 obs录制麦克风+桌面音频
- 离散时间傅里叶变换(一)
- HTML学生个人网站作业设计:动漫网站设计——梦幻西游(15页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
- php中hr标签的用法,HTML: hr 标签
- nova青春版支持鸿蒙吗,华为nova青春版有NFC吗 华为nova青春版支持NFC功能吗
- java生成csr_使用Keytool工具生成CSR
- 组织行为学笔记(5)——知觉与个体决策
- 每日一题——整数除法
- pyqt_利用ScrollBar控制图片位置(实现滑动效果)
- 大力金钢机器人_大力金刚机器人(威海)有限公司