首先要解决的是记忆
1948年6月21日,曼彻斯特大学的小规模实验机(Small-Scale Experimental Machine,SSEM)成功运行了存放在电子存储器中的程序,后来广为人知的名称是“Baby”。弗雷德里克·威廉姆斯、汤姆·基尔本和杰夫·图蒂尔的团队并非首先追求为用户完成大型计算,而是要验证一种高速存储装置能否在真实计算过程中可靠工作。
电子线路已经能够快速运算,但若数据和操作指令不能以相应速度取得,整台机器仍会被输入和控制拖慢。团队利用雷达研究积累的阴极射线管技术,尝试把屏幕上的电荷状态变成可读写的二进制记忆。基尔本1947年的进展报告描述了原理与设想;1948年的整机运行则把单独器件的演示推进为程序控制的连续试验。
屏幕上的电荷不是普通图像
威廉姆斯—基尔本管用电子束在阴极射线管屏幕上建立不同电荷分布,以表示二进制状态。读出所依据的是电气响应,而不是操作者用眼睛辨认一个显示字符。电荷会随时间衰减,因此控制线路必须反复读出并再生原状态,使短暂的物理痕迹成为能够持续使用的存储信息。
这种装置允许电子束选择存储位置,快速存取指定字。Baby主存容量为三十二个三十二位字,总计一千零二十四位;程序和数据都要挤在这片很小的空间内。专用显示管帮助工作人员观察存储内容,但屏幕可见的亮点只是调试入口。工程上的关键是,读写、刷新和运算之间的配合不能破坏其他位置已经保存的信息。
取指、运算与改变顺序
Baby以二进制串行方式处理信息,利用累加器保存运算中的数值,并由控制部分记录下一条指令的位置。程序员把指令编码和初始数据通过开关送入存储器;机器运行时取出指令,解释操作及地址,再进行减法、存储或改变控制顺序等动作。运算结果还可影响下一步选择,使重复和条件判断能够在机器内部完成。
这一结构的重要变化在于,更换任务可以通过改变存储内容实现,而不必为每一种计算重新连接整套控制线路。指令与普通数值都由二进制表示,机器靠执行过程决定某个字的用途。不过,存储程序概念此前已有讨论与设计;Baby的贡献在于实际电子装置把这一方式连续运行起来,不能把思想的所有来源都压缩为这一天或一个人的发明。
参考:[2]
找因数是一次耐久检验
基尔本编写的首次成功程序寻找一个整数的最大真因数,用重复减法试除候选数。选择繁复的算法并不意味着不知道更快的数学方法:重复执行使存储器经历大量读取、改写与条件转移,适合暴露偶发故障。Lavington的计算机史研究记载,这次运行约为五十二分钟,执行了数百万次操作,最终得到正确结果。
威廉姆斯与基尔本在1948年9月25日《自然》刊出的简短报告中,明确称机器规模很小、以实验为主。它展示可改变程序的原则,尚未成为日常科学计算服务。1951年三人共同发表的详细论文再解释线路与工作方式;论文发表时间比试运行晚,不能把1951年误当成Baby首次工作的年份。
从实验机到可使用的系统
Baby成功后,曼彻斯特团队继续扩大机器。1949年的曼彻斯特Mark 1增加存储能力,结合磁鼓并发展变址等机制,输入输出和程序使用条件也逐步完善。费兰蒂公司随后把大学研究转为工程化产品,1951年交付费兰蒂Mark 1。试验原理、建立大学计算设施和制造可供应的机器,是相互关联但不能混为一谈的步骤。
其他团队也在探索存储程序计算机:英国剑桥的电子延迟存储自动计算器等系统采用不同存储技术,水银延迟线与阴极射线管各有工程取舍。Baby不代表所有后来计算机都沿用它的器件;其价值在于证明,电子存储器可以同时保存数据与可修改的程序,并在反复执行中保持一致。这个可检验的整机结果,使存储器不再只是附件,而成为计算组织方式的核心。