前言:想要写出一篇引人入胜的文章?我们特意为您整理了飞控计算机实时性与优化方法分析范文,希望能给你带来灵感和参考,敬请阅读。
摘要:飞控计算机必须及时将飞行员的飞行控制信息传递给飞行控制,以控制飞行中的飞机,因此时间是飞控计算机定义的重要组成部分。分析了飞控计算机的实时性标准,研究了基于硬件辅助、纯软件的性能分析方法的利弊,提出结合使用源代码工具和硬件数据收集来实现高精准性能分析方法。根据分析信息,识别出飞控计算机实时性中的“短板”,提出性能分析和算法改进、代码对接这两种优化方法的应用。
关键词:飞控计算机;实时性标准;实时性分析;实时性优化
引言
飞控计算机作为飞行控制系统中的核心部件,主要负责接收信息、控制律计算、生成伺服系统控制指令等功能。如果飞控计算机在几微秒内未响应飞行员的命令,则飞机可能发生灾难性的故障。因此时间是飞控计算机定义的重要组成部分。本文旨在基于软件性能分析技术研究飞控计算机的实时性问题和相关的解决方案,并研究了如何利用软件性能工程原理将性能构建到飞控计算机的应用程序中,以提高飞控计算机的实时性。
1飞控计算机的实时性标准
飞控计算机的实时性并不意味着如光一样的快,实时性性能标准仅仅是其定义的关键部分,以至于当不满足这些性能标准时,就认为该飞控计算机已发生故障。其定义包括诸如“应比其前代产品快两倍的速度”或“将尽可能快地处理传入消息”的性能标准不属于飞控计算机的实时性标准。此处的性能标准过于主观,无法获得任何实时目标的可信度。飞控计算机的性能标准更可能定义为“飞行员输入与飞行控制面完全运动之间的响应时间应不少于16ms,并且不应超过20ms”,在此定义中,明确规定了衡量实时性能成功的标准。飞控计算机实时性定义通常还明确如果不满足这些目标,则需要哪种类型的故障纠正。大多数实时系统存在于环境对其施加性能标准的世界中,这些标准可能由物理或逻辑约束条件确定。飞控计算机的实时性由物理约束确定:其必须及时将飞行员的飞行控制信息传递给飞行控制,以控制飞行中的飞机[1]。飞控计算机的运行环境及其相互作用的速率决定了飞控计算机的实时性标准。
2飞控计算机实时性构建
飞控计算机的性能目标为必须及时将飞行员的飞行控制信息传递给飞行控制系统,以控制飞行中的飞机。飞控计算机硬件和软件各有分工,其硬件平台在实现数据收发、提供计算资源等的基本功能外,还采用冗余架构保证飞控计算机的可靠性和安全性。飞控计算机软件实现数据处理、数据融合、控制律计算、控制指令生成等功能。由于功能分工和软件与环境交互的紧密相关性,飞控计算机的实时性要求主要体现在软件上。因此为构建飞控计算机的实时性,提升飞控计算机软件实时性显得至关重要。通常有两种方法可实现软件性能。第一种是从一开始就在软件中建立性能;另一种方法是在功能正确的情况下分析代码的性能以进行所需的改进。飞控计算机软件实时性构建一般采用软件性能工程方法,软件性能工程(SPE)是一种用于构建软件系统以满足系统性能目标的方法。飞控计算机软件性能是指飞行员看到飞行控制信息的响应时间。SPE贯穿软件的整个生命周期。SPE成功的关键是准确分析飞控计算机软件性能的能力。
3飞控计算机软件性能分析
3.1软件性能指标
在考虑分析软件性能的方式之前,重要的是要考虑获取软件性能指标的类型及其含义。软件性能分析标准[2]如下:1)性能分析,这是一种确定系统每个功能的时间消耗的方法基础。这使开发人员可以识别问题区域,并专注于问题部分优化,以获得最大收益。2)A-B时间,这是一种分析代码中的一个指定点到另一个指定点所花费时间的方法。外部事件响应是一种分析外部事件发生与软件对该事件做出的响应之间的时间(例如:中断等待时间)的方法。3)实时操作系统(RTOS)任务性能,此分析分为两类———任务截止时间性能分析和任务分析性能分析,任务截止时间性能分析与触发事件发生后多任务应用程序中的每个任务达到其截止时间所花费的时间有关,任务分析记录了系统在逐个任务的基础上花费时间。
3.2硬件辅助软件性能分析
硬件辅助技术是指通常采用逻辑分析仪和在线仿真工具等硬件工具进行软件分析。逻辑分析仪通过直接连接到CPU总线,可捕获处理器用于从RAM加载程序信息的指令提取周期序列,从而获取软件执行轨迹信息。因此,可在代码中的各个点之间进行精确的点对点时序分析,也可分析外部事件发生与系统响应之间的时间间隔。在线仿真工具的线跟踪功能使用户可以逐条指令见证其代码在做什么。由于在线仿真器能够在逐条指令的基础上模仿全速CPU的执行,因此可以将非常准确的时序信息添加到总线跟踪信息中,从而可以在代码中的点之间进行点对点的时序分析。由于逻辑分析仪和在线仿真工具都依赖于能够查看外部总线流量的因素,因此,它们都对基于缓存CPU的软件性能分析是无效的。CPU由于只有在启用缓存使用之后才能获得最佳软件性能,因此情况变得更为恶劣。此外,这些工具的局限性在于它们对性能分析(即确定系统将时间花在每个功能上的位置)几乎没有作用。当使用RTOS时,由于每个功能的任务环境对于定时分析的准确性也至关重要,因此这个问题会进一步加剧。
3.3纯软件性能分析
用于性能分析的纯软件技术包括堆栈采样工具、代码检测和软件数据捕获技术。堆栈采样工具通过对CPU堆栈进行定期快照来工作。根据这些信息,设计人员可以确定系统在哪个功能上花费的时间。这种方法的主要缺点是,由于仅对堆栈进行采样,因此不可能看到在给定分析周期内发生的所有函数调用。这意味着某些功能,尤其是那些执行时间极短的功能,永远不会出现在分析结果中。在存在RTOS的情况下,由于每个任务都维持自己的堆栈上下文,因此堆栈采样将成倍增加。这意味着除了内容之外,还必须监控堆栈的上下文。为了解决在性能分析过程中缺少某些功能活动的问题,常使用代码工具和软件辅助的数据收集方法。该类别中基本上有两种方法:一种在目标代码上(即在编译后)添加检测,而另一种在源代码级别上添加检测。目标代码检测解析由编译器生成的目标文件,并在代码的显著点(例如,函数入口和出口)处添加其他指令。与所有检测技术一样,在代码执行期间,这些附件指令将数据发送到数据收集,然后数据收集对其进行处理以获得配置信息[3]。源代码检测是一个类似的过程,但检测过程是在编译之前发生的。与硬件辅助分析技术不同,软件数据收集无法访问高分辨率计时器,因此纯软件性能分析技术的分辨率比任何硬件辅助方法都低。软件数据收集需要对发送给它们的数据进行大量处理。此处理包括时间戳记、缓冲和目标数据的传输。由于此处理是正在开发的应用程序的正常操作之外的附加功能,因此软件数据收集具有固有的引入性。引入了更多的不准确性,进一步增大了误差。由于这些技术的低分辨率和引入性,因此无法将其用于验证实时系统的性能。充其量来说,使用这些方法产生的信息仅可认为有代表性。
3.4源代码检测和硬件辅助性能分析
源代码检测和硬件辅助性能分析结合了上述硬件辅助方法和纯软件方法的优点。在这种方法中,源代码检测与硬件数据收集结合使用。使用这种技术,可以在大多数CPU(包括基于缓存的处理器)上进行高精度的分析(与硬件辅助技术分析相比),且引入最少。这种检测方法应用于代码编译期间。在检测过程中,将语句添加到代码中的显著点,例如函数入口和出口。由于要求将标签写入的存储位置在芯片外,因此这种用于分析软件性能的方法允许在基于缓存的CPU上进行时序分析,且应用程序可在给定CPU下以最大可能的速度运行[4]。与使用硬件辅助分析技术不同,对可以收集应用程序性能指标的时段没有限制。这意味着可以收集涵盖较长时间段的性能统计信息,从而可以了解系统随时间变化的真实性能特征。同样,尽管硬件辅助分析技术提供的时序分析仅限于A-B时间分析,但是也可以使用源代码工具和硬件数据收集方法来分析性能,以进行性能分析。此方法具有一定引入性,但是所施加的开销最小且可管理。例如,进行性能分析所需的最基本仪器是具有单个开始标签和单个结束标签。每个标签都相当于少量汇编指令(实际数量取决于所使用的CPU),因此引入影响非常低。
4优化实时系统的软件性能
4.1性能分析和算法优化
性能分析是对每个功能进行性能分析。使用从这些分析产生的信息,可以知道系统在哪里花费时间。使用此信息和方法的目的不是提高系统中每个功能的性能,相反,是确定将精力集中在哪些功能上以实现最大的性能优化。优化可以采取几种形式,从算法改进到重写和使用更有效的自定义版本替换标准库调用。性能分析的主要好处是可以考虑系统随时间的性能。例如,在系统启动期间,通常会与系统的初始设置相关的工作量很大。如果仅在此时进行性能分析,则可表明设置功能在CPU时间中占很大比例。但是,大多数这些功能在设置完成后将不会大量使用,因此不会严重影响正常的系统性能。通过随时间监视性能,性能分析可以帮助确定系统如何随时间使用不同的功能。这可以帮助开发人员确定要关注的代码区域,以改善系统操作特定阶段的性能。
4.2代码对接
基于缓存的CPU通过执行来自缓存的指令提升效率。但是,CPU有可能访问不在缓存中驻留的地址。在这种情况下,将清除高速缓存的内容,并复制一个新的内存部分。完成此操作之后,将从高速缓存中继续执行。如果应用程序导致CPU刷新频率过高并重新加载其缓存,则当处理器通过相对较慢的系统总线访问外部内存时,性能就会降低。为了保持一致的高性能,必须确保CPU花费尽可能多的时间从高速缓存执行,并且将最少的时间花费在重新填充高速缓存上。代码对接正是解决上述问题的方法。在代码对接过程中,相互依赖的那些功能在应用程序可执行文件的地址映射中尽可能地彼此靠近[5]。这样可以提高两个函数同时位于高速缓存中的可能性,从而确保当一个函数调用依赖的另一个函数时,不需要高速缓存刷新。使用调用对数据来确定那些功能是高度独立的。调用对数据只是衡量在代码执行期间函数调用其他哪些函数以及调用多少次的度量。
5结束语
提升飞控计算机的实时性需要尽早地考虑飞控计算机与控制手柄、传感器和伺服系统之间的相互作用,并将其记录在“需求与设计”文档中。这些环境交互信息产生飞控计算机的实时性标准,然后将其纳入飞控计算机硬件和软件的设计规格中。在开发飞控计算机软件时,必须在方法的每个步骤中对性能进行分析。需要分析每个功能的执行速度,以确保它们满足其性能标准。衡量飞控计算机执行力的能力对于飞控计算机的成功开发至关重要。尽管逻辑分析仪和在线仿真工具已成功用于分析代码段的执行时间,但它们在性能分析或分析多任务应用程序方面是有限制的。纯软件的分析方法可以进行性能分析并监视多任务行为,但是具有引入性,并不能提供高度准确的性能分析。可以通过结合使用源代码工具和硬件数据收集来实现高保真软件性能分析。
参考文献:
[1]周保宇.高实时性的无人机飞控软件测试系统设计[J].计算机测量与控制,2012(9):2384-2385.
[2]李志敏.一种实时性缺陷定位方法及其可视化实现[J].计算机工程,2017,43(2):111-119.
[3]张鹏利.多余度飞控计算机系统软件设计[C].大连:中国航空学会,1997.
[4]张少杰.无人直升机飞控系统软件测试技术应用研究[J].直升机技术,2017(4):40-45.
作者:白晨 李明 马子飞 单位:航空工业西安航空计算技术研究所