CPU工作原理概述

news2024/11/25 6:59:36

为了了解CPU的完整工作过程,我们需要知道两件事,第一,CPU是如何获取到数据或者指令的;第二,CPU是如何执行指令的。


目录

一、CPU和内存的交互方式

1、地址空间的概念

2、CPU的取值过程

二、CPU内部的执行过程

1、CPU的基本组成

2、CPU的指令执行过程


一、CPU和内存的交互方式

这里我们要从整体的角度了解CPU是如何从内存中获取到指令或者数据的。

1、地址空间的概念

一个处理器能够访问(读写)的存储空间是有限的,我们称这个空间为地址空间(寻址空间),地址空间的大小跟地址总线的数目有关。

假设有一个8G的内存,地址总线为32,那么CPU可以访问到的大小也只是 2^32 ≈ 4G。

2、CPU的取值过程

为了简化过程,假设地址总线只有2根(2 bit)。CPU要从内存中获取数据,是通过地址获取的,即通过地址总线把地址发送给内存,内存再通过数据总线将数据传递给CPU。

假设CPU要获取 0x04地址对应的数据,那么CPU就会通过地址总线发送 11,内存就会通过数据总线返回 0x04对应的数据。但是介于地址总线的数目是2,CPU可以访问的地址只能是00 ~ 11,即0x00~0x04,这也就是为什么处理器可以访问的存储空间是有限的。

二、CPU内部的执行过程

这里我们将进入CPU内部了解CPU获取到指令以后,是如何执行指令的。

1、CPU的基本组成

CPU主要由两部分组成:控制器运算器

控制器:CPU的指挥中心,控制着整个CPU执行程序的逻辑过程。比如CPU从内存获取哪条数据或指令、下一步要执行哪条指令都是由控制器决定的。

运算器:负责算术运算和逻辑运算,其核心是算术逻辑单元ALU。比如CPU从内存获取到了乘法指令,运算器拿到以后,就会运行对应的乘法单元。

2、CPU的指令执行过程

以CPU执行一条乘法运算为例,我们跳过CPU获取乘数和被乘数的过程,下面重点来介绍CPU获取并执行乘法指令的过程。CPU的指令执行分为三步:

  • 取指:从内存中获取到乘法指令
  • 译码:识别上一步获取到的指令,将指令解析成具体的运算。
    • 站在CPU的角度,它并不知道这是什么指令,如果不知道这是什么指令,也就无法将其送入到对应的运算单元进行运算。
  • 执行:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器,指令计数器中的地址会自增

(1) 取指

指令计数器PC 中每次存放着下一次执行指令的地址,CPU将地址通过地址总线发送给内存,内存通过数据总线将地址对应的内容返回给CPU,CPU将指令保存到指令寄存器IR中,这就完成了一次取指的过程。

(2) 译码

CPU现在已经拿到了要执行的指令,但是CPU并不知道这是什么指令,因此需要把指令送到指令译码器进行解析。

(3) 执行

经过指令译码器的解析,CPU知道这是一个乘法指令,于是就把这条乘法指令送到运算器的乘法运算单元,经过运算得到的结果会保存到寄存器中。

指令执行完毕以后,CPU会为下一次取数据或指令做准备,指令计数器中的地址会自增

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OceanBase-安装

文章目录部署规划机器准备统一配置hosts设置设置机器名和静态ip关闭大页配置信息查看时钟源ntp配置(需要所有机器root)磁盘规划创建用户配置limits.conf配置sysctl.conf关闭防火墙关闭SELinux克隆虚拟机差异化配置中控机设置无密码SSH登录目标机器时钟源…

【推送位置苹果群发iMessage推】如果Windows和Linux实现不同的传输层协议,那末因为数据格式的不同

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

Qt-Web混合开发-QWebEngineView加载网页最小示例(2)

Qt-Web混合开发-QWebEngineView加载网页最小示例 2🌍 文章目录Qt-Web混合开发-QWebEngineView加载网页最小示例 2🌍1、概述🌐2、实现效果🧭3、实现功能🚅4、关键代码🚚5、源代码🚀更多精彩内容&…

高斯定理的理解——工程电磁场 P2~P5

证明:静电场是无旋场 根据斯托克斯公式上式等于 电位的引入 由于静电场是无源场,我们可以得到 又因为 再结合电场的物理意义,我们可以定义 功函数表达式的化简 原先功函数表达式 高斯定律的理解 不管是导体还是电解质,对于电…

【图像处理】FAST、BRIEF、ORB算法原理

整理FAST、BRIEF、ORB算法的原理。 FAST算法 一、FAST简介 FAST(features from accelerated segment test)是一种角点检测算法,可以用于提取特征点,后来也长用于目标跟踪等计算机视觉任务中。FAST角点检测算法最初由 Edward Ro…

LL(1)文法分析程序

一、实验目的 设计一个非递归预测分析器,实现对表达式语言的分析,理解自上而下语法 分析方法的基本思想,掌握设计LL()文法分析程序设计的基本原理和方法。 根据给定LL(1)分析表,输入…

22-31-spark-核心编程-RDD概念及理解

22-spark-核心编程-RDD概念: 分布式计算基础测试: big-data-study\Spark-demo\src\main\java\spark\core\com\zh\test02 Spark 核心编程 Spark 计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的…

vscode 离线安装ssh

首先打开官方插件地址:https://marketplace.visualstudio.com/VSCode 然后输入ssh 下载这两个插件: 安装这两个插件: 这样便在windows下安装成功了ssh。 接下来需要在服务器端进行配置。 首先查看windows上的vscode版本: 这…

Arduino 崩溃或挂起的 7 种方式及如何防止

Arduino 崩溃或挂起的 7 种方式(以及如何防止它发生) 作者:Chris in Arduino 查看原文 为了帮助防止Arduino崩溃或挂起,我进行了一系列实验,以确定Arduino崩溃,挂起,重置,冻结&am…

5.大型电商项目之创建前端展示模板并调用

1. templates前端模板的使用 1.1 templates前端模板的创建 首先,我们页面很多地方是相似的,这里就创建一个基础模板,不同的地方,对模板内容的block进行修改即可;对于相同的地方,我们就使用include包含即可…

B. Hossam and Friends #837 div2

Problem - B - Codeforces 题意就是给你m个数对,这两个人不是好朋友,其他的所有人都是好朋友,问1~n里面有多少个区间里面所有数都是好朋友 分析: 这题我分析的没错,但是在计算区间的时候,想的复杂了,用模…

JS中,a标签里的javascript:;和 javascript:void(0)还有##

目录 1. javascript:;【常用】点击链接之后不会刷新页面,不会跳转链接,也不会传递参数 2. javascript:void(0) 【少用】点击链接后不会刷新页面,不会跳转链接,也不会传递参数 3. a标签中的# 点击链接后会刷新页面…

Spring Batch批处理-作业Job简介

引言 书接上篇Spring Batch 批处理入门案例解析,上篇带小伙伴们写了一个Spring Batch 入门案例解析,本篇就开始批处理正文啦,今天先对作业Job做个全面了解。 作业介绍 目前很多项目都流程的概念,比如web应用,集成应…

Java基础03_数据类型

数据类型 强类型语言 要求变量的使用要严格符合规定,所有的变量必须先定义后使用;安全性高但是速度低; 弱类型语言 例如:‘12’ 3 123 或者 ‘12’ 3 ‘123’ 在强类型语言中是有明显的区别的。而在弱类型语言中是不区分的…

算符优先分析器的构造

一、实验目的 (1)理解自底向上的语法分析的基本思想。 (2)理解算符优先文法的概念。 (4)掌握算符优先分析器的工作原理和工作流程。 (3)掌握算符分析表和优先函数的构造。 二、实验…

函数式接口

Lambda表达式的本质:作为函数式接口的实例 如果一个接口中,只声明一个抽象方法,则此接口就称为函数式接口 FunctionalInnterface public interface MyInterface{void method1(); }要想用Lambda表达式就一定要在函数式接口的条件下使用 相当于…

微信小程序直播状态接口如何获取

现如今,小程序直播非常的红火,越来越多的商家开通了微信小程序直播,但是在直播的过程中,偶尔会出现一些小问题,如禁播,异常状态等等,下面小编就来介绍一下微信小程序直播状态接口如何获取。 一、…

echarts5.4立体柱状图

资源下载&#xff1a;https://www.jsdelivr.com/package/npm/echarts 效果图&#xff1a; 借鉴资源&#xff1a;echarts 如何绘制三维 3D 立体柱状图 - 简书 代码示例&#xff1a; <!DOCTYPE html> <head><meta charset"utf-8"><title>ECh…

基于51单片机的智能小车系统设计

原理图&#xff1a; 程序运行图&#xff1a; 部分程序&#xff1a; /******************************************************************************* * 文件名称&#xff1a;main.c * 说明&#xff1a;本文件为小车控制的主函数 * 功能&…

分布式websocket探索

单体式架构 根据基于golang的gin框架开发的web项目所展开 如果一个Web项目采用单体式架构且配备了websocket通讯的功能&#xff0c;那么在单个实例中是能够正常运行的 在我的项目中&#xff0c;用户可以通过websocket来进行实时通讯和实时消息通知&#xff0c;同时如果在web业务…