8.1.2 星载计算机软件的发展

8.1.2 星载计算机软件的发展

8.1.2.1 单机软件技术的发展

受限于处理器的性能和早期编译器的性能,早期的星载计算机软件通常采用汇编语言编程,如1750汇编编程和SPARC汇编编程等。由于汇编语言存在难以阅读及维护,与处理器硬件资源耦合度较高、可移植性差等缺点,高级编程语言随之应运而生。高级编程语言通过编译器进行翻译,实现了对处理器硬件资源的抽象,使软件编程语言更接近人类的自然语言,易于开发和阅读,可移植性较高,因此得到了广泛、迅速的发展。目前的星载计算机软件已普遍采用高级语言编程。

1)1750汇编编程

MIL-STD-1750A(简称“1750A”)是16位计算机指令集架构,除了核心ISA之外,还定义了可选指令,例如FPU和MMU。1750A支持核心标准的216个16位字存储器。该标准定义了一个可选的存储器管理单元,它允许220个16位字的存储器使用512个页面映射寄存器(在I/O空间中),定义单独的指令和数据空间,以及键控存储器访问控制。

1750A计算机具有16位和32位二进制算术的指令,以及32位和48位浮点。I/O通常通过I/O指令(XIO和VIO),它们具有单独的216个16位字地址空间,并且可能具有专用总线。

2)SPARC汇编编程

SPARC已经逐渐发展成为一个开放的标准。SPARC处理器架构具备精简指令集(RISC)、支持32位/64位指令精度、架构运行稳定、可扩展性优良、体系标准开放等特点。SPARC因此得以迅速发展壮大。SPARC V7/V8是目前嵌入式控制系统常用的处理器标准版本,并在航天设备的电子系统中得到广泛应用。

SUN公司在1985年发布的SPARC V7是世界上第一个32位可扩展处理器架构标准,它基于加州大学伯克利分校关于RISC微处理器项目的研究成果,如寄存器窗口结构。1990年,SPARC International发布了32位SPARC V8架构标准。它在SPARC V7的基础上增加了乘法和除法指令,加速乘除法的处理使得用户不必使用子程序完成相同操作。为了在21世纪微处理器发展上仍具有竞争性,SPARC International在1994年发布了64位SPARC V9架构标准。相比SPARC V8,这一版本的显著变化在于:数据和地址的位宽由32位变到64位,支持超标量微处理器的实现,支持容错及多层嵌套陷阱,具有超快速陷阱处理及上下文切换能力。

目前使用较为广泛的SPARC系列处理器主要包括SPARC V7(TSC695)、SPARC V8(AT697、S698PM、BM3803、BM3823)等。

3)高级语言编程

基于MIL-STD-1750A的处理器通常用JOVIAL语言编程,JOVIAL是由美国国防部定义的高级编程语言,源自ALGOL58在较小程度上使用了Ada语言。目前在星载计算机软件开发中应用最广泛的高级编程语言主要包括Ada语言和C语言等。

(1)Ada语言。为一种表现能力很强的通用程序设计语言,是美国国防部为克服软件开发危机,耗费巨资历时近20年研制成功的。它被誉为第四代计算机语言的成功代表。与其他流行的程序设计语言不同,它不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。因此,Ada语言的使用可大大改善软件系统的清晰性、可靠性、有效性和可维护性。

从一定意义上说,Ada还打破了“冯·诺依曼思维模式”(Von Neumann Mind-set)的桎梏,连同Ada语言的支持环境(APSE)一起,形成新一派的所谓Ada语言文化。它是迄今为止最复杂、最完备的软件工具。Ada语言是美国国防部指定的唯一一种可用于军用系统开发的语言,中国军方也将Ada语言作为军内开发标准。

(2)C语言。为一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层软件开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言,以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但是仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器及超级计算机等作业平台的许多计算机平台上进行编译。

8.1.2.2 单机软件到操作系统的演变

随着高性能、多核处理器技术和卫星应用需求的不断发展,在星载计算机系统平台化、型谱化、标准化基础上,采用信息化、网络化设计思想,星载计算机已逐渐往开放式信息系统架构、网络化互连、信息化交互、虚拟化资源、标准化服务、通用化终端和智能化操控等方向发展。

随着星载计算机硬件的集成度越来越高,传统模式开发的软件越来越复杂,传统的单机软件开发模式已不能满足要求,主要不足表现为:管理软件和应用软件需要联合编译和调试,软件之间的耦合性较高;软件与硬件平台相关,导致代码复用率低、可移植性较差;为了保证软件质量和可靠性,软件研制周期较长、效率偏低、成本巨大,无法适应当前快速装备的要求。

因此,为了满足星载计算机软件开发需要,大型复杂的星载计算机系统逐渐开始考虑基于操作系统进行软件开发设计。

操作系统具有以下四大基本特征:

(1)并发。操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它应该具有处理和调度多个程序同时执行的能力。

(2)共享。它是指系统中的资源(硬件资源和信息资源)可以被多个并发执行的程序共同使用,而不是被其中一个独占。资源共享有两种方式:互斥访问和同时访问。

(3)异步。在多任务环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是来回切换,各进程以不可预知的速度向前推进,这就是进程的异步性。

(4)虚拟。虚拟性是一种管理技术,把物理上的一个实体变成逻辑上的多个对应物,或者把物理上的多个实体变成逻辑上的一个对应物的技术。采用虚拟技术的目的是为用户提供易于使用、方便高效的操作环境。

通过操作系统对硬件资源进行管理和任务调度,可以屏蔽硬件差异,实现硬件对软件的透明,便于应用软件开发移植,优化资源利用。因此,发展星载嵌入式操作系统已受到航天科研院所及操作系统研发单位的高度重视,并得到了一定的发展和应用。