1 历史背景
1.1 研制动机与ENIAC的局限
EDVAC的研制直接源于ENIAC在实际使用中暴露出的瓶颈。ENIAC作为世界上第一台通用电子计算机,其设计目标主要是为了快速计算弹道表,但在服役后,其架构上的缺陷逐渐成为提升应用效率的最大障碍。
1.1.1 ENIAC的编程效率问题
ENIAC的程序并非存储在内存中,而是通过物理插接和设置开关来实现。每次更换计算任务,操作人员都需要重新插拔成百上千根导线,调整数十个开关旋钮。这个过程通常耗时数小时甚至数天,远长于实际计算的时间。这种“外部编程”模式使得ENIAC在解决复杂任务时效率极低,无法灵活适应多种计算需求。
1.1.2 对通用、可编程计算机的需求
随着二战后期及战后初期科学计算任务的多样化(如核物理模拟、气象预测、空气动力学计算),军方和学界迫切需要一种可以快速切换程序、且能处理不同逻辑序列的计算机器。理想中的下一台机器应该具备“内部存储程序”的能力——程序数据像普通数据一样存入机器,通过简单的加载即可切换任务,从而摆脱插线板的束缚,真正实现通用计算。
1.2 关键人物与团队
EDVAC的研制继承了ENIAC项目组的核心人马,并在设计理论上吸纳了顶尖数学家的智慧。
1.2.1 约翰·冯·诺依曼的贡献
1944年夏,数学家约翰·冯·诺依曼以顾问身份加入穆尔学院团队。他敏锐地将存储程序概念提炼为一份著名的《关于EDVAC的报告草案》(First Draft of a Report on the EDVAC)。这份报告清晰阐述了将指令与数据共存于同一内存、通过中央处理单元依次执行的逻辑架构。尽管报告中大量吸收了埃克特和莫奇利的工程设想,但冯·诺依曼以其严谨的逻辑表述和数学背景,成功将存储程序思想定型为日后教科书中的“冯·诺依曼架构”。
1.2.2 其他主要设计者(如J. Presper Eckert、John Mauchly)
J. Presper Eckert与John Mauchly是ENIAC的主要发明人,亦是EDVAC工程的实际建造者。Eckert主导了延迟线存储器的工程实现,并提出了二进制体系的大胆构想;Mauchly则负责系统逻辑设计和整体架构规划。两人在项目后期与冯·诺依曼在理念及专利归属上产生分歧,但无可争议的是,正是他们的工程实践将纸面理论变成了可运行的硬件。
1.3 研发时间线与延迟交付
EDVAC的研制过程远比预期漫长,最终交付时间晚于许多后起之秀。
1.3.1 设计启动(1944年)
1944年8月,在ENIAC尚未完全完工时,美国陆军军械部即批准EDVAC的立项。设计工作与ENIAC的调试并行推进。
1.3.2 与ENIAC并行开发
1945年至1947年间,团队一边维护ENIAC运行,一边着手EDVAC的设计细化。由于冯·诺依曼报告在1945年公开发布,导致大量技术细节泄露,后续计算机项目(如英国的SSEM、美国的IAS机)纷纷起步,而EDVAC却因团队内部纠纷和经费问题,建造进度严重滞后。
1.3.3 最终完成(1951年)
经过多次设计修改和人事变动,EDVAC于1951年才正式向阿伯丁试验场交付。此时,UNIVAC I等商用机已抢先问世,EDVAC虽作为先行者立项,却遗憾地失去了“第一台实用存储程序计算机”的头衔。
2 体系结构与设计特色
2.1 存储程序概念(冯·诺依曼架构)
EDVAC最核心的设计理念是将程序指令与数据以同一形式(均为二进制的电信号)共存于同一个存储器中。
2.1.1 指令与数据同存于内存
这种设计使得在计算过程中,机器可以修改自身指令,或根据中间结果选择不同的指令序列。从硬件角度看,存储单元不再区分“这是程序”还是“这是数字”,一切以地址为索引,由控制单元按需读取。
2.1.2 串行执行顺序
EDVAC采用典型的冯·诺依曼“串行”执行模式:从内存取一条指令→译码→取操作数→执行→写回结果→移动至下一条指令地址。这种逐条处理的模式虽然速度有限,却极大简化了控制逻辑,成为此后数十年通用计算机的基本范式。
2.2 二进制体系
EDVAC彻底放弃了ENIAC的十进制,转而采用二进制表示所有数据与指令。
2.2.1 放弃十进制的原因
ENIAC使用十进制环型计数器作为核心存储单元,每个十进制位需要10个电子管维持状态,硬件开销极大。二进制只需要两个状态(0和1),可以大幅降低电子管数量。同时,布尔代数(逻辑运算)天然与二进制契合,便于实现算术与逻辑功能。
2.2.2 二进制带来的资源节省
采用二进制后,EDVAC的整体电子管数量仅为ENIAC的三分之一左右,而理论计算能力并未因进制转换而降低。这一设计为后续计算机的器件小型化与功耗控制提供了方向。
2.3 存储器系统
2.3.1 水银延迟线存储器
EDVAC的主存储器采用水银延迟线技术。
2.3.1.1 工作原理与容量
水银延迟线利用声波在水银中传播的速度远慢于电信号这一特性:电脉冲驱动石英晶体产生超声波,声波穿过水银柱,到达另一端被转换为电信号。通过循环路线,数据不断“流动”在延迟线中。一根标准水银管可存储约1024比特(1千比特),系统通常配备11至16根延迟线,总容量约16—20千比特。
2.3.1.2 延迟与刷新机制
由于声波传播的延迟,数据读取需要等待特定的“时间窗口”,存取时间为几十到几百微秒。为了维持存储内容,系统需要按固定周期刷新数据(重新写入延迟线末端),否则信息会在几毫秒内衰减消失。这相当于一台必须持续“运转”的存储器,一旦电源中断,所有数据立即丢失。
2.3.2 磁鼓存储器的尝试
在研发后期,团队曾尝试引入磁鼓(磁记录旋转圆筒)作为辅助存储器。磁鼓的存取速度略慢于延迟线(毫秒级),但存储容量更大(可达到数万比特),并且掉电后数据不会消失。然而由于技术过渡期项目资金紧张,磁鼓系统最终只在设计文档中预留了接口,并未在EDVAC正式型号中装备。
2.4 中央处理器结构
2.4.1 算术逻辑单元(ALU)
EDVAC的算术逻辑单元支持加、减、乘法、移位、逻辑与/或等基础运算。与ENIAC不同,其ALU完全基于二进制电路,采用并行进位逻辑以加速加法操作。乘法通过重复加法实现,耗时大约与操作数位数成比例。
2.4.2 控制单元与指令集
控制单元接收来自内存的指令字,并依次解码。指令集规模相对精简:包括取数、存数、算术运算、条件跳转、无条件跳转等约20条基本指令。每条指令固定为44位长度,其中包含操作码(6位)和地址字段(若干个10—12位地址)。条件跳转机制允许程序根据运算结果的符号或零标志执行分支,从而支撑复杂的算法逻辑。
3 技术参数与运行
3.1 硬件组成
3.1.1 电子管数量与功耗
EDVAC共使用约6000只真空电子管,以及约12000个晶体二极管。整机功耗约为56千瓦,远低于ENIAC的150千瓦。尽管如此,56千瓦的发热量仍足以使机房温度大幅升高。
3.1.2 占地面积与散热
EDVAC主机占地面积约45平方米(含存储柜、电源柜和控制台),高度约2.5米。散热系统采用大型排风扇和管道送风,机房需配备专用空调以维持电子管工作环境的温度稳定。
3.2 性能指标
3.2.1 时钟频率与运算速度
EDVAC的主时钟频率约为1—1.5兆赫。加法运算耗时约0.864毫秒,乘法运算耗时约2.9毫秒,平均每秒可执行约1000次加法(已考虑存取延迟)。这一速度在1951年属于中上水平。
3.2.2 存储容量与存取时间
主存(水银延迟线)容量约16—20千比特(相当于2—2.5千字节)。平均存取时间约0.5—1毫秒(取决于数据在延迟线中的位置),最长等待时间可达2毫秒。由于延迟线是串行存取设备,无法随机访问,同一延迟线内的两个相邻地址可能相差若干毫秒的等待时间。
3.3 编程与操作
3.3.1 机器码与指令格式
程序员直接使用44位二进制指令:例如“00…”开头表示加法,“01…”开头表示乘法。每条指令中包含两个操作数地址和一个结果地址。编程工作高度依赖程序员手动列出二进制码表,再通过纸带穿孔或开关面板输入。
3.3.2 输入输出设备(纸带、卡片等)
EDVAC的输入设备包括穿孔纸带阅读器和电传打字机。输出则依靠卡片打孔机或高速打印机。纸带速度为每秒约2000比特。在程序运行前,操作员需将二进制代码敲入纸带,再用阅读器一次装入延迟线存储器。
3.4 可靠性表现
3.4.1 平均无故障时间(MTBF)
由于电子管老化、焊点接触不良和延迟线液面波动,EDVAC的早期平均无故障时间(MTBF)仅为数小时。经过工程优化后,逐步提升至24小时左右,但在高负荷运算中仍频繁出现奇偶校验错误。
3.4.2 常见故障与维护策略
常见故障包括:电子管灯丝烧断、延迟线水银柱内气泡形成导致信号畸变、直流电源稳压器漂移。维护人员采取“双人巡检”策略——每四小时更换一批预热的备用模块。机房内长期备有数百只备用电子管和补充用的纯水银。此外,机器运行前需要进行长达一小时的预热稳定,以确保延迟线内液面温度均衡。
4 应用与后续发展
4.1 主要用途
4.1.1 科学计算与弹道计算
EDVAC投入服役后主要于阿伯丁试验场承担火炮弹道表的计算工作,同时参与了早期核裂变过程的数值模拟。其存储程序特性使批量任务切换更为快捷。
4.1.2 数值分析研究
EDVAC被用于验证新的数值算法(如线性方程组求解、数值积分)。由于二进制的便利性,它一度是进行算法可行性测试的平台,为后续计算机软件的诞生提供了实验土壤。
4.2 与同时代计算机的对比
4.2.1 EDVAC vs. ENIAC
| 特征 | EDVAC | ENIAC | |
|---|---|---|---|
| 数制 | 二进制 | 十进制 | |
| 程序存储 | 内部延迟线内存 | 外部插线板 | |
| 电子管数 | ~6000 | ~17000 | |
| 功耗 | 56千瓦 | 150千瓦 | |
| 编程效率 | 高(可重复加载) | 极低(需物理更改) |
4.2.2 EDVAC vs. UNIVAC I
UNIVAC I(1951年)是首款量产计算机,采用相同的存储程序原理,但使用了更成熟的水银延迟线(每根容量提升)。UNIVAC I的时钟频率稍有提升(2.25兆赫),且配备了磁带作为外部存储。EDVAC在工程独创性上领先,但作为单一原型机,商业影响远不及UNIVAC。
4.3 对计算机设计的遗产
4.3.1 存储程序思想的普及
EDVAC的设计(尤其是冯·诺依曼报告)成为全世界计算机课程的必修内容。存储程序这一概念彻底终结了“每换问题就插拔一次导线”的时代,奠定了软件的独立地位。
4.3.2 二进制逻辑的标准化
EDVAC的二进制选择在1950年代被主流计算机学界接受为事实标准。从IBM 700/7000系列到早期DEC机,二进制成为计算机内禀语言,十进制计算机仅保留在分币计算器等特殊领域。
4.3.3 对后续机器(如IAS机器)的影响
1945—1947年间,根据冯·诺依曼报告的精神,普林斯顿高等研究院启动了IAS机器项目。IAS机作为EDVAC架构的直接迭代品,使用了更快的威廉姆斯管存储器(静电存储)和更大的内存,为IBM 701的诞生提供了参考。EDVAC的“单总线、中央控制”特征亦被许多大学实验室的原型机忠实践行。
5 轶事与争议
5.1 专利与法律纠纷
5.1.1 冯·诺依曼报告的公开发表争议
1945年冯·诺依曼将《关于EDVAC的报告草案》以穆尔学院内部报告形式散发,但该报告包含大量Eckert和Mauchly未申报的专利思想。Eckert与Mauchly认为这份报告实际上是两人近两年未发表的工作总结,冯·诺依曼擅自将其公开,导致EDVAC关键技术的专利优先权旁落。这一争议促使三人最终分道扬镳,Eckert和Mauchly随后离开穆尔学院创立自己的公司(Eckert-Mauchly Computer Corporation)。
5.1.2 Eckert-Mauchly与IBM的诉讼
Eckert-Mauchly公司将“水银延迟线存储系统”“二进制并行加法器”等设计申请专利。1950年代,IBM在研制701等机器时被诉侵权。双方经过多年庭外调解,最终IBM以数十万美元的授权费达成和解。此次纠纷间接使计算机专利体系受到重视,也部分阻碍了早期技术的快速扩散。
5.2 “第一台存储程序计算机”之争
5.2.1 与SSEM(曼彻斯特小规模实验机)的先后
1948年6月,英国曼彻斯特大学的SSEM(“Baby”)成功运行了世界第一段完全存储于内存的程序(计算阶乘)。虽然EDVAC设计更早,但其建成时间却晚了约三年。因此,在技术史语境中,SSEM通常被冠以“第一台实用存储程序电子计算机”,EDVAC则被视为“第一台按存储程序原理正式设计的机器”。
5.2.2 历史学界的评价
大多数计算机史学家认为EDVAC的设计意义远大于其运行意义。冯·诺依曼报告对存储程序概念的标准化贡献无可替代,但实物项目的延迟导致EDVAC未能留下足量的运行记录和商业转化案例。这种“设计即胜利,实物即附录”的独特地位使EDVAC在教科书中始终占据一章,但在博物馆中仅留少数展板。
5.3 冷门趣闻
5.3.1 工程代号“π”的由来
在项目早期,团队成员曾戏称EDVAC为“Project π”,原因是其圆形水银延迟管俯视状如字母π的上半部分,同时“π”作为无理数,也暗示了项目无尽的调试工作。后来这一代号未进入正式文档,但在部分内部备忘录中仍有迹可循。
5.3.2 延迟线里的“数据噪音”轶事
因水银柱内偶有微小气泡或温度分层,延迟线在循环过程中会意外产生“幽灵信号”——仿佛机器凭空多出了几条不属于程序的指令。操作员发现,每当数据通过存在气泡的延迟段,奇偶校验就会频繁报警,有时甚至会导致程序毫无征兆地跳转到随机地址。后期维护中,团队专门训练了两名技师,通过高频敲击延迟管外壳“震动排气”,这一方法居然有效减少了一半的误码。此事成为早期计算机维护者津津乐道的“玄学”谈资。