1 引言与历史背景
曼彻斯特 Mark I(Manchester Mark I)是一台早期电子存储程序计算机,由英国曼彻斯特大学于1948年至1949年间研制。它源于更早的“小规模实验机”(SSEM,昵称“Baby”),后者在1948年6月成功运行了世界上第一个存储程序。曼彻斯特 Mark I 采用威廉姆斯阴极射线管作为主存储器,是存储程序概念的里程碑式实现,并直接催生了商用计算机 Ferranti Mark 1。
1.1 项目起源
第二次世界大战结束后,英国政府与学术界对高速计算的需求日益迫切。曼彻斯特大学电机工程系在弗雷德里克·威廉姆斯的领导下,利用战时的雷达阴极射线管技术,探索将其用作数字存储器的可能性。1947年,威廉姆斯和汤姆·基尔伯恩开始设计一台能真正实现“存储程序”概念的小型实验机——即后来的“Baby”。项目得到了英国电气与工业研究协会(DSIR)的部分资助,旨在验证威廉姆斯管存储系统的可靠性,并为更大规模的计算机奠定基础。
1.2 关键人物
1.2.1 弗雷德里克·威廉姆斯
弗雷德里克·威廉姆斯(Frederic C. Williams,1911–1977)是曼彻斯特大学电机工程系教授。他在雷达和阴极射线管存储技术方面拥有深厚造诣,发明了以自己名字命名的“威廉姆斯管”存储器。在曼彻斯特 Mark I 项目中,他负责整体架构设计及存储系统的研发,是项目的灵魂人物。
1.2.2 汤姆·基尔伯恩
汤姆·基尔伯恩(Tom Kilburn,1921–2004)是威廉姆斯的研究助理,实际负责计算机的逻辑设计和电路实现。他亲手编写了第一个存储程序(求最大因子),并主导了从小型实验机到曼彻斯特 Mark I 的升级工作。基尔伯恩后来成为曼彻斯特大学计算机科学系的奠基人之一。
1.2.3 其他贡献者
项目还包括多位技术人员和研究生:杰夫·图特尔(Geoff Tootill)协助电子电路调试;戴维·爱德华兹(David Edwards)参与了输入输出设备的设计;工程师约翰·霍普金斯(John Hopkins)负责电源与冷却系统。此外,费伦蒂公司(Ferranti Ltd.)的工程师团队在商业化阶段提供了制造支持。
1.3 同期计算机对比
1.3.1 ENIAC(非存储程序)
ENIAC(1945年完工)是世界上第一台通用电子数字计算机,但它并非存储程序计算机。程序通过插接线和开关配置,每次修改程序需要数小时甚至数天的物理重布线。曼彻斯特 Mark I 则实现了程序和数据同存于内存,只需加载新程序即可切换任务,灵活性和易用性远胜 ENIAC。
1.3.2 EDVAC(存储程序草案)
EDVAC(Electronic Discrete Variable Automatic Computer)在1945年由冯·诺依曼等人提出存储程序概念,但实际建成已到1951年。曼彻斯特 Mark I 抢先于1949年实现运行,成为第一个实际工作的存储程序计算机(Baby则为世界上第一个运行存储程序的机器)。两者均采用二进制和存储程序思想,但EDVAC使用水银延迟线存储,而Mark I使用威廉姆斯管。
2 技术架构
2.1 存储系统:威廉姆斯管
2.1.1 工作原理
威廉姆斯管是一种利用阴极射线管(CRT)屏幕上的静电荷分布来存储二进制位的存储器。每位的状态由一个小点上的电荷是否存在表示:有电荷代表“1”,无电荷代表“0”。电子束在屏幕上扫描时,通过检测二次电子发射来读取电荷,而写入则通过电子束轰击设定电荷。这种存储方式基于标准CRT,成本低、速度较快(约数微秒访问时间),但需要定期刷新以防止电荷泄漏。
2.1.2 容量与性能
曼彻斯特 Mark I 最初配备 2 个威廉姆斯管,每个管子可存储 32 行×40 列 = 1280 个点。每个点对应一个二进制位,因此总存储容量为 2560 位,即 80 个 32 位字。后来升级为 4 个管子,容量翻倍至 160 字。访问时间约 10 微秒,远快于当时的水银延迟线存储器(数百微秒),但容量较小。威廉姆斯管存储器需要定期(每毫秒)刷新,否则电荷会消散,导致数据丢失。
2.2 中央处理单元
2.2.1 数据表示(32位字长)
曼彻斯特 Mark I 采用 32 位字长,所有数据(包括指令、整数、地址)均以二进制补码形式表示。一个字可存放一条指令或一个整数,整数范围为 -2^31 到 2^31-1(但实际硬件仅支持约 20 位有效运算精度)。地址采用单地址格式,指令中的地址字段为 20 位,用于指定操作数在内存中的位置。
2.2.2 指令集
指令集包含约 20 条基本操作,分为算术、逻辑、数据传输和控制指令。典型指令包括加法(ADD)、减法(SUB)、取反(NEG)、与(AND)、或(OR)、移位(SHIFT)、从存储器加载(LOAD)、存储到存储器(STORE)、无条件跳转(JUMP)和条件跳转(SKIP if zero)。每条指令占一个 32 位字,其中 2 位用于操作码,20 位用于地址,其余位留作扩展或备用。操作码仅用 2 位(意味着最多 4 种操作类型),实际指令功能通过微操作序列实现,因此指令集较为有限且需要程序员手动编码。
2.2.3 算术逻辑单元
算术逻辑单元(ALU)基于真空管构建,采用并行加法器,可完成一个 32 位加法约需 1.2 微秒。乘法与除法未在硬件中直接实现,而是通过子程序(软件循环)完成,速度较慢。ALU 使用 12 个电子管寄存器(包括累加器、乘商寄存器等),所有运算均以二进制补码进行。
2.3 输入输出设备
输入设备为一台改进的 4 位电传打字机(Teleprinter)和一条五孔纸带阅读器,用于输入程序和数据。输出设备包括一台电传打字机(打印速度约每秒 7 个字符)和一个阴极射线管显示器,后者可显示内存内容的图形,便于调试。此外,设有一个手动开关面板,允许操作员单步执行指令或直接修改内存内容。
2.4 程序存储与执行流程
程序以打孔纸带形式加载,通过纸带阅读器将指令和常数送入威廉姆斯管存储器。加载完成后,操作员按下“开始”按钮,中央处理单元从内存地址 0 取第一条指令执行。指令执行采用取指、译码、执行、写回四步流水(本质上为顺序)。由于是存储程序机,程序在执行过程中可修改自身指令(自修改代码),这既是早期计算机的灵活性,也带来了调试难度。出错时,系统会停止并显示当前累加器值,操作员可通过开关或 CRT 显示器诊断问题。
3 开发与演进
3.1 小规模实验机(SSEM,“Baby”)
3.1.1 首次程序运行(1948年6月)
SSEM(Small-Scale Experimental Machine),昵称“Baby”,由一台威廉姆斯管(32×32位,共 1024 位,即 32 字内存)和简易运算电路构成。1948年6月21日,基尔伯恩编写了求数字 2^18 的最大因子(程序仅17条指令),通过纸带加载后成功运行,耗时约 52 分钟计算出结果(131072 的因子)。这是人类历史上第一次让存储程序计算机自主执行程序,标志着现代计算机的诞生。
3.1.2 技术局限
Baby 只有 32 个字的威廉姆斯管存储器,无法容纳复杂程序。指令集仅包含 7 条操作(如加法、减法、取反、移位、存储、加载、跳转)。输入输出完全依赖手动开关和信号灯,缺乏纸带阅读器和打印机。尽管能证明存储程序概念可行,但实用性极低。
3.2 曼彻斯特 Mark I 原型
3.2.1 升级内容
在 Baby 成功之后,曼彻斯特大学启动了 Mark I 项目:新增 2-4 个威廉姆斯管(容量提升至 80-160 字),增加纸带阅读器和电传打字机,扩充指令集(约 20 条),并加入乘商寄存器和更完善的运算逻辑。机柜改为多个标准框架,使用约 1300 个真空管和 200 个二极管,功耗约 4 千瓦。原型机于 1949 年 4 月完成调试。
3.2.2 性能提升
相比 Baby,Mark I 的内存容量翻了 2.5 至 5 倍,指令执行速度提高约 30%(加法时间从 1.5 微秒降至 1.2 微秒)。纸带输入速度约每秒 10 个字符,电传打印机输出速度约每秒 7 个字符。系统能稳定运行数小时,可执行数千条指令的程序,如素数表生成、数值积分等科学计算任务。
3.3 商业化版本:Ferranti Mark 1
3.3.1 设计与制造
英国费伦蒂公司(Ferranti Ltd.)在 1949 年与曼彻斯特大学签订合同,基于 Mark I 原型设计商用版本。费伦蒂工程师简化了机柜布局,改用更可靠的电源和冷却系统,并将内存升级至 8 个威廉姆斯管(共 256 字)。1951 年 2 月,第一台 Ferranti Mark 1 交付曼彻斯特大学,随后另有若干台交付英国其他研究机构和政府部门。
3.3.2 交付与使用
第一台 Ferranti Mark 1 安装于曼彻斯特大学,用于晶格常数计算、弹道学和原子物理研究。第二台交付给英国皇家军械研发公司(Armament Research Establishment),第三台交付给多伦多大学(成为北美第一台存储程序计算机)。运行费用高昂(约每小时 50 英镑),需 24 小时维护团队。机器一直使用到 1958 年才退役。
4 历史意义与遗产
4.1 对计算机科学的影响
曼彻斯特 Mark I 及其前身 Baby 首次从实践上证明了冯·诺依曼体系结构的可行性。它促使计算机界普遍接受了“将程序存储于内存”的理念,直接影响了 IBM 701、UNIVAC I 等早期商用机器的设计。其威廉姆斯管存储技术也为后续阴极射线管存储器的发展提供了经验。
4.2 存储程序概念的实证
Baby 在 1948 年 6 月的成功运行,使存储程序概念从纸面草案变为可工作的实体。这否定了当时部分工程师认为“存储程序计算机不可能稳定工作”的质疑。曼彻斯特 Mark I 进一步展示了存储程序机处理实际科学问题的能力,使这一概念获得了广泛认可。
4.3 对后续英国计算机产业的影响
曼彻斯特大学与费伦蒂公司的合作为英国计算机工业奠定了基础。Ferranti Mark 1 的后续型号 Ferranti Mark 1*、Ferranti Pegasus、Ferranti Mercury 等均继承了其架构思想。曼彻斯特大学计算机系也因此成为英国计算机科学教育的重要摇篮,培养了众多早期程序员和工程师。
4.4 现存纪念与复刻
原机 Baby 和曼彻斯特 Mark I 曾被拆解,未完整保存。但在 1998 年,曼彻斯特大学为纪念 Baby 运行 50 周年,由计算机科学系团队根据原始图纸和照片复刻了一台可运行的 Baby 复制品,现陈列于曼彻斯特科学与工业博物馆(MOSI)。该复制品常年演示,参观者能目睹真空管闪烁、纸带转动、电传打印机咔嗒作响的“古老”计算过程。Ferranti Mark 1 的电路图纸和部分元件保存在英国国家档案馆。