当前位置: 首页 > news >正文

【JavaEE】 简单认识CPU

🐵本篇文章将对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进行了大致的了解,接下来会对操作系统的相关知识进行讲解

相关文章:

【JavaEE】 简单认识CPU

🐵本篇文章将对cpu的相关知识进行讲解 一、认识CPU 下图是简略的冯诺依曼体系结构图 上图中,存储器用来存储数据,注意在存储器中都是以二进制的形式存储数据的,CPU就是中央处理器,其功能主要是进行各种算术运算和各种…...

《数字图像处理-OpenCV/Python》第17章:图像的特征描述

《数字图像处理-OpenCV/Python》第17章:图像的特征描述 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第17章:图像的特征描述 特征检测与匹配是计算机视觉的…...

考研数学什么时候开始强化?如何保证进度不掉队?

晚了。我是实在人,不给你胡乱吹,虽然晚了,但相信我,还有的救。 实话实说,从七月中旬考研数一复习完真的有点悬,需要超级高效快速... 数二的时间也有点紧张... 中间基本没有试错的时间,让你换…...

Node.js的下载、安装和配置

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

java.util.Properties类介绍

java.util.Properties 是 Java 编程语言中的一个类,用于管理应用程序的配置信息,它继承自 java.util.Hashtable 类,因此它也是基于键值对的数据结构。主要用途是存储应用程序的配置参数,比如数据库连接信息、用户设置等。 以下是 Properties 类的一些主要特点和用法: 存储…...

SpringBoot后端验证码-防止密码爆破功能

一、简介 为了防止网站的用户被通过密码典爆破。引入验证码的功能是十分有必要的。而前端的验证码又仅仅是只防君子不防小人。通过burpsuit等工具很容易就会被绕过。所以后端实现的验证码才是对用户信息安全的一大重要保障。 实现思路: 1.引入图形生成的依赖 2.生成…...

ChatEval:通过多代理辩论提升LLM文本评估质量

论文地址:ChatEval: Towards Better LLM-based Evaluators through Multi-Agent Debate | OpenReviewText evaluation has historically posed significant challenges, often demanding substantial labor and time cost. With the emergence of large language models (LLMs…...

关于美国服务器IP的几个常见问题

在租用美国服务器时,与之密切相关的一个要素就是IP,关于IP的问题总是有人问起,这里列举几项常见的问题,以供参考。 一、IP收费吗? 一般情况下,在租用服务器时,会赠送几个IP,因为这些…...

redis运维:sentinel模式如何查看所有从节点

1. 连接到sentinel redis-cli -h sentinel_host -p sentinel_port如: redis-cli -h {域名} -p 200182. 发现Redis主服务器 连接到哨兵后,我们可以使用SENTINEL get-master-addr-by-name命令来获取当前的Redis主服务器的地址。 SENTINEL get-master-a…...

价格疑云?格行WiFi创始人亲解谜团,性价比之王如何炼成?

随身wifi行业乱象频出,作为行业领跑品牌的格行随身wifi,关于价格问题一直备受质疑。关于设备上的“格行自有格行的骄傲”也被外界认定为是自大,甚至发展的线下一万多家门店也被同行不认可。近日,企业财经专访记者有幸采访了格行随…...

揭秘“消费即赚”的循环购模式

大家好,我是吴军,今天我将带您深入探索一种颠覆传统的新型商业模式——循环购模式。在这个模式中,消费者不仅能享受到购物的乐趣,还能通过消费获得实实在在的回报,甚至实现“边消费边赚钱”的奇妙体验。您是否好奇&…...

javaweb个人主页设计(html+css+js)

目录 1 前言和要求 1.1 前言 1.2 设计要求 2 预览 2.1 主页页面 2.2 个人简介 2.3 个人爱好 2.4 个人成绩有代码,但是图片已省略,可以根据自己情况添加 2.5 收藏夹 3 代码实现 3.1 主页 3.2 个人简介 3.3 个人爱好 3.4 个人成绩&#xff…...

Android常用设计模式(小白必看)

不要担心冗长,3分钟解决面试和学习问题,收藏再看 目的:当作一种模板,结合自身特点,针对项目需求来使用 目录 单例模式 特点: 实现方式: 1、饿汉式 2、线程安全的懒汉式 3、双重校验锁 使…...

swift获取app网络和本地网络权限

请求蓝牙权限: //蓝牙if #available(iOS 13.1, *) {let autostate CBManager.authorizationif(autostate .notDetermined){print("")self.manager CBCentralManager(delegate: nil, queue: DispatchQueue.main,options: [CBCentralManagerOptionShowPo…...

用LangGraph、 Ollama,构建个人的 AI Agent

如果你还记得今年的 Google I/O大会,你肯定注意到了他们今年发布的 Astra,一个人工智能体(AI Agent)。事实上,目前最新的 GPT-4o 也是个 AI Agent。 现在各大科技公司正在投入巨额资金来创建人工智能体(AI …...

ubuntu20.04系统编译yolov8-obb.cpp代码记录

任务内容 在做ncnn-yolov8-obb模型安卓端移植的过程中,对开源代码进行调试。为了确认开源代码yolov8-obb.cpp可以移植开发,先对代码进行复现。因此在linux系统下编译yolov8-obb.cpp代码,验证项目中的代码是可运行的。然后再把这个代码中的模…...

JavaScript的数组与函数

数组 <script type"text/javascript">/** 知识点&#xff1a;数组* 理解&#xff1a;一维数组的容器* 概念&#xff1a;* 1.数组中的数据叫做元素* 2.元素都有编号叫做下标/索引* 3.下标从0开始* 注意&#xff1a;* 1.数组作为数据的容器…...

opencv--把cv::Mat数据转为二进制数据的保存和读取

保存 #include <opencv2/opencv.hpp> #include <iostream> #include <fstream>void saveMatToBinary(const cv::Mat& mat, const std::string& filename) {std::ofstream ofs(filename, std::ios::binary);if (!ofs.is_open()) {std::cerr <<…...

【微信小程序开发实战项目】——个人中心页面的制作

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…...

基于MCU平台的HMI开发的性能优化与实战(下)

继上篇《基于MCU平台的HMI开发的性能优化与实战&#xff08;上&#xff09;》深入探讨了提升MCU平台HMI开发效率和应用性能的策略后&#xff0c;本文将专注于NXP i.MX RT1170 MCU平台的仪表盘开发实践。我们将重点介绍Qt for MCUs的优化技巧&#xff0c;展示如何通过实际案例应…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...