CPU 工作原理(附详细图解)

news/2024/11/6 5:45:19/

🌸学习目标🌸

本章我们将从软件工程师的角度去了解计算机是如何工作的,通过对计算机核心工作机制的学习,有利于理解我们平时编程时的一些行为,动作的历史渊源。

在学习 CPU(中央处理器)之前,我们先来简单的了解一下💻计算机💻的发展历史。

让我们一起出发吧!!!😀😀😀

一. 计算机发展史

计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。计算机的发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。

冯诺依曼体系(Von Neumann Architecture)

约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家,计算机科学家,物理学家,是20世纪最重要的数学家之一。冯·诺依曼是罗兰大学数学博士,是现代计算机,博弈论,核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。

现代的计算机, 大多遵守 冯诺依曼体系结构。

  • CPU,即中央处理器,是一台计算机的运算核心和控制核心。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器、寄存器、高速缓存及实现它们之间联系的数据、控制及状态的总线构成
  • 存储器分为外存和内存, 用于存储数据(使用二进制方式存储)
  • 输入设备,用户给计算机发号施令的设备
  • 输出设备,计算机个用户汇报结果的设备

二. CPU 的基本工作过程

CPU = ALU ➕ CU 

ALU 算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。

CU 控制单元(Control Unit):负责程序的流程管理。控制单元是整个 CPU 的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)三个部件组成,对协调整个电脑有序工作极为重要。

 我们用一个例子来说明一下:假设 CPU 是一个工厂,一个核心就是工厂的一个车间

那么运算器 就是工厂里的普工,只负责生产(运算)

而 寄存器 呢,就是一个工具人,有时需要传递信息(数据),有时需要搬运物资(数据)。

控制器则是车间主管,管理调剂所有普工和工具人,压榨他们的劳动价值。

直到有一天,工厂发现一个车间(核心)效率不够,就只能增加车间(核心)来提高整个工厂效率。 

但是,渐渐的,又有新问题出现,工具人虽然效率高,但是数量不多,而随着越来越多的原材料(数据)涌入,工具人搬不过来。这时工厂就整了一个小板车(cache),专门用来运输、寄存工具人搬不过来的数据,而且各工厂可以共享其中一部分(intel 的 L3 cache)。

随着车间数量(核心数目)增加到八,工厂发现有些时候出货量挺高的(全车间都开工),但有些时候只有一两个个车间开工,其它车间都在围观(调度问题)。

而且整个工厂一起开工,用电量和发热量也急剧上升,但是各车间的效率(频率)就是上不去,此外,还要担心电力供给、散热、物资(数据)运输等各类问题。

终于,在投入了大研发后,工厂的厂房布局设计(架构)有了大改进。

各部门之间的交通更便利了;并且,工厂也重新招聘短小精悍的工人(提升制程工艺),将以前那种牛高马大,光吃不干的大块头全部淘汰了。至此,同样大的车间,能融入更多的工人干活了,而且短小精悍的工人,吃的饭还少(功耗低)。

CPU的工作过程

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

 CPU指令的执行流程

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

程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增。

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

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

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

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

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

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

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

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

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

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

CPU 的中断模式(Interrupt Mode)

在正常情况下,CPU 可以顺序执行,也可以分支执行。但总归是按照既定顺序去执行。

但现实中,很多时候,需要暂时中断 CPU 的当前执行流,先让 CPU 去做点其他的工作,再回头来继续原来的执行流。

 CPU 硬件中提供了一种机制(中断)让 CPU 停下:

  1. 保存当前的 PC 的值到内存的某个位置
  2. 修改 PC 的值,让执行其他执行流
  3. 其他执行流执行结束之后,通过将刚才保存的 PC 值恢复到 PC 寄存器
  4. 继续原来的执行流

http://www.ppmy.cn/news/254385.html

相关文章

2023/6/6总结

CSS 如果想要实现背景颜色渐变效果&#xff1a; left是从左边开始&#xff0c;如果想要对角线比如&#xff0c;左上角就是left top&#xff0c;渐变效果始终是沿着一条线来实现的。 下面是跟着视频教学用flex布局写的一个移动端网页&#xff1a; html代码&#xff1a; <!…

操作系统死亡启示录

操作系统死亡启示录 文 | itlaoyou-com&#xff0c;作者 | 曹亦卿 以斗争求和平&#xff0c;则和平存。以妥协求和平&#xff0c;则和平亡。 规律不因时代变迁而失效。一代伟人从战争与炮火中总结出的道理&#xff0c;在和平时期的经济与科技博弈中再一次展现智慧。 美国贸…

我们都是IT民工---------流浪人IDE开发札记

你生命中的有些东西终究会失去&#xff0c;比如我住了6年的陈寨&#xff0c;这个聚集了郑州十几万IT民工的地方&#xff0c;说拆就拆了。再比如我玩了3年的坦克英雄&#xff0c;这个带给我太多快乐的游戏&#xff0c;说停就停了。 编程对我而言是种爱好&#xff0c;我上学6年&a…

29.html5 移动端开发总结

手机与浏览器 浏览器: 移动端开发主要针对手机&#xff0c;ipad等移动设备&#xff0c;随着地铁里的低头族越来越多&#xff0c;移动端开发在前端的开发任务中站的比重也越来越大。各种品牌及尺寸的手机也不尽相同。尺寸不同就算了分辨率&#xff0c;视网膜屏 自动的各种内核的…

人类已经无法阻止苹果了——吐槽PC厂商

纯吐槽&#xff0c;不喜请点浏览器页面标签上的X——什么&#xff1f;你的浏览器窗口不能分页&#xff1f;请猛按机箱上的电源开关吧&#xff0c;用这么OUT的浏览器还是不要上网为好。 摘要&#xff1a;本文主要谈谈传统PC厂商的问题&#xff0c;特别是在当前这个移动时代&…

还在寻找一款DVD全能转换器吗?WinX DVD Ripper for Mac它不香吗?

适用于Mac的WinX DVD Ripper &#xff08;V6.2.0 Dec-13-2018&#xff09;备份和翻录DVD到Mac iTunes iPhone iPod iPad Android具有顶级质量适用于Mac的WinX DVD Ripper是一款多功能的Mac DVD开膛手&#xff0c;旨在将DVD或DVD ISO 翻录为 Mac上所有流行的视频格式&#xff0c…

2012年10大科技产品

北京时间10月24日消息&#xff0c;据国外媒体报道&#xff0c;虽然距离2013年还有将近2个月的时间&#xff0c;但是大部分科技产品已经推出了&#xff0c;还有一部分将会在11月推出&#xff0c;以迎接年底的购物黄金时期。下面是本文总结的2012年已经发布&#xff0c;并且对科技…

app解析不会执行js代码_JS解析和执行时间

app解析不会执行js代码 At Velocity NY, Daniel Espeset of Etsy gave a great talk about how Etsy profiles their JavaScript parse and execution time. Even better, after the talk, they released the tool on GitHub. 在纽约Velocity&#xff0c;Etsy的Daniel Espeset进…