Safe optimization for hard real-time programming

Abstract
Classical compiler optimizations are designed to reduce the expected execution time or memory use of programs. Optimizations for hard real time programs must meet more stringent constraints: all transformations applied to the program must be safe, in that they will never cause a deadline to be missed in any execution of the program. The authors show that optimization of hard real time programs cannot be separated from code generation, register allocation, and scheduling, even under a very simple model of program execution; it is therefore difficult. Optimization is also necessary, in that it may be needed to ensure that the program meets its deadlines. They examine the classical source code transformations for both sequential optimization and parallel programming (vectorization and concurrentization), presenting brief examples showing when each transformation may be unsafe. They classify each of these transformations in a system of five categories of safety, and describe what additional information (if any) is required to ensure that each transformation is safe.

This publication has 12 references indexed in Scilit: