1943年,美国新墨西哥州洛斯阿拉莫斯。
一群科学家正在研制人类历史上最可怕的武器——原子弹。他们需要计算核裂变的临界质量,这涉及海量的数学运算。
一个穿西装的男人走进实验室。他不是物理学家,也不是工程师,他是数学家——但他能心算比计算机还快。
他看了一眼科学家们的计算任务,说:“你们需要一台更好的计算机。”
这个男人叫约翰·冯·诺依曼。他即将设计出现代计算机的蓝图。
天才中的天才#
冯·诺依曼1903年出生于匈牙利布达佩斯,犹太家庭。
他从小就是传说级的天才。6岁能心算两个8位数的除法,8岁掌握了微积分,12岁读懂了波莱尔的函数论。
有一次,有人问他:“你刚才心算的那个问题,你是怎么算的?”
冯·诺依曼困惑地说:“我就是直接算出来的啊。”
他无法解释自己的思维过程——对他来说,那些复杂的计算就像呼吸一样自然。
后来他移民美国,成为普林斯顿高等研究院的教授。他在数学、物理、经济学、气象学等多个领域都有开创性贡献。诺贝尔经济学奖得主保罗·萨缪尔森说:“冯·诺依曼是本世纪最聪明的天才。”
ENIAC的启示#
1943年,美国陆军资助建造世界上第一台电子计算机——ENIAC(Electronic Numerical Integrator and Computer)。
ENIAC是个庞然大物:重30吨,占地170平方米,有18000个真空管。它每秒可以计算5000次加法,比之前的机械计算器快1000倍。
但ENIAC有个致命缺陷:编程太麻烦了。
ENIAC的程序是"硬连线"的——要改变程序,必须重新接线。工程师们要拔掉几百根电缆,再插到新的位置。改一次程序,可能要花几天时间。
冯·诺依曼参观了ENIAC后,立刻看出了问题所在。他想:为什么不把程序也存储在内存里?这样改程序就像改数据一样简单。
EDVAC报告#
1945年,冯·诺依曼写了一份报告:《EDVAC报告的第一份草案》。
在这份报告中,他描述了一种新的计算机架构,后来被称为冯·诺依曼架构。
这个架构的核心思想是:存储程序(Stored Program)。
在此之前,计算机的程序是硬连线的,数据和指令分开存储。冯·诺依曼提出:程序和数据应该存储在同一个内存中,计算机从内存中读取指令并执行。
这样,改变程序只需要修改内存中的指令,不需要重新接线。
冯·诺依曼架构#
冯·诺依曼架构包含五个部分:
1. 运算器(ALU) 负责执行算术运算(加减乘除)和逻辑运算(与或非)。
2. 控制器(Control Unit) 负责从内存中读取指令,解码指令,控制运算器执行。
3. 存储器(Memory) 存储程序和数据。程序和数据存储在同一个空间中。
4. 输入设备(Input) 从外部获取数据,比如键盘、纸带阅读器。
5. 输出设备(Output) 输出结果,比如显示器、打印机。
这五个部分通过**总线(Bus)**连接,数据和指令在它们之间流动。
工作流程是这样的:
- 控制器从内存中读取下一条指令
- 控制器解码指令,判断要做什么
- 如果是运算指令,控制器告诉运算器执行
- 如果是输入/输出指令,控制器控制输入/输出设备
- 回到步骤1,继续执行下一条指令
这个简单的循环,就是计算机工作的基本原理。直到今天,你的手机、你的电脑,本质上都在重复这个循环——只是速度快了几十亿倍。
争议:这是冯·诺依曼一个人的功劳吗?#
冯·诺依曼架构被称为"冯·诺依曼架构",但这真的是他一个人的发明吗?
历史学家们有不同的看法。
ENIAC的设计者J. 普雷斯珀·埃克特和约翰·莫奇利认为,存储程序的概念是他们先提出的。冯·诺依曼只是把他们的想法写进了报告里。
另一位计算机先驱赫尔曼·戈德斯坦则认为,冯·诺依曼的贡献是系统化和理论化——他把零散的想法整合成一个完整的架构,并用数学语言清晰地描述出来。
无论如何,冯·诺依曼的报告产生了巨大的影响。它成为了计算机设计的"圣经",几乎所有后来的计算机都采用了这个架构。
冯·诺依曼瓶颈#
冯·诺依曼架构有一个固有的问题,后来被称为冯·诺依曼瓶颈。
问题在于:CPU(运算器+控制器)和内存是分开的。CPU执行指令的速度很快,但从内存读取数据的速度相对较慢。CPU经常要等待内存,造成性能浪费。
打个比方:CPU像一个超级快的厨师,内存像一个慢吞吞的仓库。厨师切菜炒菜只要几秒钟,但去仓库取食材要几分钟。厨师大部分时间都在等食材。
现代计算机用各种技术来缓解这个问题:缓存(Cache)、流水线(Pipeline)、分支预测(Branch Prediction)。但冯·诺依曼瓶颈始终存在,是计算机架构设计的核心挑战之一。
冯·诺依曼的遗产#
冯·诺依曼1957年因癌症去世,享年53岁。
他一生发表了150多篇论文,涉及数学、物理、经济学、计算机科学等多个领域。他被称为"最后一位全才"——在他之后,科学分工越来越细,很少有人能在多个领域都有开创性贡献。
在计算机领域,冯·诺依曼架构至今仍是主流。虽然有人提出了其他架构(如哈佛架构、数据流架构),但冯·诺依曼架构的简洁性和通用性,使它成为计算机设计的标准。
每当你打开电脑、启动手机、运行程序,你都在使用冯·诺依曼的思想。
从理论到实践#
图灵定义了计算的理论边界,冯·诺依曼设计了计算机的架构蓝图。
现在,是时候把蓝图变成真正的机器了。
1946年,ENIAC在宾夕法尼亚大学正式运行。它是世界上第一台通用电子计算机,标志着计算机时代的开始。
ENIAC的故事,我们明天继续。
今日知识点#
冯·诺依曼架构(Von Neumann Architecture) 一种计算机组织方式,核心特点是"存储程序"——程序和数据存储在同一个内存中。包含五个部分:运算器、控制器、存储器、输入设备、输出设备。至今仍是绝大多数计算机的基础架构。
冯·诺依曼瓶颈(Von Neumann Bottleneck) 冯·诺依曼架构的固有缺陷:CPU和内存之间的数据传输速度限制了整体性能。CPU速度远快于内存访问速度,导致CPU经常等待数据。现代计算机用缓存等技术缓解这个问题。
总线(Bus) 计算机各部件之间传输数据的通道。数据总线传输数据,地址总线传输地址信息,控制总线传输控制信号。总线带宽决定了数据传输的速度。
思考题#
- 冯·诺依曼架构把程序和数据存储在同一个内存中。这样做有什么好处?有什么坏处?
- 如果你能穿越回1945年,见到冯·诺依曼,你会问他什么问题?
明天预告:ENIAC诞生——世界上第一台电子计算机,30吨重的庞然大物,如何改变世界?
