计算机的工作原理(上)

1. 计算机发展史

        计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。(以下是计算机的发展历程)

1、公元前2500 年前,算盘已经出现了;除此之外,人类还创造了各种工具以辅助计算

2、1694 年,德国博物学家 戈特弗里德·莱布尼兹建造了“步进计算器”。

3、1822 年,英国科学家 查尔斯·巴贝奇设计了“差分机”模型;1991年,才被现代科学家根据手稿建造完成

4、十九世纪三十年代,英国科学家 查尔斯·巴贝奇更进一步设计了“分析机”模型;是第一台“通用计算机”。

5、1890 年,美国科学家为了解决人口普查中的计算问题,发明了“打孔卡片制表机

6、1943年,英国制造了第一个大规模使用“真空管”的计算机 —— 巨人一号,用于破解纳粹通信密码。

7、1944 年,IBM 公司为二战同盟国制作了最大的“机电计算机” —— 哈佛 Mark一号,用于给“曼哈顿计划”跑模拟。

8、1945年,ENIAC在“宾夕法尼亚大学”完成建造,被视为第一台电子通用计算机。

9、1955年,AN/FSQ-7计算机,是“SAGE”防空计算机系统的一部分。

10、1947年,贝尔实验室科学家发明了“晶体管”,一种新的电子开关诞生了。也就是我们平时所谓的“半导体”材料

        人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是:更快速、更稳定、更微型。

        故此计算机是有软件和硬件两部分组成的,大概公式就是:计算机=软件+硬件,其中硬件部分主要依赖于冯诺依曼体系结构

2. 冯诺依曼体系(Von Neumann Architecture)

        现代的计算机, 大多遵守冯诺依曼体系结构,且该体系结构图如下所示:

      简单的词汇讲解:

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

        2、存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)

        存储器(存储器主要有内存+外存,下面是内存和外存的相关比较):

        内存存储空间小,外存更大;

        内存访问速度快,外存更慢;

        内存的成本更高,外存更便宜;

        内存的数据断电后会丢失,外存不会;

        3、输入设备: 用户给计算机发号施令的设备.(鼠标,键盘)

        4、输出设备: 计算机个用户汇报结果的设备.(显示器,音箱)

        番外:

1、关于x86架构和arm架构的若干知识小点:

1.1 关于x86:

        设计cpu有很多不同的方案就称为架构,且不同的架构都会有不同的指令集,这些指令集就会对上层应用程序产生直接的影响。

        所谓编程,就是通过编程语言描述出一些逻辑,这些逻辑最终被转化成cpu能识别的指令最终执行。故此我们现在用java写的代码,先编译成jvm字节码文件,jvm再把这些字节码文件转换成x86架构下的指令。

1.2 关于arm

        相比之下,苹果,高通搞得cpu是另外一套架构,arm架构

        Arm的特点:更适合适用于低功耗的机器上。苹果电脑的续航能力是十分强的,但是其性能比x86要弱一些。

        我们要知道计算机的功耗和性能是对立的,且相互关联的。

2、关于软件:

        软件(是一个广义的概念,并非仅仅是指有图形化的界面,同时一个软件的难易程度,和图形化界面没有关系)

        软件,其实就是通过代码,来解决一些实际的问题。

3、Cpu基本适用情况

    X86架构:intel amd ---->家用pc,服务器

    Arm架构:苹果,高通 ------>苹果电脑。智能手机

    现在的x86的cpu都是64位的(cpu的位数,就和代码中内存地址用几个字节表示,是密切相关的---16位的cpu,就是2个字节)

        Windows的特殊处理:windows64位版本,可以兼容32位的程序

 3. CPU 基本工作流程

      关于cpu是怎么构成的:

    晶体管->门电路 -> 半加器 ->全加器 -> ALU运算器->如此差不多构成cpu

        接下来,我们用一个从无到有的过程,一步步搭建一个 CPU 出来,通过借助这个过程,理解CPU、内存等计算机主要部件的工作原理 ;

3.1 逻辑门

3.1.1 电子开关 —— 机械继电器(Mechanical Relay)

        整个过程,类似一个水龙头:打开水龙头开关,有水流出;关闭水龙头开关,水流停止。

             

        我们可以通过以下电子开关下方线圈通电,产生磁场,吸引上方机械臂闭合,完成上方电路闭合;下方线圈断电,磁场消失,导致上方机械臂弹起,断开上方电路闭合

        通过电子开关,我们可以实现 1 位(bit) 的看似无用的逻辑运算。我们接来下会做进一步的学习了解怎么使用电子开关组合出真正有用的逻辑组件。

3.1.2 门电路(Gate Circuit)

1、NOT GATE(非门)

2、AND GATE(与门)

3、OR GATE(或门)

4、XOR GATE(异或门)

3.2 算术逻辑单元 ALU(Arithmetic & Logic Unit)

        ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑;

1、算术单元(Arithmetic Unit)

        算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远不止这些。

2、逻辑单元(Logic Unit)

        逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位(bit)数的比较

3、ALU 符号

   3.3 寄存器(Register) 和内存(RAM)

        Ram:内存。

        寄存器:是cpu上的存储数据的单元。(cpu上能直接存的数据比较少,这些寄存器主要是为了支持cpu完成一些计算,保存中间结果的,虽然寄存器空间有限,但是访问速度很快,是内存访问速度的三到四倍的)

        光有 ALU 还是远远不够的,我们无法为 ALU 提供存储的部件,这些存储都是要求必须保持通电状态的,即也就是这些存储都是易失的(volatile),上图的最后的效果就是:使能线置位时,输入为 1,保存 1;输入为 0,保存0。使能线不置位时,则写入无效。我们可以利用门锁,构建我们需要的寄存器和内存

        内存的构建的基本原理与上述大概一致。如此构建的内存被称为RAM(Random AccessMemory),可以支持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1)的硬件支持。

3.4 控制单元 CU(Control Unit) 

        我们现在有 ALU、存储了,但这还是不足以让我们的计算机工作起来,我们需要有一个部件来指挥 ALU进行何种的运算,而这个部件就是控制单元(CU)且两者关系如下所示:

        关于 CU 如何由门电路从无到有搭建,我们就进行抽象了,我们只需要理解 CU 可以驱动 ALU 进行具体的计算工作即可 

3.5 指令(Instruction)

        首先,我们先介绍下我们需要到的指令(instruction)。所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。指令本身也是一个数字,用二进制形式保存在内存的某个区域中

3.6 CPU 的基本工作流程

        接下来,我们演示指令运行的一个周期

        执行周期经过以下阶段:

        当然,电子计算机中的 CPU 可不像我们刚才那样,靠自己来驱动这个周期的运转,而是靠背后一个时钟来进行周期驱动的

        最后,ALU + CU + 寄存器 + 时钟就组成了我们平时经常看到的一个词汇:中央处理器(Center ProcessUnit)简称 CPU

 番外:

1、cpu如何执行指令代码的

        咱们写好的代码,最终想要运行,就需要让操作系统先把写好的并编译好的指令集加载到内存中,然后cpu才能执行。

        1.1 默认情况下,cpu执行内存中的指令,是顺序执行的,当然也会遇到一些跳转指令。

        1.2 当前的计算机,从cpu执行指令的时候,要经历从内存读取数据这样的操作。(本质上,依据于冯诺依曼体系结构,是将“执行”和“存储”分开了,这么做主要是为了“解耦合”降低硬件设计的成本),但现在的cpu执行速度越来越快,内存跟不上cpu的速度了(所谓的表演5分钟,通勤两小时),由此就有了缓存(临时安置一下,cpu附近的区域,之前的缓存在南北桥上,后来都集成到cpu上了)

2、Cpu的执行结论:

        2.1 cpu要执行的指令,是在内存中。(冯诺依曼体系,基本设定让执行单元和存储单元解耦合)

        2.2 cpu要想执行指令,就需要先取指令,在解析指令,然后才能执行指令。

        2.3 取指令需要从内存中读取指令到cpu的寄存器中,取指令的操作是相当耗时的,cpu中通过缓存,流水线等技术,来优化这里的效率。

        2.4 Cpu在解析指令的时候要用到解析表,不同架构的cpu支持的指令表不同(x86和arm等都是不同的),指令表的细节,已经写死到了cpu中了,cpu是可以识别的。

        2.5 指令在执行的过程中,可能会遇到一些操作数,不同的指令,操作数的个数含义都会有所不同

        2.6 Cpu重要的参数,主频,主频的含义,近似看成1s之内,cpu能够执行的指令个数。

3、关于cpu的相关知识

        3.1 Cpu是多核+超线程技术加持的产物(4核8线程)

          

        Cpu的好坏,要多维度来衡量:有的cpu核心多,但是单核频率不高,性能也就一般,同架构下,频率越高越好。

        3.2 其他

        频率:描述单个cpu核心工作的速度。(1khz = 1024hz,1mhz=1024khz,1ghz =1024mhz)

        睿频技术:cpu的频率动态发生变化,看当前任务多不多。

        衡量一个cpu的单核性能,既要看基础频率(下限),最大睿频(上限)。

ps:本次学习就到这里了,如果大家感兴趣的话就请一键三连哦!!!

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

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

相关文章

js中将数字转成中文

文章目录 一、实现二、最后 一、实现 如果要将数字10、100和1000转换成中文的"十"、“一百"和"一千”,可以使用以下 JavaScript 代码实现: function numberToChinese(num) {const chineseNums [零, 一, 二, 三, 四, 五, 六, 七, …

Centos系统升级gcc版本

自己环境的gcc版本太低,影响使用SAN全家桶进行内存泄露检查 当前环境gcc版本查看 gcc --version 进行升级: 1、安装EPEL存储库 yum install epel-release -y 2、确保系统已经更新到最新版本 yum update -y 3、安装GCC编译器及其相关工具包 yum g…

让生活更智能,P1600边缘智能网关带你进入智能家居新时代

一、什么是P1600边缘智能网关? 在科技日新月异的今天,我们的生活已经被各种智能产品所包围。而在这个智能化的浪潮中,P1600边缘智能网关以其独特的优势,成为了智能家居的重要组成部分。那么,什么是P1600边缘智能网关呢…

Elasticsearch Reroute API 的使用

本文通过一个 Elasticsearch 集群中主分片分配不均衡的例子演示一下 Cluster reroute API 的使用。 对于 Elasticsearch 分片分配策略不了解的同学可以点一下关注,后面更文之后获取第一手资料。 环境信息 Windows 10 Elasticsearch 8.1 JDK17 初始集群状态 分片…

嵌入式系统与物联网:智能化、互联世界的构建者

随着科技的飞速发展,我们的生活、工作以及整个社会结构都经历着深刻的变革。在这个过程中,嵌入式系统和物联网(IoT)技术扮演了关键的角色。本文将探讨嵌入式系统如何与物联网相互作用,以及它们在构建智能化、互联的世界…

SVM —— 代码实现

SMO 算法的实现步骤: 代码如下: import numpy as np import matplotlib.pyplot as plt import seaborn as sns import random# 设置中文字体为宋体,英文字体为 times new roman sns.set(font"SimSun", style"ticks", fo…

Vue.js 教程

Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 阅读本教程前,您需要了解的…

利用MultCloud在线复制传输不同网盘之间的数据:支持谷歌Drive、百度网盘等

本文介绍通过MultCloud平台,在国内实现谷歌Drive、OneDrive、百度网盘等不同云盘之间数据的传输、共享等操作的免费方法。 有的时候,我们希望对自己不同网盘之间的数据加以传输、共享;例如,我们可以将自己谷歌Drive中的数据&#…

贪心法之活动安排问题

问题: 给定n个活动,每个活动有一个开始时间si和结束时间fi,选择出最大的互不相容的活动 集合。 思路: 将所有活动按照结束时间从小到大排序。 选择第一个活动,并将其加入最终的选择集合中。 依次考虑剩余的活动&#x…

antdesignpro实现滚动加载分页数据

原理解析:每滚动一次相当于翻页,请求后端时给的页码参数要想办法加1,后端才能根据页码给出相应数据 注意后端收到页码参数之后要准确计算出每页的首行数据,关键逻辑代码: # 根据前端传的页码,进行计算下一…

芯片到底是怎么访问外设

微型计算机的组成:CPURAM硬盘等 什么是FLASH? FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NV…

MACBOOK 通过iterm2连接堡垒机跳转服务器

本公司是通过齐治堡垒机连接远程服务器的环境,因为连接过程中需要自动输入密码和选择主机,所以要使用expect工具,编写expect脚本remote.exp #!/usr/bin/expectif { $argc ! 7 } {send_user "usage: expect $argv0 \[JUMP_HOST\] \[JUM…

spring基于Xml管理bean---Ioc依赖注入:对象类型属性赋值(1)----外部bean的引入(bean和bean之间的引入)

文章目录 注入普通属性的方式1、set方法注入2、构造器(构造方法)注入 总结:注入对象类型属性 注入普通属性的方式 1、set方法注入 2、构造器(构造方法)注入 总结: set方法注入和构造器方法的注入&#…

java并发编程八 CAS 与 volatile和原子整数与原子引用

文章目录 CAS 与 volatile慢动作分析volatile为什么无锁效率高CAS 的特点 原子整数原子引用不安全实现安全实现-使用锁安全实现-使用 CAS CAS 与 volatile 在java并发编程七六中,可以看到的 AtomicInteger 的解决方法,内部并没有用锁来保护共享变量的线…

Ubuntu 22.04.3 Server通过修改yaml配置文件方法设置静态IP

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…

3.[BUUCTF HCTF 2018]WarmUp1

1.看题目提示分析题目内容 盲猜一波~ : 是关于PHP代码审计的 2.打开链接,分析题目 给你提示了我们访问source.php来看一下 大boss出现,开始详细手撕~ 3.手撕PHP代码(代码审计) 本人是小白,所以第一步&…

首涂第二十八套_新版海螺M3多功能苹果CMSv10自适应全屏高端模板

首涂第二十八套_新版海螺M3多功能苹果cmsv10自适应全屏高端模板 多功能苹果cmsv10自适应全屏高端模板开源授权版 这是一款带“主题管理系统”的模板。这是一款好模板。 花大价钱收购了海螺这两个模板的版权。官方正品,非盗版。关闭域名授权 后台自定义菜单 请把…

Wavesurfer.js绘制波形图

HTML使用Wavesurfer.js 要使用wavesurfer.js,首先需要在HTML文件中引入Wavesurfer.js库,然后创建一个音频元素并将其添加到页面中。接下来,初始化Wavesurfer实例并配置相关选项。以下是一个简单的示例: 在HTML文件中引入Wavesurf…

【音视频】Mesh、Mcu、SFU三种框架的总结

目录 三种网络场景介绍 【Mesh】 【MCU】(MultiPoint Control Unit) 【SFU】(Selective Forwarding Unit) 三种网络架构的优缺点 Mesh架构 MCU架构(MultiPoint Control Unit) SFU架构(Selective Forwarding Unit) 总结 参考文章 三种网络场景介绍 【Mesh】 Mesh架构…

【计算机网络】TCP心跳机制、TCP粘包问题

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…