现代模块化的诞生——IBM/360电脑的设计革命
上一篇 / 下一篇 2007-05-18 20:35:34 / 天气: 热 / 心情: 平静 / 个人分类:标准化知识
在20世纪60年代前期,整个计算机产业的设计师都在寻求解脱困境的办法。在IBM,努力的结果是诞生了360系统———计算机的第一个模块化产品线。360系统在很宽的产品线上实现了应用软件的兼容,从而成就了对计算能力的巨大需求。这项成就本身将产生重要的经济影响,然而360系统的最终影响还要更为深远。
360系统的诞生是一个具有里程碑意义的事件。
———鲍德温教授(哈佛大学商学院前副院长)
———克拉克教授(哈佛大学商学院院长)
一、复杂性灾难与电脑设计的困境
世界上的第1台计算机是在1944年问世的,它由18 000个真空管组成,足足装了一屋子。虽然,从那以后,计算机及其程序和使用模式等等方面,均以惊人的速度向前发展。但是,从那时起,直到1965年之前的这20多年时间里,计算机都是整机制造的。当时的设计是相互依赖的(广泛联系)。因为每开发一款新计算机,都是为了具备某种新的特殊功能,以满足用户新的特殊的需求。所以,每开发一款新计算机时,指令集、外围设备、应用软件等都要从头做起。虽然新机型也会采纳和吸收老机型的一些经验,但整个说来每个新机型的产品线都是独立的、不同的、不能通用的,因而是不能兼容的。不同厂家,乃至同一厂家不同时期生产的电脑,其操作系统、处理器、应用软件等都不能兼容。用户一旦改换不同的电脑或更新电脑,就必须重新改写原来的程序或软件。这不仅给用户更换电脑带来极大麻烦,而且对电脑产业的发展极为不利。电脑系统的兼容问题便成了电脑产业发展中的突出障碍。
电脑设计师们为什么解决不了这个“老大难”问题呢?关键的难题就是计算机这个系统太复杂了。它的复杂程度和设计过程中要思考和处理的关联问题有如天上的繁星,令人望而生畏。
系统是由要素组成的,要素之间是相互联系(相互影响、相互制约)的。系统越来越复杂,要素越多,相互关联也越多,而且远远超出要素的数目。不仅识别这些关联困难,解决和处理(安排)这些关联更困难。处理一对关联之后,又会引起新的关联,“按下葫芦瓢起来”。这种无休无止的恶性循环,使设计师陷入泥潭。一位设计师回忆道:“你解决了一件事情的一个方面,而另一方面却脱节了。当你改正了这个,其他的又出错了。你不停地转来转去,无法生产出一个完全正确的形式。”例如,当你对驱动系统做出某种决定后,便引起了与主板有关的问题,继而又引起与显示屏有关的问题;当你对显示屏的参数进行重新选择,反过来又引起与主板的另一个问题,这又会反馈给驱动系统;重新调整驱动系统,又引起了线路结构问题,这个过程一直持续下去,处理这个相互依赖的关系链(这被称为“相互依赖型设计”),通常要花费很长时间,令设计师伤透了脑筋。这就是计算机这个复杂系统所造成的“复杂性灾难”。
被这种灾难所困扰的电脑设计师们,不可能像我们想象的那样,按照某种标准,遵循通用化原则,设计具有兼容性能的可以实现工业化大量生产的产品(那是模块化之后的事)。说当时的电脑设计是研究电脑也可以,是试制也可以,实际情况可以说是知识渊博、头脑灵活、技艺高超的电脑工匠在制作“电脑工艺品”。这种手工业方式生产的“工艺品”,不仅价格极其昂贵,只有像美国国防部那样的单位才能买得起,而且制约着技术创新、电脑的工业化生产和电脑知识、电脑产品的普及。因此,可以说能否摆脱“复杂性灾难”对电脑设计的困扰,关系到计算机产品的前途、电脑产业的形成以及信息时代的降临。
二、模块化———摆脱“复杂性灾难”的必由之路
模块化是解决复杂问题的一种方法,早已为人所知。我国北宋时代的毕昇早在公元1041~1048年间发明的活字印刷术,就非常成功地运用了标准件、互换性、通用件、分解与组合、重复利用等方法和原则,来解决雕版印刷所遇到的复杂性难题,可以说是人类社会较早出现的模块化杰作。到了工业化时代,模块化更是大行其道。那么电脑设计师们为什么不能一开始就采用模块化的设计路线呢?
从1944年到1966年这个模块化之前的时代里,计算机设计师们在从事着所谓的“相互依赖型设计”过程中,遇到种种困扰时,可以说每个人都在寻求出路和解决问题的方法。那些制造“电脑工艺品”的“工匠”们是了不起的开拓者。他们当中一开始就有人提出模块化的主张。高等研究院的约翰?誗冯?誗诺伊曼(John Von Neumann)、剑桥大学的莫里斯?誗威尔克斯(Maurice Wikes)和IBM公司的拉尔夫?誗帕尔默(Ralph Palmer)等人就曾有过模块化操作[1]的概念,他们设想设计者可以把系统分割为不同的组件,或替换组件,或归纳一项好的决计方案,或把一个组件从某个系统移植到另一个系统。但是,这种全新的思路意味着把现有的系统推倒重来,根本无法在当时已有的系统中实施。因为计算机这个系统太复杂了,对计算机的模块化设计远远不会像由雕版印刷向活字印刷转变那么容易。不是仅仅有了一个想法就能实现的,它需要一系列前提条件。这正如鲍德温和克拉克所说:“计算机设计的模块化———这个产生巨大经济影响的过程,同时也是一个历史过程和知识积累过程。这个过程是分阶段进行的,每一阶段都利用了此前各阶段所积累的知识。而且在较长的时间内,这个过程在经济效益上是很不显著的,其间的里程碑都是些鲜为人知的小的技术进步。”这是对模块化发展过程最具唯物主义的概括。在这20多年时间里,计算机设计的知识积累以及模块化设计思想的孕育,大体经历了如下的一些阶段和过程[2]:
1. 1944年在美国国防部的资助下,由J?誗Presper Eckert Jr和W?誗Mauchly领导的小组在宾西法尼亚大学建造了一台名为ENIAC的计算机(电子数字积分计算机)。当时,计算机的设计知识主要存在于这少数几个人的头脑里。生产完全是在试错过程中进行,应用则完全是实验性的。设计、生产和应用相互交叠、不可分割。每一个设计参数、每一种生产上的限制条件、每一种新用途的想法,都能引起一系列的连锁反应。任何微小的发明和改进都算得上是英雄壮举。
2. 1945年当ENIAC投入使用之后,设计者积累的知识使他们明白了如何建造一台性能更好(更快、更小、更便宜、更简便)的机器。然而按照相互依赖性设计理念建造的ENIAC是一个密不可分的系统,任何部分都得重新设计。他们只好重新开始,把想象中的新机器命名为EDVAC(电子离散变量自动计算机),并在冯?誗诺伊曼的一份报告中把计算机系统界定为一种“组合式”制品,还标明了其关键组成部分是基本存储器、控制单元、运算“器官”、输入/输出和辅助存储器。这是摆脱“依赖性设计”向“模块化设计”迈出的关键一步。
3. 不久,冯?誗诺伊曼又有了更好的设想。他想象的计算机既是通用的又是全自动的。他和他的同事为其新计算机(ENIAC)构想的设计方案的核心是模块化的。除软件之外,他们在设计中定义了六大基本要求(内存、控制、运算单元、输入、输出和外部存储)。每一要素都有清楚定义的功能,并且按照自身的内部逻辑进行设计。他还把计算机界定为一个由各司其职、相互影响的组成部分构成的复杂系统。他主张不同的设计师可以分头开始每个功能单元的开发,解决每一单元的具体难题,并且最终能组合到一起实现完整的功能。他们明确认为,假如首选路径不成功,就可以转向另一条。这样,在某个次级单元中解决问题的失败就不会妨碍另一个单元中问题的解决。他们的这些想法和做法,对模块化基本理论的形成有深远的、重大的影响,是计算机设计模块化历程中一座意义非凡的里程碑。其不足之处是他们致力于实现使用上的而不是设计或生产上的模块化。在他们那里,某个单元的具体设计在任何意义上都不打算与其他部分相分离;系统任何部分的设计和生产都要在其他部分完全看得见的情况下进行。这是尚未完全摆脱依赖型设计思路的局限。尽管如此,他们把计算机分解为功能单元的创举,确实是实现计算机设计的整体模块化必须迈出的重要一步。
4. 到1951年,全世界大约只有4台大型机在运行的时候,微程序设计实现了紧密关联的计算机控制逻辑的模块化。把控制逻辑从硬件中分离出来,从而把计算机分解为三个独立的模块:指令集、微程序设计和数据通路。其中,只有数据通路必须通过硬件来执行。后来,IBM开发360系统的设计思路是开发一族计算机,其中每一台都必须能运行为任何其他同类计算机编写的程序。这就意味着,尽管它们的处理器有大有小,所有的机器使用相同的指令集。正是微程序设计为IBM的工程师们提供了解决这个问题的低成本方法,并且是基于模块化原理的方法。
5. 虽然计算机的模块化设计思路渐近成熟,但设计师依旧围着大型机转。他们还是在研制工艺品,根本没有工业化批量生产计算机的想法。在计算机的每一个“箱子”内部依然是一团乱麻般的电路。这是既无法复制又无法批量生产的手工业产品。而IBM的目标可不是只生产“工艺品”,它的目标是大批量、低成本的制造。为了实行工业化生产,就必须使用标准化的、可以互换的组件。计算机的基本组件是电路。1948年IBM的第一个标准化电子电路问世。它是作为一个单元封装和测试的,由一个真空管加上相连的电阻器和电容器形成的装配件,插在机器的背面。这实际上就是一个电路模块,当时叫做“插入元件”。“可插件”的概念也被应用到IBM的产品设计中。
6. 1957年晶体管电路登上技术舞台,IBM预见到如果不采取任何措施的话,晶体管电路将会以同样的方式激增。他们组织开发了用于制造晶体管电路的新系统,创造出电路封装技术,为IBM开发“标准模块系统(SMS)”奠定了基础。IBM的标准模块系统技术于1957~1958年开发出来以后,几乎在同一时间,新成立的数字设备公司引入了一组“数字实验模块”———标准电路包,工程师可以用来为他们的设备建造逻辑系统。
用于电路设计和制造的标准模块系统(SMS)并不只是从概念上分解计算机,它真正有效地实现了设计结构和相应的任务结构的模块化。而且,它还涉及分割和归纳两个模块操作符[3]的应用。标准模块系统应用于IBM生产的所有产品。新产品的设计师们必须从自动设备库选取适用的标准电路。标准设计的标准模块系统库(Library)决定了计算机的几乎所有物理特性。从1958年开始,IBM公司的电路、卡片、电路板、电源、存储器、机身和外壳先后都实现了标准化。
标准模块系统使大批量生产技术首先应用于复杂电子电路的制造和测试。自动设备的使用连同自动设计和测试技术大大降低了产品大部分基本组件的成本。随着这些成本的下降,开发体积更大、更复杂的计算机就变得切实可行了;这又反过来为投资于制造流程的自动化和标准化提供了理由。
7. 把一个电路的所有元件布置在一块芯片上的技术于1958年末由德州仪器公司完成;同年7月神童半导体公司掌握了运用各种方式在一块芯片上刻制整个电路的“平面工艺”;IBM于1961年提出并于1964年初建成固态逻辑技术,有了它,晶体管芯片的设计、陶瓷模块、卡片和电路板,以及自动布线就可以交给不同的开发小组完成。到了这时,计算机的模块化设计和模块化生产已经是水到渠成。随着模块化制造系统(固态逻辑技术)的全面投产,IBM于1964年4月7日,宣布了它的新产品———360系列计算机的诞生[4]。它成了计算机设计史和计算机产业史上的转折点。在这个发展历程中的每一项突破和每一次知识积累都以其特有的方式体现了模块化原理。所以,这个过程同时也是现代模块化及其理论的孕育过程,是标准化发展史上的一个重要里程碑。
三、计算机产业的第一场标准之战