计算机组成入门知识

  前言👀~

数据库的知识点先暂且分享到这,接下来开始接触计算机组成以及计算机网络相关的知识点,这一章先介绍一些基础的计算机组成知识

一台计算机如何组成的?

存储器

CPU

cpu的工作流程

主频

如何衡量CPU好坏呢?

指令

操作系统

操作系统功能

操作系统"内核" 


如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,如果内容有什么问题的话,欢迎各位评论纠正 🤞🤞🤞

12b46cd836b7495695ce3560ea45749c.jpeg

个人主页:N_0050-CSDN博客

相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客


一台计算机如何组成的?

cpu(控制器和运算器等)、存储器(主存和辅存)、输入设备、输出设备


计算机工作流程:这里我简单举个例子去描述,你用鼠标点开了一个游戏(指令和数据),存储到存储器当中(从外存中加载到内存中),然后cpu从存储器中取出指令对其解码后进行运算,再传回存储器然后由输出设备进行输出显示到你的电脑上

存储器

提到存储器就可以想到内存和外存

内存:通常指的是随机存取存储器,一种主存储器,读写速度快,存储容量小,主要存储计算机正在执行程序和数据(程序执行的时候需要先放到内存当中才能被cpu处理),当你打开一个程序,操作系统会将这个程序从外存中被加载到内存当中,以便cpu快速访问和执行。另外内存属于易失性存储器,断电的时候数据会丢失

内存的作用:

存储临时数据:内存用于存放计算机在运行过程中需要快速访问和修改的临时数据。例如,当你运行一个程序时,这个程序的代码和数据会被加载到内存中,以便CPU快速访问和执行。

提高程序运行效率:操作系统和应用程序执行的时候,其指令和数据会存储到内存当中,因为内存具有快速读写的能力

缓存功能:内存可以作为缓存(主存和辅存之间),以减少访问外存的频率也就是减少访问硬盘的频率这样会节省不少的开销,当数据第一次从外存中加载到内存当中之后,下次再访问相同的数据的时候,我们直接从内存中进行读取即可,这样能提升我们的访问速度。就比如我们打开一个游戏第一次从外存中加载到内存中(第一次打开这个游戏的过程是不是很慢),我们只要没有关掉它,你再次点击它又回到游戏(这里游戏已经加载到内存中了,你不需要再从外存中读取,再次点击的时候立马回到游戏)


内存的工作原理:

1.加载程序:当我们运行一个程序时,操作系统会将这个程序从外存中被加载到内存当中,这个程序包括可执行文件、相关的数据文件等等

2.CPU访问:cpu通过地址总线快速访问内存中的指令和数据,内存通过数据总线和地址总线和cpu进行通信,快速提供所需数据

3.执行指令:cpu从内存中读取到指令和数据然后去执行这些指令

4.数据交换:cpu处理了这些指令把结果传回内存,内存中的数据发生变化,会临时存储在内存当中直到程序结束明确保存到外存中。

外存:是一种辅助存储器,读写速度慢,存储容量大,主要用于长期存储我们的文件和数据,例如我们的硬盘就是外存,我们会把文件存储在当中。程序运行的时候我们把外存的数据复制到内存,可以把内存看作是外存的高速缓存。硬盘属于非易失性存储器,即使断电我们的文件和数据依然保存在硬盘当中,确保数据的持久性


CPU

CPU中央处理器,就是那块小小的硬件,属于计算机的核心也可以理解为是计算机的大脑,负责处理各种指令,它是由寄存器、运算器(ALU)、控制器组成

加快CPU访问速度:在cpu内部有个高速缓存存储器,也称Cache读写速度比内存还快的存储器,当cpu向内存写入数据,Cache中也会存储,当cpu需要读取这些数据时,这些数据会从高速缓存中读取这些数据(可以这么理解Cache 中的内容是主存中部分内容的副本


Cache又分一级缓存、二级缓存、三级缓存,一级缓存离cpu最近,一级缓存又可以分一级数据缓存和一级指令缓存,一个用于处理数据一个用于对这些数据的指令进行解码,并且两者都能被cpu同时访问,提到了cpu的效率

寄存器:通用寄存器主要负责存储临时的数据和指令,记住cpu拿数据不是直接从内存中拿的,是通过寄存器中获取的

运算器:也称算术逻辑单元(ALU),算术逻辑单元呢又是由算术单元和逻辑单元组成的。算术逻辑单元主要就是负责计算的一个部件

控制器:也称控制单元(CU),控制单元由指令寄存器(IR)、指令译码器(ID)、程序计数器(PC)、操作控制器(OC)、时序产生器组成,可以把它理解为你的上司,它指东你就得往东走,你不能往西走。是cpu的指挥中心,指挥cpu中的各部件按照指令进行工作的部件

指令寄存器:存储当前要执行的指令

指令译码器:对指令进行解码(翻译)

程序计数器(寄存器):存储下一条要执行的指令的地址


cpu的工作流程


1.取指令:首先从程序计数器中得到指令的地址,接着去内存中取指令,然后存储到指令寄存器当中。

2.译指令:从指令寄存器当中取出指令,指令译码器对其进行解码,确定是什么类型的指令以及需要哪些操作数

3.执行指令:如果需要操作数的话cpu会从内存或寄存器当中取操作数(这里可以再细分一个阶段),接着运算器执行解码后指令的操作

4.写回:处理后的结果存储在cpu内部寄存器中,有些情况下会将执行后的结果写回到内存当中。写回阶段的作用就是将数据存储到正确的位置,以便后续指令使用

5.更新pc:当一条指令被取出后,程序计数器会增加(表示下一条要执行的指令的地址)

cpu中断机制:中断顾名思义暂时停止当前的活动,cpu中断分为硬件中断(硬件设备鼠标、键盘点击触发的)和软件中断(软件指令触发的,如系统调用)。举个例子比如我们在玩游戏的时候,女朋友发消息过来你直接切到微信回消息后又继续游戏了,在切微信再切回游戏这个过程简单点说向cpu发起中断请求然后通过上下文完成中断,举个例子你在吃饭然后突然女朋友打电话叫你去接她,你先把这个吃饭的地方的地址记住然后去接她过来然后接着吃饭

上下文信息:保存寄存器、程序计数器等当中的信息

主频

图中的2.90GHz是CPU的主频,可以理解为一秒钟cpu可以执行29亿条指令(不严谨),方便理解,图中的只是个下限,任务管理器可以看到实时主频,主频会根据当前的任务的负载程度,不断变化

当前频率,睿频,也有上限,根据CPU决定越好上限越高
 


如何衡量CPU好坏呢?

最关注的指标有两方面,一个是主频、一个是核心数

最开始CPU都是单个核心(核心可以理解为一个能完成完整计算功能的整体,是由很多的计算单元构成的),然后通过提高集成程度,提高cpu的速度。不断的减小计算单元的体积,然后提高集成程度从而提高cpu的速度,但是体积小到一定程度不能再小了这是就限制住了,现在都是多核心,去提高cpu的速度

举个例子可以把起初的cpu理解成一个小工厂,只有一个车间(单核),车间里的员工负责生产工作(运算器),车间里比员工还牛马的负责搬运工作或者传送信息(寄存器),车间里喊你干活叫你别偷懒指挥你的(控制器)。随着车的销量上去了,但是效率没上去,于是老板就多搞了好多个车间(多核),这样效率就上去了。但是又出现一个问题材料的不断增多(高并发),牛马搬不过来了。于是工厂搞来了手推车(Cache)减轻了这个问题



指令

cpu上能够执行的任务的最小单元(最小单元由 二进制 的方式表示的机器语言)

 指令=操作码+地址码

指令周期是指执行一条指令所需的时间,它通常由若干个机器周期组成。

一个cpu设计的时候,会提供一些可以进行的操作就是支持哪些指令,比如加法指令、读取内存指令、写入内存指令等,这些是cpu能够执行任务的最小单元,执行其他任务的时候都是由这些最小单元构造的

怎么说呢?你给cpu发送一个任务,例如让它帮你去接杯水,得先去拿杯子,去哪里拿呢?要一步一步说清楚说的很细很细,然后去哪里接?也要一步一步说清楚说的很细很细。可以把这一步一步很细致的过程理解为一系列最小单元的指令,通过执行这些最小单元指令,CPU才能逐步完成整个任务


操作系统

操作系统是管理计算机硬件与软件资源的程序/软件

例如Windows10、Windows11、Linux、mac os、ios、Android等

尽管有这么多操作系统,但本质都是为了管理,属于搞管理的 软件(为什么是软件呢?因为我们可以对它进行升级和安装等)

操作系统功能

1.对下管理所有的硬件设备

操作系统毕竟是一个软件,不可能识别所有的硬件设备。但是它知道市面的硬件设备就那么几个大类,每个大类下的硬件设备大概都有哪些功能。例如鼠标左击右击滚轮这种基本的功能,但是呢要是这个鼠标有其他比较新颖一点的功能,这时候操作系统不认识,这时候硬件设备厂商就会提供一个驱动程序(软件)专属于这个硬件设备的,让操作系统可以识别这个新功能,例如罗技鼠标,侧边的按钮你要进行自定义功能,需要下载罗技的这个软件,从而实现自定义,这样就能在你的电脑上用上这个功能了

2.对上要给软件提供稳定的运行环境

什么叫给提供稳定的运行环境呢?进程的隔离性,一个计算机可以同时运行很多个程序,这些程序可以各自独立运行,互相不影响。总不可能你打游戏打着打着,系统突然给你重启

操作系统"内核" 

操作系统"内核" 操作系统里面最核心的功能模块,内核本质上是一种特殊的软件(简单点说内核就是为操作系系统提供驱动、内存管理、网络、IO等功能的软件代码)。它是操作系统中最核心的部分,负责管理系统资源和提供基础服务(系统调用接口、设备驱动、进程管理、资源管理、内存管理一些底层资源的管理)

如何理解操作系统内核呢?可以理解为一个操作系统包含了内核+配套的应用程序等等,配套的应用程序就是系统自带的不能删除的,例如回收站、文件资源管理器等,内核呢就负责执行我们操作系统最核心的功能就是上面说的 对下管理所有的硬件设备(像硬件厂商提供的驱动程序都是在系统内核中执行的)、对上要给软件提供稳定的运行环境。
 


内核呢只有一个,但是要给很多的应用程序提供支持,所以会提供一些系统API给这些应用程序进行调用(系统调用,用户态和内核态交互的接口,每个操作系统提供的系统API是不一样的,我们学java的,jvm对这些系统API进行封装了,所以我们看jvm提供的API是一致的,这里类似jdbc)。这里我们处于用户态的时候发起指令访问系统的硬件资源,我们需要通过系统调用请求内核执行操作,系统调用涉及一些特权指令,所以需要转成内核态去完成,完成后传回结果并且转变回用户态


为了安全性和稳定性,操作系统运行分为内核态和用户态两种运行级别


用户态:用户态运行的进程权限低,不能直接访问硬件资源和系统内存等底层资源

内核态:内核态运行的进程权限高,能访问硬件资源和系统内存等底层资源

总结这样理解用户态和内核态用户态,就当我们程序员自己写的代码生成的程序,我们可以运行这个程序也可以对这个程序的一些代码进行修改。内核态就属于是系统写好的代码,操作系统写好了的并且里面的代码涉及到管理一些底层硬件资源,我们是无法去进行修改的,我们只能通过调用内核提供的系统API去访问这些硬件资源

本章的内容就到这了,这些都是比较基础的内容但也是相当重要的,下一章我们讲讲进程相关的知识💕

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

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

相关文章

我的常见问题记录

1,maven在idea工具可以正常使用,在命令窗口执行出现问题 代码: E:\test-hello\simple-test>mvn clean compile [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for org.consola:simple-test:jar…

【从0实现React18】 (三) 初探reconciler 带你初步探寻React的核心逻辑

Reconciler 使React核心逻辑所在的模块,中文名叫协调器,协调(reconciler)就是diff算法的意思 reconciler有什么用? 在前端框架出现之前,通常会使用 jQuery 这样的库来开发页面。jQuery 是一个过程驱动的库,开发者需要…

【windows解压】解压文件名乱码

windows解压,文件名乱码但内容正常。 我也不知道什么时候设置出的问题。。。换了解压工具也没用,后来是这样解决的。 目录 1.环境和工具 2.打开【控制面板】 3.点击【时钟和区域】 4.选择【区域】 5.【管理】中【更改系统区域设置】 6.选择并确定…

算是一些Transformer学习当中的重点内容

一、基础概念 Transformer是一种神经网络结构,由Vaswani等人在2017年的论文Attentions All YouNeed”中提出,用于处理机器翻译、语言建模和文本生成等自然语言处理任务。Transformer同样是encoder-decoder的结构,只不过这里的“encoder”和“…

完美解决找不到steam_api64.dll无法执行代码问题

游戏缺失steam_api64.dll通常意味着该游戏依赖于Steam平台的一些功能或服务,而这个DLL文件是Steam客户端的一部分,用于游戏与Steam平台之间的交互。如果游戏中缺失这个文件,可能会出现无法启动、崩溃或其他问题。 一,详细了解stea…

第13关:存储过程1、第14关:存储过程2。(2021数据库期末一)

目录 首先需要学习和了解的知识 第13关:存储过程1 任务描述 答案 第14关:存储过程2 任务描述 答案 本篇博客的答案博主是学习别人得来的,敢于借鉴和学习哈哈!! 首先需要学习和了解的知识 了解什么是存储过程以及…

音频——性能测试中的基本概念

文章目录 频率响应平均电平增益ADC 路径增益DAC 路径增益底噪信噪比总谐波失真+噪声(THD+N)延迟频率响应 对于音频设备,频率响应可以理解为音频设备对不同频率信号的处理或重现。对于音频信号频率,一般关注20Hz~20kHz范围。理想情况下,输入幅度相同的不同频率信号,过音频…

吴恩达机器学习 第二课 week4 决策树

目录 01 学习目标 02 实现工具 03 问题描述 04 构建决策树 05 总结 01 学习目标 (1)理解“熵”、“交叉熵(信息增益)”的概念 (2)掌握决策树的构建步骤与要点 02 实现工具 (1)…

常见的七大排序

目录 前言 冒泡排序 选择排序 插入排序 堆排序 希尔排序 快排 归并排序 前言 本文介绍七种常见的排序方式:冒泡排序,选择排序,插入排序,堆排序,希尔排序,快排,归并排序 冒泡排序 将每2…

Linux使用——查看发行版本、内核、shell类型等基本命令

先做快照 虚拟机中编辑网络 关机 普通账户和管理员账户 互相对照 localhost相当于IP 参数: 短格式:以减号(-)开头,参数字母 长格式:以2个减号(--)后跟上完整的参数单词 当前发行版本 [rootserver ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 9.…

C++设计模式——Flyweight享元模式

一,享元模式简介 享元模式是一种结构型设计模式,它将每个对象中各自保存一份数据的方式改为多个对象共享同一份数据,该模式可以有效减少应用程序的内存占用。 享元模式的核心思想是共享和复用,通过设置共享资源来避免创建过多的实…

MSPM0G3507——定时器例程1——TIMA_periodic_repeat_count

以下示例以周期模式配置TimerA0,并使用重复计数功能每隔2秒切换一次GPIO。注意:重复计数功能特定于TimerA0实例,而不是其他TimerA实例。这里是一次500毫秒,重复了四次 主函数: #include "ti_msp_dl_config.h&quo…

20240621日志:大模型压缩-从闭源大模型蒸馏

目录 1. 核心内容2. 方法2.1 先验估计2.2 后验估计2.3 目标函数 3. 交叉熵损失函数与Kullback-Leibler(KL)损失函数 location:beijing 涉及知识:大模型压缩、知识蒸馏 Fig. 1 大模型压缩-知识蒸馏 1. 核心内容 本文提出在一个贝…

Program-of-Thoughts(PoT):结合Python工具和CoT提升大语言模型数学推理能力

Program of Thoughts Prompting:Disentangling Computation from Reasoning for Numerical Reasoning Tasks github:https://github.com/wenhuchen/Program-of-Thoughts 一、动机 数学运算和金融方面都涉及算术推理。先前方法采用监督训练的形式,但这…

发表在SIGMOD 2024上的高维向量检索/向量数据库/ANNS相关论文

前言 SIGMOD 2024会议最近刚在智利圣地亚哥结束,有关高维向量检索/向量数据库/ANNS的论文主要有5篇,涉及混合查询(带属性或范围过滤的向量检索)优化、severless向量数据库优化、量化编码优化、磁盘图索引优化。此外,也…

微信小程序入门2

微信开发者工具的安装方法 1.打开微信开发者工具下载页面 在微信小程序管理后台的左侧边栏中选择“开发工具”,然后选择“开发者工具”,即可找到微信开发者工具的下载页面。 2.打开微信开发者工具的下载链接页面 单击“下载” 按钮下载,即…

越复杂的CoT越有效吗?Complexity-Based Prompting for Multi-step Reasoning

Complexity-Based Prompting for Multi-step Reasoning 论文:https://openreview.net/pdf?idyf1icZHC-l9 Github:https://github.com/FranxYao/chain-of-thought-hub 发表位置:ICLR 2023 Complexity-Based Prompting for Multi-step Reason…

STM32 - LED灯 蜂鸣器

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

Pytest框架中pytest.mark功能

文章目录 mark功能 1. 使用pytest.mark.skip 2. 使用pytest.mark.skipif 3. 使用 pytest.mark.xfail 4使用pytest.mark.parametrize 5 使用pytest.mark.自定义标记 6 使用pytest.mark.usefixtures pytest 的mark功能在pytest官方文档是这样解释的: https://…