文章目录

概述

CPU的工作过程

CPU指令的执行流程

一、取指令阶段

二、指令译码阶段

三、执行指令阶段

四、访存取数阶段

五、结果写回阶段

CPU的指令周期

一、指令周期

二、CPU周期(机器周期)

三、时钟周期

举例说明

总结


概述

作为程序员,必不可少的会和计算机打交道,那么了解计算机的核心”CPU“,对于我们编写程序还是有好处的。前文讲述了一些CPU的基础知识,那么本文带大家简单了解下CPU的执行过程,有助于了解CPU的特性。

CPU的工作过程

CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。

CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,紧接着又去取指令,译码,执行指令……,如此周而复始,反复循环,使得计算机能够自动地工作。除非遇到停机指令,否则这个循环将一直进行下去。

CPU指令的执行流程

几乎所有的冯•诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数和结果写回。如下图所示:

一、取指令阶段

取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。

程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增:若为单字长指令,则(PC)+PC;若为双字长指令,则(PC)+2PC,依此类推。

二、指令译码阶段

取出指令后,计算机立即进入指令译码(Instruction Decode,ID)阶段。

在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取操作数的方法。

在组合逻辑控制的计算机中,指令译码器对不同的指令操作码产生不同的控制电位,以形成不同的微操作序列;在微程序控制的计算机中,指令译码器用指令操作码来找到执行该指令的微程序的入口,并从此入口开始执行。

三、执行指令阶段

在取指令和指令译码阶段之后,接着进入执行指令(Execute,EX)阶段。

此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的操作。

四、访存取数阶段

根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数(Memory,MEM)阶段。

此阶段的任务是:根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。

五、结果写回阶段

作为最后一个阶段,结果写回(Write Back,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式。

结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取;

在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。

在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将顺序取出下一条指令。

许多新型CPU可以同时取出、译码和执行多条指令,体现出并行处理的特性。

CPU的指令周期

一、指令周期

CPU取出一条指令并执行该指令所需的时间称为指令周期。

指令周期的长短与指令的复杂程度有关。

二、CPU周期(机器周期)

指令周期常常用若干个CPU周期数来表示。

由于CPU内部的操作速度较快,而CPU访问一次主存所花的时间较长,因此通常用从主存读取一条指令的最短时间来规定CPU周期。

CPU周期也称为机器周期。

三、时钟周期

一个CPU周期包含有若干个时钟周期。

时钟周期是处理操作的最基本时间单位,由机器的主频决定。

一个CPU周期的时间宽度由若干个时钟周期的总和决定。

举例说明

我们举一个非常基本的示例,不需要使用非常复杂的外部设备。我们要使用的第一个是时钟。随着时间的流逝,我们的CPU经历了所谓的“提取执行”周期,或“提取-解码-执行”。

在CPU中,我将有三个寄存器。这些是快速存储的部分,CPU保留其当前正在处理的值。它们是跟踪我们的指令周期的寄存器。

另一个从内存加载我们的指令。

和一个累加器。

我们简化计算机中需要的最后一个组件是RAM,RAM是内存设备组件,可以方便我们读取指令和存放一些计算后的结果数据。

这就是我们的一个简单计算机。

我们运行一个简单的程序。它要做的就是数数。处理器分为三个步骤:提取,解码,执行。它只会循环重复这些。所以我们需要一些指令,实际上指令是放在内存中,因此,让我们将程序加载到RAM中。RAM还用于存储我们的答案和输出。这些都将以二进制形式存储,但现在不要让事情变得过于复杂,让它们易于阅读。

指令分为两部分。第一部分是指令本身。

第二部分通常是一个内存地址。

在每个时钟滴答声中,CPU都会执行以下三种操作之一:

  1. 从内存地址中获取一条指令。
  2. 解码该指令。
  3. 执行指令。

一圈又一圈地循环。因此,它将增加计数。我们将从数字开始,并一遍又一遍地添加。

一个时钟的滴答声。程序计数器设置为0。

因此,CPU提取了内存中地址0处的指令, 并将其放入指令寄存器。

一个时钟的滴答声。CPU进行解码操作。第一部分是指令, 第二部分是位置。在我们的例子中,指令是LOAD,地址是6。因此,我们将把地址6中的值加载到累加器中。

一个时钟的滴答声。CPU进行执行操作。他读取Ram上面内存地址为6个值,并将值放到累加器中,例子中内存地址为6的值为1,所以把1放到累加器中。

一个时钟的滴答声。CPU再次进行Fetch操作,程序计数器+1, CPU会在内存的下一个位置获取下一条指令。

一个时钟的滴答声。CPU再次进行解码操作。

一个时钟的滴答声。CPU再次执行操作。因为累加器里面已经有值,则累加RAM内存地址为7中的数据。

一个时钟的滴答声。CPU再次进行Fetch操作,程序计数器+1, CPU会在内存的下一个位置获取下一条指令。

一个时钟的滴答声。CPU再次进行解码操作。

一个时钟的滴答声。CPU再次执行操作。把累加器中的值写入到RAM内存地址为6的位置上去。

一个时钟的滴答声。CPU 读取操作,程序计数器+1, CPU会在内存的下一个位置获取下一条指令。

一个时钟的滴答声。CPU进行解码操作。

一个时钟的滴答声。CPU执行操作。因为是跳转指令,又会跳转RAM内存地址1,写入程序计数器。

以此往复一直累加,累加后的结果放到内存地址为6的空间中去。因为我们的程序没有暂停命令,所以会一直循环的读取-解码-执行的做下去。

总结

本文简单介绍了CPU执行流程,作为软件从业人员必不可少会和CPU打交道,比如CPU有流水线技术,传统的是三级流水线。那么是否流水线的层级越多越好呢,什么情况下会影响CPU流水线的执行。CPU是一个复杂的东西,后续会出一系列文章来讲解它,理解了它,可以让我们编写的程序具有更好的执行性能。

参考资料

  • https://liam.page/2017/01/17/layers-and-operation-system/
  • https://www.youtube.com/results?search_query=How+does+CPU+execute+program
  • https://cs.nju.edu.cn/swang/CompArchOrg_13F/slides/lecture23.pdf
  • https://baike.baidu.com/item/指令周期
  • http://c.biancheng.net/view/3456.html
  • https://www.youtube.com/watch?v=FRCXF1Sak7s

分享大数据行业的一些前沿技术和手撕一些开源库的源代码
微信公众号名称:技术茶馆
微信公众号ID    :    Night_ZW

【硬件设备】CPU系列之工作流程相关推荐

  1. CPU的基本工作原理

    程序 = 指令 + 数据 只有指令,才最终在运行阶段,被运行程序的计算机的CPU去执行 1.CPU的组成 (1)ALU(算术逻辑单元) 算术:加法 减法 乘法 除法 取余 逻辑:与 或 非 需要利用到 ...

  2. DNS是什么?DNS的工作流程

    79. DNS是什么? DNS(Domain Name System)是一种用于将域名解析为相应IP地址的分布式命名系统,了解DNS对于理解域名解析原理和优化网络请求非常重要.本篇文章将介绍DNS的概 ...

  3. 计算机组成之cpu组成及工作原理

    计算机由五部分组成,分别为存储器,控制器,运算器,输入设备和输出设备. 早期的处理器(CPU)是由控制器和运算器组成,而现代的CPU为了提升性能则在早期CPU的基础上增加了内部寄存器,用来暂时存放参与 ...

  4. 【硬件设备】CPU系列之基础知识

    ​目录 概述 指令集 一.复杂指令集(CISC) 二.精简指令集(RISC) 三.复杂指令集与精简指令集区别 CPU的架构 一.X86 CPU架构 二.ARM CPU架构 三.MIPS CPU架构 四 ...

  5. 基于Intel 集成显卡的 FFmpeg 调用 VAAPI 硬件解码零数据拷贝链接推理引擎工作流程的实现

    概述 在视频处理流程中,视频的解码通常在 CPU 中进行,若用户需要使用集成显卡进行深度学习推理,解码数据需要从 CPU的缓存中拷贝至集成显卡中进行推理.本文旨在通过集成显卡进行硬件解码,使用FFmp ...

  6. 企业直播该如何做?硬件设备、网络环境、设备连接和观看权限等整个直播流程教程

    这是一份面向直播新手的企业直播说明教程,字数较多,完整看完,可能会需要求10分钟,建议您可以[收藏],如果本文章对您有帮助,就帮助[点个赞]吧~~~ 阿酷TONY  / 2023-5-12  / 原创 ...

  7. 等保系列之——网络安全等级保护测评:工作流程及工作内容

    一.网络安全等级保护测评过程概述 网络安全等级保护测评工作过程包括四个基本测评活动:测评准备活动.方案编制活动.现场测评活动.报告编制活动.而测评相关方之间的沟通与洽谈应贯穿整个测评过程.每一项活动有 ...

  8. 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程

    [大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...

  9. 【Git 教程系列第 5 篇】Git 的工作流程

    这是[Git 教程系列第 5 篇],如果觉得有用的话,欢迎关注专栏. Git 工作流程 第一步:克隆 Git 资源(远端仓库)作为工作目录. 第二步:在克隆的资源上添加或修改文件(如果其他人修改了,你 ...

最新文章

  1. 生物信息大数据数据库(NCBI、EBI、UCSC、TCGA)
  2. 分享:个人是怎么学习新知识的
  3. 微信小程序项目重构之Redux状态管理
  4. 程序员之提升开发效率非常实用的十个工具网站分享
  5. Java当中包装类的理解和一些常用方法的分享(学习后分享)
  6. Spring Boot和应用程序上下文层次结构
  7. 数据分析的流程是啥样?
  8. 无孔不入的微软---史前恐龙
  9. .net core 获取binary 文件_7.2 获取文本数据_Csv.Document
  10. 百度云安装WordPress,提示数据库连接错误!
  11. GPS坐标转换(一)-基础知识
  12. 如何使iframe透明
  13. 游戏安全02:手游外挂简单分类和实现原理介绍
  14. C++ 基础练习 圆的面积
  15. js特效--移动的广告窗
  16. mysql远程备份_mysql实现自动远程备份一办法
  17. 关闭Xshell系统提示音 Tab键 Backspace键
  18. 编程珠玑番外篇之番外篇-O 中间语言和虚拟机漫谈(ZZ)
  19. 电脑用计算机软件一直闪退,电脑软件打开后闪退或崩溃的解决办法
  20. 如何在os x或ubuntu下安装最新的ruby

热门文章

  1. 百度杯大学生计算机比赛,百度携手安全专家 打造网络安全顶级赛事
  2. 【YOLOV5-5.x 源码解读】metrics.py
  3. RT-thread SPI SFUD读写W25Q128
  4. 交换机登录方式(Telnet方式)
  5. android cordova原理,android 集成Cordova
  6. 使用Calendar加一天,减一天
  7. P4070 [SDOI2016]生成魔咒(SAM)
  8. spring-transaction源码分析(1)概述和事务传播级别
  9. PHP5.6升级PHP7总结
  10. caffe cmake