【计算机是如何工作的】让你快速简单理解CPU核心工作机制,打破计算机的神秘感

news2024/11/26 4:20:49

计算机是如何⼯作的

  • 🌲计算机发展史
  • 🌲冯诺依曼体系(Von Neumann Architecture)
  • 🌲CPU 基本⼯作流程
    • 🍓逻辑⻔
    • 🍓⻔电路(Gate Circuit)
    • 🍓算术逻辑单元 ALU(Arithmetic & Logic Unit)
    • 🍓算术单元(Arithmetic Unit)
    • 🍓逻辑单元(Logic Unit)
    • 🍓ALU 符号
    • 🍓寄存器(Register) 和内存(RAM)
    • 🍓控制单元 CU(Control Unit)
    • 🍓指令(Instruction)
    • 🍇CPU 的基本⼯作流程
  • 🌲⼩结

🌲计算机发展史

计算的需求在⼈类的历史中是⼴泛存在的,发展⼤体经历了从⼀般计算⼯具到机械计算机到⽬前的电
⼦计算机的发展历程。
⼈类对计算的需求,驱动我们不断的发明、改善计算机。⽬前这个时代是“电⼦计算机”的时代,发
展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待⼤家的努⼒。

🌲冯诺依曼体系(Von Neumann Architecture)

现代的计算机, ⼤多遵守 冯诺依曼体系结构
在这里插入图片描述

  • CPU 中央处理器: 进⾏算术运算和逻辑判断.
  • 存储器: 分为外存和内存, ⽤于存储数据(使⽤⼆进制⽅式存储)
  • 输⼊设备: ⽤⼾给计算机发号施令的设备.
  • 输出设备: 计算机个⽤⼾汇报结果的设备.

针对存储空间

  • 硬盘 > 内存 >> CPU

针对数据访问速度

  • CPU >> 内存 > 硬盘

认识计算机的祖师爷 – 冯诺依曼

冯·诺依曼(John von Neumann,1903年12⽉28⽇-1957年2⽉8⽇), 美籍匈⽛利数学家、计算机
科学家、物理学家,是20世纪最重要的数学家之⼀。冯·诺依曼是布达佩斯⼤学数学博⼠,在现代计
算机、博弈论、核武器和⽣化武器等领域内的科学全才之⼀,被后⼈称为“现代计算机之 ⽗”、“博弈论之⽗”.

在这里插入图片描述

🌲CPU 基本⼯作流程

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

🍓逻辑⻔

电⼦开关⸺机械继电器(Mechanical Relay)
在这里插入图片描述
通过电⼦开关,我们可以实现 1 位(bit) 的看似⽆⽤的逻辑运算,但⾄少它⼯作起来了,不是么。怎么
使⽤电⼦开关组合出真正有⽤的逻辑组件,我们接来下会做进⼀步的学习了解。
以后的真空管、晶体管的实质也是完成类似的⼯作,只是物理原理更加复杂,我们就不带着⼤家做深
⼊解读了。

🍓⻔电路(Gate Circuit)

接下来,我们学习如何使⽤电⼦开关构建⼀些有⽤的部件⸺⻔电路。可以实现 1 位(bit) 的基本逻辑
运算。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

ALU 是计算机中进⾏算数、逻辑运算的核⼼部件,是计算机的数学⼤脑。接下来,我们⽤上⼀节构建
的逻辑⻔来完成⾃⼰的⼀个 ALU,去学习理解它的⼯作模式,以便作为我们进⼀步理解现代计算机⼯
作原理的基⽯。
在这里插入图片描述
进制的理解
在这里插入图片描述
在这里插入图片描述

🍓算术单元(Arithmetic Unit)

算数单元,负责计算机⾥的所有数字操作,⽐如四则运算,当然它能做的远远不⽌这些。接下来我们
会带着⼤家实现⼀个 8 位(bits)的加法器(adder)来,以演⽰整个过程,其他的运算器就不再详细
讲解了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
⾄此,⼀个 8 位(bits) 加法器就被我们从⽆到有制作了出来。算术单元⽀持的操作当然远不⽌这些,
通过继续组合逻辑⻔,算数单元可以做到加减乘除甚⾄更多的算术运算,但⼀个加法器作为演⽰已经
⾜够了。实际上,乘法器和除法器的制作难度是要⾼于加、减法器的,有兴趣的同学可以尝试做更多
的了解。

🍓逻辑单元(Logic Unit)

逻辑单元主要⽤来进⾏逻辑操作,最基本的操作就是 与、或、⾮操作,但不只是⼀位(bit)数的⽐较。
在这里插入图片描述

🍓ALU 符号

经过我们的努⼒,通过基本的逻辑⻔电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚⾄⽐ Intel
74181 还要强⼤,Intel 74181 只是⼀个 4 位(bits) ALU(😀)。当然现代的计算机中的 ALU 部件⾮常强
⼤,复杂度远远超过了我们的想象,32 位 甚⾄ 64 位基本已经普及全球了。但⽆论如何,再复杂的
ALU 也是芯⽚⼯程师像我们这样,⼀层⼜⼀层,⼀步⼜⼀步地将其抽象出来的。ALU 是第⼀次将⼈类
历史上的数学和逻辑学学科有机地结合起来,可以视为⼈类智慧发展的现代巅峰。
在这里插入图片描述

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

光有 ALU 还是远远不够的,我们⽆法为 ALU 提供存储的部件,所以接来下,我们利⽤⻔电路简单说明
下存储的制作。注意,虽然图中没有明显的表⽰出来,但这些存储都是要求必须保持通电状态的,也
就是这些存储都是易失的(volatile)
在这里插入图片描述
中间我们隐藏了⼀些实现细节,最后的效果就是:使能线置位时,输⼊为 1,保存 1;输⼊为 0,保存
0。使能线不置位时,则写⼊⽆效。

我们可以利⽤⻔锁,构建我们需要的寄存器和内存。
在这里插入图片描述
内存的构建要⽐这个复杂⼀点,但基本原理⼀致。如此构建的内存被称为 RAM(Random Access
Memory),可以⽀持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1)
的硬件⽀持。
在这里插入图片描述
期间,为了我们学习的聚焦性,我们隐藏了⼤量的实现细节,对于这部分知识感兴趣的同学可以在课
后做深⼊的学习。

🍓控制单元 CU(Control Unit)

我们现在有 ALU、存储了,但这还是不⾜以让我们的计算机⼯作起来,我们需要有⼀个部件来指挥
ALU 进⾏何种的运算,⽽这个部件就是控制单元(CU)。
在这里插入图片描述
关于 CU 如何由⻔电路从⽆到有搭建,我们就进⾏抽象了,我们只需要理解 CU 可以驱动 ALU 进⾏具体
的计算⼯作即可,⾄于 ALU 是如何驱动 ALU 进⾏⼯作的,我们在下⼀节进⾏详细的论述。
在这里插入图片描述

🍓指令(Instruction)

⾸先,我们先介绍下我们需要到的指令(instruction)
所谓指令,即指导 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成。
其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是
寄存器编号等。
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
在这里插入图片描述

🍇CPU 的基本⼯作流程

接下来,我们演⽰指令运⾏的⼀个周期,希望同学们可以学习到其流程,并完成剩余指令的运⾏过
程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第⼀条指令的运⾏,其实没有⽤到我们之前制作的 ALU 部件,但这只是其中⼀些指令⽽已,⼤家尝试
把剩余的 3 条指令⾃⾏运⾏⼀次,观察并理解这个过程。

我们来总结下执⾏周期经过哪些阶段:
在这里插入图片描述
当然,电⼦计算机中的 CPU 可不像我们刚才那样,靠⾃⼰来驱动这个周期的运转,⽽是靠背后⼀个时
钟来进⾏周期驱动的。

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

在这里插入图片描述
最后,ALU + CU + 寄存器 + 时钟就组成了我们平时经常看到的⼀个词汇:中央处理器(Center
Process Unit)简称 CPU

🌲⼩结

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

然后我们把这⼀节中⼀些要点给⼤家做⼀个⽂字总结:

  1. CPU 中的 PC 寄存器,是决定 CPU 要执⾏哪条指令的关键;
  2. 指令是由 动作 + 操作对象组成
  3. CPU 眼中只有指令,没有其他的概念

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

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

相关文章

算法沉淀——队列+宽度优先搜索(BFS)(leetcode真题剖析)

算法沉淀——队列宽度优先搜索(BFS) 01.N 叉树的层序遍历02.二叉树的锯齿形层序遍历03.二叉树最大宽度04.在每个树行中找最大值 队列 宽度优先搜索算法(Queue BFS)是一种常用于图的遍历的算法,特别适用于求解最短路径…

【python学习篇1】python基本语法

目录 一、第一个python程序 二、基本语法,数据类型,字面量,循环语句等内容 2.1字面量 2.2注释 2.2.1单行注释 2.2.2多行注释 2.3变量 2.3.1认识变量 2.3.2查看数据类型 2.3.3数据类型转换 2.3.4字符串的三种定义方式 2.3.5字符串…

Unicode编码的魅力:跨语言交流的桥梁

title: Unicode编码的魅力:跨语言交流的桥梁 date: 2024/2/15 14:04:00 updated: 2024/2/15 14:04:00 tags: Unicode编码跨语言多语言支持存储开销兼容性文本处理全球化软件 引言: Unicode编码是一种用于表示世界上所有字符的标准编码方式。它解决了字…

【机器学习】合成少数过采样技术 (SMOTE)处理不平衡数据(附代码)

1、简介 不平衡数据集是机器学习和人工智能中普遍存在的挑战。当一个类别中的样本数量明显超过另一类别时,机器学习模型往往会偏向大多数类别,从而导致性能不佳。 合成少数过采样技术 (SMOTE) 已成为解决数据不平衡问题的强大且广泛采用的解决方案。 …

mysql5.6安装---windows版本

安装包下载 链接:https://pan.baidu.com/s/1L4ONMw-40HhAeWrE6kluXQ 提取码:977q 安装视频 1.解压完成之后将其放到你喜欢的地址当中去,这里我默认放在了D盘,这是我的根目录 2.配置环境变量 我的电脑->属性->高级->环境…

基础链表代码实现

我们以题目为切入点,深入了解链表代码实现。 题目(单项链表) 题目描述 实现一个数据结构,维护一张表(最初只有一个元素 1)。需要支持下面的操作,其中 x 和 y 都是 1 到 1000000 范围内的正整…

Java 基于 SpringBoot+Vue 的智慧外贸平台的研究与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

vuex中mutations详解,与actions的区别

Vuex 的 Mutations 是用于改变 Vuex Store 中状态的一种方式。它是一个同步的操作,用于直接修改 Store 中的状态。 Mutations 有以下特点: 同步操作:Mutations 是同步的,这意味着它们会立即执行并修改状态。原子性:…

数据库从入门到精通(一)数据库基础操作

mysql数据库基础操作 cmd下启动mysql数据库操作命令数据库重要的删除操作数据库增删改查操作插入数据更新数据删除数据查询数据查询指定记录in查询满足指定范围之内的条件记录not in查询不在指定范围之内的条件记录带between and 的范围查询带like的字符匹配查询(d%以d开头,%d以…

猫头虎分享:2024年值得程序员关注的技术发展动向分析

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

Hadoop:认识MapReduce

MapReduce是一个用于处理大数据集的编程模型和算法框架。其优势在于能够处理大量的数据,通过并行化来加速计算过程。它适用于那些可以分解为多个独立子任务的计算密集型作业,如文本处理、数据分析和大规模数据集的聚合等。然而,MapReduce也有…

cron表达式介绍和使用

Cron表达式是一种用于配置定时任务的字符串,它由数字、字符和符号组成,用于指定任务在某个时间点或周期性地执行。其通常包含六个或七个字段,每个字段代表一个时间单位,如下表所示: 域必须取值范围特殊字符秒是[0, 59…

OpenGL-ES 学习(2)---- DepthTest

深度测试 OpenGL-ES 深度测试是指在片段着色器执行之后,利用深度缓冲区所保存的深度值决定当前片段是否被丢弃的过程 深度缓冲区通常和颜色缓冲区有着相同的宽度和高度,一般由窗口系统自动创建并将其深度值存储为 16、 24 或 32 位浮点数。(注意只保存…

EasyRecovery2024全新官方汉化中文版下载

确实,EasyRecovery以其强大的功能而闻名。以下是它的一些主要功能特点: 全面恢复能力:EasyRecovery可以恢复从各种存储设备中丢失的数据,包括硬盘、U盘、SD卡、数码相机、手机等。无论是因为误删除、格式化、分区丢失、病毒攻击还…

2-7基础算法-位运算

一.基础 位运算经常考察异或的性质、状态压缩、与位运算有关的特殊数据结构、构造题。 位运算只能应用于整数,且一般为非负整数,不能应用于字符、浮点等类型。 左移操作相当于对原数进行乘以2的幂次方的操作,低位补0 右移操作相当于对原数进…

Elasticsearch使用场景深入详解

Elasticsearch是一个开源的、分布式的、RESTful风格的搜索和数据分析引擎。它能够解决越来越多的用例,并不仅仅局限于全文搜索。以下是Elasticsearch的一些主要使用场景及其深入详解。 1. 全文搜索 Elasticsearch最初和最基本的应用场景就是全文搜索。全文搜索是指…

上位机图像处理和嵌入式模块部署(上位机主要功能)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自…

第18讲 投票帖子管理实现

后端&#xff1a; /*** 删除指定id的投票信息* param id* return*/ GetMapping("/delete/{id}") Transactional public R delete(PathVariable(value "id")Integer id){voteDetailService.remove(new QueryWrapper<VoteDetail>().eq("vote_id…

clang前端

Clang可以处理C、C和Objective-C源代码 Clang简介 Clang可能指三种不同的实体&#xff1a; 前端&#xff08;在Clang库中实现&#xff09;编译驱动程序&#xff08;在clang命令和Clang驱动程序库中实现&#xff09;实际的编译器&#xff08;在clang-ccl命令中实现&#xff0…

Codeforces Round 925 (Div. 3) E. Anna and the Valentine‘s Day Gift (Java)

Codeforces Round 925 (Div. 3) E. Anna and the Valentine’s Day Gift (Java) 比赛链接&#xff1a;Codeforces Round 925 (Div. 3) E题传送门&#xff1a;E. Anna and the Valentine’s Day Gift 题目&#xff1a;E. Anna and the Valentine’s Day Gift 样例 #1 样例输…