18世纪,工业革命开始,法国纺织工人鲁修为便于转换纺织图样,在织布机上套上穿孔纸带,以此达到仅需手工进料的半自动化生产。1801年,法国人雅卡尔发明提花织布机,利用打孔卡控制织花图样,与前者不同的是,这部织布机变更连串的卡片,无须更动机械设计,堪称可编程化机器的里程碑。
1936年11月12日,阿兰·麦席森·图灵(Alan Mathison Turing;简称“阿兰·图灵”)发表了计算机理论的奠基性论文《论可计算数及其在判定问题中的应用》( On Computable Numbers , with Application to the Entscheidungs Problem )。在论文中,阿兰·图灵阐明了现代计算机理论,从理论上定义了现代通用计算机、可计算性等重要概念,故被认为是“计算机科学之父”(图1-1、图1-2)。
1945年6月,冯·诺依曼提出了在数字计算机内部的存储器中存放程序的概念(stored program concept),这是所有现代电子计算机的模板,被称为“冯·诺依曼结构”(图1-3),按这一结构设计的电脑称为存储程序计算机(stored program computer),又称为通用计算机。
在电子计算机的发展过程中,电子元器件的变更起到了决定性作用,它是计算机换代的主要标志,其发展过程划分为电子管、晶体管、集成电路以及大规模集成电路4个阶段,这4个阶段对应的计算机分别被称为第一代至第四代计算机。
图1-1 图灵机
图1-2 阿兰·图灵
图1-3 冯·诺依曼结构
1946年2月,美国宾夕法尼亚大学成功研制了世界上第一台电子管计算机——电子数字积分计算机(electronic numerical integrator and calculator,ENIAC;中文名“埃尼阿克”),这是美国奥伯丁武器试验场为了满足计算火炮弹道、编制设计表的需要于1943年6月与联邦政府签订10万美元的合同后而研制的。ENIAC完成后未能赶上第二次世界大战,但被洛斯阿拉莫斯(Los Alamos)国家实验室用于计算原子弹爆炸的突变问题,后来又曾被用于阿伯丁的空军试验场,一直运行到1955年10月才停止工作。ENIAC的诞生揭开了人类科技的新纪元,也是人们所称的第三次科技革命(信息革命)的开端。ENIAC和其研制者之一莫奇利如图1-4所示。
中国的计算机制造工业起步于20世纪50年代中期。1957年下半年,由中国科学院计算技术研究所和北京有线电厂(原738厂)在消化吸收的基础上正式开始了计算机的研制工作。1958年6月,该电子计算机安装调试,8月1日该机可以表演短程序运行,标志着中国第一台电子计算机诞生。为纪念这个日子,该机定名为八一型数字电子计算机,后改名为103型计算机(即DJS-1型)(图1-5)。
图1-4 世界上第一台电子管计算机ENIAC和其研制者之一莫奇利
图1-5 DJS-1型通用数字电子计算机
第一代电子计算机的一个特点是操作指令为特定任务而编制,每种机器有各自不同的机器语言,功能受到限制,速度也慢;另一个明显特征是使用真空电子管和磁鼓存储数据。机器的总体结构以运算器为中心。运算速度为每秒几千次到几万次,内存容量仅为1 000~4 000 byte(字节),主要用于军事和科学研究。
1948年7月1日,美国《纽约时报》用8个句子的篇幅,公布了贝尔实验室肖克莱、巴丁、布拉顿发明晶体管的消息。它就像8颗重磅炸弹,在电脑领域引发一场“晶体管革命”,电子计算机从此大步跨进第二代的门槛。1960年,出现了一些成功应用于商业领域、大学和政府部门的第二代计算机。代表机型为IBM公司的IBM 7090晶体管计算机(图1-6)和CDC公司的CDC 1604计算机。在这一时期出现了更高级的COBOL(common business oriented language)和FORTRAN(formula translator)等语言,它们以单词、语句和数学公式代替了二进制机器码,使计算机编程更容易。
图1-6 IBM 7090晶体管计算机
中国在研制第一代电子管计算机的同时,已开始研制晶体管计算机。我国第一台大型晶体管计算机(称为“109乙机”)从1958年起在中国科学院计算技术研究所开始酝酿启动。经过两年的努力,109厂就提供了机器所需的全部晶体管(109乙机共使用2万多只晶体管、3万多只二极管)。对109乙机加以改进后,两年后又推出“109丙机”。109丙机为用户运行了15年,有效算题时间10万h以上,在中国两弹试验中发挥了重要作用,被用户誉为“功勋机”。
第二代晶体管计算机的发明大大促进了计算机的发展,晶体管代替电子管,电子设备体积减小,但速度更快、功耗更低、性能更稳定。首先使用晶体管技术的是早期的超级计算机,主要用于原子科学的大量数据处理和企业商务。
第二代晶体管计算机中的晶体管比起电子管是一个明显的进步,但晶体管会产生大量热量,这会损害计算机内部的敏感部分。1958年发明的集成电路(integrated circuit,IC),将三种电子元件结合到一片小小的硅片上,使计算机体积更小、功耗更低、速度更快。十几个乃至数百个电子组件组成的逻辑电路已经可以创建在几平方毫米大的单晶硅片上,它们组成的小规模集成电路(small-scale integration,SSI)代替了分立组件。多道系统和分时系统于此时出现,它们成为操作系统诞生的标志。图1-7所示为IBM 360集成电路计算机。
图1-7 IBM360集成电路计算机
1965年,中国开始了第三代计算机的研制工作。1969年,为了支持石油勘探事业,北京大学承接了研制百万次集成电路数字电子计算机的任务。1973年年初,由北京大学、北京有线电厂和燃化部等有关单位共同研制成功中国第一台百万次集成电路电子计算机(称为“150机”),该机字长数48位,每秒运算100万次,主内存130KB(图1-8)。150机主要用于石油、地质、气象和军事部门。
图1-8 中国第一台百万次集成电路电子计算机
第三代计算机的速度提升至每秒百万次量级,体积变小、速度变快、能耗减少、价格降低、可靠性变强,软件逐渐完善。主要元件采用小规模集成电路和中规模集成电路,开始采用性能优良的半导体存储器。运算速度提高到每秒几十万次到几百万次。计算机的发展速度变得极为迅猛,计算机也开始进入日常的办公与学习之中。
在第三代计算机应用集成电路后,计算机处理器唯一的发展方向是扩大规模。到了20世纪80年代,超大规模集成电路(very large-scale integration,VLSI)在芯片上容纳了几十万个元件,后来的甚大规模集成电路(ultra large-scale integration,ULSI)将数字扩充到百万级,成为第四代计算机发展的基石。20世纪70年代中期,国外计算机制造商开始将计算机带给普通消费者。1981年,IBM公司推出个人计算机(personal computer,PC),用于家庭、办公室和学校。20世纪80年代个人计算机的竞争使得价格不断下跌,与IBM PC竞争的Apple Macintosh系列于1984年推出,Macintosh提供了友好的图形界面,用户可以用鼠标方便地进行操作。IBM PC、Apple Macintosh分别如图1-9、图1-10所示。
图1-9 IBMPC
图1-10 AppleMacintosh
和国外一样,中国第四代计算机研制是从微机开始的。1980年年初中国不少单位开始采用Z80、X86和M6800芯片研制微机。1997年国防科技大学研制成功银河-Ⅲ百亿次并行巨型计算机系统,其采用可扩展分布共享存储并行处理体系结构,由130多个处理结点组成,峰值性能为每秒130亿次浮点运算,系统综合技术达到20世纪90年代中期国际先进水平。2004年上半年推出每秒浮点运算速度1万亿次的曙光4000L超级服务器(图1-11)。
计算机发明自20世纪40年代,经过几十年的发展,它已经成为一门复杂的工程技术学科。从ENIAC揭开计算机时代的序幕,到IBM PC成为迎来计算机时代的宠儿,不难看出这里发生了两个根本性的变化:一是计算机已从实验室大步走向社会,正式成为商品交付客户使用;二是计算机已从单纯的军事用途进入公众的数据处理领域。计算机的应用从国防、科学计算到家庭办公、教育娱乐,无所不在。
图1-11 曙光4000L超级服务器
1977年,随着“旅行者”号(1号和2号)的成功发射,第一代数字星载计算机正式被用于卫星探测器中。由于相机的数据速率很高,因此“旅行者”号携带一台名为“飞行数据子系统”(flight data subsystem,FDS)的星载计算机,专门负责载荷数据处理和相机的控制。
集中式星载计算机最早是美国国家航空航天局(National Aeronautics and Space Administration,NASA)为满足其火星探测器任务需求提出并实现的。NASA最早在其火星探测器“索杰纳”(Sojouner)和地面原理样机“探路者”(Pathfinder)中使用了集中式星载计算机技术。“索杰纳”中仅用两块板实现了探测器所有的信息处理以及二次电源的能源分配;“探路者”采用集中式星载计算机系统,将姿轨控系统和数管系统合为一个系统,并集成了遥测、遥控和能源分配等功能。“探路者”中星载计算机的应用,为2003年发射的“机遇”(opportunity,MER-B)号和“勇气”(spirit,MER-A)号火星车星载计算机的成功应用奠定了良好的基础。集中式星载计算机使用RAD 6000作为核心处理器,完成遥控、遥测、路径规划、自主导航、电机控制、图像采集和载荷管理等任务。集中式星载计算机技术在“机遇”号和“勇气”号火星车上的成功应用及其巨大优势使得NASA大受鼓舞,NASA后续准备发射的火星采样返回探测器MSR、火星生物试验室巡视器AFL21都无一例外地采用了集中式星载计算机技术。
除了深空探测器外,NASA还在其他多颗卫星平台中推广应用了集中式星载计算机技术。新千年计划的首发星ST53使用了集中式电子系统,并于2006年成功发射。2009年发射的月球卫星LRO4也采用了高性能、模块化的集中式星载计算机系统,该系统主要负责上行指令的接收与处理、导航控制、载荷数据采集和遥测数据下传等任务。
2018年11月26日,经过6个月的火星之旅,由美国洛克希德·马丁(LockheedMartin,简称“洛马”)公司与美国宇航局喷气推进实验室合作建造的“洞察”号火星探测器降落在火星上。“洞察”号火星着陆器将开展地震调查、大地测量学和热传输的勘探,其配备了BAE系统公司RAD 750单板计算机。这是第八次火星任务,由BAE系统公司的高可靠性辐射加固电子产品系列实现。
2019年3月,洛马公司公开了其开发多年的软件定义卫星技术架构——SmartSat,并表示正在研制采用该软件定义技术架构的微纳卫星,以改变传统卫星发射后就无法改变其能力的现状。
欧洲航天局(European Space Agency,ESA)近年来发射的多颗卫星中也大量使用了集中式星载计算机技术。2001年发射的PROBA系列小卫星首发星PROBA-1,实现了姿轨控分系统和数管分系统的综合;2005年发射的SpaceBUS40006,采用卫星管理单元,完成了姿轨控、能源、有效载荷、热控、遥控、遥测、展开机构、太阳帆板驱动机构等任务和设备的管理;2005年发射的ESA探月首发星SMART-1,由中心计算机实现星务管理、姿轨控、载荷管理,设置遥测遥控等远置单元实现遥控接收与指令、遥测下行以及接口数据采集;2006年发射的大气变化观测卫星Aeolus,采用由Saab Ericsson开发的卫星管理单元,集中实现星务、姿轨控、遥测遥控、二次配电、载荷数据采集与管理;2009年发射的PROBA系列小卫星第二发星PROBA-2,在PROBA-1的基础上通过采用ESA下一代空间处理器AT697,进一步实现了数管、控制、配电、载荷管理等电子线路的综合,电子线路质量由PROBA-1的15.8 kg降低到13.3 kg,功耗也从23.3 W减小到19.7 W,载荷比由30%提高到40%。
在嵌入式操作系统领域,国外已经进行了多年的研究与应用,有许多商业产品投入实际应用,如WindRiver公司的VxWorks、QNX软件系统公司的QNX、BekTek公司的SCOS(Spacecraft Operating System)、MicroSoft公司的Windows CE内核;同时,开源产品中也出现了较多优秀的嵌入式操作系统成果,如RTEMS、ThreadX等。国外典型星载计算机发射汇总见表1-1。
表1-1 国外典型星载计算机发射汇总
续表
国内星载计算机采用独立计算机架构的典型卫星为中国航天科技集团公司上海航天技术研究院风云一号C星、D星,它们也是国内最早应用具备抗辐射抗核性能的1750处理器的卫星。其中,风云一号C星设计寿命2年,由于采取了一系列有效的技术措施,其产品质量、对空间环境影响的适应性和系统可靠性都得到较大提高,稳定工作并超期服役了近5年。
国内集中式星载计算机技术起步较晚。2003年10月,由中国科学院小卫星工程部研制的创新一号小卫星作为我国第一颗自主研发的微小卫星顺利升空。星载计算机作为创新一号小卫星的重要组成部分,集数管遥测遥控与姿轨控于一体,是高性能、高功能集成、高可靠、长寿命的星载计算机。
2006年,为满足我国月球探测工程二期中月面巡视器的需要,中国空间技术研究院开始展开集中式星载计算机技术的预先研究工作。经过几年的攻关,该研究成果已成功应用于月面巡视器中,并随其于2013年成功发射入轨,各项指标满足型号任务需求。
为适应中国空间技术发展需求,北京控制工程研究所研制生产了长寿命、高性能、高可靠的32位星载控制计算机,其具备强大的容错能力和完善的可靠性设计,在2006年10月首飞成功。目前,32位星载控制计算机已成功应用于国产通信、导航、探月、遥感、空间站、载人飞船和各类小卫星等多种空间飞行器,应用该计算机的在轨卫星已达46颗。同时,为该计算机配套研制的SpaceOS,除应用到上述卫星控制计算机外,还应用到中国空间技术研究院西安分院,中国电子科技集团公司54所、27所等单位的有效载荷上。32位星载控制计算机控制神舟九号完成与天宫一号的交会对接,控制嫦娥一号实现首次绕月飞行,控制嫦娥二号实现对小行星的探测,控制北斗二号星座实现导航和授时服务,控制遥感卫星实现对地观测,控制小卫星星座实现卫星编队飞行。上述卫星中,控制计算机最长已在轨正常工作7年,创造了显著的社会效益和经济效益。
32位星载控制计算机的高可靠长寿命设计、高速控制计算机设计技术的突破、自主知识产权实时多任务操作系统和星载软件的可靠性保证技术是主要的技术进步点。该项研究探索出一条卫星星载计算机长寿命、高可靠设计的思路;研制出基于TSC695F的星载计算机系列产品,并在星载计算机设计上不断深入;实现了占用资源少、实时性好、适用于空间环境,并充分利用SPARC体系结构CPU的TRAP机制开发了自主知识产权的实时多任务操作系统;摸索出星载软件可靠性设计的另类途径,并具有很强的推广应用价值。通过32位星载控制计算机的研制,我国的星载计算机完成了从16位机到32位机的跨越,实现了长寿命、高精度和高稳定度控制,取得了长足的进步。
在星载计算机单机软件领域,受限于处理器的性能和早期编译器的限制,早期的星载计算机软件采用汇编语言编程,例如16位计算机指令集架构(instruction set architecture,ISA)的1750汇编、SPARC汇编;后期则逐渐采用高级语言编程,例如Ada语言、C语言、图形化自动编程。对部分处理性能要求高的功能代码,通常采用高级语言内嵌汇编语言的方式编程。
在嵌入式操作系统领域,虽然我国基础薄弱、起步较晚,但是在我国对于航天器嵌入式操作系统“自主可控、信息安全”要求逐渐深化的背景下以及“核高基”专项、预研课题及用户应用需求的推动下,国内航天领域涌现出了多个嵌入式操作系统产品。主要嵌入式操作系统厂商及产品包括翼辉信息SylixOS、科银京成道系统、航空631所天脉1和天脉2、神舟软件神舟OS、航天706所天熠OS、中电32所锐华OS、航天12所战星和战旗、航天502所SpaceOS、航天771所九天OS、船舶716所JARIWorks、航空618所自研自用系统等。
我国星载计算机传统的设计方法主要是凭经验,先进的设计仿真和电子设计自动化(electronic design automation,EDA)技术刚刚起步不久,应用还不普及。传统的设计和实现方法难于进一步减小体积、重量,难于进一步提高可靠性和环境适应性。因此,我国星载计算机的可靠性设计亟待加强。国内典型星载计算机发射汇总见表1-2。
表1-2 国内典型星载计算机发射汇总
星载计算机系统是计算机技术在空间环境下的应用,负责完成空间飞行器的控制和数据处理任务。空间环境的恶劣条件,对星载计算机系统在性能、可靠性和成本上提出了巨大的挑战。在高昂的研究与制造费用、有限的硬件资源下,要确保海量数据处理的高可靠性,是一项困难又关键的任务。设计一个高速、可靠并且在成本上可接受的星载计算机体系架构,对于宇宙科学探索及完成预定科学任务具有重大意义。随着近年来的蓬勃发展,星载计算机经历了从分布式到集中式的发展。
传统卫星电子系统总体设计,还处于分系统(如测控分系统、数管分系统、总体电路分系统、姿轨控分系统等)分解功能指标、各分系统独立设计、通过功能模块的叠加来实现型号任务阶段。此阶段的星载计算机为分布式架构,只负责星上资源、运行状态、数据信息的统一协调管理和调度。典型处理器为具备抗辐射抗核性能的1750,中国航天科技集团八院的风云一号C星、D星是最早应用此芯片的卫星。分布式计算机功能划分清晰,但系统功能密度低、总体技术水平和平台性能不高。因此,分布式计算机后续被集成度更高、性能更强、通用化程度更高的集中式星载计算机替代。
随着星载计算机的发展,以及载荷对卫星平台能力的要求不断提高,中国航天科技集团五院、八院及相关高校、科研院所均提出集中式的集成化、模块化及通用化的集中式星载计算机系统概念,并在一些型号上设计应用。集中式星载计算机系统由一台管理单元和若干扩展单元组成,可实现卫星测控、数管、姿轨控、推进器控制、能源管理、热控和太阳电池阵驱动等功能。其特点有二:一是系统架构基于串行通信协议,可实现卫星测控、数管、姿轨控、热控等功能;二是模块标准和接口统一,功能可配置。系统架构由基础的功能模块构成,功能模块具备特定功能,由软件配置项选配实现,具备一定的自治能力,对内采用统一的供电和数字通信接口,对外提供与功能对应的标准服务接口。另外,为保证集中式星载计算机产品快速研制交付、质量稳定可靠,上海航天某研究所还形成模块货架化、测试通用化的集中式星载计算机型谱单机。