论文部分内容阅读
1961年5月25日,即前苏联在与美国的空间竞赛中率先把尤里·加加林送上地球轨道的六个星期后,美国总统约翰·F·肯尼迪在面对国会的一次全国电视讲话中号召美国“尽全力达成目标,在这个十年过去之前,送一个人上月球去。”3个月之后,还毫无经验的NASA找到了MIT仪器实验室,要求其负责设计阿波罗号飞船的导航系统和制导系统,自此NASA签订了登月工程的第一份重要合同。
这一决定引发了许多争议。通常情况下,投标商业公司有机会提交一份竞争提案,参与竞争。但仪器实验室是一个非盈利机构,不允许与商业公司展开竞争。NASA决定由MIT建造导航系统的同时,就否定了商业公司的加入。“我有很多申辩工作要做。”鲍勃·奇尔顿(Ob Chilton)(MIT48届毕业生,49届理学学士)必须尽快赶到NASA空间任务团队的飞行动力学分组,他回忆道, “所有商业公司都在表达愤怒与不满。”
NASA内部的MIT支持者有充足的理由。仪器实验室负责人查尔斯·斯塔克·德雷泊(Charles Stark Draper)是使用陀螺仪和加速度计来导航飞行器的先驱。1953年,德雷泊开发的导航系统驾驶一架飞机从波士顿郊外的汉斯科姆农场出发,后降落在了洛杉矶的一个9公里长的临时跑道上。
20世纪50年代中期,仪器实验室签约为美国军方制造几架弹道导弹的导航系统,其中包括北极星弹道导弹,其导航目标是使移动潜水艇中的北极星弹道导弹击中固定目标。为避免敌方无线电的干扰,该导弹的制导系统必须装备完全,不能接受任何来自外部的指挥。此制导系统在1960年接受测试时表现出色,使仪器实验室在华盛顿方面赢得荣誉。
仪器实验室在1957年前苏联人造卫星发射后不久开始的思辨研究也是与军方合同的一部分,当时实验室只用很少的经费取得了很大的研究成果,这一点又使其获得美国政府的青睐。实验室里几位才华横溢的思想者设计了对火星的无人探测飞行,计算出行星际旅行的飞行轨道,为通用的导航计算机设置了详细参数。在4年里,火星工程不断扩展,直到NASA兰利研究中心的研究人员也加入其中。当时的很多设计成果都可以应用到月球任务中。阿波罗工程肯定少不了仪器实验室的加入,因为正如阿波罗指挥舱和服务舱的NASA负责人亚伦·科恩(Aaron Cohen)回忆的那样——“我们想不出还有谁能胜任这项工作了。”
NASA要求实验室设计导航系统、控制系统,以及制导系统。阿波罗飞船的指挥舱和登月舱都要用到这些系统(指挥舱进入月球轨道并携带宇航员返回地球,登月舱与沿轨道运行的指挥舱分离并送宇航员到达月球表面)。导航系统负责飞船的当前位置,制导系统要保持飞行器不偏离轨道并负责航向修正,控制系统要保持飞船的正确速度和“姿态”——确保指挥舱舱头指向正确方向,或登月舱底部与月球表面保持平行。
阿波罗飞船的导航不必全程都依赖其船载系统:地球上的雷达可以追踪飞船,并且若无线电连接没有中断的话,地球上的任务控制台就能够指导航线的修正。但在登月过程中的关键时刻,根本无法保持无线电联络。长而弯曲的飞行轨道上离月球最近的点也是离地球最远的点,飞船在该点进入月球轨道开始部署登月舱——当然,此时地球上的追踪站已经无法看到飞船了。另外,在指挥舱返回地球到达地球大气层时,其下落过程中与空气的摩擦力会加热周围的空气,产生的大量离子会阻止任何无线电传输。
惯性测量单元或称IMU,是导航和控制系统的核心,由德雷伯博士发明。大体上说,IMU包含一个圆形外壳,直径约1.5英尺(约0.46米),内部有两个同心环包围着一个圆盘。外环通过两条铰链固定在外壳上,并围绕一个轴旋转;内环连接着外环,并绕一个垂直轴转动;内部的圆盘则绕一个与内环环绕轴垂直的轴转动。因此,整套设备能够在三个方位上自由运动。在惯性平台即圆盘上,还安装有三个加速度计和三个陀螺仪,也朝着三个不同方向分别排列。当IMU外壳开始转动时,陀螺仪就会记载其运动,发动机则会通过内外环的转动来保持惯性平台的稳定定位:可以想象一个端着一盘玻璃杯的侍者,无论他如何移动,哪怕是飞檐走壁,都必须保持玻璃杯与地面的平行。若惯性平台的定位可以保持完全稳定的话,加速度计的计算数据就能够通过参照IMU的初始位置来定位IMU在任何时点的位置。
但惯性平台无法保持完全稳定。为了能进行中途航线纠正,仪器实验室还设计了一个望远镜和一个六分仪,这两个设备的结合能够帮助飞船确定在太空中的位置。宇航员使用控制舱内控制台上的目镜能够定位三个地标,如地球、月球和射手座阿尔法星,然后宇航员只需按下按钮即可。船载计算机根据三个地标的角度就能够计算出飞行器的位置。
设计工程师们必须确保惯性测量单元和定位目镜提供的信息完全准确,还要将空间操作可能出现的反常问题考虑在内。几百名工程师都投入到了这项工作中。这项工作大部分都是对已有技术的进一步研发。但设计阿波罗制导计算机则是仪器实验室从未涉及过的领域。
硅应用的开端
在技术史上,1961年的头等大事或许不是肯尼迪总统宣布登月计划,而是成立四年之久的快捷半导体公司(Fairchild)发布了第一款投入商用的计算机芯片。作为集成电路的早期样本,该芯片将多种电子元件集成在了一个芯片上。
今天,当英特尔能在一块芯片上塞进10亿个晶体管时,集成电路的优点似乎已显而易见。但在1961年,情况与现在相距甚远。首先,当时的芯片塞不进10亿个晶体管,只能塞进3个。原则上说,比起由磁体及缠绕磁体的线圈两部分组成的磁芯晶体管,集成电路可以节约40%的空间。但集成电路也要消耗更多的电能,对于只有有限资源的飞船来说,这是个严重的缺点。另外,集成电路的大批量生产能否保证空间飞行要求的可靠性这一点,当时尚无法确定。NASA领导层最初决定,阿波罗航线计算机要使用更占空间的磁芯晶体管。
但1952年进入仪器实验室并负责航线计算机设计工作的埃尔登·霍尔(Eldon Hall)一直对集成电路的前景非常着迷。他没有听从NASA的安排,而是自设计之初就平行展开了两个设计工作:一方面设计使用磁芯晶体管的计算机,另一方面也设计使用集成电路的计算机。1962年秋,霍尔说, “显然,制造一台使用微逻辑的计算机更容易些。”集成电路的计算速度是磁芯晶体管的两倍,而对空间的节省也意味着计算机可以为内存电路省出更大的空间。另外,将集成电路用电缆连接起来相对更简单,导致错误的几率也更小。时值冬季,霍尔说服了NASA撤消与雷声公司(Raytheon)之间的航线计算机合同,在集成电路上赌一把。“我怎么哄骗NASA领导层让我使用集成电路的?我不需要哄骗他们,他们根本就不在乎,我可能做任何我想做的事。”NASA管理层关注的都是那些迫在眉睫的任务,比如1965-1966年的“双子座” 号飞行任务。当时他们只是不大关注我们而已。
以今天的标准而言,阿波罗计算机使用了一种很奇怪的构建方法:它只使用了一种类型的逻辑电路,即或非门。只有在收不到任何输入信号时,电路才会输出信号,这就是或非门的名字来源。比起或非门,另一种逻辑电路与门则更有效率。与门在收到所有输入方的信号时才会输出信号。当被问及阿波罗计算机为何如此依赖或非门芯片时,霍尔笑着说,“因为Fairchild只会做或非门芯片。”当霍尔和他的团队研发出一个可用的硬件设计后,他们就不会再选择研发更新的技术。而是与生产厂商密切合作,确保或非门的可靠性制造。
到执行阿波罗第一次飞行任务时,Fairctdld已经不再制造或非门芯片,转而更复杂的芯片架构,因此Philco成了逻辑电路的生产商。可靠性,曾经是集成电路的主要缺点,在当时已成为主要优点了。“那个时代的计算机总是出问题,隔段时间就必须检修一遍。”霍尔说。然而,在阿波罗的15次飞行任务中,制导计算机从未出现过硬件错误——起飞时遭到雷击的阿波罗-12也不例外。
到1966年,制导计算机的设计工作已基本完成,时间进度和惯性测量单元以及目镜的设计差不多。之后,仪器实验室便开始专注于软件设计方面,直到1968年阿波罗-8飞行任务终于将宇航员送上月球轨道。
开始时,没人能预料到这一点。在阿波罗项目的最初一段时间, “实验室差不多分成了两组。” 后来成为控制舱的软件设计负责人的弗雷德-马丁(Fred Martin)说到。其中一组设计硬件。另一组,即分析组,“解决如何到达月球,要进行哪些测量工作,何时启动发动机,飞行朝哪一方向,飞行轨道如何确定,以及出现错误如何补救。”当然,分析组的计算成果将最终应用于软件中,但方程设计工作被普遍看作是最吃力的。
然而到1960年代末,仪器实验室又招纳了400多名软件工程师。分析组负责人理查德·巴廷(Richard Battin)表示,软件设计工作还有一部分属于分包,因此还有其他200多名程序员也参与了这项工作。
巴廷说,没人能预见这项编程任务将面临什么困难,因为这项任务的规模实在太大了,前所未有过! “没人在软件方面有经验。事实上,软件这个词那时都不常用。”他说,“而且当时也没有计算机科学这个说法。”庆幸的是,计算机科学这门学问的诞生有仪表实验室的一个人的功劳。
孤僻的天才
“哈尔是我们曾经共事过的最卓越的天才。”丹·利克利(Dan Licldy)说。哈尔·兰宁(Hal Laning)是MIT40届毕业生、47届博士生,于1945年进入仪表实验室工作,当时是一名应用数学家。1950年早期,他写了一个名为“乔治”的程序,把代数式转换为计算机代码。这是人类可理解的符号和机器可理解的符号之间的一个中介程序。因此这是“所有编程语言的鼻祖”,比IBM的应用更广泛的Fortran语言还要早几年。“我进入实验室才几个月的时间,我们都琢磨着,哈尔到底在干什么?”巴廷说。当时,人们还在讨论机器解析高级语言指令的可能性。 “哈尔把自己锁在办公室里——突然之间,实现不了的却实现了。”巴廷说。 (阿波罗飞行模拟器使用的应用程序是乔治程序的下一代,是我们实验室自己研发的,叫做MAC——“比Fortran好用多了。”霍尔说。)
1950年中期,兰宁加入北极星导弹研发团队,他和巴廷一起开发了开创性的Q制导系统,大幅简化了导弹击中目标所需的计算工作。兰宁也是仪器实验室曾执行过的火星工程的一名工程师。兰宁在火星任务中做的计算机早期设计工作,即所谓的执行程序,使他对后来的阿波罗计划做出了突出贡献。
在特定时间内,飞船的制导计算机可能需要协调几十个不同的任务:重新定位雷达天线、读取雷达和加速器数、陀螺仪纠错、计算飞行轨道以及决定火箭的发射时间,更不用说还要向NASA地面控制台传输数据和向宇航员显示各种数据。然而,计算机的处理器只能一次执行一个任务,因此它不得不把每个任务分解成更小的次级任务,并在次级任务中间快速切换,创造出一种即时性假象。执行程序就是执行和监督任务的分配工作。
阿波罗任务程序员唐·艾尔斯(Don Eyles)解释说,在1960年代早期,执行程序使用的是矩形波串法(boxcar method),把以秒为单位的时间切分成较短的时间段,这些时间段就像一闪而过的火车车厢。一个计算任务被切分开来,分配到每个时间段中执行,当该时间段结束时。
这一决定引发了许多争议。通常情况下,投标商业公司有机会提交一份竞争提案,参与竞争。但仪器实验室是一个非盈利机构,不允许与商业公司展开竞争。NASA决定由MIT建造导航系统的同时,就否定了商业公司的加入。“我有很多申辩工作要做。”鲍勃·奇尔顿(Ob Chilton)(MIT48届毕业生,49届理学学士)必须尽快赶到NASA空间任务团队的飞行动力学分组,他回忆道, “所有商业公司都在表达愤怒与不满。”
NASA内部的MIT支持者有充足的理由。仪器实验室负责人查尔斯·斯塔克·德雷泊(Charles Stark Draper)是使用陀螺仪和加速度计来导航飞行器的先驱。1953年,德雷泊开发的导航系统驾驶一架飞机从波士顿郊外的汉斯科姆农场出发,后降落在了洛杉矶的一个9公里长的临时跑道上。
20世纪50年代中期,仪器实验室签约为美国军方制造几架弹道导弹的导航系统,其中包括北极星弹道导弹,其导航目标是使移动潜水艇中的北极星弹道导弹击中固定目标。为避免敌方无线电的干扰,该导弹的制导系统必须装备完全,不能接受任何来自外部的指挥。此制导系统在1960年接受测试时表现出色,使仪器实验室在华盛顿方面赢得荣誉。
仪器实验室在1957年前苏联人造卫星发射后不久开始的思辨研究也是与军方合同的一部分,当时实验室只用很少的经费取得了很大的研究成果,这一点又使其获得美国政府的青睐。实验室里几位才华横溢的思想者设计了对火星的无人探测飞行,计算出行星际旅行的飞行轨道,为通用的导航计算机设置了详细参数。在4年里,火星工程不断扩展,直到NASA兰利研究中心的研究人员也加入其中。当时的很多设计成果都可以应用到月球任务中。阿波罗工程肯定少不了仪器实验室的加入,因为正如阿波罗指挥舱和服务舱的NASA负责人亚伦·科恩(Aaron Cohen)回忆的那样——“我们想不出还有谁能胜任这项工作了。”
NASA要求实验室设计导航系统、控制系统,以及制导系统。阿波罗飞船的指挥舱和登月舱都要用到这些系统(指挥舱进入月球轨道并携带宇航员返回地球,登月舱与沿轨道运行的指挥舱分离并送宇航员到达月球表面)。导航系统负责飞船的当前位置,制导系统要保持飞行器不偏离轨道并负责航向修正,控制系统要保持飞船的正确速度和“姿态”——确保指挥舱舱头指向正确方向,或登月舱底部与月球表面保持平行。
阿波罗飞船的导航不必全程都依赖其船载系统:地球上的雷达可以追踪飞船,并且若无线电连接没有中断的话,地球上的任务控制台就能够指导航线的修正。但在登月过程中的关键时刻,根本无法保持无线电联络。长而弯曲的飞行轨道上离月球最近的点也是离地球最远的点,飞船在该点进入月球轨道开始部署登月舱——当然,此时地球上的追踪站已经无法看到飞船了。另外,在指挥舱返回地球到达地球大气层时,其下落过程中与空气的摩擦力会加热周围的空气,产生的大量离子会阻止任何无线电传输。
惯性测量单元或称IMU,是导航和控制系统的核心,由德雷伯博士发明。大体上说,IMU包含一个圆形外壳,直径约1.5英尺(约0.46米),内部有两个同心环包围着一个圆盘。外环通过两条铰链固定在外壳上,并围绕一个轴旋转;内环连接着外环,并绕一个垂直轴转动;内部的圆盘则绕一个与内环环绕轴垂直的轴转动。因此,整套设备能够在三个方位上自由运动。在惯性平台即圆盘上,还安装有三个加速度计和三个陀螺仪,也朝着三个不同方向分别排列。当IMU外壳开始转动时,陀螺仪就会记载其运动,发动机则会通过内外环的转动来保持惯性平台的稳定定位:可以想象一个端着一盘玻璃杯的侍者,无论他如何移动,哪怕是飞檐走壁,都必须保持玻璃杯与地面的平行。若惯性平台的定位可以保持完全稳定的话,加速度计的计算数据就能够通过参照IMU的初始位置来定位IMU在任何时点的位置。
但惯性平台无法保持完全稳定。为了能进行中途航线纠正,仪器实验室还设计了一个望远镜和一个六分仪,这两个设备的结合能够帮助飞船确定在太空中的位置。宇航员使用控制舱内控制台上的目镜能够定位三个地标,如地球、月球和射手座阿尔法星,然后宇航员只需按下按钮即可。船载计算机根据三个地标的角度就能够计算出飞行器的位置。
设计工程师们必须确保惯性测量单元和定位目镜提供的信息完全准确,还要将空间操作可能出现的反常问题考虑在内。几百名工程师都投入到了这项工作中。这项工作大部分都是对已有技术的进一步研发。但设计阿波罗制导计算机则是仪器实验室从未涉及过的领域。
硅应用的开端
在技术史上,1961年的头等大事或许不是肯尼迪总统宣布登月计划,而是成立四年之久的快捷半导体公司(Fairchild)发布了第一款投入商用的计算机芯片。作为集成电路的早期样本,该芯片将多种电子元件集成在了一个芯片上。
今天,当英特尔能在一块芯片上塞进10亿个晶体管时,集成电路的优点似乎已显而易见。但在1961年,情况与现在相距甚远。首先,当时的芯片塞不进10亿个晶体管,只能塞进3个。原则上说,比起由磁体及缠绕磁体的线圈两部分组成的磁芯晶体管,集成电路可以节约40%的空间。但集成电路也要消耗更多的电能,对于只有有限资源的飞船来说,这是个严重的缺点。另外,集成电路的大批量生产能否保证空间飞行要求的可靠性这一点,当时尚无法确定。NASA领导层最初决定,阿波罗航线计算机要使用更占空间的磁芯晶体管。
但1952年进入仪器实验室并负责航线计算机设计工作的埃尔登·霍尔(Eldon Hall)一直对集成电路的前景非常着迷。他没有听从NASA的安排,而是自设计之初就平行展开了两个设计工作:一方面设计使用磁芯晶体管的计算机,另一方面也设计使用集成电路的计算机。1962年秋,霍尔说, “显然,制造一台使用微逻辑的计算机更容易些。”集成电路的计算速度是磁芯晶体管的两倍,而对空间的节省也意味着计算机可以为内存电路省出更大的空间。另外,将集成电路用电缆连接起来相对更简单,导致错误的几率也更小。时值冬季,霍尔说服了NASA撤消与雷声公司(Raytheon)之间的航线计算机合同,在集成电路上赌一把。“我怎么哄骗NASA领导层让我使用集成电路的?我不需要哄骗他们,他们根本就不在乎,我可能做任何我想做的事。”NASA管理层关注的都是那些迫在眉睫的任务,比如1965-1966年的“双子座” 号飞行任务。当时他们只是不大关注我们而已。
以今天的标准而言,阿波罗计算机使用了一种很奇怪的构建方法:它只使用了一种类型的逻辑电路,即或非门。只有在收不到任何输入信号时,电路才会输出信号,这就是或非门的名字来源。比起或非门,另一种逻辑电路与门则更有效率。与门在收到所有输入方的信号时才会输出信号。当被问及阿波罗计算机为何如此依赖或非门芯片时,霍尔笑着说,“因为Fairchild只会做或非门芯片。”当霍尔和他的团队研发出一个可用的硬件设计后,他们就不会再选择研发更新的技术。而是与生产厂商密切合作,确保或非门的可靠性制造。
到执行阿波罗第一次飞行任务时,Fairctdld已经不再制造或非门芯片,转而更复杂的芯片架构,因此Philco成了逻辑电路的生产商。可靠性,曾经是集成电路的主要缺点,在当时已成为主要优点了。“那个时代的计算机总是出问题,隔段时间就必须检修一遍。”霍尔说。然而,在阿波罗的15次飞行任务中,制导计算机从未出现过硬件错误——起飞时遭到雷击的阿波罗-12也不例外。
到1966年,制导计算机的设计工作已基本完成,时间进度和惯性测量单元以及目镜的设计差不多。之后,仪器实验室便开始专注于软件设计方面,直到1968年阿波罗-8飞行任务终于将宇航员送上月球轨道。
开始时,没人能预料到这一点。在阿波罗项目的最初一段时间, “实验室差不多分成了两组。” 后来成为控制舱的软件设计负责人的弗雷德-马丁(Fred Martin)说到。其中一组设计硬件。另一组,即分析组,“解决如何到达月球,要进行哪些测量工作,何时启动发动机,飞行朝哪一方向,飞行轨道如何确定,以及出现错误如何补救。”当然,分析组的计算成果将最终应用于软件中,但方程设计工作被普遍看作是最吃力的。
然而到1960年代末,仪器实验室又招纳了400多名软件工程师。分析组负责人理查德·巴廷(Richard Battin)表示,软件设计工作还有一部分属于分包,因此还有其他200多名程序员也参与了这项工作。
巴廷说,没人能预见这项编程任务将面临什么困难,因为这项任务的规模实在太大了,前所未有过! “没人在软件方面有经验。事实上,软件这个词那时都不常用。”他说,“而且当时也没有计算机科学这个说法。”庆幸的是,计算机科学这门学问的诞生有仪表实验室的一个人的功劳。
孤僻的天才
“哈尔是我们曾经共事过的最卓越的天才。”丹·利克利(Dan Licldy)说。哈尔·兰宁(Hal Laning)是MIT40届毕业生、47届博士生,于1945年进入仪表实验室工作,当时是一名应用数学家。1950年早期,他写了一个名为“乔治”的程序,把代数式转换为计算机代码。这是人类可理解的符号和机器可理解的符号之间的一个中介程序。因此这是“所有编程语言的鼻祖”,比IBM的应用更广泛的Fortran语言还要早几年。“我进入实验室才几个月的时间,我们都琢磨着,哈尔到底在干什么?”巴廷说。当时,人们还在讨论机器解析高级语言指令的可能性。 “哈尔把自己锁在办公室里——突然之间,实现不了的却实现了。”巴廷说。 (阿波罗飞行模拟器使用的应用程序是乔治程序的下一代,是我们实验室自己研发的,叫做MAC——“比Fortran好用多了。”霍尔说。)
1950年中期,兰宁加入北极星导弹研发团队,他和巴廷一起开发了开创性的Q制导系统,大幅简化了导弹击中目标所需的计算工作。兰宁也是仪器实验室曾执行过的火星工程的一名工程师。兰宁在火星任务中做的计算机早期设计工作,即所谓的执行程序,使他对后来的阿波罗计划做出了突出贡献。
在特定时间内,飞船的制导计算机可能需要协调几十个不同的任务:重新定位雷达天线、读取雷达和加速器数、陀螺仪纠错、计算飞行轨道以及决定火箭的发射时间,更不用说还要向NASA地面控制台传输数据和向宇航员显示各种数据。然而,计算机的处理器只能一次执行一个任务,因此它不得不把每个任务分解成更小的次级任务,并在次级任务中间快速切换,创造出一种即时性假象。执行程序就是执行和监督任务的分配工作。
阿波罗任务程序员唐·艾尔斯(Don Eyles)解释说,在1960年代早期,执行程序使用的是矩形波串法(boxcar method),把以秒为单位的时间切分成较短的时间段,这些时间段就像一闪而过的火车车厢。一个计算任务被切分开来,分配到每个时间段中执行,当该时间段结束时。