1.计算机是如何工作的(上)

简介: 1.计算机是如何工作的(上)

文章目录

大家好,我是晓星航。今天为大家带来的是 计算机是如何工作的(上) 相关的讲解!😀

1.计算机发展史

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

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

推荐书籍: 《计算机简史》

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

现代的计算机, 大多遵守 冯诺依曼体系结构

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

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

输入设备: 用户给计算机发号施令的设备.

输出设备: 计算机个用户汇报结果的设备.

针对存储空间

硬盘 > 内存 >> CPU

针对数据访问速度

CPU >> 内存 > 硬盘

3.CPU 基本工作流程

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

3.1逻辑门

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

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

以后的真空管、晶体管的实质也是完成类似的工作,只是物理原理更加复杂,我们就不带着大家做深入解读了。

3.1.2门电路(Gate Circuit)

接下来,我们学习如何使用电子开关构建一些有用的部件 —— 门电路。可以实现 1 位(bit) 的基本逻辑运算。

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

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。接下来,我们用上一节构建的逻辑门来完成自己的一个 ALU,去学习理解它的工作模式,以便作为我们进一步理解现代计算机工作原理的基石。

3.2.1进制的理解

二进制和十进制:

3.2.2算术单元(Arithmetic Unit)

算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远不止这些。接下来我们会带着大家实现一个 8 位(bits)的加法器(adder)来,以演示整个过程,其他的运算器就不再详细讲解了。

至此,一个 8 位(bits) 加法器就被我们从无到有制作了出来。算术单元支持的操作当然远不止这些,通过继续组合逻辑门,算数单元可以做到加减乘除甚至更多的算术运算,但一个加法器作为演示已经足够了。实际上,乘法器和除法器的制作难度是要高于加、减法器的,有兴趣的同学可以尝试做更多的了解。

3.2.3逻辑单元(Logic Unit)

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

3.2.4ALU 符号

经过我们的努力,通过基本的逻辑门电路,我们一步步地做出了一个 8 位(bits) ALU,甚至比 Intel 74181 还要强大,Intel 74181 只是一个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件非常强大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。但无论如何,再复杂的 ALU 也是芯片工程师像我们这样,一层又一层,一步又一步地将其抽象出来的。ALU 是第一次将人类历史上的数学和逻辑学学科有机地结合起来,可以视为人类智慧发展的现代巅峰。

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

光有 ALU 还是远远不够的,我们无法为 ALU 提供存储的部件,所以接来下,我们利用门电路简单说明下存储的制作。注意,虽然图中没有明显的表示出来,但这些存储都是要求必须保持通电状态的,也就是这些存储都是易失的(volatile)。

中间我们隐藏了一些实现细节,最后的效果就是:使能线置位时,输入为 1,保存 1;输入为 0,保存0。使能线不置位时,则写入无效。

我们可以利用门锁,构建我们需要的寄存器和内存。

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

期间,为了我们学习的聚焦性,我们隐藏了大量的实现细节

3.4控制单元 CU(Control Unit)

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

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

3.5指令(Instruction)

首先,我们先介绍下我们需要到的指令(instruction)。

所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。

其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。

指令本身也是一个数字,用二进制形式保存在内存的某个区域中。

3.6CPU 的基本工作流程

接下来,我们演示指令运行的一个周期,希望大家可以学习到其流程,并完成剩余指令的运行过程。

第一条指令的运行,其实没有用到我们之前制作的 ALU 部件,但这只是其中一些指令而已,大家尝试把剩余的 3 条指令自行运行一次,观察并理解这个过程。

我们来总结下执行周期经过哪些阶段:

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

知乎问题: 时钟频率是什么概念



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

3.7小结

通过上述的章节,我们带领大家从基本的电子开关开始,一步步的搭建了一个CPU和内存出来,虽然中间还是对很多过程和细节做了隐藏和抽象,但主要流程已经体现了出来,希望这节学习完成之后,同学们不在对CPU充满了神秘感。

然后我们把这一节中一些要点给大家做一个文字总结:

1.CPU 中的 PC 寄存器,是决定 CPU 要执行哪条指令的关键;

2.指令是由 动作 + 操作对象组成

3.CPU 眼中只有指令,没有其他的概念

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

目录
相关文章
|
数据采集 监控
如何检测和应对网站的反爬虫机制?
如何检测和应对网站的反爬虫机制?
1579 3
|
7月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
695 69
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
XML 存储 API
电商商品详情页面的获取,详情图属性sku价格的采集,API接口系列
在电商平台上,商品详情页面的获取,包括详情图、属性、SKU(Stock Keeping Unit,库存量单位)、价格等信息的采集,通常可以通过多种方式实现,其中之一是利用电商平台提供的API接口。以下是一个基于通用流程的概述,用于说明如何通过API接口系列来采集这些信息。
|
并行计算 Ubuntu 开发工具
Jetson学习笔记(一):jetson 系列镜像下载、烧写、设置散热风扇、中文包、pip、中转英目录、软件源、显示CSI摄像头
关于NVIDIA Jetson系列设备的入门学习笔记,涵盖了从下载镜像、烧录、设置散热风扇、安装中文语言包、配置环境变量、安装CUDA和OpenCV,到显示CSI摄像头和增加Swap交换空间的详细步骤。
1027 0
Jetson学习笔记(一):jetson 系列镜像下载、烧写、设置散热风扇、中文包、pip、中转英目录、软件源、显示CSI摄像头
|
存储 网络协议 网络虚拟化
SRv6 基本结构
【5月更文挑战第4天】SRv6是一种网络功能指令化技术,将128位IPv6地址用于表达网络操作。它将业务需求转化为有序指令列表,由网络设备执行,实现灵活的网络业务编排和定制。
|
Java 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(1)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
306 0
|
定位技术
笔记本电脑拆机并更换固态硬盘的方法
笔记本电脑拆机并更换固态硬盘的方法
846 1
|
弹性计算 Linux 开发工具
阿里云在校大学生云服务器免费领取方法
2023阿里云在校大学生云服务器免费领取方法,如果你从未参与过阿里云高校学生免费领取ECS的活动,在通过学生身份认证及续费任务后,最多可领取1+6个月免费云服务器ECS资源
1973 0
阿里云在校大学生云服务器免费领取方法
|
NoSQL 架构师 Redis
还用单机版?教你用Docker+Redis搭建主从复制多实例
以下文章来源于爱笑的架构师 ,作者雷架 从华中科技大学硕士毕业,几年间浪迹于多个一线互联网大厂,具有多年开发实战经验。如果你热爱技术或者你不满足现状喜欢搞事情,那你不妨关注我,让我们一路同行,一起分享技术干货、交流面试技巧、吐槽职场故事。我有故事和酒,你来吗?