【JavaEE】 简单认识CPU

news2024/10/1 20:16:33

🐵本篇文章将对cpu的相关知识进行讲解


一、认识CPU

下图是简略的冯诺依曼体系结构图

上图中,存储器用来存储数据,注意在存储器中都是以二进制的形式存储数据的,CPU就是中央处理器,其功能主要是进行各种算术运算各种逻辑判断

我们在计算机上运行的任何一个程序,本质上都是在CPU上运行的,接下来再结合任务管理器来对CPU进行讲解

1.1 占有率和频率

上图中,“3%” 就是CPU占有率

举个例子:假如一个人上班总时间为8小时,但他用4小时就完成了今天的工作,此时称CPU占有率为50%,计算机中运行的程序并非都是全力的工作,通过计算每一个程序的CPU占有率,最终算得的总占有率就是上图中显示的

“3.03GHz” 就是CPU频率

CPU频率用来描述CPU工作的效率,数字越大,工作效率越快,CPU频率也可以简单认为1s执行多少个指令/计算了多少次

CPU频率还有基础频率最大睿频的概念,基础频率就是CPU保底的工作效率,最大睿频就是CPU最高能达到的工作效率

1.2 核心

以前的CPU都是单核心CPU,要想提高这种CPU的性能,就必须增加其内部的集成原件的数量,那么就得让每个单位原件更小,但是并不能无限小下去,单核CPU就达到了发展瓶颈

于是就有了多核心CPU,现在的计算机大多都是多核心CPU

内核为物理核心,逻辑处理器是逻辑核心,买电脑时看到的8核 16线程就是这个意思(这里有一个简单的了解就行)

CPU是多核心的,但每一个核心的工作效率是一样的,所以在设计程序时为了提高工作效率,就得做到合理分配,把要完成的任务交给不同的核心去完成,这也就是我们后续要研究的“多线程编程”

1.3 缓存

寄存器是CPU内部存储数据的模块,在存储空间上:硬盘 > 内存 > 寄存器,在速度上:寄存器 > 内存 > 硬盘;寄存器和内存大概差3~4个数量级,内存和硬盘又差3~4个数量级,由于速度差异过大,CPU提供了缓存模块

上述CPU中有3个缓存,对于缓存数字越小,速度越快,空间越小

有些要频繁使用的数据如果存在内存中,CPU要频繁从内存中读取,这样速度会比较慢,因此可以将这些要高频使用的数据放到缓存中

CPU在读取指令时,先看缓存中有没有,如果有直接从缓存中读取,没有则从内存中读取

二、CPU如何执行指令

2.1 CPU执行指令的步骤

CPU执行指令分为3个步骤:

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

2. 解析指令

3. 执行指令

2.2 指令

指令就是指导CPU工作的命令,主要由 操作码+操作数 组成,操作码就是指令的编号,操作数就是接下来通过指令要操作的数据

下图是一个指令表:

每一个CPU被设计出来时都会提供一个指令表

2.3 CPU如何读到指令

写完一个Java程序,就会生成一个 .java 的源文件,经过编译后生成 .class 的二进制字节码文件,之后运行程序时JVM会把 .class 文件加载到内存中,在内存中进一步被翻译为CPU认识的二进制指令

写完一个C程序,就会生成一个 .c 的源文件,经过编译后生成 .exe 的二进制文件,之后运行程序时操作系统会把 .exe 文件加载到内存中,在内存中进一步被翻译为CPU认识的二进制指令


CPU中有一个专门的寄存器保存接下来要从哪个内存地址取指令(在不同的CPU中可能叫不同的名字,在有些操作系统书中称其为“程序计数器”简称“pc”

此处假设从0号地址开始读取,CPU每次读取执行完一个指令之后,就会自动把pc中的值+1,即顺序取下一条指令(有些情况会遇到跳转类指令,此时就根据设置的地址进行取地址)

接下来通过具体的操作进一步熟悉CPU执行指令的过程

2.4 模拟操作

第一轮操作:

读取指令:从0号地址读取到 00101110

解析指令:操作码:0010;操作数:1110(10进制:14),通过查询指令表该指令就是将14号地址的数据加载到A寄存器中

执行指令:将14号地址的数据:00000011(10进制:3)加载到A寄存器中

第二轮操作:

读取指令:顺序读取1号地址指令:00011111

解析指令:操作码:0001;操作数:1111(10进制:15),通过查询指令表该指令就是将15号地址的数据加载到B寄存器中

执行指令:将15号地址的数据:00001110(10进制:14)加载到B寄存器中


执行到这一步:CPU中,寄存器A:3,寄存器B:14


第三轮操作:

读取指令:顺序读取2号地址指令:10000100

解析指令:操作码:1000;通过查指令表,此处是将两个寄存器的数据求和并将求和后的数据加载到第二个寄存器,操作数:0100,此处的01 和 00 就代表两个寄存器的id,id是在CPU设计出来的时候提前约定好的,这里就假定01:B,00:A

执行指令:AB寄存器中数据求和等于17 并将其加载到A中


此时CPU中,寄存器A:17,寄存器B:14


第四轮操作:

读取指令:顺序读取3号地址指令:01001101

解析指令:操作码:0100;操作数:1101(10进制:13),通过查指令表,此处将A寄存器中的数据加载到13号地址处

执行指令:13号地址的数据:00000000 -> 00010001(17的二进制形式)

第五轮操作:

读取指令:顺序读取4号地址指令:00000000

解析指令:操作码:0000;操作数:0000,指令表中没有0000的操作码,一般认为程序运行结束

执行指令:程序退出


🙉本篇文章只是对CPU进行了大致的了解,接下来会对操作系统的相关知识进行讲解

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

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

相关文章

【保姆级教程】CenterNet的目标检测、3D检测、关键点检测使用教程

一、代码下载 仓库地址:https://github.com/xingyizhou/CenterNet?tab=readme-ov-file 二、目标检测 2.1 下载预训练权重 下载预训练权重ctdet_coco_dla_2x.pth放到models文件夹下 下载链接:https://drive.google.com/file/d/18Q3fzzAsha_3Qid6mn4jcIFPeOGUaj1d/edit …

基于 sftp 的 NAS (局域网文件存储服务器)

局域网 NAS (文件存储服务器) 的基本功能有: 能够存储文件, 同时能够通过多个设备访问 (上传/下载) 文件. 这些功能通过 sftp 可以实现. sftp 是基于 SSH 的文件传输协议, SSH 全程加密传输, 使用 公钥 认证 (不使用密码/口令), 能够提供很高的安全性. 上文说到, 在 LVM 和 bt…

存储产品选型策略 OSS生命周期管理与运维

最近在看阿里云的 云存储通关实践认证训练营这个课程还是不错的。 存储产品选型策略、对象存储OSS入门、基于对象存储OSS快速搭建网盘、 如何做好权限控制、如何做好数据安全、如何做好数据管理、涉及对象存储OSS的权限控制、使用OSS完成静态网站托管、对OSS中存储的数据进行分…

《植物大战僵尸杂交版》2.2版本:全新内容与下载指南

《植物大战僵尸杂交版》2.2版本已经火热更新,带来了一系列令人兴奋的新玩法和调整,为这款经典的塔防游戏注入了新的活力。如果你是《植物大战僵尸》系列的忠实粉丝,那么这个版本绝对值得你一探究竟。 2.2版本更新亮点 新增看星星玩法 这个新…

QT学习日记一

创建QT文件步骤 这是创建之后widget.cpp和widget.h文件的具体代码解释,也是主要操作的文件,其中main.cpp不用操作,ui则是图形化操作界面,综合使用时,添加一个元件要注意重编名和编译一下,才能在widget这类…

tomcat 项目迁移,无法将项目作为服务service启动

背景 测试服务器需要迁移到正式服务器上,为了方便省事,将测试服务器上的一些文件直接复制到正式服务器 问题 使用startup启动项目之后,可以直接使用使用tomcat9w启动,或者作为服务service启动的时候,显示无法访问到资源…

STM32 GPIO的工作原理

STM32的GPIO管脚有下面8种可能的配置:(4输入 2 输出 2 复用输出) (1)浮空输入_IN_FLOATING 在上图上,阴影的部分处于不工作状态,尤其是下半部分的输出电路,实际上是与端口处于隔离状态。黄色的高亮部分显示…

程序中的log4j、stderr、stdout日志区别

使用 databricks 的过程中,发现他将日志分为 log4j、stderr、stdout日志。了解日志是调试程序关键技能。顺着这个思路,我认真学习了一下这几个日志的区别。 目录 Java 中的日志目录结构使用log4j记录日志向标准输出和标准错误输出写信息运行结果 以pytho…

前端八股文 闭包的理解

什么是闭包 闭包是指有权访问另一个函数作用域中的变量的函数 ——《JavaScript高级程序设计》 (闭包 内层函数 引用的外层函数的变量) 下面就是一个简单的闭包 闭包不一定必须有 return 闭包不一定有内存泄漏 闭包 什么时候用到 return 就是 外部…

Flutter-实现物理小球碰撞效果

效果 引言 在Flutter应用中实现物理动画效果,可以大大提升用户体验。本文将详细介绍如何在Flutter中创建一个模拟物理碰撞的动画小球界面,主要代码实现基于集成sensors_plus插件来获取设备的加速度传感器数据。 准备工作 在开始之前,请确保在pubspec.yaml文件中添加senso…

中职网络安全Server2216

任务环境说明:✓ 服务器场景:Server2216(开放链接)✓ 用户名:root密码:1234561.黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程找出启动异常进程的脚本,并将其绝对路径作为Flag值提交…

2.17分一区文献精读:机器学习:乳腺癌预后预测的统计和机器学习模型的开发及内外部验证:队列研究-摘要

#精医求精,文献阅读 大家好,我是蔡老师,一个立志学会所有医学大数据分析模型的女子 今天我们从文献阅读开始 这篇文章的影响因子为17分,全文名称为《Development and internal-external validation of statistical and machine l…

Tensorflow之损失函数与交叉熵

损失函数:预测值与已知答案之间的差距 NN优化目标:loss最小{mse, 自定义, ce) 均方误差tensorflow实现,loss_mse tf.reduce_mean(tf.sqrue(y_-y) 预测酸奶日销量,y,x1, x2是影响日销量的因素…

什么是RPC?有哪些RPC框架?

定义 RPC(Remote Procedure Call,远程过程调用)是一种允许运行在一台计算机上的程序调用另一台计算机上子程序的技术。这种技术屏蔽了底层的网络通信细节,使得程序间的远程通信如同本地调用一样简单。RPC机制使得开发者能够构建分…

leetcode--恢复二叉搜索树

leetcode地址:恢复二叉搜索树 给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输出:[3,1,null…

Mac下flutter运行iOS模拟器

上篇flutter环境安装(Macvscode)已经将vscode和xcode等开发环境都搭建起来了,vscode新建工程还是比较方便的,那么,建立好了之后,我们怎么看效果呢? 1. vscode新建项目 通过 vscode的命令命板(…

Collection 和 Collections 的区别与用法

Collection 和 Collections 的区别与用法 1、Collection 接口1.1 主要特点1.2 常见方法 2、 Collections 工具类2.1 主要特点2.2 常见方法 3、示例代码3.1 使用 Collection 接口3.2 使用 Collections 工具类 4、总结 💖The Begin💖点点关注,收…

JAVA从入门到精通之入门初阶(一)

1. 认识变量 一、 首先变量名要遵循如下命名规则: 1. 变量名只能由字母、数字和下划线组成 2. 变量名必须以字母或下划线开头 3. 变量名大小写敏感 4. 变量名不能使用关键字,如const、static等 5. 变量名应具有描述性,以便于代码的可读性…

三级_网络技术_12_路由设计技术基础

1.R1、R2是一个自治系统中采用RIP路由协议的两个相邻路由器,R1的路由表如下图(a)所示,当R1收到R2发送的如下图(b)的(V.D)报文后,R1更新的4个路由表项中距离值从上到下依次为0、3、3、4 那么,①②③④可能的取值依次为()。 0、4、…

240709_昇思学习打卡-Day21-文本解码原理--以MindNLP为例

240709_昇思学习打卡-Day21-文本解码原理–以MindNLP为例 今天做根据前文预测下一个单词,仅作简单记录及注释。 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 𝑊_0:初始上下文单词序列𝑇: 时间步当生成EOS标签时&a…