为下一台机器重新分工

第二次世界大战末期,美国费城的宾夕法尼亚大学摩尔电气工程学院正在为陆军建造电子数值积分计算机(ENIAC)。约翰·莫奇利、普雷斯珀·埃克特及同事在工程推进中,已经开始讨论下一代机器怎样减少接线、扩大存储并简化控制。约翰·冯·诺伊曼参加讨论,把高速数值计算的需求和逻辑分析带入这个团队。

电子离散变量自动计算机(EDVAC)的报告初稿,就是这一过程中形成的设计文件。封面标注1945年6月30日,并列明陆军军械部门与大学的合同。这个日期确定的是文献节点,当时并没有一台照着全文建好、完成运行验收的EDVAC。

参考:[1] [2] [3]

五种功能怎样配合

初稿先问机器必须具备哪些功能,再讨论怎样实现。中央算术部分执行加、乘等操作;中央控制部分决定操作的顺序;存储部分保存计算过程中必须记住的信息;输入与输出部分则负责机器和外界之间的信息交换。报告用类似神经系统的语言说明这些部分,但目标是可以用电子元件实现的计算装置。

存储器要容纳的不只是初始数字,还包括中间结果、函数表和支配计算过程的指令。把这些用途尽可能安排在统一的存储机构里,可以避免为每类信息都建造一套完全独立的设备。报告由此把存储、计算和控制的职责分开,又通过明确的信息转移把它们接起来。

参考:[1] [2]

将操作顺序变成可读取的信息

可以用一个简化例子理解这项变化:机器要反复读取一组数字、相加并保存累计结果,操作顺序可编码成若干指令,与数值一起放在有编号的位置中。控制机构从存储器取得指令,指示运算机构取数和计算,再把结果送回。改变工作时,便有可能主要改换指令内容,而不必为每一个新问题重造控制线路。

初稿还有鲜明的早期特征。它设想通过修改指令中的地址来实现循环、条件性改变执行路径或逐项访问数据,并没有直接配备后来常见的条件跳转指令。后续设计逐渐加入专门指令和变址机制,减少这种修改代码的需要。因此,今天教科书里的标准结构并不是初稿逐字照搬的结果。

参考:[1] [3]

逻辑方案仍须找到可靠的材料

用数码表示指令并不自动解决存储问题。初稿详细讨论循环式延迟存储:信息以脉冲序列的形式经过延迟装置,重新放大后继续循环,读取时还要等待所需部分到达。采用串行方式能够减少某些硬件数量,但时间安排、容量和信号保持都成为实际限制。

二进制运算、电路时序、存储容量和控制代码因此在报告中彼此牵连。它还比较其他可能的存储技术,而非只给出一张抽象方框图。要把这些分析变成长期可靠工作的计算机,仍需建造与测试元件、解决输入输出、编写程序并反复修改设计;初稿的传播先于这些工程问题的全部解决。

参考:[1] [3]

一份未完成文件的长久影响

赫尔曼·戈尔德斯坦安排初稿打字、复制并向项目成员及部分外部同行传阅。它使不同机构能够围绕同一份详细说明讨论新机器,也让冯·诺伊曼的名字与这一设计方向紧密相连。然而封面署名说明的是文本作者,不能据此抹去埃克特、莫奇利及摩尔学院团队此前和同时进行的工作。

1946年6月,阿瑟·伯克斯、戈尔德斯坦和冯·诺伊曼又在普林斯顿高等研究院发表《电子计算工具逻辑设计初步讨论》,延续并调整相关设计。此后的具体机器与编程实践继续改变指令和存储安排。EDVAC初稿的重要作用,是把多项相互支撑的设想组织成可传播、可质疑、可继续实现的方案;它既不是单独一个人的全部发明证明,也不是1945年即已实现的现代计算机成品。

参考:[2] [3] [4]