Using Application- and System-Specific Heuristics to Compile Embedded Software for Real-Time and Other Resource Constraints
John Regehr
University of Utah
Friday, November 19, 2004
10:00am - SENSQ 5317
Abstract
CPU cycles, energy, code space, and data space are often in short supply in embedded systems. In addition to these platform-specific requirements, there are application-specific requirements such as real-time deadlines. Compilers are typically obvious to these resource requirements, creating a problem for developers who must manually tune code to reduce resource usage --- a process that introduces bugs and reduces reusability.
One obvious solution to this problem is to make compilers aware of application- and platform-specific requirements. We believe that we have developed a better approach: we make it possible for external programs to override the compiler's internal optimization heuristics. In effect, the compiler becomes a low-level mechanism for applying optimizations, with high-level policies residing in an external program that is aware of application- and platform-specific requirements, and has access to strong resource-bounding analyses. We have applied this technique to TinyOS programs in order to reduce code size, stack size, expected-case execution time, worst-case execution time, and combinations of these metrics. Early results indicate that each of these metrics can be improved significantly, often by well over 10%, when compared to the default nesC compiler.





