John von Neumann,1903年12月28日—1957年2月8日
1921年,冯·诺依曼在布达佩斯大学注册为数学方面的学生。与此同时,冯·诺依曼进入柏林大学(1921年),1923年又进入瑞士苏黎世联邦工业大学学习化学。1926年他在苏黎世联邦工业大学获得化学方面的大学毕业学位,通过在每学期期末回到布达佩斯大学通过课程考试,他也获得了布达佩斯大学数学博士学位。
先后执教于柏林大学和汉堡大学,1930年前往美国,后入美国籍。历任普林斯顿大学、普林斯顿高级研究所教授,美国原子能委员会会员。美国全国科学院院士。
20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。
制造大脑
事有凑巧,1943年,当图灵回到英国后,一位名叫约翰·冯·诺依曼的数学家也从美国漂洋过海,来到了英国。冯·诺依曼当时是普林斯顿高等研究院最年轻的成员(他是最先被研究院聘为教授的五人之一,同时入院的还有爱因斯坦),他人脉很广,也认识图灵,因为在1938年,图灵博士毕业,成为研究助理后,他曾要求图灵留在普林斯顿。但图灵拒绝了这个工作机会,回到了英国剑桥。冯·诺依曼也见过香农。那是在1940年,香农还在高级研究所担任研究员。
20世纪30年代,人们越来越热衷于发明自动计算机。几个世纪以来,机械式计算机除了齿轮和螺丝钉以外,什么部件也没有。冯·诺依曼对这些设备深为着迷,他尤其痴迷于19世纪20年代查尔斯·巴贝奇(Charles Babbage)发明的一台机械式计算机,它与如今的现代计算机在设计上有许多共通之处。随着继电器这种电控开关的问世,利用电动设备进行计算已经成为了可能。不少工程师发明了早期计算机。其中最早的机型之一采用了柏林工程师康拉德·楚泽(Konrad Zuse)发明的继电器。这台巨型机器称为Z3,由于缺少条件分支,它的功能受到了一定的局限。也就是说,它不能根据不同的计算结果执行不同的操作,必须在程序中不停地执行相同的计算。它的运行速度也很慢,因为继电器采用了移动部件接通和断开电流。
运行速度更快的计算机都采用了没有移动部件的电子管(真空管)。20世纪30年代,美国爱荷华州立大学(Iowa State University)的 约翰·阿塔纳索夫(John Atanasoff)花了几年的时间发明了一台电子计算机,用来解线性代数方程。这台计算机由他和学生克利福德·贝里 (Clifford Berry)共同制造,称为“阿塔纳索夫-克利福德贝里计算机”(Atanasoff-Berry Computer,简称ABC)。它体型较小,性能不甚可靠,内含大约300个电子管。与此同时,英国工程师托马斯·弗劳尔斯(Thomas Flowers)于1934年在继电器的基础上发明了独创的开关系统,并于30年代末投入使用。开关系统采用了3000多个电子管,用于英国电话交换机和简单的数据处理。
1943年,图灵回国后,鼓动马克斯·纽曼接近弗劳尔斯,请他来布莱切利公园,帮忙改进他们在继电器的基础上设计出来的破译机。1943年底,弗劳尔斯发明了巨像I(Colossus I)——一台内含1600个电子管的电子计算机。巨像I后来一共制造了十台,每一台都包含2400个电子管,但它们不是通用机器,必须插入不同的电缆重新编程。
这时候,冯·诺依曼已结束英国之行,回到了美国。由于他名气很大,美国国防部邀请他参与曼哈顿计划(Manhattan Project,美国政府制造第一颗原子弹的计划),负责设计原子弹的爆炸外护层(explosive outer jacket)。要完成这项工作,必须进行大量复杂的数学计算。冯·诺依曼意识到,他需要一台全新的计算机,其性能必须远远超越当前所有的计算机。一次偶然的相遇注定将改变一切。1944年夏,冯·诺依曼在马里兰州的火车站遇到了曾任数学教授的赫尔曼·戈德斯坦中尉(Herman Goldstine)。
戈德斯坦当时是宾夕法尼亚大学(University of Pennsylvania)摩尔电气工程学院(Moore School of Electrical Engineering)的军方联络人。在摩尔电气工程学院,一台令人惊叹的全新计算机正在紧锣密鼓的研制当中。时至今日,戈德斯坦依然对当年与冯·诺依曼交谈的情形记忆犹新:“话题很快就转移到了我的工作上。我说我正在关注一项开发任务,任务的目的是制造一台每秒钟可以运算333个乘法的电子计算机。这句话才说完,整个谈话的气氛一下子就变了,原本我们还是比较轻松、随意地聊聊天、打打趣,突然变得像是在 做数学博士学位的口头答辩。”
冯·诺依曼马上做出安排,拜访了项目的设计师:约翰·莫奇利(John Mauchly)和约翰·埃克特(John Presper Eckert)
。他们设计的是世界上第一台通用计算机:电子数字积分计算机(The Electronic Numerical Integrator and Computer)——简称“埃尼阿克”(ENIAC)
。这个庞然大物尺寸为8×3×100英寸(约合2.4米×0.9米×30米),重约三十吨,包含17,000多个电子管和1500多个继电器,运算速度比以往的任何计算机都快。冯·诺依曼很快就开始定期造访摩尔电气工程学院,并受邀参与了埃尼阿克的设计项目。
埃尼阿克的研制工作进展缓慢,因此,在研制工作完成之前,军方又布置了一个任务,要求再建造一台更快的计算机。埃尼阿克的后继者称为电子离散变量自动计算机(Electronic Discrete Variable Automatic Computer)——简称“埃德瓦克”(EDVAC)
,约翰尼·冯·诺依曼成为了设计团队的一员。埃德瓦克的设计持续了好几个月,涉及到很多新思想和新技术。挑战主要来自两大方面,一是保存数据的存储器,需要解决的问题是,数据能否存储在某种形式的雷达甚至电视显像管里?二是指令系统,这里需要考虑的是,有哪些功能是计算机应该具备的?
1945年6月,冯·诺依曼撰写了一篇文章,对摩尔学院项目团队的设计理念进行了总结。这只是一份初稿,署名作者只有他一个人,但是文章的终稿版从未出炉。戈德斯坦鼓励将初稿的内容公诸于世,因此,埃德瓦克的设计思想很快在全世界研究人员和工程师中传播开来。文章标题为“关于埃德瓦克的报告初稿”(First Draft of a Report on the EDVAC)。这是第一份系统描述计算机制造方法的公开出版物,具有划时代的革新意义。
数字大脑的解剖
尽管“关于埃德瓦克的报告初稿”描述的是工程学和数学领域的研究成果,但它的遣词造句通俗而又浅显,几乎人人都能看懂。报告是冯·诺依曼1945年在火车上手写的,以下是部分摘录:
我们只要分析一下这台构想中的设备应该具备哪些功能,就不难看出,该设备的核心部件应该分为几个大类。第一:由于该设备本质上是一台计算机,最起码要能够迅速地执行基本的算术运算,其中包括加法、乘法和除法。由此可见,该设备应该包含专门执行此类运算的部件……也就是说,中央算术器(central arithmetic part)或许是一个必不可缺的部件,它也构成了该设备的第一大部件,我们将其简称为CA。
第二:该设备需要对不同的运算操作进行适当的排序,这一过程称 为逻辑控制。中央控制器(central control organ)可以对设备进行高效的逻辑控制……它构成了该设备的第二大部件,我们将其简称为CC。
第三:任何设备要想进行长时间的复杂操作(尤其是计算操作),都需要容量相当可观的存储器(memory)……它构成了该设备的第三大部件,我们将其简称为M。
……CA、CC、M这三大部件就相当于人体神经系统中的联络神经元。至于哪些部件对应于人的感觉神经元(又称传入神经元)和运动神经元(又称传出神经元),是接下来要讨论的问题。这些部件是该设备的输入装置和输出装置。
值得注意的是,这个设计方案包含五大逻辑元件:第一是中央算术器,负责执行所有的运算操作;第二是中央控制器,它决定机器的下一步动作;第三是存储器,用于保存程序及程序输出的结果;第四是输入设备,比如键盘;第五是输出设备,比如打印机。
算术逻辑单元(arithmetic and logic unit,简称ALU)和寄存器(register),用冯·诺依曼的说法就是中央算术器。
这个电子装置接收外界输入的电信号,并据此输出各种各样的电信号(即运算结果)。ALU的运作模式固定不变,受到布尔逻辑电路的支配。它设有临时存储区域,称为寄存器,寄存器的运作方式和存储器一样(但是访问速度要快很多),用于保存ALU和存储器输出的结果。存储器
。信息以二进制编码1和0的形式存储下来,二进制编码1和0则分别由“高”、“低”两种电压转换而来。在现代计算机中,这种类型的存储器通常被称为随机存取存储器(random access memory,简称RAM)。RAM这个缩写虽然看似神秘,但它的作用其实很简单。用通俗的话来讲,它可以帮助我们直接调取任何零散的信息,不需要像磁带或纸带那样,在庞杂的信息当中大海捞针。冯·诺依曼有很多设计理念(比如采用中央存储器,以保存数据和指令)明显受到了图灵机的影响。
冯·诺依曼的同事、洛斯阿拉莫斯国家实验室(Los Alamos National Laboratory)的物理学家斯坦利·弗兰克尔(Stanley Frankel)深知图灵的工作在当时的重要性。“我知道,大约在1943-1944年这段时间,冯·诺依曼非常重视图灵在1936年写的论文……他让我看看这篇论文,于是我好好研究了一下。”
冯·诺依曼也很重视香农的布尔逻辑,深知这一理论的重要价值。 他在报告中写道:
这台机器的一大重要方面在于,它依据的不是算术原理,而是逻辑原理
。非真即假的逻辑系统从本质上讲就是一个二进制的系统。
猝不及防的结束
直到1951年,埃德瓦克才被制造出来。尽管它比埃尼阿克要小,但还是安装了6000个电子管(真空管),功率高达56千瓦,需要工业空调才能保持降温。
没有人赶在战争结束之前成功造出可以使用的通用计算机。事实上,冯·诺依曼和最初的设计师莫奇利和埃克特之间发生了些许不快,因为莫奇利和埃克特对他们的理念不受重视而忿忿不平,他们想将自己的设计方案申请专利,投入商业使用。冯·诺依曼放弃了埃德瓦克,转而决定在高等研究院制造一台截然不同的计算机。受到此项工作的激发,很多其他计算机被相继设计出来。
约翰·冯·诺依曼在高等研 究院开展的电子计算机项目(electronic computer project,简称ECP)比此前所有的项目都更加完善,整个系统运转速度极快,可以在不出现任何错误的情况下,长时间运行数据输入量和输出量都相当可观的程序(比如氢弹试验数据计算、天气预报、人工生命模拟)。ECP的成果和设计方案得到了广泛共享。IBM当年之所以能推出商业计算机(700系列),就是因为在合作参与ECP的过程中学到了关键技术。我们现在生活在冯·诺依曼构建的世界。现代的计算机系统虽然日新月异,但万变不离其宗,大框架都是冯·诺依曼1952年在普林斯顿构建起来的。
冯·诺依曼写下关于埃德瓦克的报告后,才过两年,贝尔实验室就发明了晶体管。从理论层面讲,晶体管能做到的事情和电子管完全相同,但从实际角度讲,晶体管具有无可比拟的优越性,不仅速度快了好几倍,而且耗电量和体积也小了很多。
1953年,世界上第一台晶体管计算机由曼切斯特大学研究生迪克· 格里姆斯戴尔(Dick Grimsdale)制造完成。一石激起千层浪,此后15年里,世界各地涌现了一百多台晶体管计算机。但是,第一台晶体管计算机才问世五年,电子工程师就已经面临一个严峻的问题——“数字的暴政”(tyranny of numbers):为了提高运算能力,就必须安装更多的晶体管,但是一旦安装更多的晶体管,制造和维护成本就会增大,因为每个部件都需要手工焊接到电路板上。
这个问题并没有让电子工程师困扰多久。1958年,德州仪器(Texas Instruments)公司的新职员杰克·基尔比(Jack Kilby)产生了一个革命性的想法:为什么不同时制造所有的元件呢?只要蚀刻锗晶片,就可以将电路中所有的元件都集成到一小块芯片上。
几个月后,到了1959年,另一位研究人员——罗伯特·诺伊斯(Robert Noyce)
也独自想出了同样的主意,只不过他使用的不是锗晶片,而是硅晶片。集成电路(integrated circuit,简称IC),也就是硅芯片就此诞生。
1957年,约翰·冯·诺依曼去世,时值图灵去世三年后,硅芯片问世两年前。