巨量学官网免费课程,巨量百应手机app下载安装,一篇读罢头飞雪:计算机发展时间线(中)- 跟陶叔学编程-付费推广技术网
返回
快速导航关闭
实用工具
子分类:
付费推广技术网 >巨量引擎投放教程 » 正文

巨量学官网免费课程,巨量百应手机app下载安装,一篇读罢头飞雪:计算机发展时间线(中)- 跟陶叔学编程

巨量引擎投放教程 更新时间: 发布时间: 巨量引擎投放教程归档 最新发布 网站地图

关注风云之声

提升思维层次

导读


书接上回:一篇读罢头飞雪:计算机发展时间线(上)| 跟陶叔学编程。欢迎来到20世纪,这是一个悲伤的世纪,发生了两场世界大战。这又是一个充满激情与创意的世纪,我们熟悉的各种科学理论与科技产品纷纷出现,二进制运算、量子力学、电子管、晶体管……奇思妙想不断闪耀光芒。这还是一个英雄辈出的时代,范内瓦、图灵、香农、冯·诺依曼……正排着队向我们走来。这更是一个技术门派不断兴替的江湖,机械派、机电派、电子派……你方唱罢我登台。江湖为什么精彩?因为江湖中有英雄,有起伏跌宕的人生,有数不尽的传说!


注:风云之声内容可以通过语音播放啦!读者们可下载讯飞有声APP,听公众号,查找“风云之声”,即可在线收听~


第一回 马可尼跨洋发报,电子管上台鞠躬

20世纪

  1900年,奥德纳算术仪的销量超过了托马斯算术仪。至奥德纳的工厂于1918年关闭,30年不到的时间里它生产了约23000台机器。

  1901年,意大利发明家伽利尔摩·马可尼(Guglielmo Marconi,1874年4月25日—1937年7月20日)发射的无线电信息成功地穿越大西洋,从英格兰传到加拿大的纽芬兰省。


1901年,马可尼演示无线电设备

  这次表演是无线电从实验室走向商业化的标志性事件,也是马可尼为自己的无线电公司打的一个非常成功的广告。从此,他的“马可尼无线电报公司”一鸣惊人,赚得盆满钵满。但是马可尼此时接收无线电使用的检波器是十分落后的“金属屑”检波器(检波是调幅的逆过程,其频谱搬移与调幅相反,即把调幅波的频谱由高频不失真地搬到低频),性能很差亟需改进。


金属屑检波器

  1904年,英国物理学家约翰·安布罗斯·弗莱明(John Ambrose Fleming,1864年11月29日—1945年4月18日)利用爱迪生效应发明了电子管(或真空管),结构和爱迪生的灯泡类似,因为有两个电极(涌出电子的灯丝为阴极,接收电子的金属片为阳极)而被称为电子二极管(或真空二极管)。当阴极与电源负极相连、阳极与电源正极相连时,二极管导通,表现为没有电阻的导线;反之,二极管不通,表现为一个没有合上的开关。由于这样单向导通的特性,电子二极管主要用作交流电整流器(把交流电转换成直流电的装置)和无线电检波器。


弗莱明及其电子二极管

  1905年,据当时统计销轮计算器的历史总产量已有数百万台,并持续增长到70年代电子计算器普及为止。

  1906年,美国发明家李·德福雷斯特(Lee de Forest,1873年—1961年)在二极管的灯丝和金属片阴阳两极之间增加一个电极——一根波浪形的金属丝(后来金属丝被改成金属网),称为栅极(Grid),加上原来的阴极、阳极,真空玻璃管内就有了三极。就这样他发明了电子三极管。


德福雷斯特及其三极管

德弗雷斯特惊讶地发现,波浪形金属丝装入真空管内之后,只要把一个微弱的变化电压加在它之上,就能在阳极接收到更大的变化电流,而且变化频率完全一致——德弗雷斯特发现的正是三极管的“放大”作用。但是当时的人们并没有马上认识到三极管具有的重大意义,把它当作一个“毫无价值的玻璃管”。为了证明自己的发明有用,德弗雷斯特坚持不懈地设计着各种试验。

  同年,霍尔瑞斯给制表机添加了接插线板(plugboard)——一块布满导电孔的板卡,可通过改变导线插脚在板上的位置改变线路逻辑。这是因为原来的制表机线路是固定的,遇到新的统计任务,改造起来十分麻烦。而接插线板的内部已经布好了具有各种功能的线路,但它们都处在断开状态,各自连接着接插线板上的某两个孔位,线路就被导通以后这部分功能才会运行。这是对可编程性需求的一种最低程度的支持。


接插线板

  1912年,德弗雷斯特来到加利福尼亚旧金山附近的帕洛阿托小镇。在爱默生大街913号小木屋,德弗雷斯特把若干个三极管级连起来,即上一个三极管的输出作为下一个的输入,再把电话机话筒接入第一个三极管的栅级,最后一个三极管的阳极与耳机相连。当他把自己的手表放在话筒前方时,手表的“滴哒”声几乎把戴着耳机的耳朵震聋。成功了!三极管可以用作通信中的电信号放大器。帕洛阿托市的德弗雷斯特故居,至今依然矗立着一块小小的纪念牌,以市政府名义书写着一行文字:“李·德弗雷斯特在此发现了电子管的放大作用。”用来纪念这项伟大发明为新兴电子工业所奠定的基础。这个城市,如今已成长为全球闻名的硅谷

  二极管中,与电源正负极的相连本质上造就了阴极与阳极之间的电压差,与电源正极相连总能获得更高的电压。水往低处流,电流也一样,从高压的地方流向低压,可电子却不是,它总爱从低压的地方挪向高压,因为它带负电荷,所以要跟我们的常识反着来。那么,有么有可能通过增加电源和电极,以产生更多不同的电压差,从而实现更复杂的功能呢?还真有。栅极的表现与阳极十分类似,其作用取决于它和阴极之间的电压差。当施加在栅极上的电压比阴极低时,从阴极发射的部分电子将受到阻碍而无法到达阳极,栅极上的电压比阴极低得越多,这种阻碍效应就越大,直至完全阻隔;反之,当栅极上的电压比阴极高时,它反而开始吸引电子,助阴极一臂之力将更多电子传到阳极。结果是,稍微改变一下栅极上的电压,就可以对阳极上的电压产生很大影响,因而三极管常用作无线电通信中的信号放大器。


三极管阻断(左)和导通(右)原理电路

  1912年,刚成立的门罗公司开始商业化生产鲍德温的销轮计算器。

  1913年7月,经过一番谈判,最终德福雷斯特把他的真空三极管专利以39万美元的价格卖给了美国电话电报公司(AT&T)。作为电信号放大器,三极管不管对于无线电通信还是长途有线电话通信都有极大的价值。

  1914年,菲尔特出版了一本厚达600页的专著——《Applied Mechanical Arithmetic as practised on the Comptometer》,提供了各种主流计算问题的最佳算法。菲尔特不仅开辟了按键计算器市场,还诱发了另一个配套行业的兴起——计算仪培训。由于人机交互方式从手摇到按键的根本性变革,解决计算问题的操作步骤和技巧也与以前有了很大不同。菲尔特认为,本身只提供加减功能的计算仪更像一款通用型工具,只有掌握了丰富的算法,才能应对各领域复杂的计算问题。到20年代晚期,全美一共涌现了超过百家计算仪的培训学校,加上其他国家的学校,平均每年约有2万名毕业生成为合格的计算仪操作员(comptometrist),支撑起日渐繁荣的机械计算时代。

  1914年~1918年,因为在无线电等技术中的应用,一战中西方电子公司(Western Electric,AT&T的供应商)为美军生产了50万支电子管。在1918年一年内,美国制造了100多万支电子管,这已经是战前的50多倍。

  同样在一战期间,矿石检波器在无线电接收机中也得到了大量应用。矿石检波器一般是用方铅矿或者黄铁矿来作为核心部件。找一小块矿石,然后用针扎到矿石上,矿石本身就能完成检波的作用。使用矿石检波器的无线电接收机,不需要电源就可以使用。


美军BC-14A型军用接收机,右图中心位置是矿石检波器

  实际上,矿石检波器起到的作用和真空二极管是相同的,但是内部原理和真空管完全不同。矿石检波器的好处是结构简单,使用时不需要通电也不用加热,经久耐用。但是矿石检波器的调试需要工程师不断的寻找探针接触的位置。针扎在哪里效果最好,这全靠人一点一点去测试。因此矿石检波器的品控非常难。

  矿石能起到检波的作用,这是因为它是个天然半导体。半导体是指一种导电性可控,范围从绝缘体到导体之间的材料。半导体的电导与所加电场的方向有关,即它的导电有方向性,在它两端加一个正向电压,它是导通的;如果把电压极性反过来,它就不导电,这就是半导体的整流效应。矿石检波器就是对半导体整流效应的一种简单应用。

  1924年,CTR制表机公司更名为IBM,全面进入计算机领域。

  1925年1月1日,AT&T总裁华特·基佛德(Walter Gifford)收购了西方电子公司的研究部门,成立一个叫做“贝尔电话实验室公司”的独立实体(AT&T和西方电子各拥有该公司的50%的股权)。再后来,这个公司改名为贝尔实验室。

  同年10月2日,英国发明家约翰·洛吉·贝尔德(John Logie Baird,1888年8月13日—1946年6月14日),


采用机械扫描的方法,经过上百次的反复尝试,在影像接收机中看到自己玩偶比尔的脸。


最早传输的电视图像

贝尔德的发明思路是把图片分解成无数的小点,通过改变小点的位置来改变图像,最终让图片运动起来。由于经费不足,贝尔德收集了大量破旧的零件来制造机器。他的机箱外框是盥洗盆制作的,电动机是垃圾堆捡来的,“扫描圆盆”是用马粪纸自制而成,投影灯固定用的是饼干盒子,像霓虹管、加热棒等大部分电子元件都来自报废电台。


贝尔德和他发明的半机械式电视机

  1928年,德国物理学家、量子力学创始人之一马克斯·普朗克(Max Karl Ernst Ludwig Planck,1858年4月23日—1947年10月4日,就是那个普朗克常数)在应用量子力学研究金属导电问题中,提出固体能带理论。能带论第一次科学地阐明了固体为什么可按导电能力的强弱,分为绝缘体、导体、半导体。


马克斯·普朗克

  随后在1931年,英国物理学家查尔斯·威尔逊(Charles Thomson Rees Wilson,1869年2月14日—1959年11月15日)在能带理论的基础上,提出半导体的物理模型。威尔逊模型相当完好地说明了与体内性质有关的半导体的行为特征,它奠定了半导体学科的理论基础。1939年,苏联物理学家А.С.达维多夫(А.С.Давыдов,关于达维多夫的资料太少了!)、英国物理学家内维尔·莫特(Nevill Francis Mott,1905年9月30日—1996年8月8日)、德国物理学家华特‧肖特基(Walter Hermann Schottky,1886年7月23日—1976年3月4日)各自独立地提出了解释金属—半导体接触整流作用的理论。达维多夫首先认识到半导体中少数载流子的作用,而肖特基和莫特提出了著名的“扩散理论”。

  就这样,能带论、导电机理模型和扩散理论这三个相互关联逐步发展起来的半导体理论模型,大体上确立半导体器件发展的理论背景。


第二回 范内瓦模拟计算,图灵机开辟宗门

  1930年,美国麻省理工学院和哈佛大学的博士范内瓦·布什(Vannevar Bush,1890年3月11日—1974年6月26日),在一些工程技术人员的协助下,试制出一台微分分析仪的样机。


范内瓦研制计算器的初衷是为了求解与传输电路有关的微分方程。那时为了求出一个方程的解,演算工作量大得惊人,常常冥思苦想好几个月,浪费掉几百张草稿纸也得不出答案。有一天他突然冒出个想法,与其再这样因为计算耗费时间,不如制作一台计算装置帮助求解更合算。完成的微分分析仪是一台“大型”计算机器,说它是“大型机”并不为过,因为这台机器自重超过了100吨,占地约几十平方米。它与现代的计算机很不一样,它没有键盘,看起来像好多个台球桌,又有点像印刷机。装备着数百根平行的钢轴,需要用一系列电动机驱动。一个参观过微分分析仪的人曾挖苦说,必须“一手拿扳手,一手拿改锥”才能操作机器进行计算。但当时它却让麻省理工学院的科学家们兴奋不已,因为他们终于有了求解数学难题的有力武器。


  微分分析仪是第一台模拟计算器。前面介绍的计算器都是属于数字计算器(不管它是机械的,还是电子的),这条道路是由帕斯卡提出差分思想后开辟的,即将各种函数用幂级数展开方式转换为多项式,将函数运算最终变为相乘与相加。在求微积分时也是同样的思路,以差分代微分,以求和代积分,总之是以有限代无限。而模拟是用一种物理量来表征另一种物理量,就好比我们测体温的水银温度计,就是一个典型的模拟设备,温度有多高,水银高度就成比例地有多高。模拟计算器则是由想要解的方程支配的物理系统。在给出初始条件后,模拟计算器的变量随时间变化,其结果就是该方程的解。微分分析仪是用钢轴的连续转动来模拟变量的变化,从而运算得出最终结果。

  在试制出第一台样机后,范内瓦又采用电子元件来取代某些机械零件,成为“洛克菲勒微分分析仪2号”。但总的来说它仍然是一台机械式的计算装置。这种机器至少被人仿造出5台,在第二次世界大战中,美军曾广泛用它来计算弹道射击表。而英国也用它来计算德军V-2导弹的弹道表,发挥了重要的作用。现今在麻省理工学院和伦敦博物馆里,还各收藏着一台不太完整的这种机器,但都已不能正常运转了。

  1931年,IBM推出IBM 601机。这是一台能在一秒钟算出乘法的穿孔卡片计算器。这台机器无论在自然科学还是在商业意义上都具有重要的地位。大约造了1500台。


  1936年,英国数学家阿兰·图灵(Alan Turing,1912年—1954年),发表了在计算机发展历史上影响深远的论文《论可计算数及其在判定问题中的应用》,提出了使其成为“计算机科学之父”的图灵机。


  逻辑结构上图灵机由四个部分组成:

  1. 一个无限长的存储带。带子由一个个连续的存储格子组成,每个格子可以存储一个数字或符号

  2. 一个读写头。读写头可以在存储带上左右移动,并可以读、修改存储格上的数字或符号

  3. 内部状态存储器。该存储器可以记录图灵机的当前状态,并且有一种特殊状态为停机状态

  4. 控制程序指令。指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作(左移还是右移),并改变状态存储器的值,令机器进入一个新的状态或保持状态不变。

  或者可以将图灵机总结为四大集合,即:输入集合、输出集合、内部状态集合和程序指令集合。


  图灵机提供了一个这样的解决问题的思路:问题从简单到复杂,都可以通过分别增加机器4个部分的丰富程度来解决——存储带符号类型更多,读写头输出符号类型更多,状态存储器状态更多,控制程序指令组合更多。我们根据要解决的不同问题可以设计出具有各种功能的图灵机,其中控制程序指令组合实质就是编程。图灵想到,如果把控制程序指令组合信息(可以称为策略)以统一的格式写成符号串,放在纸带的头部,再将图灵机设计成能在运行开始时从纸带上读取这些策略(也就是通过第1和第2部分的操作,对第3和第4部分进行初始化),那么针对不同的任务,就不需要设计不同的图灵机,而只需改变纸带头部的策略即可。这种能靠纸带制定策略的图灵机,称为通用图灵机UTM(universal Turing machine)。如今的所有通用计算机都是图灵机的一种实现,两者的能力是等价的。当一个计算系统可以模拟任意图灵机时,我们称其是图灵完备的(Turing complete);当一个图灵完备的系统可以被图灵机模拟时,我们称其是图灵等效的(Turing equivalent)。图灵完备和图灵等效成为衡量计算机和编程语言能力的基础指标。如今几乎所有的编程语言都是图灵完备的,这意味着它们可以相互取代,一种语言能写出的程序用另一种也照样可以实现。

  图灵这篇论文的本意是提出一个模型来解答数学上的判定问题。判定问题是数理逻辑中的一个重要问题。它表现为寻求一种可行的方法、一种机械的程序或者算法,从而能够对某类问题中的任何一个在有穷步骤内确定是否具有某一特定的性质。图灵在论文中证明了没有任何机器可以解决所有数学问题(图灵机存在“停机问题”无法从根本上解决),却同时也证明了机器可以完成所有人类能完成的计算工作。图灵首次阐明了现代计算机原理,从理论上证明了现代通用计算机存在的可能性。图灵回答了判定问题,更参透了数学和计算机的本质关系——计算机是为解决数学问题而诞生的,却又基于数学,因而数学自身的边界也框定了计算机的能力范围。从图灵开始,计算机有了真正坚实的理论基础,更多人开始投身计算机的理论研究,而不仅是尝试构建一台机器。从如今的应用来看,图灵机之于计算机领域的价值远高于数学领域,毕竟判定问题还有许多其它解答,但计算机的原始公式,只有图灵机这一个。(数学才是数学家真正追求的快乐,计算机只是他们的副产品!)

  同年,德国工程师康拉德·祖思(Konrad Zuse,1910-1995)从建造军用飞机的亨舍尔公司辞职。


因为祖思负责飞机在飞行过程中的受力分析,要解各种各样的微分方程。这份在外人眼中的高智商工作,在祖思看来却无异于体力劳动,他被大量的重复运算损耗着精力,无暇顾及更有价值的创造性设计。尽管办公桌上配有一台当时先进的手摇计算器,但他仍然觉得很不方便。他决定建造一台更便捷的计算机器。他的父母十分开明,把整个客厅腾出来作为他的工作室。

  同年,苏联科学家Vladimir Lukyanov打造了液压积分器(Hydraulic Integrator)的第一台原型机。制造它的目的是为了研究和计算铁路桥梁的混凝土,在不同温度下开裂的相关数据。它是世界上第一台可以求解偏微分方程的计算器,它更大的独特之处是用水作为计算载体:水箱中液位高度代表数据。若干水箱间用各种水管连接,不同的水管出水的压力不同,再用它们作为变量实现运算。不同于别的计算机叫做电脑,它被称为“水脑”。从原理可以得知,这是一种机械式模拟计算设备。


现存于莫斯科理工博物馆的液压积分器

在此基础上,1941年,Lukyanov又采用模块化的设计理念,对其进行改进,甚至五十年代还进行了量产。直到70年代,这种计算器依然在苏联的115个工厂、研究院所服役,后逐渐被数字电子计算机所取代。


第三回 Model K二制运算,香农爷理论奠基

  1937年的某一天,贝尔实验室研究员乔治·斯蒂比茨(George Robert Stibitz,1904年—1995年),


他觉察到继电器的开闭状态与二进制之间的联系。于是他找来两节电池、两个继电器和两个小灯泡,然后从易拉罐上剪下一个U形触片,用电线把它们连成了一个最简单的二进制加法电路。


实现的效果是:按下触片B,灯泡L2亮;按下触片A,灯泡L2亮;同时按下A和B,灯泡L1亮(进位)。所实现的加法逻辑如下:


因为是在厨房(kitchen)里搭建的模型,斯蒂比兹的妻子称之为Model K。Model K看似简单,却为斯蒂比茨验证了制造二进制计算机的可行性。

  从结果来看,贝尔实验室产生用继电器实现二进制运算的技术,是源于他们长期使用继电器的经验和对复数运算的需要。电话的拨号系统由继电器电路实现,通过一组继电器的开闭决定谁与谁进行通话。同时,最早的电话系统是靠模拟量传输信号的,信号随距离衰减,长距离通话需要用到滤波器和放大器以保证信号的纯度和强度。设计这两样设备时需要处理信号的振幅和相位,两个信号的叠加是两者振幅和相位的分别叠加,复数的运算法则正好与之相符。贝尔实验室面临大量的复数运算,全是简单的加减乘除,工程师们不堪重负,并开始雇佣文化程度不高的妇女(当时的廉价劳力)全职辅助计算。当时研究数学的人对继电器不熟悉,而一般在工作中使用继电器的工程师又对复数运算不尽了解,而斯蒂比茨正好是将两者联系到一起那个人。

  随后的夜晚,斯蒂比茨对这个简单的一位加法器进行改进与扩充,使之能完成其他运算。在初步设计完成以后,他把装在胶合板上的这台“样机”带到实验室表演给数学部主任桑顿·弗雷(Thornton C. Fry)演示。弗雷开始时对斯蒂比茨的这一创新并没有太重视。

  同年,一名哈佛大学在校的物理学博士生——霍华德·艾肯(Howard Hathaway Aiken,1900年—1973年)受困于自己的博士论文。


因为博士论文涉及空间电荷传导理论,需要计算非常复杂的非线性微分方程。艾肯在图书馆里发现了巴贝奇和艾达的论文,他产生了发明一种机器代替人工计算,用来解决数学难题的想法。艾肯准备好了一份可行性报告,四处寻找愿意合作的公司。他曾找到生产销轮计算器的门罗公司,但是没有谈成。

  1938年,第一台祖思机——Z1建造完成。这是一台纯机械的机器,由成千上万的金属片和金属杆组成,靠电动马达驱动运转。与以往靠齿轮实现计算的机械设备大不相同,Z1利用了布尔代数的原理,是第一台完全采用二进制运算方式的可编程计算机。Z1从未投入实际使用,并连同图纸毁于1944年1月30日的一场空袭。


Z1的珍贵照片

  1987年~1989年,在西门子公司的资助下,祖思重建了Z1并移交柏林德国技术博物馆。后人对Z1的了解基本源自这台复制品。可惜的是,尽管祖思的设计看起来精致而优雅,然而不论是1938年的Z1还是1989年的复制品都无法顺利运行。


位于德国技术博物馆的Z1复制品

  Z1在组成上已初具现代计算机的特点,主要包括控制器、存储器、运算器、输入设备(穿孔带读取器和十进制输入面板)和输出设备(十进制输出面板)5大部分。Z1计算机最大的贡献是第一次采用了二进制数。从机身侧视,可以看到下层一列列整齐的金属杆支撑着上层一叠叠整齐的金属片。靠金属片和金属杆在水平面内4个方向(前后左右)移动,它们相互作用就可以完成二进制计算。在薄钢板组装的存储器中,楚泽用一个在细孔中移动的针,指明数字“0”或“1”。他的这种选择,明显地受到莱布尼茨著作的启发,他后来发表的研究报告,副题就是“向莱布尼茨致敬”。和制表机一样,Z1也用到了穿孔技术,不过不是穿孔卡片,而是穿孔带,由35毫米电影胶卷制成。数据则由一个数字键盘敲入,计算结果用小电灯泡显示。

  Z1是世界上第一台二进制可编程计算机,其设计是极富开创性的,其中许多理念都被现代计算机所沿用:

  • 基于完全的二进制架构实现内存和处理器,引入了实现二进制计算的基本要素——逻辑门。为了用二进制数表示小数,引入浮点数表示法,如今已被纳入IEEE标准。

  • 将数据存储和指令处理分开,这正是现代计算机的做法。在复制品中,机器大约一半由内存和穿孔带读取器构成。另一半由处理器、I/O控制台和微控制单元构成。

  • 可编程:拥有由8条指令组成的指令集(四则运算、内存读/写、从十进制面板读入数据、将结果寄存器里的内容显示到十进制展板)。具体编程操作是用穿孔带记录8比特长的代码后传入机器(穿孔带只存储指令,数据通过按键面板输入)。代码的组成方式为两种:一是2位表示内存读写操作码、6位表示内存地址,二是以3位表示四则运算和I/O操作的操作码)。

  • 有了明确的机器周期概念。操作被分解成一系列微指令,一个机器周期一条微指令。


从架构上看,我们今天的计算机进与1938年的祖思机一致,反而与1945年的ENIAC不同。直到后来的EDVAC报告草案,以及冯·诺依曼和图灵开发的位串行机中,才为ENIAC引进了更优雅的体系结构。

  同年,由于贝尔实验室计算任务压力的增大,有人建议把台式机械计算器的轴连在一起以加快计算。这从理论上来说虽然是可行的,但实现起来很复杂,操作也麻烦。弗雷这时想起斯蒂比茨的发明,问他能不能用他的发明解决复数计算问题。斯蒂比茨这时已成竹在胸,当即接受了任务。在实验室另一位工程师塞缪尔·威廉姆斯(Samuel Williams)的协助下,新型计算机的研制工作开始了。

  同年,麻省理工学院就读的克劳福德·香农(Claude Elwood Shannon ,1916年4月30日—2001年2月24日,这是祖师爷要拜拜)完成了自己的“硕士毕业论文”《继电器和开关电路的符号分析》,在这篇论文中,香农首次用布尔代数对开关电路进行了相关的分析,并证明了可以通过继电器电路来实现布尔代数的逻辑运算,从而奠定了数字电路的理论基础。同时明确地给出了实现加,减,乘,除等运算的电子电路的设计方法。香农在MIT就读期间,他的老师中有一位就是范内瓦·布什。


祖师爷之凝视

  香农完成论文之后曾去贝尔实验室与斯蒂比茨交流彼此的研究成果。但香农并未参与到斯蒂比茨的计算机开发工作之中。在30年代末期,使用继电器实现二进制逻辑是一种普遍共识,同时期在日本也有类似的发现。

  同年,图灵在取得美国普林斯顿大学博士学位后返回了正在紧张备战的英国。不久,他便秘密参与到政府的密码破译项目中,和全国各地顶尖的数学家们一起,在白金汉郡的布莱切利公馆(Bletchley Park)中深居简出,左右世界战争的格局。二战时期,各国已经使用无线电进行作战指挥,由于信号可以轻易被敌国接收,需要对无线电内容进行加密。当时的德国使用一种叫谜机(Enigma machine)的加密机器,按下某个字母的按键,其加密后对应的字母小灯就会亮起。内部的转轮和接插线板将这种对应关系随意打乱,每按一次按键,转轮就会转动一次,组合成新的对应关系,比如第一次按下A,D灯亮起,再按一次A,亮起的可能是Z灯,毫无规律可循。更棘手的是,德军几乎每天都会变更其中的接线。


3转轮谜机

解密的方式是穷举,即遍历所有可能的对应关系,直到找出有意义的关键词,而这恰恰是机器最擅长的事。英国的同盟国波兰在战前就成功研制了破解谜机的炸弹机(bomba),可惜德国在1938年年底将谜机上的转轮从3个增加到了5个,解密的复杂度呈爆炸式增长,针对3转轮谜机设计的炸弹机还未在二战发挥价值就已经宣告报废。

  解决这个难题的关键人物正是图灵,新建的炸弹机(bombe)成功破解了5转轮谜机。其难度之大,大到英国首次利用破解的信息破坏德军行动时,德国的密码专家首先排除了谜机被破解的可能性。


图灵炸弹机

随后,对密码学有着深刻认识的图灵还探索出一种高效的解密算法,人称图灵方法(Turingery),该算法成为布莱切利破解德国密码的核心理论。布莱切利的工作是图灵在短暂的一生中,为人类所做的第二项伟大贡献。他的成果使战争至少提前2年结束,挽救了至少1400万人的生命。前英国首相温斯顿·丘吉尔曾表示,二战的胜利最该感谢的人就是图灵。这段故事被改编成电影《模仿游戏》(The Imitation Game),由两个“大长脸”本尼迪克特和凯拉主演,并在奥斯卡获奖。



第四回 师徒首用电子管,维纳提出五原则

  1939年10月,斯蒂比茨带领贝尔实验室的团队完成了专门用于进行复数运算的复数计算器,后人也称之为Model I。它是世界上最早的电磁式计算器,使用继电器组成的运算单元。Model I只支持复数的乘除运算,而没有实现最基本的加减,因为贝尔实验室认为加减法足够简单,只需要口算就够了,再不济也可以直接使用现成的机械计算器。不过后来他们惊喜地发现,只要不清空前一个数,在此基础上把新的数和1(或-1)相乘,就相当于与前一个数求和(或求差)。Model I进行一次复数乘法用时约30~45秒。


  在最终实现的时候,为了电路实现的简单,Model I并未完全采用二进制,而是引入了一种混合编码方式BCD(binary-coded decimal‎,二进制编码的十进制),将十进制数的每个数位都用4位二进制码表示。每个数位上的值进行运算时都是二进制的,用继电器实现运算,而在整体上又表现成十进制。这说明当时的人们还没有完全理解二进制运算带来的进步,更多的是认可继电器开关对比机械传动还来的效率上的提升。

  Model I的另一大亮点是它首次采用了操作终端和后台计算明确分离的架构,用现在的行话讲,就是C/S(客户端/服务器)架构。斯蒂比茨为Model I配备了3台操作终端,用户在任意一台终端上键入要算的式子,后台将收到相应信号并在解算之后传回结果,由集成在终端上的打字机打印输出。


Model I的操作终端

只是这3台终端并不能同时使用,像电话一样,只要有一台“占线”,另两台就会收到忙音提示。Model I不仅是第一台多终端的计算机,还是第一台可以远程操控的计算机。贝尔实验室利用自身的技术优势,在达特茅斯学院(Dartmouth College)和400多公里开外的纽约本部之间搭起线路。1940年9月9日,斯蒂比茨带着一台小小的终端来到学院演示,不一会就从纽约传回结果,在与会的数学家中引起了巨大轰动,他们纷纷上台亲自验证,其中有很多计算机史上鼻祖级的人物,包括日后大名鼎鼎的冯·诺依曼、“控制论之父”诺伯特·维纳(Norbert Wiener)、“人工智能之父”约翰·麦卡锡(John McCarthy)和“ENIAC之父”约翰·莫奇利(John Mauchly)等。斯蒂比兹由此成为远程计算第一人。(考虑到电话公司是干什么的,远程计算由贝尔实验室发明似乎也是一种必然)

  同年,时任美国爱荷华州立大学数学和物理学教授的约翰·阿塔纳索夫(John Vincent Atanasoff,1903年—1995年)申请到了学校给的启动经费(区区650美元),决定自己建造一台计算机。


约翰·阿塔纳索夫

  他拥有佛罗里达大学电气工程学士学位、爱荷华州立大学数学硕士学位和威斯康星大学理论物理博士学位,专业上繁重的计算令他苦恼已久。受到范内瓦微分分析仪的启发,他曾经计划改造学校的一台IBM制表机,在被阻止之后决定自己建一台新的。扎实的数学功底使他在设计机器时游刃有余,电气和物理方面的专业知识使他在开始设计时的目标就是用电子管来组成运算逻辑单元。一位同事将自己优秀的学生克利福德·贝里(Clifford Berry,1918年—1963年)推荐给了他,当时贝里刚从电气工程专业本科毕业,便顺势成为了阿塔纳索夫的研究生。师生二人组成了“系统设计+工程实现”的搭档。

  具有通断两种状态的电子管和电磁继电器作用类似,但继电器中衔铁的摆动是机械的,而电子管的通断几近光速。如果使用电子管组成开关电路,进而实现逻辑门,以此为基础元件建造的计算机不就可以拥有空前的运算速度了吗?显然,用电子管建造计算机在理论上是完全可行的。下图给出了一种用电子二极管和三极管构建的与、或、非门电路,用相对的高电压表示1、相对的低电压表示0。


与门(左)、或门(中)、非门(右)

  • 与门由两个二极管组成,输入端X和Y与两者阴极相连,输出端Z与两者阳极相连并施以高电压。给X和Y任意一者施加低电压时,对应的二极管导通,Z也便处于低压;给X和Y同时施加高电压时,两个二极管都不通,Z便保留了高压。

  • 或门也由两个二极管组成,输入端X和Y与两者阳极相连,输出端Z与两者阴极相连并施以低电压。给X和Y任意一者施加高电压时,对应的二极管导通,Z也便处于高压;给X和Y同时施加低电压时,两个二极管都不通,Z便保留了低压。

  • 非门由单个三极管实现,输入端X与其栅极相连,输出端Z与其阳极相连并施以高电压。给X施加高电压时,三极管导通,Z便获得了阴极的低电压;给X施加比阴极更低的低电压时,三极管不通,Z便保留了高压。

  虽然理论上可行,但因为那时的电子管不但体积大、能耗高、价格昂贵,可靠性还差,只是以极少的数量应用在无线电设备中,用成千上万的电子管建造计算机几乎是不可能完成的任务。然而,还是有一批不惧困难的科学家在历史的关键时刻接下了这个任务,用一根根灯丝的微弱之光,点亮了电子计算的前途。

  同年3月31日,哈佛和IBM签订协议共同研发计算机。哈佛方面由艾肯主导设计,IBM方面则派出顶尖的工程师团队负责实现,最终成果归哈佛所有。在经过艾肯2年坚持不懈的奔走后,IBM伸出了橄榄枝。彼时的IBM,已是单元记录市场的巨头企业,拥有丰富的计算设备建造经验。而除了其主营的制表机型,当时的总裁托马斯·沃森(Thomas John Watson,1874年2月17日—1956年6月19日)对通用计算机也颇有兴趣。艾肯想实现自己的理想,沃森想进一步提高公司的声誉,两人一拍即合。


IBM老板托马斯·沃森

有了钱,艾肯开始了“MARK I”的研发。与同时期其他“重复制造轮子”的先驱不同,艾肯“站在了巨人的肩膀上”,他充分参考了帕斯卡、莱布尼茨、巴贝奇、霍列瑞斯等前人的成果,也将他们的失策引以为戒——正是有了巴贝奇的教训,艾肯选择直接利用IBM现成的制表机零件,而没有走自己生产元件的弯路。MARK I借助电流进行运算,最关键的部件采用继电器组成,安装了大约3000个继电器。继电器接通电路表示“1”,继电器断开则表示“0”。继电器能在大约1/100秒内接通或断开电路。

  为MARK I编制计算程序的人中有一位女数学家格蕾斯·霍波(Grace Murray Hopper)。有一天,在调试程序时出现了故障,拆开继电器后,人们发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。从此,霍波恢谐地把程序故障统称为Bug(虫子)。

  同年,惠普(Hewlett-Packard,HP)公司在帕洛阿尔托市成立。两位创始人比尔·惠利特(Bill Hewlett)和戴维·普卡德(Dave Packard)(知道为啥叫HP了吧)都是时任斯坦福大学电子通讯实验室主任弗雷德里克·特曼(Frederick Emmons Terman,1900年6月7日—1982年12月19日)的学生。弗雷德里克·特曼被誉为“硅谷之父”。


硅谷之父弗雷德里克·特曼

特曼在MIT获得电子学博士学位的导师是范内瓦·布什。美国两个著名的高科技工业园区——加州的“硅谷”和波士顿128号公路的“高科技走廊”的诞生都凝结了范内瓦的心血。

  1940年,阿塔纳索夫的计算机器就在物理大楼的地下室开始运转了。这是一台专用的计算机,用于求解线性方程组,最多支持29个方程。机器有数百个电子管,以鼓状电容器来存储数字(因为电容便宜)。因为是阿塔纳索夫设计的,人们便理所当然地称之为阿塔纳索夫机,其实贝里的贡献也不容忽视。在1963年贝里自杀去世之后,阿塔纳索夫为了纪念这位出色的学生、自己的得力助手,正式将机器命名为阿塔纳索夫—贝里计算机(Atanasoff–Berry computer),简称ABC。巧合的是,这个在英文中代表“入门”和“基础”的单词,也正是第一台电子计算机的名字。


  可惜的是,这台划时代的计算机没有保留下来,我们现在所能见到的是爱荷华州立大学1997年重建的复制品。它借用IBM的80列穿孔卡片输入十进制数据,读卡器在读入后将它们转换为二进制形式存入两个滚筒状的存储器(图中另一个滚筒存储器被右侧控制台遮挡),计算单元由电子三极管逻辑电路构成,计算结果被转换回十进制后通过示数齿轮显示。滚筒的筒壁上整整齐齐排布着32圈、每圈50个电容,其中30圈用于存储数据,多余的2圈作为备份。电容具有两个电极,可分别施加高电压和低电压,故而可用“一高一低”和“一低一高”两种状态表示0和1。并且,带电的电容可以提供导通电子管的电压,反之,电子管也可以为电容充电——两者天生具备着二进制数据的传递能力。由于电容比较“健忘”(离开电源后在一定时间内会自行失电),滚筒每秒旋转一周,固定在台面上的电刷就对电容进行一次充电。在滚筒旋转一周的短短1秒内,计算单元便完成了30对二进制数的加减运算,机械和机电时期的人们估计很难想象这种魔鬼般的计算速度。


ABC滚筒电容存储器

ABC使用了二进制加法器(减法通过二进制补码转换为加法),每个单数位加法器由14个三极管(7个双三极管)组成。机器工作时,站在一旁的操作人员能明显感觉到它们的热量。


尽管有着很高的计算速度,但ABC每次只能处理2个方程的已知数,使用者需要不断地输入新的数据,并通过控制台上的指令开关告诉它下一步该干什么。据估计,求解29个线性方程需要约25小时。除了通用性,自动化和可编程性也是ABC的短板。ABC有着许多现代计算机的特点,比如二进制数据、电子计算、并行处理和计算/存储分离结构,但它是专用的,不可编程的,更达不到图灵完备,因此还不属于现代计算机的范畴,这为后来ABC与ENIAC的第一之争埋下了伏笔。

  阿塔纳索夫另一大贡献是提出了计算机的三条原则:

1. 以二进制的逻辑基础来实现数字运算,以保证精度;

2. 利用电子技术来实现控制、逻辑运算和算术运算,以保证计算速度;

3. 采用把计算功能和二进制数存储功能相分离的结构。

  正是这三条原则的确立,使得后世的计算机设计有了最基础的标准,结束了之前百花齐放,却又毫无章法的局面。

  同年,祖思完成Z1的改进型—Z2。Z1的不可靠,很大程度上归咎于机械材料的局限性。简单的机械运动一方面速度不快,另一方面无法灵活、可靠地传动。祖思早有采用电磁继电器的想法,无奈那时的继电器不但价格昂贵,体积还不小。完成Z1之后,祖思灵机一动:Z1中零件最多的其实是存储器部分,何不保留机械存储器,而把运算和控制部分改用继电器实现呢?按这个想法制造出来的Z2是一台半机械、半继电器的机电计算机,用到了约600个电磁继电器。继电器的引入和存储字长的缩减大大减轻了机器的重量,总重约300kg。为了提高机械存储器的可靠性,祖思将字长缩减至16位,并使用了简单的定点数。机器的工作频率则提高到了5Hz,计算一次加法仅需约0.8秒。可惜的是,Z2也毁于Z1遭遇的那场空袭。不过在它建成之际,祖思就及时向德国航空太空中心做了演示,他十分走运,这次演示是Z2为数不多成功运转中的一次。德国航空太空中心看到了它的军用价值,当即决定资助这个项目。

  同年,美国应用数学家,控制论的创始人诺伯特·维纳(Norbert Wiener,1894年11月26日—1964年3月18日)


写信给范内瓦·布什(此时已是美国罗斯福总统的科学顾问、国防研究委员会(National DefenseResearch Committee,NDRC)主席),提议制造电子计算机,并提出了制造电子计算机的五点要求,即计算机设计五原则:

1. 计算机负责运算的中心部件不应是模拟式,而应是数字式;

2. 开关装置应该采用电子元件;

3. 采用二进制,而不是十进制;

4. 运算和逻辑判断都由机器完成,中间应该没有人的干预;

5. 内部要有存贮数据的装置,支持快速读写。

  维纳关于计算机五原则的思想,部分来自于其对生物神经系统的剖析,部分来自于工程实现的需要——从防空火炮系统的研究中萌发。第一次世界大战期间,维纳受美国军方之邀,在维纳在马里兰的阿伯丁实验场研究高射炮打击飞机的弹道学,编制射击火力表,用于确定火炮瞄准飞机的方位。第二次世界大战爆发后,战斗机性能的提高要求防空火力对飞机进行更为精确的跟踪,美国军方又一次邀请维纳参与其研究工作。那时,希特勒的战斗机速度很快,飞行员们又大耍曲线、翻筋斗的伎俩,美英法盟军的高射火炮根本打不着他们。地面指挥官和炮手们为此很苦恼。因此,需要制订新的火力表。维纳认为用手工和机械计算机计算肯定不行了,只有研制高速的电子计算机。

  当时几乎所有的军事研究计划都出自范内瓦的领导,其中最著名的莫过于“"曼哈顿计划”。(领导懂技术,实力挺恐怖!)


科学研究与开发办公室咨询顾问们的合影,左四是范内瓦·布什

注:科学研究与开发办公室(Office of Scientific Research and Development,OSRD)是取代国防研究委员会的机构,成立于1941年

范内瓦非常赞成维纳的提议和设想,并将维纳的提议提交罗斯福总统。美国政府同意并批准了维纳的提议,并立即立项,成立了以冯·诺依曼为首的电子数字计算机研究设计课题组。

  同年12月,阿塔纳索夫去费城参加美国科学进步协会(AAAS)年会。他听了约翰·莫奇利教授的演讲。莫奇利认为电子学可以为停滞不前的数据处理问题提供答案,只是还不知道该如何做。会后,阿塔纳索夫找到莫奇利,告诉他自己已经建造了这样的机器,莫齐利大感兴趣。1941年6月,莫奇利来到爱荷华州立大学现场观摩了ABC机,阿塔纳索夫对机器进行了详细的讲解。


第五回 祖思机命运多舛,少年郎春风得意

  1941年,祖思建造成功Z3计算机,建成之后就开始服役,用于计算炸弹的空气动力学问题。Z3和Z1的架构完全一致,只是用2000多个电磁继电器替换了原本的机械功能部件。和使用十进制的制表机不同,具有开、合两种状态的继电器在Z3的二进制处理中表现出极高的“天赋”。没有了机械的先天缺陷,Z3的可靠性有了质的飞跃。不过比起Z1和Z2,Z3更加“短命”,摧毁它的空袭来得更早(1943年12月21日)。1961年,祖思建造了Z3复制品,藏于德意志博物馆。


德意志博物馆的Z3复制品

不同于Z1复制品,Z3复制品和原Z3一样可靠,至今仍可正常工作。它以5.3Hz的频率工作,一次加法仅需0.8秒,一次乘法仅需3秒,通过指示灯显示结果。它不仅支持四则运算,还可以求平方根。1998年,来自柏林自由大学的劳尔·罗雅斯(Raúl Rojas)教授证明了Z3的“图灵完备性”(Turing completeness)。只不过Z3本身不支持循环和分支结构,需要通过手动将穿孔带的两头接起来形成环来实现指令循环,通过数学上的等效来模拟条件分支。

  同年6月,意识到谜机可能已被破解的德军启用了一种复杂度更高的加密系统——“金枪鱼”,而这一次英国没能拿到相应的机器,布莱切利的密码学家们要和一个完全未知的强大敌人抗争。8月,“金枪鱼”的操作员由于一时疏忽将同一条信息发送了两遍,尽管两条密文并不一样,但经验丰富的布莱切利在截获之后立马意识到它们指向同一条明文。这个小小的马脚,被这里绝顶聪明的密码学家们牢牢抓住。他们据此精准地推测出“金枪鱼”的组成结构和工作原理。它包括12个谜机那样的转轮,每个转轮的旋转模式各不相同,每个转轮上导电触点的数量也不一样,导电触点可以在接通和断开两个状态之间切换,使用前可改变各触点的状态和转轮的起始位置。


金枪鱼

和谜机的字符级加密不同,“金枪鱼”进行的是编码级加密。破解“金枪鱼”,不仅要猜出转轮上所有导电触点的通断状态,还要猜出各转轮的起始位置,其组合数量之巨,不仅远远超出了人力处理的能力范围,也令炸弹机这类机电设备束手无策。布莱切利急需一种更高速的解密机器,电子管方案成为不二之选。

  1943年2月,在图灵的推荐下,来自伦敦西北角的邮局研究站的托马斯·弗劳尔斯(Thomas Harold Flowers,1905年—1998年)扛起研制破解“金枪鱼”的电子计算机这面大旗。


该研究站有着丰富的电子通信经验,在布莱切利的部分密码学家对电子管的可靠性还抱有疑虑的时候,邮局研究站的工程师早已对电子管的大规模应用驾轻就熟。

  同年4月9日,美国陆军军械部和宾夕法尼亚大学莫尔电气工程学院签订了6.17万美元的研制合同,研制一台功能强大的计算机器。这个项目的起因是军方遇到计算难题——炮弹弹道的计算太过于复杂。每种型号的炮弹都需要计算2000~4000条弹道,每条弹道都涉及复杂的微积分运算,转换成四则运算平均涉及750次乘法和更多次加减,普通计算员使用机械计算器平均需要20个小时才能算完。多型新型火炮的投入使用给美国陆军的弹道研究实验室带来了很大的制表压力,他们雇佣了100多名女计算员,以满足阿伯丁试验场每天6张弹道表的需求。苦劳是做足了,一旦出错却没了功劳。实验室很快意识到,磨刀不误砍柴工,他们急需一台强大的计算机器。

  这个创造历史的项目,其实论起资历与声望,如果交给麻省理工学院会是更好的选择。但MIT与弹道研究实验室的距离是600公里,而莫尔学院只有120公里。同时因为莫尔学院“近水楼台先得月”,早与弹道研究实验室建立了友好的合作关系,那些计算弹道的计算员就是由莫尔学院负责培训的。

  项目总工程师是年轻的约翰·埃克特(John Presper Eckert Jr.,1919年4月9日—1995年6月3日),是学院的一名在读研究生,签订合同的那天正好是他的24岁生日。


这个任命并不是莫尔学院无人可用,而是因为埃克特确实是一个天才。和埃克特搭档的,是年龄大他一轮的约翰·莫奇利(John William Mauchly,1907年8月30日—1980年1月8日,他在前面已经出场两次),此时莫奇利已是乌尔辛纳斯学院(同在宾夕法尼亚州)的物理系主任,拥有约翰·霍普金斯大学物理学博士学位。


  莫奇利被委任为项目顾问,由于教学工作不能投入全部精力,但只要一有时间就会钻进项目里,最终出色地完成了总体设计。埃克特主要负责工程实现。他们共同领导莫尔学院50人的兼职团队,一个主理论、一个主工程的黄金搭档模式像极了造出ABC机的阿塔纳索夫和贝里。

  这个项目研制的计算机就是大名鼎鼎的ENIAC(Electronic Numerical Integrator and Computer,电子数字积分器与计算机)。由于是为了处理弹道计算中的微积分而设计的,起初,它的名字是Electronic Numerical Integrator(电子数字积分器),但由于它的通用性,后来被用于各种其它计算,才有了追加的“and Computer”。

  同年,洛斯·阿拉莫斯国家实验室在当地的牧场学校成立。建立的原因是因为当时几个大学里进行的核武器的初级研究遇到了资源分配的困难,这迫切需要建立一个实验室来单独进行此项研究。这里云集了大批世界顶尖科学家,包括“原子弹之父”尤利乌斯·罗伯特·奥本海默(Julius Robert Oppenheimer,1904年4月22日—1967年2月18日)、“氢弹之父”爱德华·泰勒爱德华·泰勒(Edward Teller,1908年1月15日—2003年9月9日)以及诺贝尔物理奖得主欧内斯特·劳伦斯(Ernest Orlando Lawrence,1901年8月8日—1958年8月27日)。当时的第一个任务是曼哈顿计划,开展原子弹的研制。

  冯·诺依曼作为顾问加入实验室。在对原子核反应过程的研究中,要对一个反应的传播做出“是”或“否”的回答。解决这一问题通常需要通过几十亿次的数学运算和逻辑指令,尽管最终的数据并不要求十分精确,但所有的中间运算过程均不可缺少,且要尽可能保持准确。洛斯·阿拉莫斯实验室为此聘用了一百多名女计算员,利用台式机械计算器从早到晚计算,还是远远不能满足需要。无穷无尽的数字和逻辑指令如同沙漠一样把人的智慧和精力吸尽。冯·诺伊曼一直被计算工作所困扰。

  1944年1月,在布莱切利一部分人“等机器造好战争怕是早就结束了”的冷嘲热讽中,弗劳尔斯带领50人的团队仅用了11个月就完成了第一台原型。当这台包含了约1600个电子管的“庞然大物”来到布莱切利,密码学家们被深深震撼了,它比他们之前使用过的任何计算设备都庞大得多,因而被形象地称为巨人机(Colossus)。巨人机有二型,1943年开始的原型机为Mark 1。在其建造过程中,弗劳尔斯就已经开始了Mark 2的设计。

  同年6月1日,第一台Mark 2巨人机正式交付,如期赶上了重大的诺曼底登陆战役。德军万万没有想到,他们引以为傲的机电式“金枪鱼”,面对的是领先了一个时代的电子计算机。巨人机不负众望破解了德军密码,为战役的最终胜利做出了不可磨灭的贡献。

  Mark 2包含2400个电子管,速度更快,功能更强,截止欧洲胜利日(1945年5月8日)共建有10台之多。可惜的是,出于保密考虑,这11台机器连同其图纸都在60年代被下令焚毁,如今我们在布莱切利的英国国家计算博物馆所能见到的,是后人在1992年~2008年耗时16年重建的复制品。


巨人机Mark 2复制品

巨人机使用穿孔纸带输入密文,纸带每行有5个孔位。纸带长约61米,穿孔25000行。纸带的读取速度十分惊人——每秒5000行,工作时发出湍急的流水声,纸带上的孔洞以近44公里的时速飞驰。这得益于光电技术的应用,在纸带的一侧安装一个灯,另一侧安装5个并排的光电探测器,一个探测器负责盯住一个孔位。当灯光穿过某个孔洞,其对应的光电探测器就能迅速发出电流脉冲,产生二进制信号1;当灯光被未穿孔的孔位遮挡,对应的探测器就产生二进制信号0。

  巨人机基于图灵方法(图灵并没有直接参与巨人机的建造,但是机器的实现用到了他的图灵方法),用电路模拟“金枪鱼”的转轮位置及其导电触点的通断状态。密文流入机器后,经过一系列以异或为主,与、或、非为辅的逻辑运算,最终由电动打字机输出结果。密码学家根据统计结果找到密文中暗藏的线索,调整机器程序,得到新的统计结果后继续分析,如此往复,一步步逼近最终的正确答案。

  巨人机的可编程性是靠开关、旋钮和接插线板实现的。巨人机的编程本质上是一组选择,选择每个开关和旋钮的位置,选择接插线板上每个导电孔的通断。


巨人机的开关面板

  由于涉密,巨人机的知名度比ABC机更低,其存在直到70年代中期才公开。巨人机是世界上第一台可编程电子计算机,但它是专用的——不具有图灵完备性。但一位旧金山大学的教授于2009年证明,将10台巨人机以某种方式组合之后可以达到图灵完备。但这种证明其实意义并不大,巨人机本身是为完成特定任务而设计的,弗劳尔斯也承认在建造它时从没想过现代计算机是什么模样的,甚至还没听说过有用“computer”来称呼机器的做法。

  同年,哈佛大学与IBM联合完成名叫Harvard Mark I(这里是Mark I,而英国巨人机是Mark 1,可见起名时想个独特的名字有多么重要!)的计算机,在“娘家”IBM被称为IBM自动顺序控制计算器(IBM Automatic Sequence Controlled Calculator,ASCC)。在机器建好之后的庆典上,哈佛新闻办公室与艾肯私自准备的新闻稿中,片面强调了己方的功绩,对IBM的功劳没有给予足够的认可,沃森气得与艾肯老死不相往来。


  Mark I是第一台大型计算机(大型机),它由约765000个机电元件组成,包括3500个继电器,内部电线总长达800公里。机器长约15.5米,高约2.4米,重达5吨,由开关、继电器、转轴以及离合器构成,撑满了整个机房的墙面。其基本计算单元使用同步式机械,所以它有一根15米长的传动轴,并由一台4千瓦的马达驱动。机器左侧的玻璃柜中,是2个30行24列的置数旋钮阵列(图中只出镜了一半),可输入60个23位十进制数(留出1位表示正负,0表示正、9表示负);中间部分是更为壮观的计算阵列,由72个计数器组成,每个计数器包括24个机电计数轮,共可存放72个23位十进制数;机器的右侧部分是若干台穿孔式输入输出装置,包括2台读卡器(用于输入相对固定的经验常数)、3台穿孔带读取器(分别读取存有常数表、插值系数和控制指令的3种穿孔带)、1台穿孔机和2台自动打字机。从数据输入,到数据处理,再到输出,Mark I自始至终在与十进制打交道,即便它使用了继电器和穿孔技术。不论是置数旋钮,还是计数器,其背后都是10齿的金属轮。


Mark I上的纸质穿孔带

控制机器运行的穿孔带上每一行有24个孔位,使用时分成3组,每组8位,用于表示数据地址或操作指令。将由数字构成的简单语句按照一定顺序排列,用穿孔机在纸带上打出相应的孔洞,就形成了Mark I可以识别的程序,足以解决各种复杂的数学问题。在Mark I上运行的第一批程序,就包括了冯·诺依曼为曼哈顿计划所编写的原子弹内爆模拟程序。在计算速度上,Mark I的表现并不出众,一次加减运算需要3秒,乘法6秒,除法15.6秒,正弦和乘方往往超过1分钟,对数运算更是高达89.4秒。但它仍是当时一台十分成功的通用计算机巴贝奇的理想终于在艾肯手中完全实现,此时转眼已是百年。从1944年5月开始,Mark I在美国海军服役了14年之久。

  Mark I在存储结构上有一大特点:在硬件上将程序和数据分开存储,即有专门存储程序的存储器和专门存储数据的存储器,分开存储分别加载。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。该特点被总结为“哈佛结构”,它与后出现的“冯·诺依曼结构”并行于世。冯·诺依曼结构与它的区别主要是把程序和数据存储在同一个存储器中,通过同一条总线进行加载。一定程度上冯·诺依曼结构是对前者的改进,简化了实现,成本低,对外围设备的扩展性也好。正是冯·诺依曼结构极大加快了通用电子计算机的发展步伐。但随着后续技术的成熟CPU运算能力越来越强,通过总线传输程序与数据的带宽无法满足处理器的运行速度,处理器就不得不停下来等等它的数据。这一问题被称为”冯·诺依曼瓶颈“(Von Neumann bottleneck)或者称为“存储墙”(Memory Wall)。解决这个问题的方法之一却是改回哈佛结构,因为它可以同时读取程序和数据(分开存储的),大大提高了数据吞吐率,反倒适合高速数据处理。这真是白云苍狗、世事难料啊!


哈佛结构

  Mark I也是一台采用机械/电磁方式的计算机。机电时期是机械与电子之间一段狭小的过渡时期,时间虽短,却取得了质跃式的显著成就。这一时期的计算机不再局限于单纯的数学运算,开始具备更丰富的功能。它们有着五花八门的构造,并在专用和通用之间来回游走,却都不约而同渐渐朝着现代计算机的模样靠拢。随着穿孔时代的开启,“新秀”二进制开始挑战十进制的“权威”,我们在祖思机、贝尔机和哈佛机上一步步领略过它的魅力。二进制在计算中的应用,既是布尔代数计算理论的探索成果,也是穿孔技术和开关电路在硬件上的“倒逼”使然。比起追逐可靠性的机械时期,恰逢现代化战争伊始的机电时期将计算速度视为更重要的指标,这一需求敦促着先驱者们不断尝试新的材料和技术,加快电子时期的到来。


第六回 诺依曼指明道路,范内瓦畅想未来

  同年,在ENIAC还未建成之际,埃克特和莫奇利就将研制一台新机器的申请提交给了导弹实验室。导弹实验室同意了这个项目,并提供10万美元的预算。这台新机器名叫EDVAC(Electronic Discrete Variable Automatic Computer,电子离散变量自动计算机)。这并不是一个骗取经费的诡计,而是要解决当时计算机普遍存在的一个缺陷。机电时期,人们使用穿孔卡片或穿孔带编制程序,由于计算机的运算速度受限于机械动作,输入模块有充分的时间读取穿孔介质上的指令信息。而到了电子时期,使用穿孔输入就远远跟不上电子运算的节奏了。因此,人们便利用旋钮、开关和接插线的不同位置来表示程序,虽然消除了控制与运算之间的速度差距,却使编程成为一件非常复杂的难事。在ENIAC上设置一个实用程序,往往需要几个星期的时间,如非必要,使用者很少愿意修改它。因此,尽管ENIAC是通用的,却总在一段时间内只专用于某个问题(比如弹道计算),它的通用价值大大缩水。而如果频繁地设置不同程序,机器在很大一部分时间里将无法运行,它的高速性能又被大大浪费。那么程序能不能像数据一样,通过穿孔介质输入之后长期驻存在机器内部的存储器中呢?这样一来,读取指令就和读取数据一样快了。这就是EDVAC出现的使命。

  其实这个问题已经在Harvard Mark I中得到了解决,但是因为用当时技术实现的哈佛结构过于复杂,用它来存储程序将使本身已经非常复杂的通用计算机庞大到无法承受,迫切需要有更好的解决方案!

  同年夏天,正在火车站候车的冯·诺依曼巧遇赫尔曼·戈德斯坦(Herman H.Goldstine),并同他进行了短暂的交谈。当时,戈德斯坦是作为弹道实验室派出的军方代表参与ENIAC计算机的研制工作。在交谈中,戈德斯坦告诉了诺伊曼有关ENIAC的研制情况。体验过机电计算机Harvard Mark I带来的效率之后,敏锐的冯·诺依曼为这一研制计划所吸引,他意识到了这项工作的深远意义,对ENIAC寄予了更高的期望。随后冯·诺依曼由戈德斯坦介绍作为顾问加入了ENIAC研制组。

  在莫尔学院,冯·诺依曼看到了正在全力赶制中的ENIAC。在静静也听完总工程师埃克特的大致介绍后,冯·诺依曼提出的第一个问题就戳中了ENIAC在逻辑架构上的“痛点”。由于没有程序存储功能,使得ENIAC在执行不同程序时变得相当麻烦。不过,埃克特自豪地告诉冯·诺依曼,他们已经着手准备启动另一个计算机项目EDVAC的研制工作。EDVAC同样是美国陆军军械部弹道研究室与宾夕法尼亚大学合作的电子计算机项目,负责这一项目的,仍然莫奇利与埃克特。与ENIAC相比,EDVAC将会采用二进制,并且增加程序存储功能。听罢埃克特的介绍,冯·诺依曼当即对EDVAC产生了浓厚的兴趣,在接下来的几个月时间里,他一有空闲便思考EDVAC,更准确地说是思考现代计算机应该具有怎么样的逻辑结构。

  1945年2月3日,二战已近尾声,一场轰炸彻底摧毁了祖思的生产车间,祖思不得不将未完成的Z4从柏林紧急转移至哥廷根。战后的德国元气大伤,直到1949年祖思才得以恢复Z4的工作。其实,早在1937年,祖思就已经着手开展了真空电子管的研究。他的搭档赫尔穆特·施赖尔(Helmut Schreyer)也在很早就提出了建造电子计算机的建议,但这个设想在当时的人们眼中简直是天方夜谭。当时的电子设备顶多使用少量的真空管,了解真空管可靠性的行家都清楚地知道,需要成千上万个真空管组成的计算机根本不可能正常运行。就连祖思在一开始也不相信真空管能建造计算机。在施赖尔的坚持下,他们向政府提出了将Z3全面电子化的建议,但政府没有意识到这件事的重大意义,而是在权衡利弊之后,认为机电计算机已经够用了,进一步尝试真空管对战争的意义不大。于是,祖思的第4台机器——Z4仍然是机电结构的,纳粹德国错过了一次改写历史的机会。


德意志博物馆的Z4

  如今,Z4藏于德意志博物馆。Z4是Z1~Z3的集大成者,是研制时间最长的一型,也是唯一在战争中幸存的一型。它用回了机械存储器,字长扩展到32位,除了四则运算和开平方,还多了求最大、最小值和计算正弦的功能。它弥补了Z3的缺憾,装备了两台穿孔带读取器以实现条件分支(一台读取主程序、一台读取子程序)(原设计中,甚至计划配备6台穿孔带读取器)。它的输出也更多样化,可以打印,也可以(在胶卷上)打孔。Z4以40Hz的频率工作,一次加法仅需0.4秒,平均每小时可完成约1000次浮点运算。在Z4的建造过程中,祖思意识到直接使用二进制编程实在太复杂了,于是撰写了一篇博士论文,设计了历史上第一款高级编程语言Plankalkül(Plankalkül在德语中是“Plan Calculus”(计划计算)的意思),并精心编制了一个示例程序——历史上第一个自动下棋程序。Plankalkül在一定程度上启发了后来ALGOL语言的设计,可惜的是,它本身并没有引起足够的重视,这篇论文最终被奥格斯堡大学驳回。

  同年2月,图灵向英国国家物理实验室提交了50页的ACE(Automatic Computing Engine,自动计算机)设计报告,根据通用图灵机的原理提出了详细的计算机设计方案。报告建议研制第一台计算机,预算为11200英镑,未获批准。这份报告保密了27年后才被公开。

  同年6月,在一趟返回洛斯·阿拉莫斯国家实验室的列车上,约翰·冯·诺依曼(John von Neumann,1903年—1957年)奋笔疾书写出了那篇长达101页,影响计算机历史走向的《EDVAC报告书的第一份草案》。草案不仅详述了EDVAC的设计,还为现代计算机的发展指明了道路,提出了著名的冯·诺依曼体系,以一种更加详细的定义,描述了现代计算机的雏形。


  冯·诺依曼作为顾问在EDVAC上投入了许多思考,他认为EDVAC不单纯是一个计算机项目,它潜藏着更深的理论意义。他联想起图灵的论文,通用图灵机能够根据纸带上的策略信息模拟任意图灵机的行为,纸带是它是存储器,策略信息就是程序,这正是存储程序最早的思想萌芽。而他们现在所尝试的,正是用电子管将它变成现实!在他撰写的《草案》中不仅详述了EDVAC的设计,还为现代计算机的发展指明了道路:

1. 机器内部使用二进制表示数据;

2. 像存储数据一样存储程序,程序与数据存储中同一个存储器中;

3. 计算机由运算器、控制器、存储器、输入模块和输出模块5部分组成。

  这些在现在看来似乎是理所应当的原则,在当时却是一次划时代的总结。这份草案与其说是冯·诺依曼对EDVAC的设计描述,不如说是他对当时全世界计算机建造经验集大成式的高度提炼。

  这种基于存储程序思想的计算机结构,后来被称为冯·诺依曼结构。冯诺依曼结构奠定了现代计算机的基调。如果说图灵赋予了计算机的灵魂,那么冯·诺依曼则搭建了计算机的骨架,后人所做的只是不断丰富计算机的血肉罢了。到今天,运算器和控制器就是CPU的主要组成部分,存储器主要对应为内存,输入和输出模块也被芯片化后集成到主板。


冯·诺依曼结构

  这份草案很快流传开来,并轰动了整个计算机界。然而不知道什么原因,戈德斯坦收到这篇报告拿去刊印的时候,只署了冯·诺依曼一个人的名字。这也成为莫奇利后来与戈德斯坦和冯·诺依曼关系交恶的重要原因。尽管事后冯·诺依曼坦承这并非他一个人的思想,但历史最终还是不容分说地将这一伟大的计算机结构称为“冯·诺依曼结构”,把利用这种概念和原理设计的电子计算机系统统称为“冯·诺依曼型”计算机。

  而EDVAC的设计思想中,有多少属于埃克特和莫奇利,有多少又属于冯·诺依曼,这是个永远也解不开的谜。但至少,如果没有冯·诺依曼将设计方案抽象至理论层面,计算机世界的“大一统时代”可能还要推迟到来。

  从巴贝奇的分析机,到图灵机,再到冯·诺依曼结构、哈佛结构,可以看到一条清晰的主线,那就是计算机由专用向通用演进与发展。而通用计算机技术的发展进程中,“存储程序”成为必然趋势。在这一趋势的逼迫之下,存储器,特别是读取速度更快,存储容量更大的存储器的研制就成为全球计算机工业竞争的核心要素。

  冯·诺依曼虽然是EDVAC项目组的顾问,但在完成了《草案》后,他就回到洛斯·阿拉莫斯国家实验室,全身心投入到原子弹研制的最后冲刺。

  同年7月,范内瓦·布什在《大西洋月刊》(Atlantic Monthly)上发表了一篇名为《诚如所思》(As We May Think)的文章,以回答“二战科学发展带来的巨量信息如何处理和利用”等问题。在这篇信息科学经典之作中,范内瓦提出的诸多理论预测了二战后到现在几十年计算机的发展,许多后来的计算机领域先驱们都是受到这篇文章的启发,鼠标,超文本等计算机技术的发明灵感都是源自这篇具有理论时代意义的论文。

  范内瓦用一个名为Memex概念机器概括了未来计算机与信息技术的发展方向。为了协助人类思考及管理信息而设计的Memex,是一种通过电子计算机储存与检索大量信息的数据库系统,它有一个倾斜的半透明屏幕,用来投影微缩资料,还有一个键盘,一系列按钮和把手。这个类似人脑的机器可依使用者的需求检索信息,并着重于使用者和系统之间的互动。系统藉由建立联结路径、搜寻、处理及整合等技术,帮助学术研究者收集、组合、分析各种资料并加以应用。此外,Memex的设计具有缩小储存空间、增快检索速度、扩大存储器等特性。这些构想奠定后世个人计算机、信息检索、超文本、超媒体、在线公用目录、全球网络及数字图书馆等技术发展的方向。在一个没有网络,连计算机也是从机械向电子过渡的时代,提出了如此超前的概念,不能不让人佩服范内瓦的远见卓识!


memex概念机

  正是因为在信息技术领域多方面的贡献和超人远见,范内瓦·布什获得了“信息时代的教父”与“互联网先知”的美誉。

  同年,在菲律宾某个小岛上的红十字会图书馆,一名叫道格拉斯·恩格尔巴特(Douglas C. Engelbart,1925年1月30日—2013年7月2日)的海军雷达技师,读到了范内瓦《诚如所思》深受启发。

  同年,贝尔实验室执行副总裁默文·凯利(Mervin J. Kelly,1894年2月14日—1971年3月18日)决定组建一个固态物理部门,专业主攻半导体三极管。他任命自己亲自到麻省理工学院挖到的威廉.肖克利(William Shockley,1910年2月13日—1989年8月12日)作为部门主管。

  凯利本来对半导体并不重视,因为他是搞真空管出身的,从1917年加入AT&T时他就是研究这个方向。他认为贝尔应该专注于真空管的研究。在20世纪30年代后期,凯利组织投入了数十万美元试图改善这些管子,但实际上收效甚微。在二战中,他领导贝尔实验室和西方电气公司在雷达研发方面的工作,亲眼见证了半导体整流器让人艳羡的性能。之后他拨转马头,开始全面推动半导体器件的研究。

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 Copyright Your 折1CP备14032708号-6 Rights Reserved. Powered · 创奇学院

ICP备案号:浙ICP备14032708号