聊聊开关和CPU之间故事

作者:小牛呼噜噜 | https://xiaoniuhululu.github.io

大家好,我是呼噜噜,在先前的一篇文章计算机中数值和字符串怎么用二进制表示?中,我们知道了计算机为什么会采用 0 和 1 组成的二进制,来表示所有的信息,比如机器指令、数字、字符串、声音、图片、视频等等。

我们本篇文章来看看计算机在硬件层面究竟是怎么表示二进制的,CPU究竟是怎么实现的?通过本文的学习,我们也可以反过来明白为什么计算机会采用二进制了。

开关

我们在生活中,处处都是开关,比如控制灯的开关

image

我们可以发现一个很简单的现象:

  1. 串联的开关,只有2个开关都闭合,灯泡才亮。这也就是布尔代数中"逻辑运算与"
  2. 并联的开关,只要有1个开关闭合,灯泡就会亮。这也就是布尔代数中"逻辑运算或"

我们以最简单的2个数,0和1来举个例子,写出其布尔代数的真值表:

image

电报和继电器

在人类信息传递发展的历史上,长途信息传递一直是非常困难的时,当时常见的方式有,比如人骑马送信,训练信鸽、点燃烽火,但信息传递的效率都非常低效。直到电报的出现,电报思想的正式成形是在19世纪早期,它的让人类传递信息的效率得到极大的提升。

电报利用电的特性来传递信息,早期设计复杂且不稳定,传递的信息复杂度又比较低,1837年美国人摩尔斯通过电磁感应改良了发报机,并发明了摩尔斯电码。他将电报划分为2种信号,短促的"点信号"和长一点的"划信号", 将把“点”当成“1”,把“划”当成“0”(这不就是二进制嘛),并编写了个“字典”将字母及数字编码一一对应,这样就能传递复杂的信息,在未来产生了巨大影响力,意味着现代通信的开始。

由于早期的电报传输,需要铺设电线,但是随着电线越长,其电阻就越大,电信号常常传输过程中被消耗点,这样接受方就无法接收到信息了。幸运的是,工程师发明了继电器,其原理就是接收微弱的信号,然后不断地通过新的电源重新放大已经开始衰减的原有信号,最后把它增强后发送出去

image

当开关是打开的话,灯泡是不亮的;但当开关是闭合的话, 电流流过围绕在铁棒上的线圈,会发生电磁效应,铁棒就具有了磁性,会将弹簧片吸下来,右边电路就通了,灯泡就会亮了。这样通过继电器,一段段放大信号,电报就能长距离传输信息了。

虽然继电器有放大信号的作用,但和开关一样继电器也可以串联或并联以执行逻辑中的简单任务,继电器比起普通的开关的优势在于继电器无需直接被输入者控制,可以被其他继电器控制,这样就可以组合完成更复杂的操作。比如我们可以通过继电器实现: 当我们闭合开关时,灯泡关闭;当我们打开开关时,灯泡去点亮这种灯泡的状态和开关的闭合状态相反的操作,普通开关是无法实现这种操作的。这些电路物理的表象下隐藏的逻辑关系,一直没有被人发现。

直到1938年,克劳德·香农在麻省理工学院所写的硕士论文《A Symbolic Analysis of Relay and Switching Circuits》中阐述了继电器和开关电路中的符号分析之间的关系,他将开关、继电器、二进制、布尔代数联系起来。也就是发现人类可以通过开关和继电器这些普通的电路,直接就能实现布尔代数各种逻辑运算操作。这些继电器的组合被称为逻辑门,他们构造基本的逻辑电路,也叫门电路

门电路

image

上面是3种最最基本的门:

  1. 与门,两个开关只有同时打开,电流才会通过,灯泡才会亮
  2. 非门,当开关闭合时,电流会通过,灯泡会亮;开关打开,电流不能通过反而,灯泡熄灭
  3. 或门,两个开关中只要有一个打开电流就能通过,灯就会点亮

这些门其实就是一个个"开关"的抽象, 以后我们需要的各种复杂的逻辑都可以通过这3个门来实现,真的是非常奇妙
我们再来看一个常见的门:异或门XOR

image

我们先写出其真值表(真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效):

A B X(输出)
0 0 0
0 1 1
1 1 0
1 0 1

其表达式也就是:
image

通过表达式我们就能知道,把非A与B的值 和非B与A的值 通过或门加起来就能得到异或门

image

材料学的发展

上世纪材料学的发展也大力推动了计算机的蓬勃发展,计算机的硬件出现了3次大的更新换代

继电器与哈佛Mark1号

在1944年,为了给美国曼哈顿计划跑模拟,IBM建造出来首台自动按序控制计算机哈弗Mark1号,有76万五千个组件,300万个连接点和500英里长的导线,重达4500公斤,占地面积有房间那么大。其大脑是由继电器组成的,其一秒能做3次加或减,乘法花费6秒,除法花费15秒

image

由于继电器的金属臂有“质量”,无法快速开关,1940年一个好的继电器一秒钟可以翻转50次,但是任何会动的机械都会随着时间出现物理磨损,部件会损坏,随着继电器数量增加,故障概率也会增加。真的是又慢又容易坏的大家伙,但瑕不掩瑜,其依旧具有跨时代的意义。

真空管与巨人一号

在1904年,英国物流学家弗莱明就已经开发了一种新的电子组件,叫做真空管,也就是把两个电极装在一个气密的玻璃灯泡里,但弗莱明的这个电子部件,电流只能单向流动,俗称称为 "二极管"。要想制作计算机,需要能够控制电子的流动的东西。

在 1906 年,美国发明家"李·德富雷斯特"在"弗莱明"设计的两个电极之间,加入了第三个"控制"电极(一 种栅栏式的金属网,形成电子管的第三个极),向"控制"电极施加正电荷,它会允许电子流动;但如果施加负电荷,它会阻止电子流动。被命名为真空三极管,这样就能形成一个"开关",可以“断开或闭合电路”。

由于真空管内没有会动的组件,想较于机械装置,磨损更少,又没有金属臂的限制,每秒可以开闭数千次,继电器一秒钟只能翻转50次左右,效率大大的提升。

第一个大规模使用真空管的计算机是"巨人1号",标志着计算机从机电转向电子,电子计算机的大门自此打开。由工程师Tommy Flowers设计,完工于1943年12月,用于二战时破解德国军事通讯密码。

image

晶体管与IBM608

虽然真空管做计算机的大脑,解决了继电器许多缺陷,但是其还是容易损坏,就像灯泡一样烧坏。到1950年代,真空管计算机都达到了极限。

1947年,贝尔实验室发明了晶体管,其成为了新的"开关",也标志着一个全新的计算机时代到来。晶体管不仅体积小,响应速度快(每秒切换开关能达到上百万次),而且使用寿命也非常悠远,准确 性高,稳定性好,不易损坏。关键它可以做得非常小,一块集成电路即可容纳十几亿到几十亿 个晶体管。

晶体管泛指一切以半导体材料为基础的单一元件,半导体顾名思义,可导电也可不导电,是常温下导电性能介于导体与绝缘体之间的材料,一般有硅、锗、砷化镓等

IBM608第一个完全用晶体管,消费者也可以买的起计算机。该计算机有3000个晶体管,每秒执行4500次加法,80次左右的乘除法。

image

计算机2大特性:计算能力和记忆能力

通过本文的阅读,我们知道了开关是一个生活中很普通的东西,但香农将开关、布尔代数联系的一起后,产生了化学反应。可以用一个个开关组合起来,成为门电路,从而能够造成CPU。

随着材料学等发展,开关也从继电器到真空管,再到晶体管,相应速度,提交,使用寿命,成本都得到了明显的改善。他们制造出来的计算机也慢慢的变成了我们现在熟悉的计算机。

计算机的大脑就是CPU,我们知道CPU内最重要的2个部件是寄存器和计算单元那么如何用开关来让计算机拥有计算能力和记忆能力?大家可以思考一下,后面的文章让我们抛开硬件,通过抽象出来的逻辑门来一步步设计和实现一个CPU。


参考资料:
《深入理解计算机系统》
《编码:隐匿在计算机软硬件背后的语言》
《深入浅出计算机组成原理》
《数字电子技术基础》
《穿越计算机的迷雾》
百度百科


全文完,感谢您的阅读,如果我的文章对你有所帮助的话,还请点个免费的,你的支持会激励我输出更高质量的文章,感谢!

原文镜像:聊聊开关和CPU之间故事

计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」,我们下期再见!

聊聊开关和CPU之间故事

原文链接:https://www.cnblogs.com/xiaoniuhululu/p/17361603.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:聊聊开关和CPU之间故事 - Python技术站

(0)
上一篇 2023年4月28日
下一篇 2023年4月30日

相关文章

  • Fuel 30 分钟快速安装OpenStack(图文教程)

    “Fuel 30 分钟快速安装OpenStack(图文教程)”攻略 简介 本文将讲解如何使用Fuel在30分钟内快速安装OpenStack,并提供详细的图文教程,适合OpenStack初学者和想要快速部署OpenStack的开发者使用。 环境要求 在开始安装前,请确保你的环境具备以下要求: Fuel镜像的下载,可从官网获得。 在硬件上使用VMware虚拟化和…

    Linux 2023年5月24日
    00
  • linux怎么使用cat命令查看文件? linux中cat命令的使用方法

    Linux怎么使用cat命令查看文件 在Linux中,使用cat命令可以查看文件内容。下面详细讲解一下cat命令的使用方法。 cat命令的基本语法 cat命令的基本语法如下: cat [选项] [文件名] [选项] 可以省略,常用选项包括: -n 显示每一行的行号; -b 显示非空白行的行号; -s 合并多个空白行为一行; -E 在每行末尾显示一个 $ 符号…

    Linux 2023年5月14日
    00
  • Apache安装配置避坑指南

    以下是“Apache安装配置避坑指南”的完整使用攻略,包含两个示例说明。 Apache安装配置避坑指南 Apache是一款流行的Web服务器软件,但安装和配置过程中可能会遇一些问题。以下是一些常见的问题和解决方法,帮助您避免在安装和配置Apache时遇到的坑。 1. 确认操作系统和Apache版本的兼容性 在安装Apache之前,需要确认操作系统和Apach…

    Linux 2023年5月13日
    00
  • Linux yum安装过程图文详解

    Linux yum 安装过程图文详解 在 Linux 系统中,yum 是一个非常常用的包管理工具,可以帮助我们快速地安装所需软件包及其依赖项。本文将详细讲解 Linux 系统中 yum 的安装过程,供大家参考。 1. 检查 yum 是否已安装 在绝大多数 Linux 发行版中,yum 工具都已经预装了。我们可以通过以下命令来检查 yum 是否已经安装: yu…

    Linux 2023年5月14日
    00
  • Centos7.3服务器搭建LNMP环境的方法

    Centos7.3服务器搭建LNMP环境的方法 简介 LNMP是常用的一种Web服务器环境,包含Linux, Nginx, MySQL和PHP。下面我们将演示如何在CentOS7.3上快速搭建一个LNMP环境。 安装必要工具 首先,需要准备一些必要的工具: yum install -y wget vim 安装 Nginx 安装 EPEL 源 yum inst…

    Linux 2023年5月14日
    00
  • kali Linux openvas忘记密码的解决方法

    1.先删除默认的admin帐号root@xxs:~# openvasmd –delete-user=adminUser deleted. 2.创建admin帐号,默认会生成密码root@xxs:~# openvasmd –create-user=adminUser created with password ‘462972b7-02fc-4a0b-a58…

    Linux 2023年4月11日
    00
  • VirtualBox的Linux虚拟机文本模式和图形模式的切换问题

    下面是VirtualBox的Linux虚拟机文本模式和图形模式的切换问题的完整攻略。 1. 切换到文本模式 VirtualBox中的Linux虚拟机默认进入图形模式,如果需要切换到文本模式,可以按下Ctrl+Alt+F1键。这时候会跳转到tty1界面,可以使用Linux的命令行模式。 如果需要再次跳转回到图形模式,则可以按下Ctrl+Alt+F7或者Ctrl…

    Linux 2023年5月24日
    00
  • linux下提示bash:command not found

    如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么 首先就要考虑root 的$PATH里是否已经包含了这些环境变量。 主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。 四个主要存放的东东: ./bin: bin为binary的简写主要放置一些系统…

    Linux 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部