← 返回内容列表

冯·诺依曼 1945 画下的电脑骨架,今天卡在“内存墙”

冯·诺依曼 1945 画下的电脑骨架,今天卡在“内存墙”

1945 年一份报告定下了“运算器+控制器+存储器+输入输出”的电脑骨架,80 年没变过;今天算力飙升、内存却追不上,我们正卡在他画的框里找出口。

一、1945 年的一份报告,画下了今天所有电脑的骨架

你正在用的手机、笔记本、乃至云端服务器,内部分工都长着同一副模样:一个运算器、一个控制器、一块存储器,再加上输入和输出。这套结构,几乎所有人都能在教科书里找到它的名字——"冯·诺依曼架构"。

它来自 1945 年一份只用了几周写就、却影响了八十多年的报告:《关于 EDVAC 的报告初稿》。但很多人不知道的是,这份报告的核心创意,并不是"发明了计算机",而是把一个已经存在了九年的数学抽象,工程化成了极简的骨架。我们顺着时间,看冯·诺依曼是怎么走到那一步的。

二、种子:图灵 1936 已经给过"通用"的灵魂

早在 1936 年,图灵就提出了"通用图灵机":同一台固定结构的机器,只要把不同的"程序指令"和"数据"一起编码进一条带子,它就能变成干不同事的机器。冯·诺依曼 1937 年为图灵写过普林斯顿的推荐信,战前就熟知这篇论文,他甚至反复强调"基本概念是图灵的"。

但冯·诺依曼当时把通用图灵机看作可计算性的理论模型,而不是"如何造一台计算机"的施工图。也就是说:图灵给了"通用"的灵魂,缺的,是一张能落地的工程蓝图。

三、痛点:ENIAC 的"程序在机器之外"

1945 年完成的 ENIAC 是人类第一台可编程电子计算机。但它有个致命的不便:它不能存储程序。换一个题目,要人工重接几百条线缆、拨动成百个开关,几十人干好几天,只为算上几分钟。程序与计算"两分离",没有内部程序存储。

冯·诺依曼参与改进时,一眼就看出了这个缺陷——"为什么不能把程序也装进机器内部?"这个反问,正是整件事的起点。

图1:1945 年,操作人员正在给 ENIAC 接线上——换题就要重接几百条线,这正是冯·诺依曼要解决的痛点(美国陆军,公有领域)

四、关键的反转:"把程序也当数据存"

1944 年夏,陆军项目管理员 Goldstine 在阿伯丁车站偶遇冯·诺依曼,把他拉进了莫尔学院的项目。冯·诺依曼随即在往返洛斯阿拉莫斯的火车上,手写了那份报告——后来由 Goldstine 打印、复制、分发,使它在全球流传。

报告里那个改变世界的决定是:把指令(orders)和数字(numbers)放进同一个统一的存储器,而且指令同样用数字编码。这一反转的后果是革命性的:

"A key design concept enunciated … is a uniform memory containing both numbers (data) and orders (instructions). The orders which are received by CC come from M, i.e. from the same place where the numerical material is stored."

原文(《First Draft》, Sec.14.0):所阐明的关键设计概念(后被称为冯·诺依曼架构)是:一个统一的存储器,同时容纳数字(数据)与指令(orders)。中央控制器收到的指令,来自存储器 M——即存放数值材料的同一处。

因为指令可以像数据一样被读取、修改,机器第一次获得了自修改代码、循环、条件跳转的能力,从"专用接线机器"变成了"通用机器"。这一跃,才是通用计算灵魂真正落地的关键。

图2:1945 年《关于 EDVAC 的报告初稿》手稿/扫描页——统一存储器概念即出于此(美国陆军,公有领域)

五、为什么它成了后来所有电脑的骨架

统一内存 + 顺序"取指–译码–执行"(控制器按地址从内存逐条取指令),这套结构极简、通用、易编程、易复制。1946 年莫尔学院的讲座与报告,催生了第一代存储程序计算机:剑桥的 EDSAC(1949,首台实用存储程序机)、曼彻斯特与剑桥的后续机、冯·诺依曼在普林斯顿高等研究院设计的 IAS 机(衍生出 MANIAC、ILLIAC、JOHNIAC)。

直到今天,几乎所有计算机仍沿用这副骨架。它不像一个发明,更像一种不可绕开的默认

冯·诺依曼 vs 存算一体点击模块看「搬运墙」从哪来

冯·诺依曼架构

类脑 / 存算一体

运算器 · ALU 做计算

算术逻辑单元只负责算;数据必须从存储器搬过来,算完再搬回去。

六、最讽刺的遗产:内存墙,生于架构之内

正因为指令和数据共享同一总线,取指令和取数据不能同时进行,CPU 常常被迫空等内存。这个瓶颈,是架构内生的——它不来自某个实现的偷工减料,而来自"计算与存储分离"这一根本假设本身。随着集成电路越做越小、CPU 与内存的速度差越拉越大,这堵"墙"反而越来越高。

"Surely there must be a less primitive way of making big changes in the store than by pushing vast numbers of words back and forth through the von Neumann bottleneck. … it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking…"

Backus(1977 图灵奖演讲):一定存在比通过"冯·诺依曼瓶颈"来回搬动海量字、对存储做重大改动更先进的方式……它更是一个"智识瓶颈",把我们困在"一次一个字"的思维里。

从 1945 到今天,所有"破墙"的尝试,都呈现出同一个有趣的逻辑:继承它的通用性,反叛它的"分离"

图3:EDVAC 机器——第一台大体落地冯·诺依曼骨架的计算机(美国陆军,公有领域)

七、今天我们如何"破墙"

方向做法与冯氏骨架的关系
多级缓存Cache 层级贴近 CPU继承统一内存,靠局部性"躲"瓶颈
修改型哈佛架构指令/数据独立总线(如 ARM Cortex-M)反叛:物理分离指令与数据,并行取指取数
HBM 高带宽内存3D 堆叠、近封装高并行反叛瓶颈:用近封装提升带宽
存算一体 / PIM在内存里直接算(如三星 HBM-PIM)反叛根本假设:打破"计算与存储分离"
类脑 / 神经形态IBM TrueNorth、Intel Loihi,事件驱动反叛:抛弃顺序取指,走向突触式存算一体

逻辑线索很清楚:所有"破墙"尝试,都继承通用、反叛分离。冯·诺依曼骨架既是通用计算的起点,也是今天算力天花板的总根源。读懂这一点,才真正读懂了现代算力的来路与尽头。

八、最该记住的启发

第一,真正的原创往往是"工程化一个已有灵魂"。冯·诺依曼的突破不是"发明计算机",而是把图灵的数学抽象(程序即数据)施工成极简骨架:统一内存 + 顺序执行。原创,常常在于那张"施工图"。

第二,"程序当数据存"这一反转,让机器第一次能自我改写——从专用接线机变成通用机,这是通用计算落地的关键一跃,也是今天"软件定义一切"的源头。

第三,瓶颈内生于架构。所以今天的 HBM、缓存、存算一体、神经形态,都是对冯氏骨架"既继承、又反叛"。看懂这点,你就不会再把算力瓶颈简单归咎于"芯片不够快"。

关联推荐

[关联映射] 引流型:本篇呼应 M5 自动化模块——自动化之所以可能,正因程序可以像数据一样被存储、读取和改写。

评论 (0)

加载评论中…

冯·诺依曼 1945 画下的电脑骨架,今天卡在“内存墙” | 必学必会