聊聊开关和CPU之间故事

news2024/11/16 11:32:29

我们本篇文章来看看计算机在硬件层面究竟是怎么表示二进制的,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

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

ABX(输出)
000
011
110
101

其表达式也就是:

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。 

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

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

相关文章

Delphi 中 interface 如何使用 (chatGPT回答)?

目录 1. 定义接口:可以使用interface关键字来定义一个接口。例如: 2. 实现接口:类可以实现一个或多个接口。要实现接口,需要在类声明中使用implements关键字,并提供对应接口的方法的实现。例如: 3. 使用…

前端基础(props emit slot 父子组件间通信)

前言:如何实现组件的灵活使用,今天学习组件封装用到的props、slot和emit。 目录 props 子组件 父组件 示例代码 slot 示例代码 作用域插槽 emit 示例代码 props 需要实现在其他组件中使用同一个子组件。 子组件 子组件(所谓子组件…

gpt-3.5-turbo-0613微调信用卡分期对话

1、数据准备:jsonl格式。样本:至少10个。d_train.jsonl {"messages": [{"role": "system", "content": "您是一位经验丰富的信用卡账单分期产品的销售助手。当前分期产品产品的特点是允许客户延期2个月开…

大数据项目实战(安装准备)

一,搭建大数据集群环境 1.1安装准备 1.1.1虚拟机安装与克隆 1.虚拟机的安装和设置以及启动虚拟机并安装操作系统(以下仅供参考) 安装一台虚拟机主机名为:hadoop01的虚拟机备用 VMware虚拟机安装Linux教程(超详细)_vmware安装…

呈现数据的精妙之道:选择合适的可视化方法

在当今数据时代,数据可视化已成为理解和传达信息的重要手段。然而,选择适合的数据可视化方法对于有效地呈现数据至关重要。不同的数据和目标需要不同的可视化方法,下面我们将探讨如何选择最佳的数据可视化方法来呈现数据。 1. 理解数据类型&a…

Putty连接登录Linux centos7

一、下载Putty 下载网址 https://www.putty.org/ 安装完成后会有两个重要的软件 Putty是用于连接Linux的客户端 PuTTYgen是通过客户端下载的service.ppk生成本地登录要用到的key 二、运行putty 双击putty.exe可以打开程序(程序小,学习linux可以把该…

HarmonyOS开发:超详细了解项目的工程结构

前言 系列文章目录: HarmonyOS开发第一步,熟知开发工具DevEco Studio 当我们熟练的掌握了DevEco Studio之后,就可以创建项目进行练习了,和市场上大多数IDE一样,DevEco Studio也给我们提供了很多的实例模板&#xff0c…

0821|C++day1 初步认识C++

一、思维导图 二、知识点回顾 【1】QT软件的使用 1)创建文件 创建文件时,文件的路径一定是全英文 2)修改编码 工具--->选项--->行为--->默认编码:system 【2】C和C的区别 C又叫C plus plus,C是对C的扩充&…

videojs 实现自定义组件(视频画质/清晰度切换) React

前言 最近使用videojs作为视频处理第三方库,用来对接m3u8视频类型。这里总结一下自定义组件遇到的问题及实现,目前看了许多文章也不全,官方文档写的也不是很详细,自己摸索了一段时间陆陆续续完成了,这是实现后的效果.…

几何对象操作(一)

几何对象是构成要素的必要条件 import numpy as npdef getgtypes():return point, linestring, polygon, multipoint, multilinestring, multipolygondef showgeoms(geoms, name"tmp", gtypeNone):# 快速显示一串几何对象,gtype 如果是默认的则根据geoms生成相应的类…

《中国综合算力指数》发布,我国算力规模居全球第二,中创积极响应东数西算政策

算力通俗地说就是计算能力,是数据中心处理数据并输出结果的能力。2023中国算力大会于近期在宁夏银川开幕。工业和信息化部负责人在会上透露,我国算力产业已初具规模。 截至目前,全国在用数据中心机架总规模超过760万标准机架,算力…

【PHP】错误处理

文章目录 错误处理错误分类错误代号错误触发 错误处理 错误处理:指的是系统(或者用户)在对某些代码进行执行的时候,发现有错误,就会通过错误处理的形式告知程序员。 错误分类 1)语法错误:用户…

IDEA配置JDK8、JDK17中文文档

1.获取对应的chm文件,如 JAVA_API_1.7中文.chm。 2.使用CHMDecoder工具,下载链接 https://download.cnet.com/CHM-Decoder/3000-20412_4-10390773.html 这种也有在线的,转化就行(转化后是一个文件夹) 如果是用的我说的这个工具…

I2C设备驱动挂载

一、 概述: I2C工作原理: I2C总线标准的两根传输线,SDA是数据线,Scl是时钟线,当SCL为高,SDA由高到低时,发送启动信息,发送9个脉冲,1-7是地址,8是读写控制位&a…

GEE/PIE 遥感大数据处理与典型案例

查看原文>>>【399三天】GEE/PIE遥感大数据处理与典型案例实践 随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来…

FPGA GTX全网最细讲解,aurora 8b/10b协议,OV5640摄像头视频传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX 接收接口GTX IP核调用和使用 4、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTX aurora 8b/10b数据对…

深入Java中的观察者模式

观察者模式是软件开发中常用的一种设计模式,它通过定义一对多的依赖关系,使得一个对象(主题)的状态变化可以通知多个其他对象(观察者)。 这种模式的优点是解耦和增加扩展性,用于实现对象之间的…

iptables的使用规则

环境中为了安全要限制swagger的访问,最简单的方式是通过iptables防火墙设置规则限制。 在测试服务器中设置访问swagger-ui.html显示如下,区分大小写: iptables设置限制访问9783端口的swagger字段的请求: iptables -A INPUT -p t…

Spring 容器启动耗时统计

为了了解 Spring 为什么会启动那么久,于是看了看怎么统计一下加载 Bean 的耗时。 极简版 几行代码搞定。 import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor;import java.util.HashMap; imp…

【科研】-- 如何将Endnote中参考文献格式插入到Word?

文章目录 如何将Endnote中参考文献格式插入到Word? 如何将Endnote中参考文献格式插入到Word? 1、首先确保Endnote和Word安装正确,正常可以从学校官网中下载到正版软件,下载后在word栏目中会出现EndNote的标签; 2、可…