计算机组成
2.1 电子计算机的兴起
随着人类文明的进步,人们对计算能力的需求也越来越大。与此同时,科技的迅速发展也为强大计算能力的诞生奠定了基础。在这样的环境下,电子计算机就应运而生了。在这个过程中很多科学家、工程师和各行和业的人投入了大量的智慧和辛劳。而其中一个人是我们在谈论到计算机的组成结构时必须要提及的,因为我们今天所使用的计算机几乎全部采用了相同的结构,这个结构就是以他的名字命名的,而这个人就是冯·诺依曼。
冯·诺依曼被誉为现代电子计算机之父。实际上他主要是一位数学家在布达佩斯大学获得了数学博士,不久之后就来到了美国,长期在普林斯顿大学和普林斯顿高等研究院工作,二战期间冯诺依曼参与了原子弹的研究工作。当时他遇到了一个很大的困难,是运算量太庞大。于是他就致力于寻找具有强大运算能力的设备,其实困惑于这个问题的不仅只有他。
除了原子弹,二战在许多领域都对计算能力提出了很高的要求。例如在战争中不可或缺的火炮,炮弹要打得准,就必须综合考虑很多的因素。比如炮口的仰角比如风向,比如炮弹的种类实际上这就是些数学函数的运算,但你不能让炮兵在战场上现场去做这些计算。必须提前把各种情况下炮弹的运行轨迹计算出来,并绘制成一张表,这就是火炮射击表。当时美国军方要求弹道研究院每天提供六张火炮射击表,每张表大约要计算数千个炮弹的运行轨迹。这给弹道研究院的技术人员带来了很大的压力。大约二百多名计算人员花两个多月才能完成一张表的计算。即使动用当时最好的计算设备,可能也需要一个月才能完成一张表。这与军方的要求相距甚远。在项目不断拖延的压力下,弹道研究院的项目负责人也在寻找速度更快的计算设备。
后来他终于得到了一个好消息,他听说了一个人叫约翰·莫克利,他是一位科学家,在宾夕法尼亚大学摩尔电机工程学院工作。他当时正和一个学生叫约翰·埃克特在研制一种高速的电子计算设备,双方沟通之后很快就立项开始了工作。这台计算机被命名为 ENIAC,在一九四三年正式开始设计,由莫克利任首席顾问。当时正是硕士一年级的埃克特担任了首席工程师。这张照片中中间的两人就是他们。经过了两年多的艰苦设计,ENIAC 终于完成了。
1946 年的 2 月 14 日 ENIAC 在宾夕法尼亚大学完成。ENIAC 是一个庞然大物,这张照片中几乎所有的物品都是他的组成部分。ENIAC 共有 180000 个电子管组成。每秒钟可以完成 5000 次的加法,功率 150 千瓦,占地 170 平方米,重量 30 吨。总共花费了大约 50 万美元。从性能上看每秒钟 5000 次加法远远不如现在我们的个人计算机,至于说它个头很大,倒也不能这么看。因为每一个时代性能最好的计算机都是庞然大物。现在的高性能超级计算机也动辄占地数百平方米,重量上百吨。ENIAC 跟他们比起来也只能算是一个小个子。不管怎样,ENIAC 在那个时候已经带来了计算能力的飞跃增长。当然,他实际是在二战之后才完成的,并没有为二战的火炮射击表做出什么贡献。但是他在后来的弹道计算,原子弹研究、气象预报等很多方面都发挥了重要的作用。关于他的头衔,我们要注意一下。普遍认为,它是世界上第一台通用电子计算机。如果不加通用这两个字,恐怕还会有不小的争议。因为在它之前就已经有人设计出了电子计算机。
这台计算机叫 ABC,是由美国艾尔瓦州立大学物理系的阿塔纳索夫副教授和他的学生贝里早在 1939 年设计完成的。 更重要的是莫克利在设计 ENIAC 之前,就了解到了阿塔纳索夫的设计成果并多次找阿塔纳索夫探讨其设计原理。在 ENIAC 的设计过程中不可避免的借鉴了很多 ABC 的设计思想,但遗憾的是莫克利并没有把这件事情公之于众,这也最终导致了二十多年后的一场专利纠纷,最后法院判决,因为设计思想来源于 ABC,所以 ENIAC 的专利被判无效,当然这是后话。我们再回来看 ENIAC。
ENIAC 的设计过程中,正在寻找高性能设备的冯诺依曼也加入了进来,作为研制小组的顾问, 冯诺依曼参与了很多讨论,并提出了自己的意见和建议。其中有一点非常的重要,我们先来看左边这张照片,这是 ENIAC 原有四十块面板当中的四块。最左边那是 ENIAC 三块函数表当中的一块。我们可以看到 ENIAC 的面板上有很多开关连线,实际上这些开关连线就是控制 ENIAC 应该如何工作的。但是插拔这些开关是一件非常费时费力的工作,往往经过几天的配置连线才能让 ENIAC 重新进行一项计算。冯诺依曼指出 ENIAC 的开关定位和转插线只不过代表了一些数字信息。完全可以像受程序管理的数据一样存放于主存储器中。这就是后来的存储程序的概念,由于 ENIAC 已经开始制造,无法进行重大的修改,因此,在 ENIAC 完成之前研制小组就开始讨论下一代计算机的研制工作。后来,冯诺依曼形成了一份报告,这就是著名的关于 EDVAC 的报告草案。
这份报告完成于 1945 年,并被分发给一些政府机关和科研机构的人阅读,这份报告详细的描述了一台名为 EDVAC 的计算机的设计方案。它所描述的计算机结构后来就被称为冯诺依曼计算机结构,简称冯诺依曼结构。今天我们所使用的计算机几乎全都是冯诺依曼结构。然而这份重要的研究报告却引起了埃克特、莫克利等研究小组成员的强烈不满。一方面因为设计方案的公开发表使得埃克特和莫克利无法就 EDVAC 申请专利。另一方面,应该说这个设计方案是研究小组共同讨论的成果。虽然冯诺依曼在其中做出了重要的贡献,但是他只署了自己的名字,独自享受了这份巨大的荣誉。这也成为了这个研究小组最终决裂的重要原因。但是不管怎样,在 ENIAC 完成之前,EDVAC 的研制工作就已经开始了。
EDVAC 仍然是为美国弹道研究院设计,它实现了存储程序的概念,大幅提升了任务效率。所以它也被称为存储程序式计算机,也就是冯诺依曼结构式计算机。同时 EDVAC 还采用了二进制,而不是 ENIAC 的十进制,极大的简化了逻辑线路。此外 EDVAC 还清晰的分成了五个基本部分,运算器、控制器、存储器、输入设备和输出设备。如果说 ENIAC是世界上第一台电子计算机还存在争议的话,那关于谁是世界上第一台冯·诺依曼结构计算机人们对 EDVAC 倒是毫无疑问,因为它肯定不是。虽然 EDVAC 在 ENIAC完成之前就开始了设计工作,但是很快这个研究小组就闹翻了,莫克利和埃克特离开了宾夕法尼亚大学。并带走了大部分高级工程师,自己成立了一个电子计算机公司。EDVAC的研究工作就此停滞,作为顾问的冯·诺依曼也回到了普林斯顿高等研究院。在这段时间,他还设计了另一台计算机,叫 IAS。后来EDVAC的研制工作重新开始。直到1949年8月才交赴弹道研究院。然而有很多的问题,导致无法使用。直到1951年才解决了全部问题正式运行。当然,此后EDVAC的表现非常出色,完成了很多重要的任务,直到1962年退役。那究竟是谁抢了先,研究了第一台冯·诺依曼结构计算机呢?这个人在大西洋的彼岸。
他是英国剑桥大学的莫里斯·威尔克斯。他以EDVAC为蓝本,设计制造了这台叫做EDSAC的计算机。这是一台冯·诺依曼结构的计算机。我们可以看到,它也有五个组成部分。这张较小的照片就是他的存储器。那么大家可能要问,当时EDVAC都还没有设计完成,威尔克斯是怎么照着EDVAC进行设计的呢?其实我们刚才说过,冯·诺依曼在完成了EDVAC的报告之后,这份报告就被送给了很多人阅读,引起了人们广泛的兴趣。很多机构都开始参照这个方案进行设计。当然。我们也得注意到,EDSAC在第一台的后面,还加了一个定语,叫做“实用的”。因为在它之前,1948年也有一台存储程序式计算机被研制出来,这是曼彻斯特的 Sam,只不过那是一个实验性的设备,并不能实用。当然,如果较真的话,ENIAC 在 1948 年也被改造成了存储程序式的计算机。这可是一台实用性的计算机。所以,在这个电子计算机刚刚兴起的时代,想争个第一也不是一件容易的事情。
我们再来看看,莫克利和埃克特到底去做了什么。他们离开宾夕法尼亚大学,倒不全是因为跟冯·诺依曼闹了别扭。最重要的原因,是宾夕法尼亚大学要求他们将发明专利的所有权转让给学校。在协商无效的情况下,他们只能离开。后来他们创办了埃克特 - 莫克利计算机公司。并着手研究一台计算机,叫“UNIVAC"。UNIVAC 的设计开始于他们自己的计算机公司。但是这两位科学的天才却不善于经商。埃克特 - 莫克利计算机公司很快因为严重的亏损,而被雷明顿·兰德公司收购。不过 UNIVAC 的研究得以继续。最终,在1951年,第一台 UNIVAC 交给美国人口普查局使用。这就是 UNIVAC。左边是UNIVAC的控制台。但是当时,电子计算机还没有得到社会的广泛认可。普通民众,更是很少有人知道。但是机会很快就来了。
1952年的总统选举,艾森豪威尔对史蒂文森。在选举之后,统计选票是一项非常繁重,而且容易出错的工作。当时 UNIVAC 也参与了此项工作。结果,UNIVAC 在统计了部分选票之后, 最先准确的预测了艾森豪威尔将赢得选举。这就是 UNIVAC 当时打印在纸上的预测结果。然而,很多人都不相信这个结果。包括全国性的电视媒体都不敢播报。最终证实,UNIVAC 的计算结果是正确的。由此,UNIVAC 一举成名,电子计算机也获得了人们的广泛关注。
此后,很多公司都进入了电子计算机的领域。其中,原先主要在制表机领域的 IBM 公司也转入电子计算机领域,并成功推出了大型计算机 IBM701。当时,冯·诺伊曼也正是 IBM 公司的科学顾问。他也和原子弹之父,奥本·海墨一起出席了 IBM701 的揭幕仪式。从此,IBM 在这个新兴的市场上迅速扩张。到五十年代中期,据称 IBM 占领了这个新兴市场的70%。剩下的30%,由七家其它的公司所占据。因此,媒体也戏称,当时的电子计算机市场,是“IBM和七个小矮人”的故事。而在这七个小矮人中,也有已经并购了 UNIVAC 研制部门的斯普利·兰德公司。所以我们可以说,是UNIVAC真正开启了商用计算机的时代。从此,一批又一批的明星产品、明星公司, 和明星人物登上了历史的舞台。
现在,电子计算机已经成为了推动社会进步的重要动力。也是我们生活中,不可或缺的组成部分。而现在计算机,基本上都采用了冯·诺伊曼结构。因此我们从下一节开始,将一起来探索,究竟什么才是“冯·诺伊曼结构”?