理解CPU与执行指令原理

本文侧重介绍cpu的工作任务,与cpu执行指令的过程是怎么样的?

目录

1.理解CPU

1.1.CPU的功能

1.2.CPU的逻辑构成

2.认识指令

2.1.什么是指令

2.2.CPU执行指令的准备工作(重点)

3.指令的执行过程

前景知识:

 什么是计算机

就是遵循冯诺依曼体系结构。也就是由CPU、存储器、输入设备、输出设备组成的。基本基调:计算机使用二进制表示存储数据

(1)CPU(中央处理器):进行算术运算和逻辑判断

(2)存储器:用于存储数据(使用二进制方式存储)

1)存储器分成内存和外存

2)外存类型很大,其中,硬盘是典型的代表

(3)输入设备:用户给计算机发号施令的设备

网卡、蓝牙、触摸屏、键盘、鼠标、摄像头

(4)输出设备:计算机各用户汇报结果的设备。

蓝牙、网卡、触摸屏、显示屏,音响


1.理解CPU

1.1.CPU的功能

1.进行各种算术运算 2.进行各种逻辑判断

1.2.CPU的逻辑构成

1)如13%的数字:CPU的占有率。如3.36Hz:CPU的频率。如内核:核心

2)占有率:干活时间/总时间

例子:CPU像一个打工人,如果一天工作时间为8小时,但是花4小时把活做完了,剩下时间摸鱼,此时CPU的占有率为:50%

一般都不是为100%,因为在一个程序中,会同时运行着很多的程序,这些程序并不都是全力在干活

3)频率:表示工作的快慢

CPU的频率分为基础频率(最低的时候)和最大频率,一般的频率都是在不断的跳动

4)核心  

一般都是多核心,核心越多,工作效率也越快,计算机的性能也就更高。所以写在引入更多的核心,就需要各个核心相互配合工作,因此,多线程就是这么来的

2.认识指令

指令就是CPU中的一部分,下面了解CPU是怎么工作的。

2.1.什么是指令

(1)指令,可以粗略的认为是CPU在被设计的时候,给程序员提供的一些“编程接口”。所以指令≈API

(2)不同的CPU,所提供的指令不一样,但大体相同。

(3)CPU有多种架构,不同架构的CPU,支持的指令也就不一样

(4)指令=操作码+操作数(内存地址或者寄存器编号)

2.2.CPU执行指令的准备工作(重点)

指令,需要先加载到内存中,然后才能被cpu读取 

(1)执行指令的大致三步

1.读取指令(将内存中的指令数据,读取到CPU的寄存器中)

2.解析指令(分析当前的指令是做什么)

3.执行指令

寄存器是cpu中一块很小的内存空间 

(2)指令表

指令功能说明4位opcode操作的地址或寄存器
LOAD_A从RAM的指定地址,将数据加载到A寄存器00104位RAM地址
LOAD_B从RAM的指定地址,将数据加载到B寄存器00014位RAM地址
STOP_A将数据从A寄存器写入RAM的指定地址01004位RAM地址
ADD计算两个指定寄存器的数据之和,并将结果放入第二个寄存器1000

2位的寄存器ID

2位的寄存器ID

上面的0010之类的是为了区分这是一个什么操作,后面操作的地址啥的类似函数的参数

上述的指令是8位二进制数字(一个字节):前面四位用来区分是什么操作,后面四位是操作数

操作数:如果是前面三个地址,就是通过这个四位数的地址找到地址中存放的数据,这个数据才是真正的操作数。

(3)程序表

例如下面这种,需要根据下面的表执行指令操作

第二列的数据,不一定是数据,也有可能是地址。只有当程序跑起来才能知道

1)介绍PC

在cpu中有一个特殊的寄存器,用来保存接下来要从哪个内存地址(如上面的地址0-15)取指令(如地址右边的就是指令,也有可能是数据),一般称为程序计数器,简称PC

举例

 假设此时从0号开始执行,CPU每次读取执行完一个指令之和,就会自动把PC中的值进行+1,顺序的读取下一条。但是如果遇到一些跳转指令,就不是+1,就会跳转到指定的位置。

3.指令的执行过程

 第一轮操作:

默认从0号地址开始 

(1)取指令

(2)解析指令

1)先拆分

2)将操作码和指令表对照

发现0010的操作是LOAD_A,说明后面的四位数据就是地址,需要去该地址上面取出数据作为真正的操作数。

取出真正的操作数:1110为14,就需要去14号地址

 

(3)执行指令

第二轮操作:

(1)取指令

(2)解析指令

1)拆分指令

2)查询指令表

发现0001是LOAD_B的操作,后面跟着的数据就是四位数地址,需要去程序表中取出该地址上面的数据作为真正的操作数

 1111十进制为15,也就是取出15号地址的数据

(3)执行指令

第三轮操作:

(1)取指令

(2)解析指令

1)拆分指令

2)查找指令表

操作码:1000就是ADD操作,也就是把两个寄存器上面的数据进行相加,并且把结果放入第二个寄存器中。操作数:0100就是两个寄存器的编号,0100就需要拆分成01和00;按照之前约定:00就是寄存器A,01就是寄存器B

(3)执行指令

第四轮操作:

(1)读指令

指令为:0100 1101

(2)解析指令

1)拆分指令

2)查找指令表

操作码:0100就是STOP_A操作,说明后面跟着的四位数是地址;1101十进制就是13

(3)执行指令

第五轮操作:

(1)取指令

(2)解析指令

0000 0000的指令在指令表中没有,但是默认为结束程序的意思

(3)执行指令

退出程序

上述指令的操作,都是在cpu中执行的

实际应用场景:

当一个不能挂的服务器发生bug时,可以写入特定的程序,是可以修改服务器的内存数据的。直接写到指定的内存中,并且修改原有的服务器指令中的逻辑,插入跳转指令,跳过bug。

也就是写入跳转指令,当执行到bug指令前,让程序跳转过去,进而避免发生bug,这种操作称为热补丁

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云部署宝塔,设置了安全组还是打不开。

1.在安全组是开放正确的端口好。8888要开,但是不只是开放8888,举个例子,https://47.99.53.222:17677/49706cf7这个,要开放17677这个端口号。 2.安全组要挂载到实例上,从三个点的进入点击管理实例,加到对应的…

深入聊聊企业数字化转型这个事儿

01 什么是数字化? 聊数字化,就不得不聊聊信息化、智能化。佛性的说:信息化是数字化的前世,智能化是数字化的来生!我习惯用一个结构化的图形来表示事物之间的关系,信息化、数字化、智能化的关系如下&#…

[flask] flask的基本介绍、flask快速搭建项目并运行

笔记 Flask Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、…

JVM本地方法

本地方法接口 NAtive Method就是一个java调用非java代码的接口 本地方法栈(Native Method Statck) Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或…

想做抖音小店又不会该怎么办?先学会做店出单逻辑,再入门

大家好,我是电商花花。 现在在这个巨大的电商市场中,很多人都被电商的巨大红利给勾起来了,在这个抖音小店的黑马项目中,很多人都在其中赚钱获利,吸引了一批又一批商家。 相信现在对电商感兴趣的仍不在少数&#xff0…

Navicat BI 工具 | 连接数据

早前,海外 LearnBI online 博主 Adam Finer 对 Navicat Charts Creator 这款 BI(商业智能)工具进行了真实的测评。上一期,我们介绍了这位博主对 Navicat BI 工具的初始之感。今天,我们来看看从连接数据的角度&#xff…

Tomcat 下载以及安装

Tomcat安装及配置教程主要分为四步: 步骤一:首先确认自己是否已经安装JDK 1. cmd:查看java的版本 步骤二:下载安装Tomcat 1. 下载tomcat :Apache Tomcat - Welcome! 2. 选择对应的tomcat版本: 3. 进行安装&#…

C# 登录界面代码

背景 MVVM 是一种软件架构模式,用于创建用户界面。它将用户界面(View)、业务逻辑(ViewModel)和数据模型(Model)分离开来,以提高代码的可维护性和可测试性。 MainWindow 类是 View&a…

38 mars3d 对接地图图层 绘制点线面员

前言 这里主要是展示一下 mars3d 的一个基础的使用 主要是设计 接入地图服务器的 卫星地图, 普通的二维地图, 增加地区标记 基础绘制 点线面园 等等 测试用例 <template><div style"width: 1920px; height:1080px;"><div class"mars3dClas…

【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT

【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPT 文章目录 【论文笔记】RobotGPT: Robot Manipulation Learning From ChatGPTAbstractI. INTRODUCTIONII. RELATED WORK1. LLMs for Robotics2. Robot Learning III. METHODOLOGY1. ChatGPT Prompts for Robot …

【leetcode】双“指针”

标题&#xff1a;【leetcode】双指针 水墨不写bug 我认为 讲清楚为什么要用双指针 比讲怎么用双指针更重要&#xff01; &#xff08;一&#xff09;快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数…

我们常用Linux命令总结

Linux作为一种自由和开放源代码的操作系统&#xff0c;广泛应用于各种计算机系统中&#xff0c;尤其是服务器环境。在Linux系统中&#xff0c;命令行是管理和操作系统的主要方式之一&#xff0c;熟练掌握常用的Linux命令对于系统管理员、开发人员和其他使用者来说都是至关重要的…

HDLBits刷题Day28,3.2.5.14 3.2.5.14 one-hot FSM

3.2.5.14 one-hot FSM 问题描述 给定以下具有 1 个输入和 2 个输出的状态机&#xff1a; 假设此状态机使用 one-hot 编码&#xff0c;其中state[0]到state[9]分别对应于状态 S0 到 S9。除非另有说明&#xff0c;否则输出为零。 仅实现状态机的状态转换逻辑和输出逻辑部分。您在…

Jsonpath - 数据中快速查找和提取的强大工具

JSON&#xff08;JavaScript Object Notation&#xff09;在现代应用程序中广泛使用&#xff0c;但是如何在复杂的JSON数据中 查找和提取所需的信息呢&#xff1f; JSONPath是一种功能强大的查询语言&#xff0c;可以通过简单的表达式来快速准确地定位和提取JSON数据。本文将介…

Spring boot2.X 配置https

背景 最近项目组说要将 http 升级成 https 访问&#xff0c;证书也给到我们这边了&#xff0c;当然我们这边用的是个二级域名&#xff0c;采用的是通配符访问的方式&#xff0c;比如一级域名是这样&#xff08;com.chinaunicom.cn&#xff09;&#xff0c;我们的则是&#xff0…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器&#xff0c;可以提高 cs…

【面试】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f; Elasticsearch是一个分布式搜索和分析引擎&#xff0c;它在Linux环境下的性能和稳定性可以通过一些优化方法进行提升。以下是一些针对Linux环境下Elasticsearch部署的优化方法&#xff1a; 1. 内…

一文搞懂大疆机场kmz航线和图新地球导出的kmz的区别

0序&#xff1a; 近期有用户问“ 把KML文件放到图新后&#xff0c;想转出来KMZ&#xff08;大疆的机场用的格式&#xff09;但是转出来的KMZ显示格式不对 ” 之前只是知道大疆的航线规划采用的是kml规范&#xff0c;但具体是什么样并不清楚。就这这个问题把这个事情给弄明白。…

京东电商数据采集的三种方式|电商数据API接口实时数据采集

要实现电商的数据分析&#xff0c;电商数据采集是很重要的一环。电商数据采集要分几个步骤完成&#xff1f;每个步骤的意义是什么&#xff1f;每个步骤分别需要怎样的技能&#xff1f;今天这篇文章告诉你。 电商的数据通常需要通过数据采集的方式获得。电商数据采集方法共分为…

Java入门之数据类型

一、数据类型 基本数据类型 &#xff08;1&#xff09;如果要定义“long类型的变量要在数值后面加一个L作为后缀” &#xff08;2&#xff09;如果要定义float类型的变量的时候数据值也要加一个作为后缀 小结&#xff1a; 练习 内容&#xff1a; 姓名&#xff1a;巴巴托斯 &…