Speaker:          Michael Wolf
Affiliation:         STMicroelectronics 

Title:     How Compilers and Tools Differ for Embedded Systems.

Compiler technology includes language design, parsing, analysis, optimization, resource allocation, scheduling, and code generation. Associated tools include assemblers, linkers, debuggers, profilers, 'make', IDEs, optimized libraries, and more. While much of the technology developed over the past 50 years applies directly to embedded programming, there are key differences. Some are due to the limits of the embedded system, in particular memory size and power. Some are due to specialized architectures, such as DSPs. Others arise because of the different programming community and programming style, which is partially due to the economics of the marketplace. Here we explore some of these differences at three levels: the market, the programming environment, and the compiler.

The compilers and tools marketplace for high performance workstation and cluster (HPC) systems is split between programmers and groups developing applications for internal use, and ISVs developing applications for resale. The marketplace for embedded systems is almost entirely for OEM applications, and many (or most) of the actual programmers work for the compiler vendor. This affects the forces that drive compiler and tool development and improvement.

The goal for an HPC compiler is faster performance; in an embedded application, speed is not the only criterion. Getting the right mix of performance and other characteristics in an embedded system is important enough that programmers are more willing to tune the application by adjusting compiler options, performing limited rewrites, and even coding essential parts in assembler. In some instances, the target system itself is variable, and can be tuned.

Focusing on just the compiler, we find many of the compiler techniques for the most performance critical embedded systems bear remarkable similarity to those used 20 or 30 years ago for the highest performance supercomputers. We also look in detail at the effectiveness of whole program analysis in both HPC and embedded compilers.

About the speaker:

Michael Wolfe is an ST Fellow with STMicroelectronics, Inc., one of the largest semiconductor manufacturers in the world, and is a member of the Advanced Compilers and Tools team in the Advanced System Technology division. His responsibilities and interests include deep compiler analysis and optimizations ranging from improving power consumption for embedded microprocessor cores to improving the efficiency of parallel Fortran 90 programs on Linux clusters. He has been working professionally on high performance and parallel compilers for almost 30 years, and has written two books on the subject.