The Wayback Machine - https://web.archive.org/web/20221028230232/https://baike.sogou.com/kexue/d10144.htm

曼彻斯特宝贝

编辑
位于曼彻斯特的卡斯尔菲尔德科学和工业博物馆的曼彻斯特婴儿复制品

曼彻斯特婴儿”,也被称为小型实验机(SSEM)[1]是世界上第一台电子存储程序计算机。它是由弗雷德里克·C·威廉姆斯、汤姆·基尔本和杰夫·图特尔在英国曼彻斯特维多利亚大学建造的,并于1948年6月21日运行了第一个程序。[2]

这台机器原本不是一台实用的计算机,而是被设计成威廉姆斯管的试验台,这是第一台真正随机存取的计算机存储器。尽管按当时的标准来看,它被认为是“小而原始的”,但它仍然是第一台包含现代电子计算机所必需的所有元素的工作机器。[3]当“婴儿”展示了其设计的可行性后,曼彻斯特大学就启动了一个项目,将它开发成一台更有用的计算机——曼彻斯特马克1号。“马克1号”又很快成为法拉利费朗蒂马克1号的原型,这是世界上第一台商用通用计算机。[4][5]

“婴儿机”有32位字长和32个字节长度(1千位)的内存。因为它被设计成可能是最简单的存储程序计算机,所以在硬件中实现算术运算只有减法和否定;其他算术运算用软件实现。为机器编写的三个程序中的第一个程序计算出了218的最大真因子最大公因数,这是一个需要很长时间执行的算法——因此证明了计算机的可靠性——通过测试从218向下递减的每个整数,因为除法是通过对除数的重复减法来实现的。该程序由17条指令组成,该计算机在完成350万次操作后(有效CPU速度为1.1千指令/秒),最终得到正确答案131072,耗时52分钟。

1 背景编辑

图灵机的艺术表现

19世纪30年,查尔斯·巴贝奇的解析机分析引擎是第一个程序控制计算机。一个世纪后的1936年,数学家艾伦·图灵发表了他对后来被称为图灵机的描述,这是一个旨在探索机械计算极限的理论概念。图灵不是想象一台物理机器,而是一个他称之为“计算机”的人,这个人按照磁带提供的指令行动,当磁带在磁头下移动时,符号可以在磁带上按顺序读写。图灵证明了如果一个算法可以被编写来解决一个数学问题,那么图灵机就可以执行那个算法。[6]

康拉德·楚泽的Z3是世界上第一台使用二进制数字算术逻辑工作的可编程全自动计算机,但它缺少图灵机的条件分支。1941年5月12日,它在柏林成功地向德国航空实验室的科学家展示。[7]Z3将其程序存储在外部磁带上,但它是机电的利用了电磁继电器,而不是电子的机器组件。1943年的“巨像号(Colossus)”是第一台电子计算设备,但它不是通用机器。[8]

ENIAC (1946)是第一台同时具有电子和通用功能的机器。它是图灵完成图灵完备的,带有条件分支,并且可编程以解决广泛的问题,但是它的程序不是在内存中而是在跳线的开关状态下运行的,重新编程可能需要几天的时间。[3]图灵和祖斯研究了使用计算机内存保存程序及正在处理的数据想法。[9]数学家约翰·冯·诺依曼写了一篇广泛传播的论文,描述了几乎所有计算机仍然使用的计算机体系结构。[10]

冯·诺依曼体系结构的设计(1947)

冯·诺依曼计算机的构造取决于是否有合适的存储设备来存储程序。在第二次世界大战期间,致力于消除雷达信号杂波的研究人员开发了一种延迟线存储器,其第一个实际应用是由埃克特开发的水银延迟线。[11]雷达发射机发出短暂有规律的无线电能量脉冲,将信号反射并显示在阴极射线管屏幕上。由于操作者通常只对运动目标感兴趣,所以需要过滤掉任何来自静止物体分散注意力的干扰反射。滤波是通过将每个接收到的脉冲与前一个脉冲进行比较来实现的,如果两个脉冲相同则将其都剔除,留下一个只包含任何运动物体图像的信号。为了存储每一个接收到的脉冲,以便以后比较,它通过一条传输线从而将其延迟正好两次传输脉冲的间隔时间精确的控制发射脉冲之间的延迟时间。[12]

图灵于1945年10月加入国家物理实验室(NPL),[13]那时供应部的科学家们已经得出结论,英国需要一个国家数学实验室来协调机器辅助计算。国家物理实验室成立了一个数学部门,1946年2月19日艾伦·图灵提交了一篇论文,概述了他设计的一台被称为自动计算引擎(ACE)的电子存储程序计算机。[14]这是第二次世界大战后几年内建立的几个项目之一,目的是建造一台存储程序计算机。大约与此同时,宾夕法尼亚大学摩尔电气工程学院正在开发EDVAC,剑桥大学数学实验室正在研究EDSAC。[15]

英国国家物理实验室不具备制造像ACE这样的机器的专业知识专家,所以他们联系了邮政总局多里斯·希尔研究实验室的汤米·弗劳尔斯(Tommy Flowers)。尽管他的团队确实为ACE建造了一些水银延迟线,但是世界上第一台可编程电子计算机“巨像号”的设计者弗劳尔斯被委托到其他地方,无法参与该项目。[14]电信研究机构(TRE) 和剑桥大学数学实验室的莫里斯·威尔克斯也被派到场进行援助。[14]

负责英国国家物理实验室的政府部门决定,在TRE代表其开展的所有工作中,应优先考虑ACE。[14]1946年11月22日,国家物理研究所的决定致使TRE物理研究所负责人在同样来自TRE的弗雷德里克·威廉姆斯阿·米特里的陪同下来访。[14]威廉姆斯领导了一个TRE开发小组,致力于雷达应用CRT存储,作为延迟线的替代方案。[16]威廉姆斯不能在原子能机构ACE工作,因为他已经接受了曼彻斯特大学的教授职位,他的大部分电路技术人员正在被调往原子能部。[14]TRE同意借调少量技术人员在威廉姆斯的指导下在大学工作,并支持另一个小组在TRE与乌特利合作。[14]

2 威廉姆斯——基尔伯恩管编辑

尽管如EDSAC这样的早期计算机成功地使用了水银延迟线存储器,[17]但这项技术有几个缺点:它很重,很贵,而且不允许随机存取数据。此外,因为数据是通过水银柱传播的声波序列形式存储的,所以必须非常小心地控制设备的温度,因为声音通过介质的速度随其温度而变化。威廉姆斯在贝尔实验室看到了一个实验,这项实验是用阴极射线管消除雷达地面回波信号,证明阴极射线管可以作为延迟线的替代物。在1946年12月加入曼彻斯特大学前不久,他在TRE工作时和汤姆·基尔本在标准阴极射线管(第一个随机存取数字存储设备)的基础上开发了一种被称为威廉姆斯管或威廉姆斯——基尔本管的电子存储器。[18]“婴儿机”的设计是为了证明该系统是一个实用的存储设备,通过测试它里面保存的数据可以根据所需的速度在计算机中进行读写。[19]

为了在二进制数字计算机中使用,电子管必须能够在其每个存储位置存储两种状态中的任何一种,对应于二进制数字(位)0和1。它利用阴极射线管屏幕上任何位置显示破折号或点所产生的正电荷或负电荷,这种现象被称为二次发射。一个破折号产生正电荷,一个点产生负电荷,两者都可以被屏幕前的检测板检测到;负电荷代表0,正电荷代表1。电荷大约在0.2秒内消散,但它可以从探测器采集的数据中自动刷新。[20]

“婴儿机”中使用的威廉姆斯管是基于商用的12英寸(300毫米)阴极射线管CV1131,而“马克一号”中使用的是一个更小的6英寸(150毫米)管CV1097。[21]

3 项目的起源编辑

第二次世界大战期间,马克斯·纽曼在布莱切利公园开发了用于破解密码的巨像计算机,之后他致力于开发一种结合艾伦·图灵的数学概念和约翰·冯·诺依曼所描述的存储程序概念计算机。1945年,他被任命为曼彻斯特大学的菲尔德纯数学教授;他带着巨像项目的同事杰克·古德和大卫·里斯去了曼彻斯特,在那里他们招募了威廉姆斯为一个已经获得了皇家学会的资助的计算机项目的“电路工”。[22]

"纽曼已经获得了大学的支持,获得了皇家学会的资助,并组建了一个拥有一流数学家和工程师的团队,现在他的计算机建造计划的所有要素都已就绪。纽曼采用了他在布莱切利庄园公园非常有效的方法,让手下的人专注于细节工作,而自己则专注于协调工作。"

——历史学家— 大卫•安德森 [22]

在被任命为曼彻斯特大学电气工程教授后,威廉姆斯借调了他的TRE同事汤姆·基尔本。到1947年秋天,他们将威廉姆斯管的存储容量从1位增加到2048位,排列成64×32位阵列,[23]并证明它能够将这些位存储4小时。[24]工程师杰夫·图特尔于1947年9月从TRE被借调加入该团队,并一直借调到1949年4月。[25]

"现在让我们在进一步讨论之前要清楚一个事实,当我们到达曼彻斯特大学时,汤姆•基尔本和我对计算机都一无所知……纽曼向我们解释了计算机如何工作的整个过程。"

——弗兰德里克•卡兰•威廉姆斯 [8]

基尔本很难回忆起对他的机器设计的影响:

"在那个时期,不知何故,我知道了什么是数字计算机….我也不知道是从哪里学到这些知识的。"

——汤姆•基尔本 [26]

杰克·科普兰解释说,基尔本的第一个(“婴儿机”问世前)无蓄能器(在杰克·古德的命名法中是分散式decentralized)设计是基于图灵的输入,但后来他转而使用冯·诺依曼倡导的那种基于蓄能器的(集中管理式)机器,这是杰克·古德和马克斯·纽曼写给他并教他的。[26]

“婴儿机”的7-op指令集几乎近似于杰克·古德在1947年提出的12-op指令集的一个子集,这是第一个已知的文件中使用术语“婴儿”来描述这台机器。古德的方法不包括“暂停”指令,他提出的条件跳转指令比“婴儿”实现的指令更复杂。[26]

4 开发和设计编辑

显示四个阴极射线管(以绿色显示)如何部署的架构示意图

虽然纽曼在“婴儿机”或随后的“曼彻斯特”计算机的开发中没有扮演任何工程角色,但他总体上支持并热衷于该项目,并为其建设安排了战争剩余物资的采购,包括GPO金属架[27]和来自布莱切利的“两个完整‘巨像’的材料”[28]

到1948年6月,“婴儿机”已经完成并开始工作。[23]它长17英尺(5.2米),高7英尺4英寸(2.24米),重近1吨(1.0吨)。这台机器有550个阀门(真空管)——300个二极管和250个五极管——功耗为3500瓦。[29]算术单元是用EF50五极阀制造的,这种五级阀在战时被广泛使用。[24]“婴儿机”用第一个威廉姆斯管提供32×32位字的随机存取存储器(RAM),第二个管用来保存32位累加器,计算的中间结果可以暂时存储在其中,第三个管保存当前程序指令及其在存储器中的地址。第四个采用阴极射线管用作输出设备而没有用另外三个的存储电子器件,能够显示任何选定存储管的位模式。[30]

输出阴极射线管就在输入设备的正上方,两侧是监视器和控制电子设备。

内存的每个32位字可以包含程序指令或数据。在程序指令中,0–12位代表要使用的操作数的内存地址,13–15位指定要执行的操作,例如在内存中存储一个数字;剩余的16位未被使用。[30]婴儿机的0操作数指令集或单操作数体系结构意味着任何操作的第二个操作数都是隐式的:累加器或程序计数器(指令地址);程序指令只指定存储器中数据的地址。

计算机内存中的一个字可以在360微秒内被读取、写入或刷新。一条指令的执行时间是从内存中访问一个字的四倍,因此指令执行速度约为每秒700次。主存储区不断刷新,这个过程需要20毫秒才能完成,这是因为婴儿机的32个字都必须依次读取和刷新。[23]

“婴儿机”用二进制补码表示负数,[31]大多数电脑仍然如此。在该表示中,最高有效位的值表示数字的符号;正数在那个位置有一个零,负数有一个一。因此,每个32位字可以包含的数字范围是−231到+231 − 1 (十进制:2147483648到+2147483647)。

5 程序设计编辑

“婴儿机”的指令格式有一个三位操作码字段,最多允许八(23)条不同的指令。与现代惯例相反,机器的存储被描述为左边的最低有效数字;因此,1用三位表示为“100”,而不是更传统的“001”。[31]

婴儿指令集 [32]
二进制码 原始符号 现代助记符 操作
000 S, Cl JMP S 跳转到从指定存储器地址获得的地址S处的指令(绝对无条件跳转)
100 Add S, Cl JRP S 跳转到程序计数器的指令加上(+)从指定存储器地址获得的相对值(相对无条件跳转)
010 -S, C LDN S 从指定的内存地址取值,求反,并将其加载到累加器中
110 c, S STO S 将累加器中的数字存储到指定的内存地址
001 or
101
SUB S SUB S 从累加器中的值减去指定存储器地址的数字,并将结果存储在累加器中
011 Test CMP 如果累加器包含负值,跳过下一条指令
111 Stop STP 停止

这种尴尬的负运算是由于“婴儿机”缺乏除了减法和否定外的其它运算的硬件。在开始测试之前,没有必要构建加法器,因为加法可以通过减法轻松实现,即x+y可以计算为-(-x-y)。因此,将两个数字加在一起,即X和Y,需要四条指令:[32]

LDN X //将负X加载到累加器中
SUB Y // 从累加器的值中减去Y
STO S // 将结果存储在 S
LDN S //将S处的负值加载到累加器中

程序以二进制形式输入,依次遍历内存中的每个字,并使用一组32个按钮和开关(称为输入设备)将每个字的每个位的值设置为0或1。“婴儿机”没有纸带阅读机和打孔机。[33][34][35]

5.1 首批项目程序

输出阴极射线管

人们为这台计算机编写了三个程序。第一个由17条指令组成,是基尔本编写的,目前可以确定的是第一次运行于1948年6月21日。[36]它旨在通过尝试从218-1向下递减的每个整数来找到最高的固有因子218的最大因数(262144)。除法是通过除数的重复减法来实现的。“婴儿机”花了350万次操作并且在52分钟后得出答案(131072)。该程序除了17个指令外,还使用了8个字的工作存储器, 程序大小为25个字。[37]

接下来的一个月,杰夫·图特尔(Geoff Tootill)编写了该程序的修订版,1948年9月被任命为曼彻斯特大学数学系教授读者的艾伦·图灵(Alan Turing)在7月中旬提交了第三个程序,进行长除法。图灵当时被任命为曼彻斯特大学计算机实验室的名义副主任,[36]虽然该实验室直到1951年才真正建成。[38]

6 后来的发展编辑

曼彻斯特大学纪念威廉姆斯和基尔本的牌匾

威廉姆斯和基尔本在1948年9月出版的《自然》杂志的一封信中报道了这台“婴儿机”。这台机器的成功演示很快促成了一台更实用的计算机“曼彻斯特马克1号”的诞生,这项工作始于1948年8月。[39]“曼彻斯特马克1号”的第一个版本于1949年4月投入使用,[38]后来又直接促成了世界上第一台商用通用计算机“费朗蒂马克1号”的开发。[4]

1998年,一个“婴儿机”的工作复制品被建于庆祝其第一个项目程序运行50周年,现在正在曼彻斯特科学与工业博物馆展出。博物馆定期举行机器运行演示。[40]2008年,在曼彻斯特大学发现了整台机器的原始全景照片。这张照片是1948年12月15日由一名叫亚历克·罗宾逊的研究生拍摄的,并于1949年6月在《伦敦新闻画报》上转载。[41][42]

参考文献

  • [1]

    ^Burton, Christopher P. (2005). "Replicating the Manchester Baby: Motives, methods, and messages from the past". IEEE Annals of the History of Computing. 27 (3): 44–60. doi:10.1109/MAHC.2005.42..

  • [2]

    ^Enticknap, Nicholas (Summer 1998), "Computing's Golden Jubilee", Resurrection, The Computer Conservation Society (20), ISSN 0958-7403, archived from the original on 9 January 2012, retrieved 19 April 2008.

  • [3]

    ^"Early Electronic Computers (1946–51)", University of Manchester, archived from the original on 5 January 2009, retrieved 16 November 2008.

  • [4]

    ^Napper, R. B. E., Introduction to the Mark 1, The University of Manchester, archived from the original on 26 October 2008, retrieved 4 November 2008.

  • [5]

    ^Briggs, Helen (2018-06-21). "The 'Baby' that ushered in modern computer age". BBC. Retrieved 2018-06-21..

  • [6]

    ^Turing, A. M. (1936), "On Computable Numbers, with an Application to the Entscheidungsproblem" (PDF), Proceedings of the London Mathematical Society, 2 (published 1936–37), 42, pp. 230–265, doi:10.1112/plms/s2-42.1.230, retrieved 18 September 2010.

  • [7]

    ^"Rechenhilfe für Ingenieure Konrad Zuses Idee vom ersten Computer der Welt wurde an der Technischen Hochschule geboren" (in German), Technical University of Berlin, archived from the original on 13 February 2009CS1 maint: Unrecognized language (link).

  • [8]

    ^Copeland (2010), pp. 91–100none.

  • [9]

    ^Zuse, Horst, "Konrad Zuse and the Stored Program Computer", EPE Online, Wimborne Publishing, archived from the original on 10 December 2007, retrieved 16 November 2008.

  • [10]

    ^Lavington (1998), p. 7none.

  • [11]

    ^Lavington (1998), p. 1none.

  • [12]

    ^Brown (1999), p. 429none.

  • [13]

    ^Lavington (1998), p. 9none.

  • [14]

    ^Lavington (1980),chapter 5none.

  • [15]

    ^Lavington (1998), pp. 8–9none.

  • [16]

    ^Lavington (1998), p. 5none.

  • [17]

    ^Wilkes, M. V.; Renwick, W. (1950), "The EDSAC (Electronic delay storage automatic calculator)", Mathematics of Computation, 4 (30): 61–65, doi:10.1090/s0025-5718-1950-0037589-7, retrieved 21 June 2015.

  • [18]

    ^"Early computers at Manchester University", Resurrection, The Computer Conservation Society, 1 (4), Summer 1992, ISSN 0958-7403, archived from the original on 28 August 2017, retrieved 19 April 2008.

  • [19]

    ^Lavington (1998), pp. 13, 24none.

  • [20]

    ^Lavington (1998), p. 12none.

  • [21]

    ^Lavington (1998), pp. 8, 12none.

  • [22]

    ^Anderson, David (2007). "Max Newman: Topologist, codebreaker, and pioneer of computing". IEEE Annals of the History of Computing. 29 (3): 76–81. doi:10.1109/MAHC.2007.4338447..

  • [23]

    ^Napper (2000), p. 366none.

  • [24]

    ^Lavington (1998), p. 13none.

  • [25]

    ^Lavington (1998), p. 16none.

  • [26]

    ^Copeland 2011.

  • [27]

    ^Lavington (1998), pp. 6–7none.

  • [28]

    ^Anderson (2010), p. 61none.

  • [29]

    ^"The "Baby": The World's First Stored-Program Computer" (PDF), Manchester Museum of Science & Industry, archived from the original (PDF) on 4 March 2009, retrieved 15 November 2008.

  • [30]

    ^Napper (2000), p. 367none.

  • [31]

    ^Lavington (1998), p. 14none.

  • [32]

    ^Lavington (1998), p. 15none.

  • [33]

    ^Napper (2000), pp. 366–367none.

  • [34]

    ^"SSEM Programmer's Reference Manual". curation.cs.manchester.ac.uk. A3.3 Control Switches. Retrieved 17 May 2018..

  • [35]

    ^"Manchester Baby Simulator". www.davidsharp.com. Pictures, How to operate the Baby/Emulator, Discussion of the historical accuracy of the emulator, Technical Introduction to Programming the Baby (v4.0). Retrieved 17 May 2018..

  • [36]

    ^Lavington (1998), pp. 16–17none.

  • [37]

    ^Tootill, Geoff (Summer 1998), "The Original Original Program", Resurrection, The Computer Conservation Society (20), ISSN 0958-7403, archived from the original on 9 January 2012, retrieved 19 April 2008.

  • [38]

    ^Lavington (1998), p. 17none.

  • [39]

    ^Williams, F. C.; Kilburn, T. (25 September 1948), "Electronic Digital Computers", Nature, 162 (4117): 487, doi:10.1038/162487a0, archived from the original on 6 April 2009, retrieved 22 January 2009.

  • [40]

    ^"Meet Baby", Manchester Museum of Science & Industry, archived from the original on 26 June 2008, retrieved 17 November 2008.

  • [41]

    ^"Dead Media Beat: Baby". 20 June 2008. Retrieved 21 June 2017..

  • [42]

    ^Highfield, Roger (17 June 2008), "Photo of great grandfather of modern computers found", The Daily Telegraph, retrieved 20 June 2008.

阅读 53
版本记录
  • 暂无