简单了解CPU的工作原理

目录

一、基本结构以及对应功能

(1)基本结构

(2)几个重要寄存器的详细介绍

操作码 (Opcode)

操作数 (Operands)

指令表 (Instruction Table)

第一个:程序计数器 (PC)

第二个:指令寄存器 (IR,Instruction Register)

第三个:内存地址寄存器 (MAR)

第四个:内存缓冲区寄存器 (MBR)

第五个:累加寄存器 (ACC,Accumulator)

二、工作流程

1. 取指(Fetch)

2. 解码(Decode)

3. 执行(Execute)

4.写回(Writeback)

三、CPU的性能的评判标准(做一个补充)

1)频率

2)核心数

3)缓存

4)功耗和散热

5)工艺/架构


要了解CPU(中央处理器,Central Processing Unit)的工作原理,要先了解它的基结构。

一、基本结构以及对应功能

(1)基本结构

  • 算术逻辑单元(ALU,Arithmetic Logic Unit):负责执行所有的算术和逻辑运算。(内含多个组件
  • 控制单元(CU,Control Unit):负责从内存中获取指令、解释指令,并将控制信号发送给其他部件以执行指令。(内含多个组件
  • 寄存器:小而高速的存储单元,用于暂存数据和指令。(种类很多,等一下介绍几个常见的

(2)几个重要寄存器的详细介绍(了解即可)

想要理解CPU的工作流程,以下几个寄存器一定要有所了解。

在了解寄存器之前我们先了解一下这几个概念:

 一个指令(二进制构成,如:0010 1110等),前半段表示操作码,后半段表示操作数。

操作码 (Opcode)

  • 定义: 操作码(Opcode)是指令的一部分,用于指定CPU应该执行的操作类型。
  • 作用: 它告诉CPU应该进行什么操作,例如加法、减法、跳转、加载数据等。

操作数 (Operands)

  • 定义: 操作数(Operands)是指令的一部分,用于指定操作所需的数据或数据的位置。
  • 作用: 它们是操作码所作用的具体数据或数据的地址,可以是立即数、寄存器、内存地址等。
  • 类型:
    • 立即数: 指令中直接包含的数值,例如5
    • 寄存器: 指定一个寄存器,例如R1
    • 内存地址: 指定一个内存地址,例如0x1000
  • 示例(已经把二进制指令翻译):
    • 在指令ADD R1, R2中,R1R2是操作数。
    • 在指令MOV R1, 5中,R1是目标操作数,5是源操作数。

指令表 (Instruction Table)

  • 定义: 指令本身是一个数字,用二进制保存在内存中的某一个位置。每一个二进制数字就对应一个操作码,如图:

接下来我们正式来介绍这五个比家中要的寄存器:

第一个:程序计数器 (PC)

  • 功能: 程序计数器用于存储即将执行的指令的地址
  • 作用: 它负责跟踪程序的执行顺序,每当一条指令被取出并执行后程序计数器的值就会自动增加,指向下一条指令的地址。这样,程序计数器确保了程序的指令按正确的顺序被执行
  • 详细描述:
    1. 初始化: 当一个程序开始运行时,程序计数器被初始化为程序的起始地址。
    2. 指令获取: 在每个时钟周期,CPU会从程序计数器指定的地址取出一条指令。
    3. 自增: 取出指令后,程序计数器通常会增加(或跳转)到下一条指令的地址,除非遇到跳转指令。

***tips***:

时钟周期:

时钟周期是CPU从开始到执行完一个指令所花费的时间,因此严格意义上来讲,每个时钟周期的时间都是不一样的。


程序计数器简记技巧

功能:储存即将执行的指令的地址

作用:确保每条指令能够按预定顺序执行

第二个:指令寄存器 (IR,Instruction Register)

  • 功能: 指令寄存器用于存储当前正在执行的指令
  • 作用: 它确保CPU可以在执行期间快速访问当前指令的操作码操作数。指令寄存器使得指令的解码和执行过程更高效。
  • 详细描述:
    1. 指令加载: 当程序计数器(PC)指向的指令被取出后,这条指令会被加载到指令寄存器中。
    2. 指令解码: 在指令寄存器中存储指令的同时,指令解码器会解析这条指令,确定其操作码和操作数。
    3. 指令执行: 解析完成后,CPU根据解码结果执行相应的操作,如算术运算、数据传输等。

***tips***:

指令寄存器简记技巧:

功能:储存当前正在执行的指令

作用:使CPU能快速访问指令中的操作数和操作码,使得CPU对指令的解码和执行过程更加高效。(寄存器的访问速度非常快,不过存储容量低)


第三个:内存地址寄存器 (MAR)

  • 功能: 内存地址寄存器用于存储当前CPU正在访问的内存地址。<这一点一定要记住>
  • 作用: MAR负责在CPU和内存之间传递地址信息。当CPU需要读取或写入数据时,它会把目标内存地址加载到MAR中。

第四个:内存缓冲区寄存器 (MBR)

  • 功能: 内存缓冲区寄存器用于暂时存储从内存中读取或将要写入内存的数据。<一定要记住>
  • 作用: 它是CPU和内存之间的数据交换缓冲区。当CPU从内存读取数据或向内存写入数据时,MBR充当中间存储器。(类似于两个变量的交换,需要用到一个中间变量才能实现)

第五个:累加寄存器 (ACC,Accumulator)

  • 功能: 累加寄存器主要用于存储算术和逻辑运算的中间结果或者用于计算的数据。<要记住>
    例如A+B=C,在运算过程中累加寄存器会先后存储A、B、C

     
  • 作用: 它在算术逻辑单元(ALU)进行运算时,充当一个主要的操作数和结果存储位置。

二、工作流程(要求能够描述)

CPU的基本工作流程通常被描述为“取指、解码、执行、写回”四个主要步骤。

这些步骤共同组成了一个指令周期。以3+2=5这个程序为例:

1. 取指(Fetch)

在这个阶段,CPU从内存中获取下一条指令。

  • 程序计数器(PC):指向内存地址0x1000,其中存储着指令ADD R1, R2, R3(假设这条指令表示将R2和R3的值相加,结果存储在R1中)。
  • 取指操作:将PC的值送到内存地址总线,读取指令ADD R1, R2, R3,并将其放入指令寄存器(IR)中。
  • 更新程序计数器:PC增加,以指向下一条指令的地址(假设是0x1004)。
     

2. 解码(Decode)

在这个阶段,CPU解码刚刚取回的指令,以确定需要执行的操作和操作数。

  • 指令解码器:将IR中的指令解码为操作码(Opcode)和操作数。操作码指示这是一个加法操作,操作数R1、R2、R3指示需要的寄存器。
  • 生成控制信号:控制单元生成相应的控制信号,准备调度算术逻辑单元(ALU)和寄存器

3. 执行(Execute)

在这个阶段,CPU执行指令。

  • 读取寄存器:从寄存器文件中读取R2和R3的值(假设R2的值是3,R3的值是2)。
  • 算术逻辑单元(ALU):将R2和R3的值送入ALU,执行加法操作。ALU计算3 + 2 = 5(结果存储到ACC)。

4.写回(Writeback)

在这个阶段,CPU将执行结果写回到指定的寄存器或内存位置。

  • 结果存储:将ALU计算得到的结果5从ACC通过内存缓冲区寄存器(MBR)存入到对应内存地址。
     

虽然在人看来,一个简单的加法都要这么繁琐的步骤完成。

但是CPU的执行速度是非常快的,而且在实际情况中,同一时刻CPU可以执行多个程序(并发执行)。

因此CPU是智能系统最核心的部分。

三、CPU的性能的评判标准(做一个补充)

1)频率

频率越高,一秒中CPU运算的次数就越多。

2)核心数

现代CPU通常具有多个核心,每个核心都可以执行指令。较多的核心数意味着CPU可以同时处理更多的任务,从而提高性能。

3)缓存

CPU具有多级缓存,包括L1、L2、L3等。(1到3访问速度逐渐变慢、存储容量不断增加)缓存的作用是存储常用的数据和指令,以便CPU更快地访问。较大且更快的缓存可以提高CPU的性能。

4)功耗和散热

CPU的功耗和散热问题也会影响其性能。较低的功耗和有效的散热系统可以保持CPU在高负载下的稳定性能。

5)架构

CPU的架构决定了其指令集和内部组织结构。较新的架构通常会引入更高效的指令集和更复杂的内部结构,从而提高性能。(比如英特尔的超线程技术,AMD的zen架构


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/710019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

头歌资源库(3)爬楼梯问题

一、 问题描述 二、算法思想 假设要爬上n阶楼梯&#xff0c;我们可以将问题分解为子问题&#xff1a;爬到第n-1阶楼梯的方法数加上爬到第n-2阶楼梯的方法数加上爬到第n-3阶楼梯的方法数。 设f(n)表示爬到第n阶楼梯的方法数&#xff0c;则有递推关系&#xff1a;f(n) f(n-1…

有声读物管理平台Booksonic-Air

老苏最近在听评书&#xff0c;所以想找个软件来管理和收听&#xff0c;找了一圈&#xff0c;感觉 Booksonic-Air 可能能满足老苏的需求。 什么是 Booksonic-Air &#xff1f; Booksonic-Air 是一个用于流式传输有声读物的服务器&#xff0c;是原始 Booksonic 服务器的后继者。…

windows上运行arm32架构的安卓模拟器

说明 主要功能&#xff1a;在win10上研究和学习32位arm汇编指令的执行 环境如下 主机环境: windows10 目标模拟器环境:armeabi-v7a调试环境搭建 1、下载android studio [下载地址](https://developer.android.com/studio?hlzh-cn) ![在这里插入图片描述](https://img-blog…

RedHat9 | Mariadb数据库的配置与管理

一、实验环境 1、Mariadb数据库介绍 MariaDB数据库管理系统是一个开源的关系型数据库管理系统&#xff0c;与MySQL高度兼容&#xff0c;并提供了更多的功能和性能优化。 起源和背景 MariaDB是MySQL的一个分支&#xff0c;主要由开源社区维护。由MySQL的创始人Michael Widen…

【面试干货】Java集合类详解:List、Set、Queue、Map、Stack的特点与用法

【面试干货】Java集合类详解&#xff1a;List、Set、Queue、Map、Stack的特点与用法 1、Map1.1 特点1.2 用法1.3 常见的实现类 2、Set2.1 特点2.2 用法2.3 常见的实现类 3、List3.1 特点3.2 用法3.3 常见的实现类 4、Queue4.1 特点4.2 用法4.3 常见的实现类 5、Stack5.1 特点5.…

Springboot实现微信小程序登录功能

目录 一 什么是微信登录功能 二 实现微信登录功能的整体逻辑 三 微信登录功能实现步骤 一 什么是微信登录功能 微信小程序登录功能一般用于开发微信小程序的时候&#xff0c;我们需要使用微信授权登录我们的微信小程序&#xff0c;本篇博客就微信小程序实现微信授权登录以及s…

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[2]-简洁部署版

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[2]-简洁部署版 1.环境要求 1.1 软件要求 要顺利运行本代码,请按照以下系统要求进行配置 已经测试过的系统 Linux Ubuntu 22.04.5 kernel version 6.7其他系统可能出现系统兼容性问题。 最低要求 该要求仅针对标准模…

OpenStack入门体验及一键部署

OpenStack入门体验 技能目标&#xff1a; 了解云计算概念 了解OpenStack 了解OpenStack的构成 会OpenStack单机环境一键部署 从控制台认识OpenStack各项功能会 通过OpenStack控制台创建云主机 什么是云计算 云计算(cloudcomputing)是一种基于网络的超级计算模式&a…

Docker安装Nginx(各种错误版)

Docker安装-CSDN博客 安装启动Docker之后 docker run -d -p 81:81 --name nginx nginx 这样没有指定版本 docker run&#xff1a;启动一个新的容器。-d&#xff1a;以分离模式运行容器&#xff08;后台运行&#xff09;。-p 81:81&#xff1a;将主机的 81 端口映射到容器的 …

用Vue3和p5.js打造一个交互式数据可视化仪表盘

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 Vue.js 集成 p5.js 实现交互式波形图 应用场景介绍 在数据可视化领域&#xff0c;波形图广泛应用于展示动态变化的数据&#xff0c;如声音信号、心跳曲线等。通过动态绘制波形图&#xff0c;用户可以直观…

网络标准架构--OSI七层、四层

OSI七层网络架构&#xff0c;以及实际使用的四层网络架构。

细说ARM MCU的串口发送数据的实现过程

目录 1、条件及工程配置 2、实现串口发送的库函数 3、修改whlie(1)中的代码 4、修改回调函数 5、下载运行 前面的文章介绍了用串口的接收中断来接收数据&#xff0c;本文介绍通过串口从MCU向外发送数据。 1、条件及工程配置 文章依赖的硬件及工程配置同本文作者的其他文…

热门开源项目推荐:智谱GLM-4-9B和ChatGLM3-6B

目录 热门开源项目推荐&#xff1a;智谱GLM-4-9B和ChatGLM3-6B 1.引言 1.1 开源文化简介 1.2 开源项目的重要性 1.3 博客目的和读者价值 2.什么是开源项目&#xff1f; 2.1 开源定义 2.2 开源许可证类型 2.3 开源社区的作用 3.为什么程序员应该关注开源项目&#xff…

javaWeb项目-ssm+jsp学生请假系统功能介绍

本项目源码:java-ssm-jsp学生请假系统源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL…

HashMap底层源码分析

目录 一、知识点二、数据结构三、resize() 扩容方法四、putVal() 添加数据方法五、remove() 删除方法六、removeTreeNode() 退化链表方法 一、知识点 加载因子: HashMap 的默认的加载因子: 0.75&#xff0c;用来限定阈值&#xff08;用于控制 HashMap 的饱和度&#xff09; 阈值…

适合小白学习的项目1906java Web智慧食堂管理系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目

一、源码特点 java Web智慧食堂管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstra…

uni-app 小程序:显示图片并且点击图片展示大图

效果如图所示&#xff1a; 在页面显示一张图片&#xff0c;然后点击该张图片后显示大图。点击大图就可以关闭大图。 实现的主要代码如下&#xff1a; <image :src"imgpath" mode"aspectFill" click"imgPreview(imgArr)"></image> 其…

LeetCode | 171.Excel表列序号

这道题涉及到字符串和进制转换&#xff0c;首先我们先创建一个A-Z到1-26的map映射&#xff0c;方便我们后续遍历字符串转换&#xff0c;然后对字符串从后往前遍历&#xff0c;依次加上对应权重&#xff0c;注意越往前的权重越大&#xff0c;要记得对应乘上26的对应方数 class …

Visual Studio Code 的安装教程和配置C语言环境插件推荐

目录 1.vscode简介2.下载安装vs code3.VSCode基础配置VSCode界面简介VSCode设置中文界面VSCode个性化设置VSCode常用设置基本编辑快捷键VSCode常用快捷键 4.下载安装MinGW5.设置vscode里的环境6.插件推荐7.vscode官方文档 1.vscode简介 VSCode是微软出的一款轻量级编辑器&…

Xilinx SDK操作步骤详细介绍

在vivado设计完成后&#xff0c;下一步就是软件设计&#xff0c;与vivado相配套的设计软件是xilinx SDK(software developement kit&#xff09;&#xff0c;其操作流程如下&#xff1a; Vivado软件的bitstream文件成功生成后&#xff0c;点击File——Export——Export Hardwa…