Compiler optimization and its impact on development of real-time systems

K. Tucker, E. Solomon, K. Littlejohn
{"title":"Compiler optimization and its impact on development of real-time systems","authors":"K. Tucker, E. Solomon, K. Littlejohn","doi":"10.1109/DASC.1998.741479","DOIUrl":null,"url":null,"abstract":"Real-time systems are increasing in size and complexity. Software developers seek to maximize the performance, as well as minimize the memory requirements in order to meet the constraints of these systems. Traditionally, software developers have overcome these constraints by using an optimizing compiler. However, optimization carries a hidden price. Many Commercial-Off-The-Shelf (COTS) debuggers are unable to work effectively with optimized applications, because the one-to-one mapping of source to object code is often disturbed by optimization. While optimizing, a compiler is free to reorder or interleave the code for statements, so long as the semantics of the program are preserved. This causes two major problems for a debugger. First, selecting a representative instruction to be used when setting a breakpoint on a source-level statement becomes difficult. Second, at a given breakpoint, the value of a variable may differ from what it would be in the non-optimized version. This condition is known as non-currency. Each of these problems becomes a serious issue if a debugger is used to debug the deliverable code or to perform verification testing. This paper presents an in-depth study of the effects of loop-invariant optimization on debugging user applications. The paper will show how to significantly improve the performance of the debugger, with respect to breakpoints and non-current variables, when operating on code affected by this optimization. A summary of the research done, including specific implementation issues and lessons learned while enhancing the DDC-I SPARCStation Solaris native Ada compiler system, is presented.","PeriodicalId":335827,"journal":{"name":"17th DASC. AIAA/IEEE/SAE. Digital Avionics Systems Conference. Proceedings (Cat. No.98CH36267)","volume":"37 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1998-10-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"17th DASC. AIAA/IEEE/SAE. Digital Avionics Systems Conference. Proceedings (Cat. No.98CH36267)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/DASC.1998.741479","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1

Abstract

Real-time systems are increasing in size and complexity. Software developers seek to maximize the performance, as well as minimize the memory requirements in order to meet the constraints of these systems. Traditionally, software developers have overcome these constraints by using an optimizing compiler. However, optimization carries a hidden price. Many Commercial-Off-The-Shelf (COTS) debuggers are unable to work effectively with optimized applications, because the one-to-one mapping of source to object code is often disturbed by optimization. While optimizing, a compiler is free to reorder or interleave the code for statements, so long as the semantics of the program are preserved. This causes two major problems for a debugger. First, selecting a representative instruction to be used when setting a breakpoint on a source-level statement becomes difficult. Second, at a given breakpoint, the value of a variable may differ from what it would be in the non-optimized version. This condition is known as non-currency. Each of these problems becomes a serious issue if a debugger is used to debug the deliverable code or to perform verification testing. This paper presents an in-depth study of the effects of loop-invariant optimization on debugging user applications. The paper will show how to significantly improve the performance of the debugger, with respect to breakpoints and non-current variables, when operating on code affected by this optimization. A summary of the research done, including specific implementation issues and lessons learned while enhancing the DDC-I SPARCStation Solaris native Ada compiler system, is presented.
编译器优化及其对实时系统开发的影响
实时系统的规模和复杂性都在不断增加。为了满足这些系统的限制,软件开发人员寻求最大化性能,以及最小化内存需求。传统上,软件开发人员通过使用优化编译器来克服这些限制。然而,优化是有隐性代价的。许多商用现货(COTS)调试器不能有效地处理优化后的应用程序,因为源代码到目标代码的一对一映射经常被优化所干扰。在优化时,编译器可以自由地对语句的代码进行重新排序或交错,只要保留程序的语义即可。这给调试器带来了两个主要问题。首先,在源级语句上设置断点时选择要使用的代表性指令变得很困难。其次,在给定的断点处,变量的值可能与未优化版本中的值不同。这种情况被称为非货币性。如果使用调试器来调试可交付代码或执行验证测试,那么这些问题中的每一个都将成为一个严重的问题。本文深入研究了循环不变优化对调试用户应用程序的影响。本文将展示在操作受此优化影响的代码时,如何显著提高调试器在断点和非当前变量方面的性能。本文总结了所做的研究,包括在增强DDC-I SPARCStation Solaris本机Ada编译器系统时遇到的具体实现问题和经验教训。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信