冯·诺依曼结构:现代计算机的诞生
# 40.冯·诺依曼结构:现代计算机的诞生
机电时期,人们使用穿孔卡片或穿孔带编制程序,由于计算机的运算速度受限于机械动作,输入模块有充分的时间读取穿孔介质上的指令信息。
而到了电子时期,使用穿孔输入就远远跟不上电子运算的节奏了,因此,人们便利用旋钮、开关和接插线的不同位置来表示程序,虽然消除了控制与运算之间的速度差距,却使编程成为一件非常复杂的难事。
在 ENIAC 上设置一个实用程序,往往需要几个星期的时间,如非必要,使用者很少愿意修改它。因此,尽管 ENIAC 是通用的,却总在一段时间内只专用于某个问题(比如弹道计算),它的通用价值被大大削弱。而如果频繁地设置不同程序,机器在很大一部分时间里将无法运行,它的高速性能又被大大浪费。
聪明的读者或许已经想到:程序能不能像数据一样,通过穿孔介质输入之后长期驻存在机器内部的存储器中呢?这样一来,读取指令就和读取数据一样快了。
埃克特和莫奇利也想到了这一点,1944 年,在 ENIAC 还未建成之际,研制一台可以存储程序的新机器的申请就提交到了导弹实验室。导弹实验室同意了这个项目,并提供 10 万美元的预算。这台新机器名叫电子离散变量自动计算机(Electronic Discrete Variable Automatic Computer),简称 EDVAC。
原本,EDVAC 会和前辈 ENIAC 一样,悄悄地建成,风光地亮相,它将成为世界上第一台存储程序电子计算机,埃克特和莫奇利将为它申请一份专利,而这次不会再有谁质疑他们的原创性。然而故事并没有朝着这条既定路线展开,一位不期而至的“程咬金”使他们的原创变得不再纯粹,甚至,遮盖了他们应有的名气。他就是大名鼎鼎的约翰·冯·诺依曼(John von Neumann)。
约翰·冯·诺依曼(John von Neumann),1903-1957,美籍匈牙利人,数学家、物理学家、计算机科学家、博学家。(图片来自维基百科)
二战期间,冯·诺依曼加入曼哈顿计划,此时的他已经拥有极高的学术地位。原子弹的研制涉及大量运算,洛斯·阿拉莫斯国家实验室在体验过机电计算机 Harvard Mark I 之后,对 ENIAC 寄予了更高的期望。
1944 年的夏天,冯·诺依曼作为顾问加入 ENIAC 项目,提出了许多建设性意见,并深度参与到 EDVAC 的讨论中。这期间,冯·诺依曼在 EDVAC 上投入了许多思考,他愈发觉得,EDVAC 不单是一个平凡的计算机项目,它潜藏着更深的理论意义。他想起图灵的论文,通用图灵机能够根据纸带上的策略信息模拟任意图灵机的行为,纸带是它是存储器 ,策略信息就是程序,这正是存储程序最早的思想萌芽,而他们现在所尝试的,正是用电子管将它变成现实!
1945 年 6 月,在一趟返回洛斯·阿拉莫斯国家实验室的列车上,完整的 EDVAC 已在冯·诺依曼脑中清晰可见,他奋笔疾书,写出了那篇长达 101 页,影响计算机历史走向的《EDVAC 报告书的第一份草案》。
草案不仅详述了 EDVAC 的设计,还为现代计算机的发展指明了道路:
- 机器内部使用二进制表示数据;
- 像存储数据一样存储程序
- 计算机由运算器、控制器、存储器、输入模块和输出模块五部分组成。
这些在现在看来似乎是理所应当的原则,在当时却是一次划时代的总结。这份草案与其说是冯·诺依曼对 EDVAC 的设计描述,不如说是他对当时全世界计算机建造经验集大成式的高度提炼。
冯·诺依曼将计算机与神经细胞类比,运算器、控制器和存储器相当于联络神经元,输入模块和输出模块相当于感觉神经元和运动神经元。通俗地讲,就好比人拥有可以思考(处理信息)的大脑,并通过“感觉”获取来自世界的信息,通过“运动”去改变世界。计算机同样需要这样一个世界,那就是当时的穿孔介质、开关、旋钮、接插件,等等,统称外部记录媒体。
这种基于存储程序思想的计算机结构,后来被称为冯·诺依曼结构。冯诺依曼结构奠定了现代计算机的基调,放到今天,运算器和控制器就是 CPU 的主要组成部分,存储器主要对应为内存,输入和输出模块也被芯片化后集成到主板,外部记录媒体变得丰富多样,比如鼠标、键盘、显示器、触屏、手柄、硬盘、U 盘、音箱、话筒,等等。
冯·诺依曼结构
这份草案很快流传开来,并轰动了整个计算机界,但作为 ENIAC 团队的共同成果,却只署了冯·诺依曼一个人的名字。命运又一次给埃克特和莫奇利开了个大玩笑,这不仅让 EDVAC 失去了巨大的专利价值,还让 ENIAC 团队失去了应得的声誉。尽管冯·诺依曼并非有意为之,埃克特和莫奇利也一再强调即使没有冯·诺依曼,他们也能给出同样的成果,但“冯·诺依曼结构”实在太过经典,这个名词早已深入人心。
而 EDVAC 的设计思想中,有多少属于埃克特和莫奇利,有多少又属于冯·诺依曼,这是个永远也解不开的谜。但至少,如果没有冯·诺依曼将设计方案抽象至理论层面,计算机世界的“大一统时代”可能还要推迟到来。
如果说图灵描绘了计算机的灵魂,那么冯·诺依曼则框定了计算机的骨架,后人所做的只是不断丰富计算机的血肉罢了。
1948 年 4 月,ENIAC 团队通过线路改造使 ENIAC 的函数表有了存储指令的能力,但其容量对于程序来说还是太小了。实现存储程序的关键是建造容量足够大的内部存储器,要既有不拖累电子运算的访问速度,也要有相对低廉的成本。一时间,计算机界百花齐放,涌现出各种不同的存储器。
- 01
- 中国网络防火长城简史 转载10-12
- 03
- 公告:博客近期 RSS 相关问题10-02