军事应用中的嵌入式系统由于其较长的使用寿命和使用过程中经历的要求变化,特别容易出现软件老化,这可能导致性能下降。反过来,这可能会导致昂贵的计划外硬件升级。避免这些升级的一种方法是对过时的软件应用优化。
与其他关键的实时嵌入式系统不同,军用航空电子系统的使用寿命长达数十年,在此期间,它们会定期更新。这些定期更新产生于计划中的变革,也产生于为满足不断变化的军事需求而对业务要求的改变。
变化(在初始设计中无法预测)与多年来发生的升级相结合,不可避免地导致软件对底层计算平台的需求增加。这种需求的增加可能导致性能下降和由于时序超支而导致的间歇性故障。避免这种情况的一种方法是频繁、昂贵的硬件升级。
另一种方法依赖于自动检测旧软件中的“时序优化机会”。这种时序优化方法也可以在旧版软件环境中工作。
软件老化:神话还是事实?
最初,软件老化似乎是一种矛盾:一旦编写了代码,它就不会物理降级 - 不像硬件,硬件受随机物理过程的影响,导致组件的性能随着时间的推移而下降。
当然,前者是基于软件不会改变的假设。在长期存在的军事系统中,这可能是一个不真实的假设:作战需求将发生变化,而这些变化将不可避免地导致软件老化。
软件老化影响冗长的项目主要有四个原因:
在很长的项目过程中,建筑设计决策背后的基本原理将消失在时间的迷雾中。
随着越来越多的决策与原始架构不一致,软件的原始“形状”就会丢失。
软件开发中不断变化的时尚将把架构拉向不同的方向。
即使使用最好的架构,也不可能提前预测可能需要的所有可能的更改。
这种软件老化的净效应是软件性能会随着时间的推移而下降。
软件引起的硬件过时
在过去的四十年中,一个默认的假设是电子/计算性能不可避免地会随着时间的推移而提高。这种“现实”导致定期硬件升级被内置到军事系统等长期运行的程序中,目的是利用性能改进。
与这些周期性的性能改进相抵触的是软件老化问题:功能要求增加,功能增益很少。当软件老化导致除了计划的升级之外还需要额外的硬件升级时,就会发生软件引起的硬件过时。
推回时间的蹂躏
计划外升级的替代方法是提高软件性能,这是通过仔细优化来实现的。在实时系统的情况下,这通常侧重于最坏情况下的性能,或软件执行给定功能所需的最长时间。
在理想情况下,优化可以通过采用现有架构并根据新需求将其重构为更高效的结构来实现。鉴于软件老化导致软件架构不可避免的退化,这需要对整个系统进行广泛的重新开发不太可能是一个可接受的选择。相反,优化必须是一种更“机会主义”的活动——在没有对底层架构有深刻理解的情况下识别改进并应用它们。
优化遵循三个主要步骤:
确定贡献(确定代码库中的哪个位置可以集中优化工作)。
优化(确定现有代码的替代方案)。
冲洗并重复(测量改进,如果有的话,并继续直到工作完成)。
确定贡献
在决定将优化工作重点放在何处时,最重要的一个因素是了解每个软件组件对整体系统性能的贡献。
这里的“贡献”用于表示执行特定代码段所花费的时间百分比。它来自两个值:代码段的最长执行时间和执行次数。
查找特定模块的贡献依赖于首先通过代码找到最坏情况的路径,然后查看每个代码子程序在该路径上花费的时间。(请参阅图 1。
图1:按子计划划分的最坏情况执行时间(WCET)的贡献。
如图所示,有些代码对最坏情况的路径没有贡献,而有些代码的贡献很小;第三,还有一些代码做出了重大贡献。正是最后一个类别提供了优化的最佳候选者。
不建议尝试通过手动检查代码来确定优化的候选对象,因为这会耗费大量精力,并可能导致浪费优化工作;例如,通过尝试优化属于“无贡献”类别的代码。最好的方法是通过测量代码的执行时间来识别优化候选者。
优化,确定替代方案
一旦确定了优化候选对象,下一步就是优化它们。这项活动是整个过程的核心,依赖于工程团队的技能和经验。
优化的一个重要来源是在最坏情况下多次执行的模块。每个可以删除此类代码的循环都受益于对整个路径的乘数效应。
冲洗并重复
进行优化后,有必要再次测量执行时间。此步骤将确定系统现在是否满足其性能目标。
如果在此阶段仍需要进一步改进,则重复识别优化候选者的练习可能会出现新的位置来集中优化工作。
上述三个步骤中的两个需要测量代码的最坏情况执行时间。
通常,测量执行时间涉及:
将测量点(也称为检测)添加到源代码。
收集测量值。
分析测量值。
对于大型系统,这很快就会成为一项耗时的活动。通过内部开发的工具支持或通过RapiTime等商业工具,可以大大减少上述三项活动所需的工作量。
将此类工具支持集成到构建-测试过程中意味着可以在每个构建-测试周期中自动进行时序测量。这使设计人员能够查看优化活动在每一步中的进展情况,而不是等待优化活动结束。
遗留系统呢?
许多需要优化的系统将属于“遗留系统”类别:其年龄意味着在软件工具和连接到它们的硬件方面对计算平台的支持有限。
处理此类系统的一个关键方面是时序分析方法的灵活性。例如,可能无法使用新式调试接口或其他特定硬件接口。因此,进行定时测量的方法必须能够适应可用的设施。同时,必须尽可能减少任何检测代码的影响,以避免在测量活动期间耗尽资源(例如,内存或 CPU 容量)。
军用航空电子系统软件不可避免地会“老化”,这可能导致昂贵的计划外硬件升级。另一种方法是优化老化的软件,这只能通过测量、优化和审查程序来实际执行。
自动测量软件性能可最大程度地减少所涉及的工作量,并且还允许测量以展示软件性能的增量改进。
审核编辑:郭婷
-
嵌入式
+关注
关注
5059文章
18972浏览量
301932 -
航空电子
+关注
关注
15文章
488浏览量
45141
发布评论请先 登录
相关推荐
评论