前言
大家好,我是鼾声,软件行业很快,C以前很流行,C java,spring,现在springcloud,docker,微服务、k8s云原生等概念火热,各种新技术不断涌现。但是计算机的底层原理 这几十年变化不大。与其不断尝试新技术,不如耐心,深入学习底层知识,培养“内功”。
计算机的软硬件概念
计算机系统"软件"和"硬件"2大部分组成
软件按应用范围分类,一般分为系统软件和应用软件:
- 系统软件是各种操作系统,如windows、Linux、UNIX等,还包括操作系统的补丁程序和硬件驱动程序,都是系统软件。
- 有更多种类的应用软件可以细分,如工具软件、游戏软件、管理软件等。
计算机硬件的发展过程:
- 在电子管时代,速度每秒几千次~几万次
- 晶体管时代的速度每秒几万次~几十万次
- 中小型集成电路时代,每秒几十万次~几百万次
- 在大规模、超大规模集成电路时代,速度每秒数千万次~万亿次
冯·诺依曼体系结构
第一台电脑ENIAC诞生于1946年,人类进入了电脑时代,冯诺依曼和其他计算机科学家 提出计算机"存储程序"计算机设计理念,即将计算机指令编码并存储在计算机存储器中,必要时可以顺序执行程序代码,以控制计算机运行。还定义了计算机的基本结构 5 冯.诺依曼计算机分别是运算器、控制器、存储器、输入设备和输出设备。
实线箭头表示 虚线箭头表示数据线 控制线和反馈线
计算机特点:冯·诺依曼:
- 计算机由 计算器、存储器、控制器、输入设备和输出设备 五个部件组成, 重点是硬件抽象
- 将计算机的计算和记忆分开,负责计算的部分由计算器和控制器组成,负责记忆的部分称为存储器
- 均使用指令和数据 二进制数 表示
- 指令和数据存储在同等位置的存储器中,并可 按地址寻访
- 指令由操作代码和地址代码组成。操作代码用于表示操作的性质,地址代码用于表示存储器中操作数量的位置
- 按顺序存储在存储器中的指令。通常,指令是按顺序执行的。在特定条件下,执行顺序可以根据计算结果或设定条件进行改变
- 以运算器为中心
现代计算机系统与冯·诺依曼计算机没有太大区别,最大的区别是冯·诺依曼计算机 是以运算器为中心,而现代计算机以存储器为中心:
这张图很重要,大家要记住,我们以后会讲解补充!
接下来,让我们分别介绍这些重要组成部分
- 存储器
存储器用于存储数据和程序。
- 接下来,让我们分别介绍这些重要组成部分
- 存储器
- 存储器用于存储数据和程序。存储器 包括主存和辅存
主存:直接与CPU交换信息,是我们熟悉的内存。常见的内存条
- 辅助存储器:辅助存储器可作为主存储器,不直接与CPU交换信息,容量大于主存储器,但速度慢于主存储器。如机械硬盘、固态硬盘等
我们必须注意:
- 只有主存可以直接与CPU交换信息,辅存不直接与CPU交换信息
运算器
- 在控制器的控制下,运算器又称算数逻辑单元,是进行算数操作和逻辑操作的部件,算术操作或逻辑操作取自内存储器的数据,并将操作结果发送到内存储器。
控制器
- 控制器用于控制、指挥程序和数据的输人、操作和处理操作结果。计算机工作时,控制器首先按顺序从内存取出一个指令,并对指令进行翻译分析,根据指令的功能向相关部件发出操作命令,使这些部件执行命令规定的任务,然后取出第二个指令进行分析和执行。计算机工作时,控制器首先按顺序从内存取出指令,并对指令进行翻译分析,根据指令的功能向相关部件发出操作命令,使这些部件执行命令规定的任务,然后取出第二个指令进行分析和执行。重复这一点,直到所有的指令都完成。
输入设备
- 输入设备用于将熟悉的信息形式转换为机器能够识别的信息形式,如键盘、鼠标等
输出设备输出设备可以将机器的操作结果转换为熟悉的信息形式,如打印机输出、显示器输出等。中央处理器(CPU)由于运算器
- 和
- 控制器
特别是随着大型集成电路时代的到来,逻辑关系与电路结构的联系非常密切,所以现在往往会将操作器和控制器集成到同一个芯片中上,统称 中央处理器(CPU),其功能是从内存器中取出指令,解释指令,执行指令。
现代CPU内部 寄存器还有一个常见的组件
存储器是CPU内存储数据的一些小存储区域
,用于临时存储参与操作的数据和操作结果。寄存器由电子线组成,存取速度非常快,与CPU速度相当,寄存器成本较高,数量较少。寄存器由电子线组成,存取速度非常快,与CPU速度相当,寄存器成本较高,数量较少。
CPU中至少有六种寄存器: 指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、编程状态字寄存器(PSW)。
具体见: 谈谈计算机中的寄存器总线一组电子管道贯穿整个系统,称为总线,它携带信息字节,并负责在各计算机部件之间传输。通常,总线被设计成传输长度的字节块,即字节块(word)。字节数(即字长)是每个系统中不同的基本系统参数。现在大多数机器的字长要么是4个字节(32位),要么是8个字节(64位)。在这篇文章中,我们没有对字长做任何固定的假设此外,计算机最小的存储单位是字节(byte
)
,1 字节等于 8 位(1Byte=8bit),而
位/比特(bit)
- 它是计算机中最小的数据传输单位。
- 1 字节等于 8 每个人都需要记住位置(1Byte=8bit)的转换规则
- 1 字节等于 8 每个人都需要记住位置(1Byte=8bit)的转换规则
- 总线可分为 3 种:
顺便说一句,我们将内存相关知识串起来:计算机将8个bit分成一组,即字节,每个字节对应一个内存地址。
顺便说一句,我们将内存相关知识串起来:计算机将8个bit分成一组,即字节,每个字节对应一个内存地址。内存地址为0 开始编号,然后自行排列,最后一个地址是内存总字节数 – 1。CPU只需要知道数据类型的地址, 您可以直接到相应的内存位置提取数据。
地址总线
,一般用于指定 CPU 要操作的内存地址;数据总线
,一般用于读写内存的数据;
控制总线
,一般用于发送和接收信号,如中断、设备复位等信号,CPU 收到信号后,通过控制总线响应;
- 为什么计算机一般采用二进制?
- 这是一个非常常识但非常重要的问题,冯。诺依曼计算机也被称为存储程序 “存储程序”的概念是计算机 指
以二进制代码的形式提前输入计算机的主存储器
,然后按照存储器中的第一个地址执行程序的第一个指令,然后按照程序的规定顺序执行其他指令,直到程序执行结束。
- 我们更熟悉十进制的运算,0、1、2、3、4、5、6、7、8、90个数字,逢十进一。
我们更熟悉十进制的运算,0、1、2、3、4、5、6、7、8、九十个数字,逢十进一。例如,中国人从小背诵的“九九乘法表”实际上是十进制变种。但计算机采用二进制,只有0和1两个数字,逢二进一。
采用二进制的原因:
二进制在自然界中最容易表现出来。自然界中有许多二值系统。电压、水位、门开关、电流等都可以形成二值系统,可以用作计算机。
计算机依靠电力工作,通过电子原件的电压反应,很容易显示二进制的特性。从某种意义上说,中国古人的八卦是用符号的二元形式来表达事物,这与二进制相当相同。64位和32位CPU的区别64位和32位是指CPU寄存器的数据宽度,也称为 CPU 位宽的主要区别在于CPU一次能计算多少字节数据32位CPU显示处理器 一次可以计算 4 个字节(Byte),32位可以一次计算(bit)数据。64位CPU显示处理器 一次可以计算 8 个字节(Byte),一次可计算64位(bit)数据。
CPU的位数越高,搜索范围、最大内存容量、数据传输和处理速度、数值精度等指标就会翻倍,即CPU的处理能力也会大大提高
我们都知道,
32位CPU最大支持4G内存
,这是怎么算出来的?
2^32B = 4GB,2^35b = 4GB,
- 注意B和B的区别
"32CPU"中的"位"并不是 内存中的"位bit"的概念,与内存相对应的其实是"字节ByteŘ
由于32位最大内存搜索能力只能达到4G左右,即使我们在32位计算机上安装8G内存条,也不能提高其计算能力
- 计算机性能
- 接下来介绍计算机性能相关的基本概念:
存储器的性能指标
存储器的性能指标主要和以下3个方面有关:
- 存储容量:存储单元的数量 * 存储字长(如1M*8bit)
- 其中:
MAR位数反映了存储单元的数量,也就是说,最多能表示多少不同的状态?
- n个2进制位可以表示 2^N状态, 2^10=1 K,2^20=1 M,2^30=1 G,2^40=1 T
- MDR位数=存储字长=每个存储单元的大小单位成本:每个价格=总成本/总容量。
- 存储速度:数据传输率=数据宽度/存储周期
另外还有三个概念要理解:
存取时间
也称为存储器访问时间,是指从启动存储器操作到完成操作所经历的时间。
存储周期
又称读写周期或访问周期。
存储周期它也被称为读写周期或访问周期。它是指存储器完成读写操作所需的所有时间,即连续两次独立访问存储器操作(读写操作)所需的最小时间间隔。存储器带宽存储器在单位时间内获得的信息量。
CPU性能指标
当我们去京东淘宝上去买,CPU的时候,商家一般会写下面的信息:12代 酷睿 i7-12700KF 处理器 12核20线程 单核睿频至高可达5.0Ghz 25M三级缓存 台式机CPU其中除了一下CPU的型号,5.0Ghz是表示CPU性能的一个重要的指标
CPU主频:
- CPU内核的时钟频率,表示在
- CPU内数字脉冲信号震荡的频率
,常用单位为Hz。平时我们打游戏常说的超频,超的就是这个CPU主频。
CPU时钟周期
- :通常为节拍脉冲或T周期,即主频的倒数,它是CPU中基本时间单位。
- 执行一条指令的耗时
= CPI * CPU时钟周期, 其中CPI表示 执行一条指令所需的时钟周期数
一段程序的耗时
=指令数*CPI * CPU时钟周期, 如果我们想要提升CPU性能问题,其实就是要优化这三者。系统整体的性能指标计算机系统的性能主要受是下面3个指标
数据通路带宽
数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量 指系统在单位时间内处理请求的数量。 它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或 存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系 到主存,因此,系统吞吐量主要取决于主存的存取周期。
响应时间 指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需 要的结果的等待时间。 通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储 器访问、I/O操作、操作系统开销等时间)
跑分软件,像鲁大师等,就是把多个预设好的程序(基准程序)在计算机上运行,然后根据运行需要 的时间,算出一个分数来评估计算机的性能,以便和其他计算机进行比较。
计算机功耗
通过上文CPU 执行时间 = 指令数*CPI * CPU时钟周期,我们知道程序的 CPU 的性能 受到 指令数、CPI 以及 CPU 主频 的影响, 指令数或者 CPI 工程师,由于影响条件复杂,没法直接干预,或者可能反向干预。主要手段是提高CPU的主频, CPU 变得更快,程序的执行时间自然就会缩短 ,
主频越高越好
?
答案是否定的 由本文一开始,我们知道现在的计算机里的CPU,都是超大规模集成电路,实际上都是一个个晶体管组合而成的。通过电路的开关的"打开"和"关闭",来实现计算和储存的能力。要想计算得更快,从硬件角度来说,就是单位体积多放一些晶体管。从软件角度,手动将CPU的主频提升。但这2种手段,会增加CPU的耗电和散热,即功耗增加。 虽然可以通过降低电压来缓解功耗的问题,但是一味地提升主频,提升的性能效果日益衰弱。后面为了提升性能,不再依赖堆硬件方面,计算机采用了从单核CPU到多核CPU,将CPU执行任务流水线化,高并发多线程等等更多的手段
参考资料: 深入理解计算机系统
计算机组成原理 计算机组成原理(第2版)-唐朔飞 深入浅出计算机组成原理本篇文章到这里就结束啦,如果我的文章对你有所帮助,还请帮忙一键三连:点赞、关注、收藏,你的支持会激励我输出更高质量的文章,感谢! 计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」,我们下期再见!
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/%e8%a1%8c%e4%b8%9a%e5%8a%a8%e6%80%81/373513.html