乐趣区

关于后端:一篇简文让你明白CPU到底是什么为什么能够实现计算

CPU 到底是什么货色?它为什么可能执行数学运算?

本文链接起源:杨建勇的集体博客

简略的物理电路

首先先看一张咱们初中学过的物理电路图【请疏忽糟糕的画图 = =!】

从图中咱们能够看出这是一个简略的串联和并联的电路

图中的 ab 代表着控制电路的开关,通过管制这两个开关的通电状态来管制灯泡的亮与不亮

咱们用数字 10 来示意开关的通电和断电的状态示意,1 示意通电状态,0 示意断电状态。同样的,咱们也用数字 10 来示意灯泡亮与不亮的状态,1 示意灯泡亮了,0 示意灯泡不亮

那么通过咱们学过的物理电路的常识,上图中三个电路,别离有以下三种管制后果:

电路 1 的管制后果【串联电路】

开关 a 开关 b 灯泡
0 0 0
0 1 0
1 0 0
1 1 1

电路 2 的管制后果【并联电路】

开关 a 开关 b 灯泡
0 0 0
0 1 1
1 0 1
1 1 1

电路 3 的管制后果

开关 a 灯泡
0 0
1 1

以上三个表格别离示意就是对应了上图中三个电路通过对开关的管制,进而管制灯泡的亮与否

别小看了这三个简略的电路管制后果的表格,因为这是古代计算机产生的物理根底。能够说,古代计算机的产生就是由这个演变而来的。看到这里是不是感觉有点不堪设想,一个简单的 cpu 居然就是从这么简略的电路演变而来的。至于怎么演变来的,往下看。。。

接下来该是英国数学家 乔治·布尔 和美国电子工程师 克劳德·艾尔伍德·香农 退场了

先来看 乔治·布尔

乔治布尔这个数学家创造了两个概念:一个叫汇合,一个叫布尔逻辑。咱们先来看下 汇合。有学过数学的都晓得在汇合中,有存在着三种操作,别离是:交加、并集、差集。如下图所示:【同样请疏忽糟糕的画图 = =!】

置信从上图中,有解开一部分程序员的纳闷,那就是咱们在写代码的过程中,始终用到的 AND / OR / NOT 逻辑操作,到底是从哪里来的。其实咱们用的就是这个平凡的数学家提出的这个汇合的概念以及三种最根本的运算。从上图中能够看出,第一个就是 交加 的汇合运算,第二个就是 并集 的汇合运算,第三个就是 差集 的汇合运算。而应用到的符号就是这个数学家创造的:[AND]与、[OR]或、[NOT]非

再来看下 布尔逻辑 。在布尔逻辑中,只应用两个值,一个是 0,一个是 1。讲这个布尔逻辑这么简略到底有啥用呢?再来看下一个叫 真值表 的货色,表格如下:

表格 1:【交加运算】

0 1
0 0 0
1 0 1

表格 2:【并集运算】

0 1
0 0 1
1 1 1

这两个表格到底在表白什么呢?可能仔细的童鞋曾经发现了。其实以上两个表格,就是实现了布尔逻辑中,0 和 1 之间的交加和并集的运算

那么再仔细一点的童鞋又可能发现了。实际上,这两个表格的运算后果,跟下面的前两个电路管制后果的表格有点像,这么讲可能有些人一时还没看懂,我把它用上面的表格示意进去:

表格 1 【串联电路对应了交加运算】

0[断电的开关 a] 1[通电的开关 a]
0[断电的开关 b] 0[不亮的灯泡] 0[不亮的灯泡]
1[通电的开关 b] 0[不亮的灯泡] 1[亮的灯泡]

表格 2 【并联电路对应了并集运算】

0[断电的开关 a] 1[通电的开关 a]
0[断电的开关 b] 0[不亮的灯泡] 1[亮的灯泡]
1[通电的开关 b] 1[亮的灯泡] 1[亮的灯泡]

怎么样。看到这里,是不是感觉很神奇,神奇的中央在于:数学上的运算,跟物理上的逻辑电路居然截然不同。这点很重要,因为这里数学跟物理有共通的中央,从而实现了让物理电路从此有了数学计算的能力。至于怎么计算的,克劳德·艾尔伍德·香农 呈现了。这个平凡的电子工程师发明了 数字电路设计 这个学科

克劳德·艾尔伍德·香农

克劳德·艾尔伍德·香农 本来是在 1932 年进入到密歇根大学学习,在这个大学里首次接触到了 乔治·布尔 的实践,起初又进入到了麻省理工学院参加了 微分剖析机 的钻研工作。微分剖析机 是一台机械式的计算机,不要小看这台机械式的计算机,这可是参加了很多重要工程,包含曼哈顿打算,就是造原子弹的,很多计算都是靠这种晚期的计算器计算出来的。在这里不得不服咱们国家的科研人员,因为过后的技术封闭,咱们国家的科研人员硬是用算盘敲出的原子弹,真的是硬核到不行的操作。

讲了那么多,那么 克劳德·艾尔伍德·香农 具体的奉献是什么呢。通过下面的长篇解说咱们曾经晓得了一些货色:电子开关的通断电能够用 1 和 0 来示意;布尔逻辑也是 1 和 0;电子开关的通断电管制灯泡的亮与否,跟真值表的计算结果是一样的;1 和 0 刚好是二进制。而香农的奉献就是,在原来是机械式的计算机下面,引入了电子管制的形式,能够用电子开关模仿布尔逻辑运算了

至于电路为什么可能实现运算,在这里就不进行其余的解释了。数字电路设计说实话没去买书来学习,在这里就不丢人现眼了 = =!

题外话

简单的数学计算怎么通过物理电路实现

既然计算机可能实现简略的 1 位二进制的加法,那么怎么实现更加简单的数学运算。这就要感激数学家。数学家将简单的数学运算简化到数学上的加法运算【咱们国家的原子弹制作就是将简单的函数运算用算盘打进去的】。数学家使用各种数学工具,比方傅立叶变换、平方开方微积分等等,将数据的计算都换成了加法计算

也就是说,数学上简单的运算能够通过各种数学工具简化到加法运算,那么就能通过对电路的设计来实现计算,这也就让计算机有了更加弱小的计算能力。

[欢送来我的博客逛一逛 [杨建勇的集体博客 http://yangjianyong.cn]](http… “ 欢送来我的博客逛一逛 [杨建勇的集体博客 http://yangjianyong.cn]”)

退出移动版