一篇简文让你明白CPU到底是什么?为什么能够实现计算?

CPU到底是什么东西?它为什么能够执行数学运算?

本文链接来源:杨建勇的个人博客

简单的物理电路

首先先看一张我们初中学过的物理电路图【请忽略蹩脚的画图= =!】

一篇简文让你明白CPU到底是什么?为什么能够实现计算?_第1张图片

从图中我们可以看出这是一个简单的串联和并联的电路

图中的 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竟然就是从这么简单的电路演变而来的。至于怎么演变来的,往下看。。。

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

先来看乔治·布尔

乔治布尔这个数学家发明了两个概念:一个叫集合,一个叫布尔逻辑。咱们先来看下集合。有学过数学的都知道在集合中,有存在着三种操作,分别是:交集、并集、差集。如下图所示:【同样请忽略蹩脚的画图= =!】

一篇简文让你明白CPU到底是什么?为什么能够实现计算?_第2张图片

相信从上图中,有解开一部分程序员的疑惑,那就是我们在写代码的过程中,一直用到的 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]")

你可能感兴趣的:(后端)