美文网首页01改变世界计算核心冷知识
冯·诺依曼结构:现代计算机的诞生

冯·诺依曼结构:现代计算机的诞生

作者: 逸之 | 来源:发表于2019-11-24 10:54 被阅读0次

从存储程序到冯·诺依曼结构

机电时期,人们使用穿孔卡片或穿孔带编制程序,由于计算机的运算速度受限于机械动作,输入模块有充分的时间读取穿孔介质上的指令信息。而到了电子时期,使用穿孔输入就远远跟不上电子运算的节奏了,因此,人们便利用旋钮、开关和接插线的不同位置来表示程序,虽然消除了控制与运算之间的速度差距,却使编程成为一件非常复杂的难事。在ENIAC上设置一个实用程序,往往需要几个星期的时间,如非必要,使用者很少愿意修改它。因此,尽管ENIAC是通用的,却总在一段时间内只专用于某个问题(比如弹道计算),它的通用价值被大大削弱。而如果频繁地设置不同程序,机器在很大一部分时间里将无法运行,它的高速性能又被大大浪费。

聪明的读者或许已经想到:程序能不能像数据一样,通过穿孔介质输入之后长期驻存在机器内部的存储器中呢?这样一来,读取指令就和读取数据一样快了。

埃克特和莫奇利也想到了这一点,1944年,在ENIAC还未建成之际,研制一台可以存储程序的新机器的申请就提交到了导弹实验室。导弹实验室同意了这个项目,并提供10万美元的预算。这台新机器名叫电子离散变量自动计算机(Electronic Discrete Variable Automatic Computer),简称EDVAC。

原本,EDVAC会和前辈ENIAC一样,悄悄地建成,风光地亮相,它将成为世界上第一台存储程序电子计算机,埃克特和莫奇利将为它申请一份专利,而这次不会再有谁质疑他们的原创性。然而故事并没有朝着这条既定路线展开,一位不期而至的“程咬金”使他们的原创变得不再纯粹,甚至,遮盖了他们应有的名气。他就是大名鼎鼎的约翰·冯·诺依曼(John von Neumann)。

约翰·冯·诺依曼(John von Neumann),1903-1957,美籍匈牙利人,数学家、物理学家、计算机科学家、博学家。(图片来自维基百科)

在所有计算机先驱中,冯·诺依曼和图灵一齐拥有着最高的知名度,但其实他的主要成就分布在其他领域。他首先是位伟大的数学家,在集合论、逻辑学、博弈论、代数学、几何学和拓扑学等各大分支都有卓越贡献,一生发表的150多篇论文中,120多篇都是数学论文;而后是一位物理学家,在量子力学和流体动力学中颇有建树;同时还是化学家和经济学家,是位令多数同行都只能望其项背的博学者。

他天赋异禀,6岁就能心算8位数除法,8岁便熟稔微积分,22岁获得布达佩斯大学数学博士学位。他能一字不差地背诵出曾经看过的名著,甚至电话本,他所知的历史知识甚至令普林斯顿大学的历史学教授都自愧不如。其心算能力和记忆力之强,曾令某位ENIAC小组的数学家感叹:还造什么计算机,他本身就是台计算机!

在与冯·诺依曼接触过的人中,越是高学识者越惊叹于他的超群智力。苏黎世联邦理工学院的教授乔治·波伊亚用“害怕”来形容自己对冯·诺依曼的感受,因为只要他在课堂上提到某个数学界的未解难题,冯·诺依曼很可能一下课就拿着完美的解答去和他讨论了。“原子能之父”恩利克·费米曾向曼哈顿计划的同事这样形容冯·诺依曼的心算能力:“他的心算速度是我的十倍,而我的心算速度已经是你的十倍了。”加拿大数学家海尔·比林则感叹:“想赶上冯·诺依曼是不可能,那种感觉就好像你骑着三轮车妄图追上汽车一样。”诺贝尔物理学奖获得者汉斯·贝特则不止一次半开玩笑地揣测:冯·诺依曼的大脑暗示着有比人类更先进的物种存在。

二战期间,冯·诺依曼加入曼哈顿计划,此时的他已经拥有极高的学术地位。原子弹的研制涉及大量运算,洛斯·阿拉莫斯国家实验室在体验过机电计算机Harvard Mark I之后,对ENIAC寄予了更高的期望。1944年的夏天,冯·诺依曼作为顾问加入ENIAC项目,提出了许多建设性意见,并深度参与到EDVAC的讨论中。

这期间,冯·诺依曼在EDVAC上投入了许多思考,他愈发觉得,EDVAC不单是一个平凡的计算机项目,它潜藏着更深的理论意义。他想起图灵的论文,通用图灵机能够根据纸带上的策略信息模拟任意图灵机的行为,纸带是它是存储器[1],策略信息就是程序,这正是存储程序最早的思想萌芽。而他们现在所尝试的,正是用电子管将它变成现实!1945年6月,在一趟返回洛斯·阿拉莫斯国家实验室的列车上,完整的EDVAC已在冯·诺依曼脑中清晰可见,他奋笔疾书,写出了那篇长达101页,影响计算机历史走向的《EDVAC报告书的第一份草案》。

草案不仅详述了EDVAC的设计,还为现代计算机的发展指明了道路:

  1. 机器内部使用二进制表示数据;
  2. 像存储数据一样存储程序;
  3. 计算机由运算器、控制器、存储器、输入模块和输出模块5部分组成。

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

冯·诺依曼将计算机与神经细胞类比,运算器、控制器和存储器相当于联络神经元,输入模块和输出模块相当于感觉神经元和运动神经元。通俗地讲,就好比人拥有可以思考(处理信息)的大脑,并通过“感觉”获取来自世界的信息,通过“运动”去改变世界。计算机同样需要这样一个世界,那就是当时的穿孔介质、开关、旋钮、接插件,等等,统称外部记录媒体。

这种基于存储程序思想的计算机结构,后来被称为冯·诺依曼结构。冯诺依曼结构奠定了现代计算机的基调,放到今天,运算器和控制器就是CPU的主要组成部分,存储器主要对应为内存,输入和输出模块也被芯片化后集成到主板,外部记录媒体变得丰富多样,比如鼠标、键盘、显示器、触屏、手柄、硬盘、U盘、音箱、话筒,等等。

冯·诺依曼结构

这份草案很快流传开来,并轰动了整个计算机界,但作为ENIAC团队的共同成果,却只署了冯·诺依曼一个人的名字。命运又一次给埃克特和莫奇利开了个大玩笑,这不仅让EDVAC失去了巨大的专利价值,还让ENIAC团队失去了应得的声誉。尽管冯·诺依曼并非有意为之,埃克特和莫奇利也一再强调即使没有冯·诺依曼,他们也能给出同样的成果,但“冯·诺依曼结构”实在太过经典,这个名词早已深入人心。

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

如果说图灵描绘了计算机的灵魂,那么冯·诺依曼则框定了计算机的骨架,后人所做的只是不断丰富计算机的血肉罢了。

1948年4月,ENIAC团队通过线路改造使ENIAC的函数表有了存储指令的能力,但其容量对于程序来说还是太小了。实现存储程序的关键是建造容量足够大的内部存储器,要既有不拖累电子运算的访问速度,也要有相对低廉的成本。一时间,计算机界百花齐放,涌现出各种不同的存储器。

参考文献


  1. 图灵机是一种抽象机器,图灵在提出它时并不考虑如何实现它。它所用的纸带可以映射为真实计算机用于输入输出的穿孔纸带,也可以映射为存储器,兼具两者功能,但其发挥的作用更偏向于后者。

相关文章

  • 【计算】22、自动计算过程

    目录一、“冯诺依曼结构”计算机二、计算机内部运行过程三、基本计算语句 一、“冯诺依曼结构”计算机 “计算机之父”冯...

  • Linux内核学习笔记知识点杂烩(二)

    冯诺依曼结构:冯诺依曼结构就是存储结构计算机。 存储结构计算机:硬件上的解释:IP(16位机)/EIP(32位机)...

  • 探索计算机的结构与核心概念

    在我们的生活与工作中所使用到的计算机都是基于冯诺依曼结构实现的,冯诺依曼结构又称冯诺依曼模型或普林斯顿结构,它是一...

  • 计算机组成原理——冯·诺依曼计算机

    冯·诺依曼计算机结构图 冯·诺依曼计算机以运算器为中心。 冯·诺依曼计算机特点 1.计算机由运算器、控制器、存储器...

  • 计算机基础

    现在我们使用的计算机大都是冯诺依曼结构的 所谓冯诺依曼结构,指的就是,计算机的数制采用二进制,计算机按照程序顺序执...

  • 冯·诺依曼结构:现代计算机的诞生

    从存储程序到冯·诺依曼结构 机电时期,人们使用穿孔卡片或穿孔带编制程序,由于计算机的运算速度受限于机械动作,输入模...

  • 2计算机的基本组成

    现在的计算机都是以二进制存储的程序,这样的计算机都叫冯诺依曼计算机。 冯诺依曼计算机特点 1冯诺依曼计算机有5大组...

  • 计算机组成原理——现代计算机组成结构

    现代计算机 现代计算机结构特点 典型的冯·诺依曼计算机是以运算器为中心的,现代的计算机已转换为以存储器为中心。 现...

  • LINUX的初探

    计算机的组成 冯诺依曼体系 一般而言,计算机的组成遵循着“冯诺依曼体系结构”。这种结构的体现实质上是一种存储程序的...

  • Linux基础知识

    1、计算机的组成及其功能   说到计算机的组成那就不得不提冯·诺依曼体系结构,美籍匈牙利数学家冯·诺依曼于1946...

网友评论

    本文标题:冯·诺依曼结构:现代计算机的诞生

    本文链接:https://www.haomeiwen.com/subject/mjgyyctx.html