机械计算和电子计算
虽然我无意尝试撰写一部计算机史,甚至不打算写一部操作系统史,但我有必要在这里描绘出一些内容,因为我不想让非专业人士迷失。
要理解现代计算机的起源,必须跟踪三条不同的线索:
机械计算
制表与排序
差分机与解析机
当这几条线索在第一次世界大战结束前后(即 1918 年左右)交织在一起时,技术也经历了从机械到机电(艾肯),再到电子(埃克特和莫克利),到晶体管化(IBM 7090),再到板上微电子计算机(Altair 8008),直到今天的芯片级计算机的发展历程。
机械计算方法由来已久。算盘可能是最为古老的计算工具。中国和埃及人早在四千多年前就已经有了这种装置。西班牙人到来时,玛雅人也拥有这种工具。拿破仑发现对数(1614 年)及其“纳皮尔骨”(标记着乘法用的象牙棒)后不久,滑尺被发明出来(伦敦维多利亚与阿尔伯特博物馆里藏有一套属于查尔斯·巴贝奇的纳皮尔骨)。
1642 年,年仅 18 岁的布莱兹·帕斯卡发明了一台能进行加法和“进位”的计算器,以帮助他的父亲——一名税务员。近 30 年后,1671 年,莱布尼茨在帕斯卡的机器基础上更进一步,制造出了使用一种巧妙装置“阶梯轮”的乘法原型机,这种装置直到 20 世纪 40 年代末的最后一批机械计算器中仍在使用。1676 年,莱布尼茨向伦敦皇家学会展示了他的计算器。第一台商业上成功的计算器由查尔斯·泽维尔·托马斯于 1820 年发明。到了 1878 年,惊人地售出了 1500 台——平均每年近 30 台。第一次世界大战后,这种计算器仍由巴黎的达拉斯公司制造。布伦斯维加加法机基于弗兰克·斯蒂芬·鲍德温 1875 年的专利,它用带有可变齿数的轮替代了莱布尼茨的阶梯轮,在 1892 年至 1912 年间销售了 2 万台——平均每年 1000 台。
第一台键盘驱动的计算器由 D.D.帕尔马利于 1850 年申请专利,而多尔·尤金·费尔特的康普托米特——首台成功的键控多阶计算机——于 1887 年获得专利。
1812 年,查尔斯·巴贝奇提出了一种不同类型计算器的构想,称为差分机。他于 1823 年获得了英国政府的支持。项目于 1833 年停止,1842 年因成本过高被政府放弃。但从 1833 年起,巴贝奇开始专注于另一种机器——解析机,这种机器能够自动计算所有数学公式。解析机的各种操作由打孔卡控制,这些打孔卡是仿照贾卡织机使用的卡片制作的。虽然仅完成了部分构造,但巴贝奇的笔记、图纸和部分机器现藏于伦敦的维多利亚与阿尔伯特博物馆。
贾卡织机,是通过自动化来提高生产效率的一次成功尝试,它本身也是建立在多项先前创新的基础上的:1725 年,布雄用带孔的无尽纸带替代了成束的环状绳索;1728 年,法尔康用带孔卡片替代了纸带,但卡片仍附着在绳索上;1748 年,雅克·德·沃康松将带孔纸带和卡片结合起来。卡片上的图案由专用机器用模板绘制的设计进行打孔。由此,程序化机器诞生了。
一百多年后,哥伦比亚学院毕业生赫尔曼·霍勒里斯回忆起了那些带孔卡片的存在。霍勒里斯刚开始在人口普查局工作,年薪丰厚,为 600 美元。他被安排参与一项关于制造业中使用的动力和机械的调查工作。但他也结识了负责“重要统计数据”的约翰·肖·比林斯。一天晚餐时,比林斯抱怨查尔斯·西顿最近发明的制表设备不够完善,该设备曾用于 1870 年的人口普查。比林斯认为,鉴于人口增长,1880 年的人口普查可能需要七八年才能完成,而 1890 年的人口普查到了 1900 年仍未完成。“应该有一台机器来完成纯机械的制表工作,比如人口统计和类似数据的处理,”比林斯说。霍勒里斯在 30 年后回忆道:“我们谈过这事,我记得……他想到了用卡片上的缺口来表示个人的描述。”霍勒里斯考虑制造一台能记录和读取这些信息的装置,并邀请比林斯与他合作。比林斯为人谨慎,拒绝了邀请。
1882 年,霍勒里斯以机械工程讲师身份去了麻省理工学院(当时他 22 岁)。在麻省理工学院的教学工作让他有时间继续研发这台机器。他最初考虑将信息记录在长条纸带上,但这被证明不切实际。1883 年夏天,霍勒里斯乘火车西行。在火车上,他看到了一种“打孔照片”的技术,即列车员通过打孔方式将乘客的描述记录在车票上,以便核实同一人是否一直使用该车票(如性别、发色、眼睛颜色等信息)。
霍勒里斯于 1884 年申请了他的第一台机器专利,1886 年又申请了改进设计的专利,并在巴尔的摩人口普查中进行了试验。根据试验报告,新泽西和纽约订购了机器(用于统计死亡率)。霍勒里斯和一些商业伙伴竞标并赢得了 1890 年人口普查的合同。奥地利政府于 1890 年订购了机器,加拿大次年订购了五台,随后意大利和挪威也跟进,之后是俄罗斯。这些机器取得了显著成功。霍勒里斯于 1896 年将他的霍勒里斯电动制表系统注册为制表机公司,并于 1905 年重新注册成立。
近 80 年过去了,计算机行业才超越了霍勒里斯的一些重要见解。首先,为了让操作员不会弄错卡片方向,他在卡片的右上角剪去了一个角。第二,他以合理的价格出租机器(1890 年人口普查的租赁费用为 75 万美元,而 1880 年的人力成本为 500 万美元),但出售专利卡片(1890 到 1895 年间售出超过 1 亿张)。第三,他将人口普查计数方法改编为铁路的货运和客运数据统计。实际上,霍勒里斯发明了“可重复使用性”。
1907 年和 1908 年,霍勒里斯将他的部分机器租给电力公司用于计费:他每月向他们销售 100 万张卡片。这些卡片尺寸为标准尺寸:3.250 × 7.375 英寸(与“旧”美元钞票尺寸相同),有 45 行和 10 列圆孔。
与此同时,一位名叫查尔斯·弗林特的企业家于 1900 年在纽约恩迪科特创立了国际时间记录公司,制造打卡钟。次年,他成立了美国计算秤公司,生产可以“读取”费用和重量的秤,从而免去了店员计算的需要。1910 年——具体何时不详——弗林特遇到了资金短缺的霍勒里斯。两家公司合并后,成立了计算 - 制表 - 记录(CTR)公司。不到 30 个月后,刚被 NCR 解雇的托马斯·沃森接受了弗林特及其听话的董事会的面试。1914 年 5 月,沃森以丰厚的 2.5 万美元年薪、股票期权和利润分成,接任 CTR 的总经理。
尽管第一次世界大战带来了对 CTR 和沃森有利的业务,但真正使沃森五年前的研发投资得到回报的是 1919 年:CTR 成功推出了一款打印机 - 列表机,可以打印出从霍勒里斯的制表机和分拣机收集的信息。1924 年 2 月,CTR 更名为国际商业机器公司(International Business Machines Company,简称 IBM),托马斯·J·沃森同时担任首席执行官和首席运营官。
1928 年,IBM 推出了 Type IV 制表机和新的 80 列、12 行的打孔卡片。
从 1941 年到 1945 年,美国国防部资助了许多推动现代计算机诞生的项目。托马斯·沃森的公司资助了其中的大部分。
尽管沃森在 1945 年曾说过:“我认为全球大约只需要五台计算机”,但他资助的第一台计算机已经完成。哈佛大学的霍华德·艾肯和一个小团队从 1939 年开始组装一台机器,利用了巴贝奇的原理。该机器于 1944 年完成,包含一个 51 英尺乘 8 英尺的面板,上面安装了纸带读取器、继电器和旋转开关。哈佛马克 I 计算器的许多操作由机械开关控制,驱动动力为四马力电机。它能够处理 23 位有效数字的十进制数,运行在以每分钟 200 步速移动的 24 孔打孔纸带上。加法的基本操作时间为 0.3 秒。该机器一直使用到 1953 年,部分马克 I 目前展出于哈佛大学剑桥的艾肯计算实验室,另一部分在华盛顿特区的史密森学会展出。
1944 年 10 月,美国陆军向宾夕法尼亚大学提供合同,建造电子离散变量计算机(EDVAC)。原始团队包括赫尔曼·H·戈尔丁、约翰·冯·诺伊曼和约翰·莫克利。其设计完全体现了冯·诺伊曼的思想。
首台全电子计算机是电子数值积分计算机(ENIAC)。由宾夕法尼亚大学的 J.W. 莫克利和 J.P. 埃克特于 1945 年末完成,并于 1946 年安装,由阿伯丁(马里兰)试验场的弹道研究实验室(BRL)委托建造。它是至今最大的计算机,由 18000 个电子管(真空管)和 1500 个继电器组成。ENIAC 是马克 I 的电子版本,速度快了数百倍(Mike Muuss 告诉我,ENIAC 的部分零件目前展出于 BRL)。
埃克特和莫克利在 1947 年成立了自己的计算机公司,开始制造他们的通用自动计算机(UNIVAC)。由于资金耗尽,他们成功获得了美国 Totalizator 公司的 50 万美元投资(Totalizator 公司提供赛马博彩机,这在某种程度上是计算机与博彩的最早联系,他们认为计算机可能对信息处理有用)。美国 Totalizator 公司控制了埃克特 - 莫克利公司,但在第一台机器完成之前资金再次耗尽,Totalizator 的 Mun 兄弟将埃克特 - 莫克利卖给了雷明顿兰德的詹姆斯·兰德。初始的 UNIVAC 于 1951 年交付(晚了一年),另外还有六台机器在订购中。
ENIAC 在英国也有后代。莫里斯·V·威尔克斯和他的团队在 1946 年底开始规划电子延迟存储自动计算机(EDSAC),这是威尔克斯从宾夕法尼亚回来后开始的工作,并于新年初在剑桥大学数学实验室开始建造。它的体积仅有 ENIAC 的五分之一,基于冯·诺伊曼在一篇论文中提出的思想。1949 年 5 月,它执行了首次完全自动计算,成为第一台投入使用的具有高速存储器和输入/输出设备的电子计算机。威尔克斯称,几年内,EDSAC 的子程序库已超过 150 个。
几乎同时,在曼彻斯特,M.H.А. 纽曼领导的团队开始制造一台体现 EDVAC 概念的机器。F.C. 威廉姆斯发明了阴极射线管存储,I.J. 古德曾与艾伦·图灵合作研发了破译机器 Colossus,图灵本人也加入了团队。曼彻斯特自动数字机(MADM)原型于 1948 年建成,正式机器于 1949 年 6 月运行了第一个程序。MADM 引入了索引寄存器和分页机制到计算机领域。
与此同时,IBM 开始研发选择序列电子计算机(Selective-Sequence Electronic Calculator,简称 SSEC)。需要注意的是,虽然 EDSAC 是第一台电子计算机,但 SSEC 是第一台计算机——它将计算与存储程序结合在一起。该机器于 1948 年初在 IBM 位于曼哈顿的总部投入使用,巧妙地放置在街道平层的玻璃窗后,路人可以看到它在运行。它是一台大型机器,拥有 13,000 根电子管和 23,000 只继电器。所有算术计算均由电子管完成,其速度比 Mark I 快 100 多倍。它还拥有三种不同类型的存储器:高速电子管存储器、容量更大的继电器存储器,以及容量极大的 80 列纸带存储。指令和输入通过穿孔纸带输入,机器配备 66 个读头,控制能自动从一个读头转移到另一个。B.W. Bowden 在 1953 年写道:“它很可能是第一台具备条件控制转移指令的机器,这正是巴贝奇和(阿达)洛芙莱斯夫人所推荐的。”SSEC 曾为美国原子能委员会等机构工作,直到 1952 年 8 月被拆除。
同年 6 月,约翰·冯·诺依曼及其同事在普林斯顿高等研究院完成了 MANIAC 计算机。该机采用了 F.C. 威廉姆斯和 T. Kilburn 发明的静电存储器,这种存储器只需一台阴极射线管,而不需要专用存储管。
接下来硬件上的进展来自麻省理工学院的 Whirlwind 项目,该项目由杰伊·福雷斯特于 1944 年启动。Whirlwind 在每秒对 16 位数字的单地址操作达到 20,000 次,采用了一种新型的静电存储器,其中 16 个电子管各包含 256 个二进制位。(字是计算机存储中的基本数据单位。单位由预定数量的位组成。一个 8 位字可以表示范围为 -27 到 +27 -1 [即数字 -128 到 +127])Whirlwind 是首次真正尝试实时计算,持续计算飞机的运动,用以解决稳定性和高速飞行的问题。道格·麦克伊罗伊告诉我,在 1954 年他使用 Whirlwind 时,“它配备了磁芯存储器,每秒能执行 40,000 条指令。”福雷斯特在 Whirlwind 项目中的一位“聪明学生”是肯尼斯·H·奥尔森,他在几年后创办了数字设备公司(Digital Equipment Company,DEC)。奥尔森当时正在试验用于存储器设备的磁性开关磁芯矩阵,但在一篇学生论文中,他建议使用晶体管代替电子管。这篇论文被 SSEC 的电路设计师拉尔夫·L·帕尔默看到,帕尔默在 1955 年初劝说埃里希·布洛赫在 IBM 704 的存储器中使用晶体管。但由于当时没有足够功率驱动铁氧体磁芯存储器的晶体管,这一尝试失败了。
IBM 704,最初名为 701A,于 1954 年发布,是 IBM 701(1952、1953 年)的逻辑继任者。701 发展成 704 的项目由吉恩·阿姆达尔领导。701 由一个由纳撒尼尔·罗切斯特和杰里尔·哈达德领导的 35 人团队建造。罗切斯特曾在西尔维尼亚为 Whirlwind 构建算术单元;哈达德则是设计 IBM 604 电子计算器团队的一员。最终,700 系列既包含科学计算机(701、704、709、7040、7044、7090 和 7094),也包含商业计算机(707、705 和 7080)。(顺便提一下,IBM 7030 具有 64 位字和 8 位字节)701 在 1953 年的租金为每月 1.5 万美元;704 的增量成本很小。即使租金如此之高,IBM 也出货了 18 台 701,后来售出了 140 台 704。在商业领域,175 台 IBM 705 以平均 160 万美元的价格售出。7080 是完全晶体管化版本,售价为 220 万美元:计算机依然属于数百万美元的高价区间。
福雷斯特与 IBM 合作,获得了国防部合同,开发 Whirlwind II——一款防空计算机。随着 IBM 参与度的提高,1952 年该项目更名为 SAGE(半自动地面环境)。肯·奥尔森和他的团队在 MIT 林肯实验室仅用九个月设计并建造了内存测试计算机。当福雷斯特和他的副手诺曼·泰勒在 1953 年初意识到需要一位常驻 IBM 的全职联络员时,泰勒说服了奥尔森。奥尔森去了 IBM,但很快就厌恶了 IBM 的态度。1953 年晚些时候在波基普西的一个晚上,他对泰勒说:“诺姆,我能用他们自己的游戏规则打败这些家伙。”这标志着数字设备公司(DEC)的开端。
三年半后,奥尔森向 American Research & Development 提交了一份商业计划,并获得了他和哈兰·安德森创办公司所需的 7 万美元资金。一年后,他们开始从马萨诸塞州梅纳德发货逻辑模块。1959 年 12 月,在波士顿斯泰特勒酒店举行的东部联合计算机会议上,DEC 展示了 PDP(程序化数据处理器)1 的原型机。它的售价为 12 万美元,交付始于 1960 年 11 月。
PDP-1 是一台 18 位机器,内存容量介于 4096 到 32768 字之间。PDP-1 的内存周期为 5 微秒,计算速度为每秒 10 万次计算。该项目由本杰明·格尔利领导,机器由 3500 个晶体管和 4300 个二极管组成。它配备了编辑器、宏汇编器和 DECAL(一种 ALGOL 编译器)。输入采用纸带读取器,输出使用 IBM 打字机。PDP-1 拥有其那一代实时计算机中最佳的性价比,也是首台配备图形显示屏的商业计算机。DEC 共售出 53 台,第一台交付给了 Bolt、Beranek 和 Newman,第二台交付给 Itek(诺姆·泰勒创办的排版公司)。其他用户包括劳伦斯利弗莫尔实验室和加拿大原子能公司(AEC)。1962 年 1 月,奥尔森向 MIT 捐赠了一台 PDP-1,学生们用它编写程序玩计数游戏 mancala。
PDP-2 原计划为一台 24 位机器;PDP-3 则计划为 36 位,但两者均未制造出来。PDP-4 是另一台 18 位机器,由戈登·贝尔设计,但失败了。它的内存周期为 8 微秒(而 PDP-1 是 5 微秒),功耗仅为 PDP-1 的一半(1125 瓦对比 2160 瓦);它运行汇编器、编辑器和 FORTRAN,售价仅为 6.5 万美元,相较 PDP-1 的 12 万美元便宜不少。但戈登·贝尔的判断错了:62.5% 的性能和 54% 的价格并非市场需求。最终只卖出 45 台。
PDP-5 是戈登·贝尔的又一作品,由埃德森·德卡斯特罗设计,作为安装在安大略乔克里弗的 AEC 站点中使用的 PDP-4 的前端。它是一台小型通用 12 位机器。DEC 本计划制造 10 台以回收工程费用,但 PDP-5 售价 2.7 万美元,市场反响热烈,最终销售近 1000 台。
PDP-6 是一台大型 36 位机器,售价 30 万美元,发布后不久便被终止,共出货 23 台,其中一台交给了 MIT 的人工智能实验室。
PDP-7、PDP-9 和 PDP-15 是 PDP-4 的 18 位后续机型。PDP-8 是贝尔和德卡斯特罗设计的另一台 12 位计算机。它于 1965 年以仅 1.8 万美元的价格推出,引发了迷你计算机革命。最终销售超过 5 万台。PDP-10 是 PDP-6 的大型 36 位继任者。
但正是 PDP-11,使 DEC 成为领先的迷你计算机制造商。PDP-11 由戈登·贝尔在卡内基·梅隆大学休假期间构思,安迪·诺尔斯担任项目负责人,于 1970 年发布。它是一台 16 位机器,拥有各种配置和型号,最终销售了 25 万台。
戈登·贝尔的设计和 DEC 进入低成本计算领域是 UNIX 发展和成功的关键,因为 PDP-11 是首台大学和研究机构负担得起的部门级计算机。此外,虽然 Richie 和 Thompson 无法获得大型计算机的资金,PDP-11 的起价为 1.08 万美元,正好符合贝尔电话实验室的预算。PDP-11 的 16 位字长也非常重要,因为 16 位字比 8 位字能容纳更多的比特。
最后更新于