一个简单的例子,轻松搞懂CPU的工作原理
Linux开发架构之路 2024-09-24

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

在学习 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)。


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


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


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


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


需要C/C++ Linux服务器架构师学习资料加qun579733396获取(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享


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. 继续原来的执行流



声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 处理器
  • DSP
  • CPU
  • GPU
  • STM32手册:串口流控制功能

    串口接收方CPU拿取数据的速度赶不上串口数据的通信速度时,会导致丢数据的现象。使用串口流控制功能可以解决以上问题

    11-22
  • 数字信号处理中的FIR滤波器应用

    考虑一个数字信号处理的实例,比如有限冲击响应滤波器(FIR)。用数学语言来说,FIR滤波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间作乘法,然后将所有的乘积加起来,形成一个输...

    09-12
  • 数字信号处理的模数转换与数模转换详解

    数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理的子集。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模...

    09-12
  • CXL存储器扩充对DRAM市场的影响分析

    Oct. 11, 2022 ---- 据TrendForce集邦咨询最新服务器相关报告指出,CXL(Compute Express Link)原是希望能够整合各种xPU之间的性能,进而优化AI与HPC所需要的硬件成本,并突破原先的硬件限制。CXL的支援仍是以CPU为...

    09-12
  • 微处理器运算器、寄存器与控制器的作用

    微处理器 微处理器(CPU)是计算机的核心部件,其中除了运算器和控制器外, 还包括用于暂存数据的寄存器和传输信息用的内部总线。图 1-8 为一个简化的 CPU 模型,CPU 需要通过三 总线(数据总线、地址总线和控制总...

    08-26
  • 存储器选片的常见误区

    存储器相当于我们的大脑的存储单元,能够保存我们的电子数据。为增进大家对存储器的认识,本文将对随机存取存储器、寄存器和存储器的区别予以介绍。如果你对存储器具有兴趣,不妨和小编一起来继续认真地往下阅读哦...

    08-26
  • 显示芯片的价格差异主要取决于什么因素?

    显示芯片(Display chip)是提供显示功能的芯片。显示芯片一般有两种:一种是主板板载的显示芯片,有显示芯片的主板不需要独立显卡,也是平时说的集成显卡;另一种是独立显卡的核心芯片,独立显卡通过插槽连接到主板上...

    07-18
  • 双通道内存技术的未来发展方向是什么?

    内存双通道,就是在北桥(又称之为MCH)芯片级里设计两个内存控制器,这两个内存控制器可相互独立工作,每个控制器控制一个内存通道。在这两个内存通CPU可分别寻址、读取数据,从而使内存的带宽增加一倍,数据存取速度...

    07-18
  • 芯片组在计算机中的作用是什么?

    芯片组(英语:Chipset)是一组共同工作的集成电路“芯片”,并作为一个产品销售。它负责将计算机的核心——微处理器和机器的其它部分相连接,是决定主板级别的重要部件。以往,芯片组由多颗芯片组成,慢慢的简化为两颗芯...

    07-18
  • 单片机控制系统搭建:详细步骤和注意事项

    单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示...

    07-18
  • 微处理器与传统中央处理器有何不同?

    模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。模块化用来分割,组织和打包软件。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个...

    07-18
下载排行榜
更多
评测报告
更多
广告