计算机的工作原理(上)

news2025/1/23 6:01:27

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.coloradmin.cn/o/1330268.html

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

相关文章

使用教程之【SkyWant.[2304]】路由器操作系统,破解移动【Netkeeper】校园网【小白篇】

许多高校目前饱受Netkeeper认证的痛苦,普通路由器无法使用, 教你利用SkyWant的Netkeeper认证软件来使你的SkyWant路由器顺利认证上网,全宿舍又可以合作共赢了! 步骤一:正确连接网线,插电开机 正确连接网…

字符设备驱动开发-注册-设备文件创建

一、字符设备驱动 linux系统中一切皆文件 1、应用层: APP1 APP2 ... fd open("led驱动的文件",O_RDWR); read(fd); write(); close(); 2、内核层: 对灯写一个驱动 led_driver.c driver_open(); driver_read(); driver_write(…

2023/12/21作业

思维导图 代码 .text .global _start _start: 灯1 gpio时钟使能 [4]->1 0x5000A28 LDR R0,0x50000A28 指定寄存器地址 LDR R1,[R0]将寄存器取出放到R1 ORR R1,R1,#(0x1<<4)将第四位设置为1 STR R1,[R0]读取R0寄存器到R1 PE…

Echarts饼图tooltip渐变色,内部legend百分比保留整数方法

业务场景&#xff1a;1、tooltip的背景需要渐变色&#xff0c;写 html 标签&#xff0c; 2、饼图内部的百分比需要保留整数 &#xff0c;使用formatter&#xff0c; export function genChartPieOption(pieData) {const res {replaceMerge: [series,], // 解决刷新之后y轴丢失…

Prometheus-JVM

一. JVM监控 通过 jmx_exporter 启动端口来实现JVM的监控 Github Kubernetes Deployment Java 服务&#xff0c;修改 wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar# 编写配置文件&#xff0…

推箱子小游戏

--print("开发流程步骤&#xff1a;I、绘制推箱子地图并初始化 ----- 几*几大小的地图 \n\n II、根据宏定义和推箱子地图上的数字来选择不同的图形\n\n III、获取玩家坐标 -----------重点\n\n …

【SSM】SSM整合

SSM 整合 文章目录 SSM 整合1. 核心问题明确1.1 第一问&#xff1a;SSM整合需要几个IoC容器&#xff1f;1.2 第二问&#xff1a;每个IoC容器对应哪些类型组件&#xff1f;1.3 第三问&#xff1a;IoC容器之间关系和调用方向&#xff1f;1.4 第四问&#xff1a;具体多少配置类以及…

随机问卷调查数据的处理(uniapp)

需求&#xff1a;问卷调查 1.返回的数据中包含单选、多选、多项文本框、单文本框、图片上传 2.需要对必填的选项进行校验 3.非必填的多项文本框内容 如果不填写 不提交 表单数据格式 res{"code": 0,"msg": null,"data": [{"executeDay&…

CSS overflow-anchor

overflow-anchor 为了认识这个属性, 我们需要先看一种常见的现象. 即在网页加载中, 图片常常比文字加载更慢, 这样图片加载完成后可能会将文字向下顶. 比如下图演示 <div class"overflow"><img id"bg" src"" height"150" al…

前端页面资源放入oss 对象存储问题

1.需求 当我们做的是微信公众号的时候 需要微信重定向登录 在此时 我们需要在微信后台配置重定向域名 但是微信后台只能配置三个 如果有很多H5 公众号重定向登录的需求 我们该怎么做呢 2.解决 肯定我们需要配置 首页的 一般前端打包项目 都是由index.html 当然 我们实现 都是…

Linux:sudo给予账户特定的权限

我们某些用户权限比较低&#xff0c;如果我们他们的权限提高&#xff0c;或者假如搞权限的组&#xff0c;那么会大大减少安全性&#xff0c;我们可以使用sudo对他们开放指定的命令 我这里有 a1—3 3个用户&#xff0c;现在我切换到a1执行一下重启的命令 发现我们这个用户并无…

DSC2803X,DSP Pin2Pin with Ti Parts

一&#xff0c;产品特性 高能效 32 位处理器(H28x 内核)  主频 120MHz&#xff08;周期 8.33ns&#xff09;  哈佛(Harvard) 总线架构  硬件乘法/除法单元  4/6 通道高速 DMA  快速中断响应和处理  统一存储器编程模型  高效代码&#xff08;使用 C/C和汇编语言&…

docker容器内 获取宿主机ip

可以使用命令 --add-host jargatewayip:192.168.0.47 \ 需要注意,这里不能是 127.0.0.1 ,所以要找到服务器局域网的ip 命令示例 docker run -it \-p 80:80 \-p 443:443 \--name nginx \--network app --hostname nginx \-e TZAsia/Shanghai \--add-host jargatewayip:192.16…

基于JAVA的厦门旅游电子商务预订系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…

16、Qt线程(一):继承QThread,重写run

一、说明 Qt提供了3个类4种方式创建线程&#xff1a; 1、QThread ①继承QThread类&#xff0c;重写run()函数 ②继承QObject类&#xff0c;使用moveToThread()函数 2、使用QtConCurrent并发模块的run()函数 3、继承QRunnable类 二、功能说明 1、通过继承QThread&#xff0c;重…

FATFS文件系统

文件系统是为了存储和管理数据&#xff0c;而在存储设备上建立的一种组织结构。 Windows常用的文件系统&#xff1a; 1、FAT12 2、FAT16 3、FAT32 4、exFAT 5、NTFS FAT&#xff1a;File Alloction Table 文件分配表 在小型的嵌入式存储设备大多…

大模型托管平台Replicate,获2.9元B轮融资

大模型开源平台Replicate在官网宣布&#xff0c;获得4000万美元&#xff08;近2.9亿元&#xff09;B轮融资。本次由a16z领投&#xff0c;英伟达、Y Combinator等跟投。 Replicate的开源平台提供了超过25,000个模型&#xff0c;涵盖文本、图片、视频、音频、3D模型等领域。典型…

60.乐理基础-打拍子-V字打拍法

前置内容&#xff1a; 文字版 https://note.youdao.com/s/6FSSvGBf &#xff08;顺序参考&#xff1a;下方的视频版里面目录顺序&#xff09; 视频版 【四川音乐学院作曲硕士】教你零基础自学乐理保姆级教学-学习视频教程-腾讯课堂 文字版还有下图红框中三个专栏里的内容&a…

freemarkEngine文件ftl的可视化编辑

在做导出word文件功能时&#xff0c;需要准备ftl模板&#xff0c;设置一些通配符&#xff0c;之后通过相关编码&#xff0c;即可以实现业务数据渲染后导出word的功能。但是ftl文件一般我们看不太懂&#xff0c;所以可视化创建和修改就非常合适。 1、安装office2016版本&#x…

【Linux】权限篇(二)

权限目录 1. 前言2. 权限2.1 修改权限2.2 有无权限的对比2.3 另外一个修改权限的方法2.3.1 更改用户角色2.3.2 修改文件权限属性 3. 第一个属性列4. 目录权限5. 默认权限 1. 前言 在之前的一篇博客中分享了关于权限的一些知识&#xff0c;这次紧接上次的进行&#xff0c;有需要…