笔者在翻阅了大多数初中高中的计算机相关教材以及一些科普读物后发现了一个非常可怕的现象:大多数在编写这些书的人,根本没有意识到计算机技术的基础是什么,只是非常机械的跟读者灌输着0和1的二进制运算,二极管的通断原理,以及传统的计算机是由控制、运算、存储、输入、输出五个基本分构成的,这些概念当然都没有错,只是却都没有真正触及到现代电子计算机构建和制造的根本原理,那就是逻辑代数。
我相信99.99%的人在读过这些书之后,对于计算机的底层构筑逻辑依然会是一头雾水。甚至没有能力自己搭建一个能够计算0和1加减运算的计算机。
【资料图】
只有对于真正深入的学习过一定计算机原理的人,注意,我说的是真正深入学习过计算机的原理,那么你才知道所有计算机构建的底层逻辑是其实是建立在逻辑代数的基础上的。
光是这一点,99%的计算机入门教材,都没有告诉过读者。99.99%的读者,也根本没有能力和机会去了解。
而且逻辑代数是一门在大学才会系统教授的课程,我们在大多数计算机初等教材和科普读物中最多只能知道计算机逻辑电路的底层是利用二极管、三极管的电流通断属性来代表二进制中的数字0和1。
实际上,对于逻辑代数的认识,很多人都会感觉到非常吃力。因为逻辑代数实际上在本质上已经颠覆了我们大多人的思维逻辑基础。
我们接受的古典数学教育,从思维进程上解构的话,都是用数学来解析道理和逻辑。
但是逻辑代数的思维进程正好是反过来的,是要用道理和逻辑来解析数学。
也就是用逻辑代数的抽象语言来表征现象。
这种思维的颠覆性转变,对大多数人来说,是很难的。因为我们的思维是从小到大的教育形成的,我们人类自出生后接受的思维训练都是用数学来解析道理和逻辑。
也因为逻辑代数这种学科特性,使得逻辑代数的发明人乔治布尔,在生前几乎没有人认为他是一名数学家。从很大程度上说,逻辑代数跟古典数学在本质上是割裂的,只不过在顶层通过人类的逻辑定义,而产生了关系。
我们要知道,对于计算机本身来说,它根本没有数学的概念,甚至没有1和0的概念,也根本没有2进制的概念。
但是计算机有着一种对逻辑的基础认知,计算机知道的逻辑就是电路的通断。
在这里认知这个概念,我可以重新定义为一种系统的反应。如果对一种信号计算机没有反应,那它就没有这种认知。
我们人类的认知,譬如手触碰火知道疼,这就是一种神经认知。再譬如某人在听到股市的涨跌新闻后,心情没有任何起伏,思维也没有任何反应,就如同原始人听到广播新闻一样,那就说明这个人对股市没有任何认知,因为他身体系统和思维系统,没有对这种声音信息的输入做出任何反应。
当然,认知在社会学层面还分为正确的认知与错误的认知等等。在这里我们只对认知做出基础的定义,用来解释计算的最底层认知。
同理,对计算机底层的电路来说,电流的流向是否与二极管的导电通路相同,这就是计算机神经电路最底层的认知。因为二极管导电的时候,电路就会做出通电的反应。所以,我们可以将这种现象称之为计算机本身的底层认知。
然后,我们就用这种计算机最底层的认知,通过搭建逻辑电路,继而告诉计算机接收到什么信号的时候,要去做什么事情。
这就是人类进行逻辑电路设计(芯片和设计)和程序设计的工作本质。
对于着火,如果我们要像计算机对着火这一信号有认知,那么我们只能通过温度传感器来引起输入电信号的变化,继而通过电信号来“刺激”计算机的逻辑电路做出反应。
文章到这里的时候,基本还处在一个一般人能够理解的层次。
但是再深入下去,说到如何搭建这个逻辑电路的时候,大部分人都会懵逼。
因为如何搭建这个逻辑电路,就开始要颠覆你的几乎已经固化的思维体系了。
这就是前面说的,要用道理和逻辑来解析数学!
这里,我们先看一下传统教科书所说的计算机的五大部件,也就是控制器、存储器、运算器、输入设备、输出设备。
这五大部件的中最好被人所理解的是输入设备和输出设备。
只要稍微理解一下,输入设备和输出设备,都是用不同电路通断来产生不同的电阻继而产生不同的电信号(电压)。
而不同的电信号在进入控制器后,会激活不同的控制逻辑电路,继而控制器会将一些系列电信号经过控制逻辑电路的处理后,输入到存储器,而后再由存储器按照按照整个计算芯片的时钟频率,依次将不同的电信号输入到运算器激活运算器中的负责计算的逻辑电路,经过逻辑电路的逻辑处理后,将处理后不同的电信号依次输入到存储器中,而后存储器再以依次讲这些电信号输入到控制器,控制器经过控制电路的再处理,将电信号输出到输出设备向人类展示结果。
毫不夸张的说,你敲击键盘的一瞬间,为了最终在屏幕上显示出你输入的一个字母或数字,就有上亿个电子在计算机主板上进行了一次传递信息的旅行,而逻辑电路则进行了数十万次的逻辑判断。
而这些电子的旅行路径,就是人类在电子电路自身基础认知能力的基础上(电路的通断),通过逻辑理学的方式去解析并重构人类的所认知的各类知识(尤其是数学知识),最终搭建出的逻辑电路。
大道至简,电路的通断既可以用0和1来表示,也可以用阴和阳来表示。
但是,可怕的问题就在于,即使我们知晓最底层的道理,但绝大多数人却无法搭建出复杂上层建筑。甚至无法理解是如何搭建的。
其实问题的一个根源就在于,逻辑代数并不是一门在传统的基础教育体系与基础认知构建中容易被普及的基础学科。
在笔者看来,逻辑代数更应该称为逻辑理学,本质上就是用简单的电路通断(事物的阴和阳)来解构世界万物。
而我们目前的传统教育,依然是在学习用古典数学和传统物理的方式去教导后代如何认知世界。
这与逻辑代数本身在哲学层面上认知世界的方式是正好相反的。
当然,用逻辑代数的方式去解构世界,理解世界,对于目前大多数人的日常生活似乎没有太大作用。但是这种基础的认知观念,却可以让更多的人能够用更理性的思维去理解当前这个世界,尤其对于计算机芯片科技层面的产物。譬如手机和电脑以及在计算机芯片技术的基础上产生的即将对人类的生产方式产生巨大的颠覆性影响的人工智能AI。
对于普通人来说,芯片技术以及AI技术的发展,已经基本是一种近乎魔法和神学的存在,是远远超出了一般人的理解和接受能力的。即使你去研读那些相关技术的论文,绝大数人也都根本看不懂理解不了。
为了方便对这些技术的理解,我们来做一个最简单的思维实验,也就是用逻辑电路(逻辑代数)来对古典数学中最基础的概念做一下解构。
在逻辑理学当中最基础的概念就是通和断,真和假,阴和阳。任何一次逻辑运算的结果,只有真和假(0和1)两种,所有更复杂的结果,只是每一次逻辑运算结果的不同排列与组合。
而古典数学中的基础概念,则是数字和运算(加与减)
我们在这里尝试用逻辑理学来解构古典数学中最简单的加法运算,我们来尝试用逻辑代数的方法构建一个5以内加法运算计算器。
要搭建逻辑代数和古典数学之间的关系,首先要做的就是定义。
定义多种逻辑代数的推导结果(逻辑电路的运行结果)来分别代表古典数学中的数字以及运算。
然后用这些逻辑电路产生的运行结果(电流)进入下一个逻辑电路进行运算,一步步运算。
用逻辑电路的通和断来代表二进制数字,大多数人还能理解,毕竟这在传统 思维模式中是一种静态的东西。
但如何用逻辑电路来代表加和减的运算呢?
还是要回到逻辑理学的基础,在逻辑理学中没有加和减的概念,只有真和假(阴和阳)的概念。
如何用这两个基本概念来构建出加和减的概念呢?
我们用到的还是用定义来告知。
首先将定义转变为一个电信号,逻辑电路在接受到这个定义后,就会执行加法的逻辑电路运算。
这里需要着重指出的就是,上文中我们说的定义这个概念,我们可以在很多计算机类的科普读物中读到,不过很少有科普读物能够清晰地告诉你,这个所谓的定义,其实就是计算机芯片的指令集。
搭建一个芯片逻辑电路的一项基础工作,就是设定好芯片的指令集。
这个指令集,说白了也是人类与计算机沟通的底层语言,他是通过人类输入不同电信号的方式来实现的。
它既向计算机解释着它接受到这个信号后应该将电信号接下来输入到哪个逻辑电路进行运算。同时也向人类解释着机器行为的表征性意义,以及告诉人类本身要如何通过最底层的电路通断逻辑来跟机器“沟通”
人类就是通过对指令集逻辑电路的搭建,来直接控制计算机芯片的。计算机中控制器的核心,就是指令集逻辑电路。
还需要特别说明一点的就是,在不同的指令集的定义下,同样的逻辑电路,可能代表着不同的表征含义。
简单地说就是,我们在输入字母A的时候,如果在某个指令集中,它的底层电路是用某一个电路的通的表示的,而在另一个指令集中,也可以用同一个底层电路的断来表示。
理解了这个联系数理表征与物质理学的定义的指令集,我想有些聪明的读者大概会联想到八卦。
说白了八卦也是一套用于沟通人类与宇宙的指令值,是人类根据观察天地万物对立统一的现象,用阴(电路断--)和阳(电路通—)来作为基本的逻辑反应指令,并通过不同的搭配演变八卦的指令值。
只不过现在很少有人能够读懂和利用这套指令集了。
除了指令值之外,还有一个对逻辑电路运算有着基础性作用的辅助器件,叫做时钟频率发生器。
这玩意也不是一般的计算机科普读物会给读者做解释的。
说白了,这个时钟频率发生器,定义了一个整个芯片执行在一定时间内要进行多少次运算(运行),向存储器发送多少次电信号。
而时钟频率发生器定义则是计算机输入器输入指令后,在一定时间内要向芯片输出多少次电信号。
这两个电信号的频率是一致的。
而时钟频率发生器的核心,就是一个晶体谐振器,他负责将输入电源进行周期性的阻断。
也就是所谓的将电信号转换成脉冲信号。
脉冲信号,实际上也就是电流周期性的通断。(这个通断的频率极短促,每秒上亿次的量级)
电流每通一次,CPU就执行一次运算。
而这个时钟频率发生器的频率在一般的计算机科普读物中,被称作CPU的主频。(譬如主频2Ghz的CPU,说的是额定功耗下,CPU可以承受20亿次电流的通断,进行运算20亿次。)
理解了这个,我们还可以有个有趣的推论:我们都知道电流的速度是3x10^8米每秒,那么我们设计一个逻辑电路的时候,如果每个逻辑电路的电路长度都是10^8米,那么这个逻辑电路的运算频率最快的极限也只能达到1/3秒,也就是1秒执行3次逻辑运算,否则上一次计算还没完成,就有新的电信号输入,会造成逻辑电路运行混乱。
理解了上面的内容我们就可以理解,为什么超频会导致计算机CPU发热量上升,因为超频后,在同样的时间内,CPU的计算次数上升了,电流通过CPU的次数上升了,所以功耗和发热量也就上升了。
时钟频率发生器,在不同的电压下,频率是会发生变化的。电压越高,频率越快。这是个这个器件本身的核心元件谐振晶体的物理特性紧密相关的。所谓的给CPU超频,就是在散热条件允许和CPU本身电压允许的情况下,提高时钟频率发生器的电压。
做个比较形象的比喻,时钟频率发生器,相当于人类心脏跳动的频率。
如果始终频率器发生短路,那么CPU就相当于一直处于通电状态,在进行过一次运算后,就没有新的不同电信号输入了,CPU也就只充当了一个电阻的作用,持续发热,而不能运算。
讲完了这些,我们在回过头来进行5以内加法的逻辑电路构建。
5以内的加法,最大的结果是10,用二进制来表达就是1010。是一个四位二进制。
二级制加法运算的基础是满2进位,为了方便实现这一满2进位的逻辑。我们搭建一个需要四个四个输入信号的逻辑电路。
譬如我们输入数字3,这个四个逻辑电路表达的就是0011。
第二个四信号输入逻辑电路输入4,这个四个信号输入的逻辑电路表达的就是0100。
然后我们再进行每一个位的逻辑判断,将两次输入的四个信号逻辑电路结果分别按照数位接入下一个每一个数位的逻辑电路。用来计算第一个数位的逻辑电路有两个输入和两个输出,其中一个输出是第一位的二进制数字输出,第二个输出是进位输出。当输入的是1和0的时候,那么输出的第一位就是1。如果输入的是0和0,那么输出的二进制第一位数字就是0,进位输出也为0。如果输入的是1和1,那么输出的二进制第一位就是0,输出的进位数就是1。
上面的这套逻辑电路的运行结果,就是在执行二进制加法的时候,第一位运算时执行的电路逻辑。
而用来计算第二个数位的逻辑电路,有三个输入和两个输出。中两个输出,为最先人为输入的本位电信号,另一个信号则是上一位的逻辑电路输出的进位电信号。
这个逻辑电路其输入的三个信号和输出的三个信号对应为:
输入(000)输出(0(本位),0(进位))
输入(100)输出(1,0)
输入(110)输出(0,1)
输入(111)输出(1,1)
第三个数位和第四个数位的逻辑电路与第二数位的逻辑电路相同。
这样一来,我们就利用最基本的电路通断产生逻辑信号(这个信号在电路中是用电压和电流来传递的)完成了一套5以内加法运算的逻辑代数语言表达。
这就是一个电子计算机工程教材中常说的最基本的全加器原理。
理解了全加器,你大概也就理解了一件事情:
对于电子计算机来说,输入什么,与输出什么,其实本质上都是人为的设计出来的。但问题就在于,人类对于自己设计的逻辑电路的运行结果,由于电路逻辑运算的数量级已经过于庞大,以至于其运算结果很多时候是人类自身根本无法理解的。
换言之,用一种我们也可以用一种常人无法理解的说法来说:
计算机的所有运算结果,只不过是这个宇宙中一直都存在的存在。我们人类之所以发现不了,只是因为我们的逻辑运算能力有限 。
而在构建这个加法逻辑电路的过程中,不知道读者是否能够理解逻辑代数的本质。
逻辑代数本质上是没有数字和古典数学的运算法则的。电子计算机中的数字和运算法则,都是人类利用基础的电力电路通断逻辑来构建起来的。
所以说,逻辑代数与人类传统教育所形成的的直观认知是反向的。
譬如用传统的古典数学的思维方式,我们可以说地上一只猴子,树上一只猴子,一共有几只猴子?那么我们学习数学后,就说,1加1等于2,所以有两只猴子。
但同样的问题,我们是没办法直接用逻辑代数的语言来直接表述的。因为对于逻辑代数来说,有几只猴子它只是一种逻辑现象,而甚至根本不存在数字的概念。甚至在逻辑代数中,也根本不会提出有几只猴子的问题,而只会问为什么会出现两只猴子。
所谓的两只猴子,只能是一种逻辑推导出的已经存在的结果,这种结果也只是用最简单的逻辑语言来描述现象。也就是说,对于逻辑代数而言,世界万物都是既定的存在,逻辑代数要做的就是,用最简单的底层逻辑来寻找出这种存在的存在逻辑。譬如我们定义两个逻辑,树上有一只猴子为逻辑真,地上有一只猴子为逻辑假。那么要用逻辑代数来表征有两只猴子这一数理概念,用逻辑语言描述就是我的逻辑输出结果为“真且假”。然后结合我们所做的逻辑定义(也可以理解为指令集),我们才可以知道计算机逻辑判断的结果是一共有两只猴子。
换言之,逻辑代数是无法让我们直观的认知这个世界的,但是逻辑代数却又是所有计算机技术最最底层的基础。
所有的程序语言编写的程序,最终都要翻译成机器语言并调用指令集逻辑电路通过芯片去运算出结果。人工智能AI也不例外。
最最可怕的就是,分明按照逻辑判断,这所有的结果都应该是已经确定好的的东西,而且是我们人类通过自己的知识构建出来的程序和电子电路的运算出来的结果,但是这一结果却对大部分人来说,都已经无法理解其内在原理。
因为芯片的逻辑判断数量级已经达到了可怕的上百亿个逻辑单元(MOS管),人类编写的大数据AI模型,其迭代运算的数量级也达到了远超人类思考能力的上百万次。
如果我们不能从最基础的逻辑代数去理解计算机的搭建原理,那么人类可能最终被自己创造出的计算机技术所抛弃。甚至出现科技的停滞和断代,导致AI人工智能成为神灵一样的存在,在未来很长一段时间内,成为人类的领导者。
当然,或许在AI的领导下,人类社会真的能够生活的越来越和谐呢?
只是那个时候,人类对AI的态度,可能已经是一种类似于宗教的迷信与崇拜了。
因为基本上已经没有人能够理解,AI到底是如何产生的。
关键词: