固件工程

生物科学2023-02-02 16:14:18百科

固件工程

用工程方法研制和维护固件(微程序)的过程和有关技术。固件工程包括固件的需求定义、设计和实现,以及测试维护的理论、方法和工具。固件工程是把软件工程的概念、理论和经验运用于微程序设计。固件工程和软件工程的不同,不在于工程方法而在于形式化模型。固件与硬件的关系比软件与硬件的关系密切得多;固件的形式化模型与实现微指令的微程序硬件密切相关。固件工程要求微程序硬件应是规整的和易于描述的,能把固件和软件有机地联系成一个整体,并使二者具有公共术语。

随着器件价格的持续下降,微程序存储器(控存)容量显著扩大,可写微程序存储器已被普遍采用。从微型机直至大型机都已使用了微程序技术,其应用范围已从实现机器指令系统扩展到由软件实现的功能,如操作系统部分功能的固化实现等。这就需要在微程序设计中采用固件工程,即引用软件工程的理论、概念和技术以提高微程序设计的质量和数量,提高其生产率,使微程序便宜、可靠和效率高,并易编、易读和易于维护。

基本内容

固件工程主要包括:微程序的需求定义和说明;微程序的设计和实现;微程序的测试、排错和验证;微程序的维护等。固件开发环境远远落后于软件开发环境,实用的微程序高级语言和测试、调试工具尚都缺乏,因此其主要研究内容是微程序设计语言、微程序优化、微程序设计支持系统、微程序验证和微程序迁移等。

微程序设计语言

程序设计语言的已有成果不能简单地移植于微程序设计,因为微程序设计有下列特点:

(1)对固件的效率要求比对软件高得多。机器指令系统由微程序实现,而软件最终是要映射、变换成机器语言程序的。微程序的效率对软件的效率有根本性的影响。如果微程序设计语言效率低,就没有使用价值。因此,在微程序的优化问题未解决之前,微程序高级语言就很难得到应用。而程序设计高级语言的优化技术是在高级语言得到比较广泛的应用之后才发展、完善起来的。

(2)微程序是直接控制硬件的,而其硬件的并行性日益增强。因此,微指令的构成一般远比机器指令复杂,微操作的并行性甚至可能比多处理机的并行性还复杂,而且不同机器的并行状况又差别较大,这就使得微指令码的生成比高级语言程序的代码生成复杂得多。

(3)微程序硬件的多样性(主要指微操作语义、微指令时间关系和数据通路结构的多样性)和多变性给微程序高级语言的设计带来困难,在编译系统的设计中至今还难于使微程序象软件那样运行于抽象机器。

就微程序设计语言和程序设计语言的关系来看,可以把前者看成是后者和硬件描述语言的合成。

微程序汇编语言

微程序设计语言迄今主要仍使用微程序汇编语言。当然,所用的都是交叉汇编而且汇编系统几乎都用高级语言编写。为了采用微程序汇编语言,微程序设计者必须按复杂且并行性强的微程序硬件的具体细节来设计,生产率很低。因此,为扩大微程序应用领域和提高微程序设计效率必须发展微程序高级语言。

微程序高级语言

要求按实现机器指令系统和部分系统软件功能的需要来设计。微程序高级语言应是通用的、与机器无关的,又能高效和充分利用微程序硬件的并行资源。这一任务不能只由微编译系统来承担,还需要由微程序设计者来承担其中一部分。这一点与高级语言程序设计有所不同。

与微程序硬件有关的信息应使用与机器无关的微程序高级语言来说明和描述。如何识别并在编译过程的哪一个阶段把微程序高级语言程序中的操作,或一串操作映射到相应微程序硬件资源中,是设计微程序设计语言及其编译系统的关键。

微程序高级语言尚处于初步探索阶段,按某一种机器设计的微程序高级语言程序还很难运用于另一种机器。因此,研究微程序设计语言的最主要目的是提高微程序设计的效率和生产率。

微程序优化

在微程序高级语言源程序的编译过程中,在经过词法、语法分析和传统的编译优化之后,如何把所得到的顺序微操作序列装配到水平型微指令序列中去,使得装配后的执行时间最短,所占用的微程序存储器空间最小,这是微程序高级语言编译系统设计的关键。微程序语言与程序设计语言在编译系统的主要差别在于代码的生成。水平微程序的微代码生成模型比高级语言程序复杂得多。在实际工作中难以达到最优,只能达到近乎最优。

已有的优化是以识别可并行的多个微操作,并把它们装配入条数尽可能少的水平型微指令(见微程序设计)为主要过程和基本特征的。这种优化实质上是目标微程序在长度上的压缩,所以又称为微程序压缩。它的困难有二,其一是如何用通用的格式来描述微操作,以使采用这种描述的算法与微程序的硬件结构无关;其二是算法的复杂性问题。只在一个直线微程序段(指此段只有一个入口和一个出口)内的微程序压缩(称局部压缩或局部优化)就已经十分复杂,超出直线段,对整个微程序的压缩(称全局压缩或全局优化)不但包含局部压缩中的问题,而且还有如何识别全局可并行的微操作,以及在执行时间和所需微程序存储器空间之间进行权衡等问题。

微程序设计支持系统

它的主要任务是提高微程序设计的生产率。微程序出错往往影响全局,因而对微程序正确性的要求比对软件高,加之微程序几乎都是非结构式的,修改某个错误可能引起另一个错误。通过微程序设计支持系统,尽可能严格地对微程序进行测试(发现错误)和排错(改正错误)是十分必要的。

支持系统的核心是模拟和调试程序。模拟程序的主要作用是通过微程序的模拟运行发现设计错误,提供评价微程序和微程序硬件的数据。为此,模拟程序应能够真实地描述微程序硬件,尤其是其并行性;它应具有跟踪能力,并提供所需的示踪变量,这是查错的主要手段;它应能提供评价用的数据,还应具有可修改性。调试程序应能跟踪所选的机器状态,能在任意点上停止或启动,能进行定时控制;应有丰富、灵活的调试、跟踪命令,以便能准确、迅速地发现微程序的出错位置。

微程序验证

程序测试只能说明存在错误,但不能证明无错。因此,微程序的正确性证明,即微程序验证,和程序的正确性证明一样重要。微程序的正确性证明比程序的正确性证明容易实现。因为,相对来说微程序总是比较小,而且微指令的入、出关系和对微程序状态的改变都比较简单。这里,结构式微程序设计同样是微程序验证的必要条件。

微程序验证工作还处于探索阶段,采用的方法有归纳断言法、符号执行法、程序状态等效法和关系代数法等,都还限于不考虑时间关系的顺序型。

微程序迁移

通过微程序技术实现计算机系统功能的垂直和水平迁移。垂直迁移是指计算机系统所需功能的实现由计算机层次系统的其他级移入微程序级,以缩小语义差距(见计算机系统结构);水平迁移是指把在中央处理器上实现的功能分散到多个通用处理机,或是移到专用处理机上实现。

垂直迁移能更好地利用微程序硬件所提供的并行性和访问微程序存储器的速度快等特性,其目的是提高计算机系统性能,增加安全性和厂家的保密需要等。对于微程序控制机器来说并不是垂直迁移越多越好。处理不当,资源争用反而会使性能下降。这需要进行理论分析。把垂直迁移所带来的性能提高与设计复杂性和可维护性结合起来考虑。

水平迁移应尽可能对用户是透明的,宜于水平迁移的功能可以有数据收集、数据保密、微诊断以及为用户提供更好的使用界面和提高计算机系统可靠性等。

在微程序迁移中需要引用软件工程技术,如模块化、数据抽象、封闭性、尽量少的显式连结和明确定义的界面等,还需要有支持迁移全过程的工具,包括基元操作使用频度分析,软、硬件系统描述,实现与评价支持,测试与验证辅助等。

本文标签: 固件工程  gujiangongcheng  

相关推荐

猜你喜欢

大家正在看