JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
计算机科学 1945

《关于 EDVAC 的报告初稿》

约翰·冯·诺伊曼

把计算机的指令和数据放进同一个存储器——此后每台机器都沿用这套设计。

Choose your version
In depth · the introduction

正是这份蓝图,让计算机能改写自己的指令——靠的是把指令和数据放进同一个存储器。

把这个想法拆开看

像 ENIAC 那样的早期电子机器,是靠「物理改线」来编程的——拨开关、重插电缆,换一道新问题可能要折腾好几天。冯·诺伊曼的报告提出了不一样的做法:把程序写成数字,存进机器的存储器里,就紧挨着它要处理的数据。

这一个决定,就是「存储程序」的想法。因为指令不过是躺在存储器里的一串数字,机器便能读它、一条一条照着做,甚至改动它——于是同一台实体计算机,无须任何改线,就能运行你装进去的任何程序。从此,每一台计算机都是这样工作的:要换功能,装新软件就好,不必重造硬件。

它从哪里来

1945 年春天,冯·诺伊曼正为 EDVAC 担任顾问——那是宾夕法尼亚大学为 ENIAC 规划的后继机。他把团队的讨论汇成一份手稿;赫尔曼·戈尔德斯坦把它打字成文,于 1945 年 6 月 30 日寄给约二十多人,扉页上署着冯·诺伊曼的名字。它只是一份「初稿」,未完成,也没有图纸——可它把逻辑设计讲得如此清楚,以致冲出了项目本身,定下了整个领域的模板。

这份初稿还带着一根至今仍能感到的「刺」。造出 ENIAC 的工程师 J. 普雷斯珀·埃克特与约翰·莫奇利,认为这些想法是集体的功劳,看到扉页上只有一个名字,深感不平——这桩关于「功劳该归谁」的争执,史学家至今仍在争论。

它为何重要

在此之前,「计算机」是一台专用机器:要应对一类新问题,就得把它重造一遍。在此之后,机器变得通用了——你只消改一改存储器里的数字,就改变了它所做的事。这正是计算器与计算机之间的全部分野;也正因如此,同一台笔记本电脑,可以是打字机、是暗房、是电影院、是游戏机——全看此刻装的是哪一个程序。

一个类比

想想自动钢琴。老式的那种,从一卷打孔的纸带上读出曲子:乐曲与机器是分开的,要弹新曲就换一卷纸带。而冯·诺伊曼机,索性把乐谱和草稿纸放进同一个抽屉,用同一套速记写成——于是它不仅能弹这支曲子,还能在演奏途中改写它。指令与数据,共用一个抽屉。在下方,试试这台小小的机器。

一排八个存储单元:单元 0–3 装着指令 LOAD 6、ADD 7、STORE 5、HALT,单元 5–7 装着数字。时钟步滑杆每次取出并执行一条指令,高亮该指令以及它所用到的数据单元,同时程序计数器与累加器随之更新;操作数滑杆改变单元 6 里的数字,于是单元 5 中存下的结果也随之改变。

它落在何处

它是本馆中另外两个想法的工程「孪生体」。1936 年,艾伦·图灵已经证明:一台「通用机」只要读入对另一台机器的描述,就能模仿它——而冯·诺伊曼的报告,正是告诉你怎样真的把这样一台机器造出来。1948 年,克劳德·香农又用「比特」度量了信息,而比特,正是冯·诺伊曼的存储器所装的那种东西。图灵的理论、香农的比特、冯·诺伊曼的架构,就是每一台计算机底下的三根支柱。

The original document
Original source text
John von Neumann · Moore School of Electrical Engineering, University of Pennsylvania · distributed June 30, 1945 by Herman H. Goldstine · 101-page typescript
1. The aim
The considerations which follow deal with the structure of a very high speed automatic digital computing system, and in particular with its logical control.
From the first line the report sets out to describe a logical structure, not a wiring diagram. Von Neumann idealizes the components as two-state, all-or-none elements — borrowing the formal neuron of McCulloch and Pitts — so the argument is about organization, not vacuum tubes.
2. The organs of the machine
The device is divided into parts: a central arithmetical unit (CA) for the elementary operations; a central control (CC) that sequences the work by interpreting coded orders; a memory (M); and the input (I), output (O), and an outside recording medium (R).
The three specific parts CA, CC (together C) and M correspond to the associative neurons in the human nervous system. It remains to discuss the equivalents of the sensory or afferent and the motor or efferent neurons. These are the input and the output organs of the device.
3. One memory for numbers and for orders
The instructions which govern a complicated problem may constitute considerable material, particularly so, if the code is circumstantial (which it is in most arrangements). This material must be remembered.
While it appeared that various parts of this memory have to perform functions which differ somewhat in their nature and considerably in their purpose, it is nevertheless tempting to treat the entire memory as one organ, and to have its parts even as interchangeable as possible for the various functions enumerated above.
So the orders that govern a problem are kept in the same memory M as the numbers they act on, in the same form and addressed the same way. This is the stored-program principle — the single idea for which the report is remembered.
[ … ]
The document is explicitly a “First Draft”: it breaks off before the detailed circuit engineering, carries no references, and names only von Neumann, though it distilled discussions of the whole EDVAC team. The full text — definitions, the binary arithmetic of CA, the coding of orders — is at the source below.
Moore School, University of Pennsylvania · June 1945