大悟读书网 > 经济管理 > 人工智能革命:历史、当下与未来 > 冯诺伊曼结构 ——踏平技术坎坷

冯诺伊曼结构 ——踏平技术坎坷

图1-5 冯诺伊曼设计的离散变量自动电子计算机草图

虽然踏平了计算机物理实现的技术坎坷,但冯诺依曼对建造计算机并没有太大的兴趣,他和图灵一样,更感兴趣的是计算机能够做什么。自然而然,冯诺依曼注意到机器的自动复制问题,并对生物世界的复制进行了同样深入的思考和比较。自动计算机能制造出和本身复杂度相当或者更高的后代吗?冯诺依曼解释说:“低级的‘复杂性’可能是退化性的,即每一个可以制造其他自动机的自动机只能产生较不复杂的自动机。然而,当复杂性超过某一个特定水平之后,如果对合成现象进行适当安排,就会发生爆炸性的变化。换句话说,自动机的合成可以通过这样一种方式进行:每个自动机有可能产生比自身更为复杂、更具潜力的自动机。”

冯诺伊曼体系结构给计算机的性能带来了革命性突破:最早的计算机器仅仅内置固定用途的专用程序,因而只能实现特定的功能。如果想要改变此机器的程序,就必须更改线路、调整结构甚至重新设计机器。由于当年的计算机器并非今日可编程的计算机,彼时所谓的“重写程序”很可能指的是纸笔设计程序步骤,接下来制订工程细节,再施工将机器的电路配线或结构改变。冯诺伊曼体系结构的“存储程序”理念则将计算机的专用性拓展为通用性。借由创造一组指令集结构,并将所谓的运算转化成一串程序指令的执行细节,将指令转化为一种特别形态的静态资料。一台储存程序型电脑可轻易改变其程序,并在程序的控制下改变其运算内容。同时,“存储程序”理念也允许程序执行时自我修改程序的运算内容。事实上,这一理念的设计动机之一就是让程序自行增加内容或改变程序指令的内存位置,因为早期的设计都要使用者手动修改。但随着索引暂存器与间接位置存取变成硬件结构的必备机制后,本功能就不如以往重要了。而程序自我修改这项特色也被现代程序设计所扬弃,因为它会造成理解与除错的难度,且现代中央处理器的管线与快取机制会让降低这种功能的效率。

可能连冯诺伊曼自己都没有意识到,他提出了一个重要的科学问题:能否创造出与人类智能具有相当水平的机器智能?但可惜的是,他的生命已经逐渐走向了尽头。1957年,53岁的冯诺伊曼因骨癌去世,而骨癌的病因很可能源自大名鼎鼎的曼哈顿计划的核辐射。这位美国核武器的奠基人,临终时刻却只能在军方代表的监视下度过。而人类智能与机器智能的关系这个未竟的话题,也只有留待后来者去探索了。

冯诺依曼体系结构采用二进制代替十进制,因而完成了计算机从模拟到数字的转化。在硬件上,冯诺伊曼体系结构包括五大部分:运算器、控制器、存储器、输入设备和输出设备,建立在硬件基础上的则是“存储程序”原理——使用同一个存储器,经由同一个总线传输,程序和数据统一存储同时在程序控制下自动工作。特别要指出的是,它的程序指令存储器和数据存储器是合并在一起的,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。这是因为程序指令和数据都是用二进制码表示,且程序指令和被操作数据的地址又密切相关。

最后,让我们用冯诺伊曼的一件轶事作为结束:

经过长期的构思与讨论,冯诺依曼在火车上完成了离散变量自动电子计算机的设计。1945年6月30日,《关于离散变量自动电子计算机的草案》经油印复印,由莫尔学院限量发行,“冯诺依曼体系结构”就此诞生。诞生在列车上的卓越思想为电子计算机的逻辑结构设计奠定了基础,已成为计算机设计的基本原则。

在一次晚会上,女主人勇敢地向冯诺伊曼提出一道数学题:

接连受到两次打击之后,冯诺依曼开始把部分注意力从基础数学转向了工程应用领域,出众的才华终于结成硕果。在美国,冯诺依曼积极参与美国军方武器研制的过程。自此,他把自己巨大热情和天赋投入到计算机研制和运用的事业中。

“相距一英里的两列火车在同一轨道上以每小时30英里的速度相向而行,这时栖在一列火车前面的一只苍蝇以每小时60英里的速度朝着另一列火车飞去,当它飞到另一列火车时又迅速地飞回来。它一直这样飞来飞去,直到两列火车不可避免地发生碰撞。请问这只苍蝇共飞了多少英里?”

图1-4 约翰·冯诺伊曼

大多数人,尤其是懂一点数学的人,都会先计算出苍蝇每一来回飞行的路程,再把这些结果累加起来。这一方法虽然直观,但涉及到无穷级数求和的问题,因而费时费力。更聪明的算法是首先计算出两列火车要经过多长时间才能碰撞,再用这个时间乘以苍蝇的飞行速度,清楚又简洁。

女主人话音刚落,冯诺依曼就脱口而出:“一英里。”

冯诺伊曼于1903年出生于匈牙利布达佩斯的一个犹太人家庭,在量子力学、现代计算机、纯数学与应用数学、核武器和生化武器等诸多领域内都有杰出建树,是20世纪难得一见的百科全书式学术奇才。但在生涯早期,冯诺伊曼的运气实在欠佳。1931年,当冯诺依曼即将在希尔伯特世纪问题中第二问题上获得突破时,却突然得知奥地利逻辑学家库尔特·哥德尔(Kurt Godel)已经先他一步发表了哥德尔定理,着实令他郁闷不已。一气之下,冯诺伊曼转行研究量子力学。可就在他的量子力学研究即将结出硕果之际,另外一位天才物理学家英国人保罗·狄拉克(Paul Dirac)又一次抢了他的风头,出版了奠基性的巨著《量子力学原理》,这比冯诺依曼的《量子力学的数学基础》整整早了两年。

“天啊!你这么快就算出来了,”女主人惊呼,“大多数数学家都没能看出这里面的技巧,而是用无穷级数去计算,就不知道要算多久。”

1936年,当意气风发的图灵来到美国的普林斯顿大学攻读数学博士学位时,在位于同一个城市的普林斯顿高等研究院,同是不世出的天才的冯诺依曼当时正在该研究院主持数学研究。他对图灵的才华赞叹不已,极力邀请图灵毕业后做他的研究助手,只可惜图灵心系剑桥,一心要回到母校任教,这不禁令冯诺依曼颇为惋惜。可令人惋惜的远不止此,如果当年两位科学奇才能够强强联手、通力合作,必将给数学和计算机科学等学科带来革命性的变革,只可惜这种美好的景象只能存在于想象之中。

“什么技巧?我也是用无穷级数算的。”冯诺依曼诧异地问。

图灵奠定了计算机的理论基础,美国科学家约翰·冯诺依曼(Johnvon Neumann)则将图灵的理论物化成为实际的物理实体,成为了计算机硬件体系结构的奠基者。自第一台冯诺依曼计算机诞生以来,七十余年的时间悄然流逝,计算机的技术与性能在这期间都发生了翻天覆地的变化,不变的却是作为主流体系架构的冯诺依曼结构。