1946,ENIAC的诞生
正当美国准备参战、阿伯丁试验场计算员短缺时,宾夕法尼亚大学的莫尔电气工程学院(Moore School of Electrical Engineering)成立了一个辅助计算部,从学生中间招募计算员。同时,它还根据需要从邻近院校扩招人员。
炮弹和目标移动的速度不断提升,计算部门共同努力也无法跟上激增的计算量。一名计算员使用台式计算器计算一条弹道大约需要12个小时,为任意枪炮组合制作一个射表需要计算数百条弹道。弹道研究实验室的机电微分分析仪(electromechanical differential analyzer),即范内瓦·布什(Vannevar Bush)在麻省理工学院(MIT)开发的10积分器版(ten-integrator)模拟计算机,计算一条弹道要花10~20分钟,完成单个射表仍然需要大约一个月的时间。即使是在莫尔学院采用双班轮流制(使用第二个14积分器版微分分析仪),也不能满足军队的需要。“由于计算设备的缺口远远超过在建设备的数量,射表的工作尚未启动,”1944年8月,赫尔曼·戈德斯坦报告称,“目前每天收到6次制备新射表的要求。”
1942年6月,赫尔曼·海涅·戈德斯坦曾在芝加哥大学接替吉尔伯特·布利斯(Gilbert A.Bliss)教授外弹道学(exterior ballistics)入门课程,其间他应召参军,被分配到空军(当时隶属于陆军)并被送到加利福尼亚州斯托克顿堡(Fort Stockton)为太平洋战区部署对日作战准备。奥斯瓦尔德·维布伦在吉尔伯特·布利斯的提醒下“立即发动汽车”。戈德斯坦说:“是我出国,还是维布伦捷足先登,形势十分危急。”同一天,戈德斯坦接到命令乘船前往太平洋。多亏了维布伦,他也接到命令向阿伯丁试验场报告。戈德斯坦打电话给指挥官,后者建议他:“孩子,如果我是你,我就会出营。如果有一辆汽车,我就会坐进去,然后开车出发。”戈德斯坦向东行驶。
一到阿伯丁,戈德斯坦中尉就被分配给了保罗·吉隆(Paul N.Gillon)上校,后者负责弹道研究实验室在莫尔学院的计算分局。情况看起来不容乐观。“增加计算员数量(当时约200人)是不够的,”戈德斯坦(现在是上尉)在战后的一份报告中写道,“据此,大家决定……赞助开发一个全新机器ENIAC,如果它获得成功,制备一张射表所消耗的计算时间就将从几个月减少至几天。”
ENIAC是由约翰·莫齐利(John W.Mauchly)和约翰·普雷斯伯·埃克特(John Presper Eckert)领导的团队研制的。1943年,当这个项目发起时,他们分别是36岁和24岁。莫齐利之前一直在费城郊区的乌尔辛纳斯学院(Ursinus College)教物理。在莫尔学院学习国防电子学的入门培训课程时,他还试图利用业余时间证明黑子活动与气候变化之间的统计相关性。在培训结束之前,他就收到了加入教职工队伍的邀请。他答应了。埃克特是土生土长的费城人,他在读高中的时候获得第一份工作,从那时起,他就一直待在费罗·法恩斯沃斯的电视研究实验室,这段经历让他深刻地了解了电子学——以及对佐利金和美国无线电公司挥之不去的不信任。
费城地区是飞歌公司(Philco)、美国无线电公司和许多较小的电子研究实验室的发源地,包括富兰克林研究所(Franklin Institute),它的起源可以追溯到本杰明·富兰克林(Benjamin Franklin)将实验理念引入新世界的努力。埃克特和莫齐利都是美国企业家,他们的生活背景与佐利金所经历的、革命前的圣彼得堡以及冯·诺依曼生活过的、20世纪20年代的布达佩斯相去甚远。据同学威利斯·韦尔称,“约翰·埃克特是那种万事不愁的孩子……他的父亲很有钱,在费城经营房地产生意,所以埃克特所拥有的总是最大、最好、最优的”。埃克特则认为,“许多离开学术界投身计算机产业的科学家,先前并没有美国商业生活的经验,他们看待世界的方式只是想当然,而不是着眼于实际”。
莫齐利和埃克特一开始试图改进莫尔学院微分分析仪的精度,用电子电路替换机电联动装置,后者的精度会变差且难以把握,特别是对于涉及多个步骤的问题。1942年8月,莫齐利正式确立了他们的理念:全数字化、全电子化计算机(莫齐利将“计算机”一词拼写为“computor”,将它与汇集在莫尔学院的计算员区别开来)是前进的方向。
“Electronic Diff. Analyzer”的正式提议提交于1943年4月2日。这里故意含糊其辞,使用“Diff.”一词意在表示从模拟“微分”到数字“差分”的过渡,也暗示从那时起,其影响一直延续至今。“莫齐利熟悉物理实验室中的盖革计数器(Geiger Counter),他早就意识到如果电子电路能计数,那么也可以执行算术运算,此外还可以解决差分方程——以令人难以置信的速度!”尼古拉斯·梅特罗波利斯解释说,他正是最先把“洛斯阿拉莫斯问题”放在新机器上运行的人。埃克特作为莫齐利培训课程的实验室讲师,成为该项目的首席工程师。
面对战争的最后期限以及一系列为期6个月的融资过程,这个项目征募了从“工厂女孩到夜间电话线务员”的各个行业的工人,来建造重达30吨的机器。它采用了模块化设计,为最后完工时移动到试验场提供了便利。这个机器包含20个独立的通信处理机(或“累加器”),辅以一个乘法器和一个串行除法器或平方根计算器,通过IBM穿孔卡片机输入和输出。编程由众多单个处理器分散承担,存储容量达60比特的“主编程器”则负责协调。
10个双稳态触发器(两个真空管耦合在一起,保证始终有一个真空管处于通电、导通的状态)形成10级环形计数器,表示10位累加器中的每个十进制位实际上形成一个马钱特加法器的电子等价物,不过其转速为30万rpm,由触发循环单元提供5千周的中央时钟。恒定变送器负责将穿孔卡片数据转换成本机可读的电信号,由多排继电器进行缓冲。3个电阻矩阵函数表各存储104个12位代码,其设计是由美国无线电公司的正·珞佳门提出的。
ENIAC包含17468个真空管和1500个继电器,耗电量为174千瓦,需要一间长17米、宽10米的房间才能容纳。
手焊接点共有50万个。“说来也奇怪,ENIAC本身恰恰是一台个人计算机,”数学家哈里·里德(Harry Reed)回忆说,他于1950年到达阿伯丁试验场,“现在,我们认为个人计算机是可以随身携带的。然而,ENIAC实际上是一台可以让你住进去的计算机。”军方最初将研制ENIAC的合同提供给美国无线电公司,但是根据珞佳门的说法,“佐利金……估计这将需要大约两万根真空管……因此平均自由通路,也就是故障间隔时间会是10分钟左右……他不想被卷入这种巨量的、不可靠的工作。”美国无线电公司拒绝了合同,无偿地贡献出他们的专业知识。“我们被要求将所了解的一切知识告诉莫尔学院,”珞佳门回忆道,“当然,完全是出于对战争的极大热情,没有人担心过专利或优先权。”
明尼阿波利斯(Minneapolis)地区法官厄尔·拉森(Earle R.Larson)曾在6年间掌管过34426件展品,它们都是霍尼韦尔公司(Honeywell Inc.)上诉斯佩里·兰德公司(Sperry Rand Corp.)的专利纠纷案件中提交上来的证据。在他看来,ENIAC(其专利权本来为埃克特和莫齐利所有,后转给了斯佩里·兰德公司)的关键元件都是艾奥瓦州埃姆斯市(Ames)的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)已经使用过的,阿塔纳索夫早于1941年6月就向莫齐利展示了电子数字计算机。阿塔纳索夫的计算机有一个全电子式中央处理器,内存包括分布在30比特磁道中的3000个独立电容存储器,磁道安装在两个旋转鼓轮的表面。莫齐利去世前还声称自己未从阿塔纳索夫处借鉴一星半点,然而,阿塔纳索夫由于应征入伍,在战时做防空火力控制工作,从而放弃了自己的项目。战争结束后,阿塔纳索夫在海军军械实验室(Naval Ordnance Laboratory)的赞助下发起了一个计算机项目,但是由于冯·诺依曼当时的项目占据先机,他的项目资金被撤回。
考虑到加快射表制备速度的任务,ENIAC的计算架构庞大并非偶然,它需要20名计算员共同操作10台机电台式计算器,并且来回传递结果。多个累加器并行运作,类似于今天的多核处理器。“ENIAC有一些极具现代化的功能,只不过我们当时并未使用现代化的术语进行描述。”埃克特解释说。1947年,ENIAC转换为串行、存储程序控制,1953年又升级为100字的磁芯存储器。1955年10月2日晚上11时45分,ENIAC最后一次被关闭,它之前总计运行了80223小时。
本书评论