在上一期,我们为大家展示了最早的模拟电路实现的运算,也就是用电压或电流等连续变化的物理量,来模拟真实的数字,进行运算。它的好处是实现非常简单,只需要10个以内的晶体管就可以做出一个加法器,但缺陷也非常明显:模拟电路容易受到干扰,而且没有合适的手段将干扰量消除,而是会带进下一个运算环节,最终得到的是,叠加了多个运算环受到的干扰的运算结果。
皓首穷经的工程师们想到了另一个思路。
话分两头。1836年,美国发明家萨缪尔·摩尔斯发明了一种通过无线电信号来传输字符的编码。由于当时无线电通信技术的限制,根本无法传播语音信号 (想一想,为什么),摩尔斯将英文字母,数字和标点符号通过以下5种方式进行编码:
摩尔斯电码不仅可以用于编码英文,后来还被用于编码中文注音(国音电码)和日文片假名。
实质上,摩尔斯编码是在通信领域,在信噪比很高的信道上,利用数字化方式强行压低带宽,实现数据传输的最早的方式。即使通信信道受到较为严重的噪声干扰,只要能够接收到音频,判断音频的通断时间,就可以得到编码后的数据,从而恢复出编码前的数据。
计算机领域科学家和工程师们从摩尔斯电码受到启发,走上了研制基于数字电子技术的计算机的光明的大道。
与模拟电子技术相比,数字电子技术处理的是数字信号,其在时域上和幅值上都是离散的。
让我们举一个例子:
Intel的Ice Lake处理器,核心电压为1.15V。以1.15V的一半,0.575V为门限,高于该电压的输入将被处理器视为1,而低于该电压的输入将被处理器是为0。而在输出的情况下,处理器输出1和0时,其电压信号将非常接近1.15V和0V。也就是说,数字电路具备两个特点:
第一,对于输入线路的干扰信号,只要干扰信号不超过数字电路工作电压的一半,会被数字电路忽视;
第二,数字电路的输出信号,不会带有输入的干扰信号;
工程师们发现,数字电路具备如此优秀的特性,的确是进行高精度数学运算非常合适的选择。那么,应当如何将现实世界的数值通过编码的方式,转换为数字信号量呢?
学习过现代科学技术的读者都知道,在现在的计算机中,采用二进制来表述所有的数值和逻辑。但是,二进制的确是最优解吗?
让我们来做一个简单的数学问题:
如果表示从0-1,000,000的数,采用各种进位制的情况下,位数乘以每位的状态总数(以下称为复杂度)最少为多少?
在2进制的情况下,总共需要20位,每位有0和1两种状态,总共复杂度为40。而如果我们引入3进制,由于3的13次方为1,594,323,大于1,000,000,因此,1,000,000以内的正整数就可以用13位3进制数来表示,复杂度为13 x 3 = 39,小于40。这是为什么呢?
我们将需要表示的整数记为N,m进制下,总共需要的位数为
复杂度记为X,可以得到
学习过《高等数学》的读者可以很容易地通过计算导数零点得到,当m=e(自然对数的底,又称为欧拉数)的时候,X可以得到最小值。也就是说,实际上e进制是最高效的!
当然,e是一个非整数。非整数进制已经超出了初等数学的范畴,对于99%的人而言是难以理解的。在现实中一般都采用整数进制,如二进制或十进制。
我们发现,由于e=2.718281828459045...,相比于2,3实际上更接近于e。也就是说,三进制实际上有可能比二进制更高效。这就是我们前面发现,表达1,000,000以内整数的时候,三进制复杂度比二进制要低的根本原因!
那么,有没有三进制实现的计算机呢?
我们接着上篇的故事展开。
1943年斯大林格勒战役后,纳粹德国及其仆从国构成的轴心国失去了战略进攻能力,在苏联红军大反攻阶段十次突击,和盟军诺曼底登陆的双重夹击下,逐渐地走向末路。1945年初,德国B集团军在阿登战役中团灭,随即,轴心国丧失了高地防御塔,水晶受到盟军和苏军的攻击 (划掉) 苏联发动了柏林战役,光荣的乌克兰第一集团军作为先导,很快推进到了德军位于国会大厦的巢穴。
1945年4月30日,希特勒自杀,两天后德军继任统帅魏德林宣布投降,二战的欧洲战场硝烟平息。几个月后,苏军对日宣战,华希列夫斯基率领百万机械化部队经过7天的向心突击,基本消灭了日本的关东军,逼迫日本投降,二战结束。在战争中犯下反人类罪行的军国主义法西斯分子们,也被冰冷的绞索送去了他们应当去的地方。
战后,冷战开启,苏联和美国在雅尔塔会议划分了势力范围,并且并行地发展用于制霸全球的原子能、航空航天、计算机等科技。
在计算机领域,苏联科学家认为,三进制是一种更加高效的实现,而真空电子管刚好有负电平,零电平和正电平三种状态。因此,利用三进制实现计算机是一种很不错的设想。很快,莫斯科中央大学的科学家们就研制出了三进制计算机,售价甚至可以控制在50万卢布以内,与同期美国产品相比有非常大的优势。
打败三进制计算机的,实际上并不是二进制本身,而是晶体管相对于真空电子管的巨大优势。
图中是电子管作为功率放大器件的甲类音频功率放大器 (俗称胆机)。带有玻璃壳,大小与XX之谜修护精粹水大致相当的,就是真空电子管。而当时的晶体管尺寸大致和某华洛某奇的耳钉大小相当。随着技术的发展,甚至可以将上百万个晶体管集成到平方厘米级别的集成电路上。可想而知,电子管被晶体管取代是历史的必然。
计算机中使用的晶体管叫做MOSFET管,全称为“绝缘栅场效应管”。它具有栅极、源极和漏极,通过栅极的电平来控制源极和漏极的导通或关断,也就是只有导通/关断两种工作状态。
随着晶体管替代电子管,美国科学家们制定的二进制/每字节8 bit的标准,也就打败了苏联科学家制定的三进制/每字节6 trit的标准,成为了现代计算机技术的根(root)。
我们关于计算机实现的展开,都将基于这个根来进行。