跳过正文
  1. 文章/
  2. 计算机前世今生系列/

冯·诺依曼的蓝图:存储程序计算机

sun.ao
作者
sun.ao
我是 sun.ao,一名热爱技术的程序员,专注于 AI 和数智化领域。
目录
计算机前世今生 - 这篇文章属于一个选集。
§ : 本文

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. 控制器从内存中读取下一条指令
  2. 控制器解码指令,判断要做什么
  3. 如果是运算指令,控制器告诉运算器执行
  4. 如果是输入/输出指令,控制器控制输入/输出设备
  5. 回到步骤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) 计算机各部件之间传输数据的通道。数据总线传输数据,地址总线传输地址信息,控制总线传输控制信号。总线带宽决定了数据传输的速度。


思考题
#

  1. 冯·诺依曼架构把程序和数据存储在同一个内存中。这样做有什么好处?有什么坏处?
  2. 如果你能穿越回1945年,见到冯·诺依曼,你会问他什么问题?

明天预告:ENIAC诞生——世界上第一台电子计算机,30吨重的庞然大物,如何改变世界?

计算机前世今生 - 这篇文章属于一个选集。
§ : 本文

相关文章