IUP Publications Online
Home About IUP Magazines Journals Books Archives
     
Recommend    |    Subscriber Services    |    Feedback    |     Subscribe Online
 
The IUP Journal of Electrical and Electronics Engineering:
Compilation Techniques to Generate Energy-Conserving Codes for Embedded Systems: A Review
:
:
:
:
:
:
:
:
:
 
 
 
 
 
 
 
 

A compiler can be made to generate code that requires lesser energy to be executed. This paper reviews and classifies the compilation techniques that have been developed to date to reduce energy requirements of code for embedded systems. These techniques include conventional code optimization, dynamic voltage scaling, optimization of accesses to different levels in the memory hierarchy and optimization of use of functional units in a processor. The paper also recommends standardizing of methodologies for research on compilers for embedded systems and using a mix of different types of compilation techniques to generate energy-conserving codes.

 
 

Most of the world’s software is written today in high-level programming languages. High-level programming languages mimic English or some other human language as in a few rare cases and allow specifying a computational task using human-intelligible notations. Computers, however, do not understand high-level programming languages. A computer can perform a computation only if it is specified in its machine language which is invariably a sequence of 0s and 1s. A compiler is required to translate programs written in a high-level programming language into the machine language of a particular computer. While translating programs, compilers are known to often ‘optimize’ them. In reality, compilers attempt to improve the performance of the programs, but that cannot be strictly called optimization. Compilers traditionally try to make the code they generate shorter and faster. However, the same compilers can be made to generate code that will require less energy to execute. Hajj et al. (1998) were the first to use compilers to generate code with energy conservation as an objective. Energy conservation benefits different types of computer systems in different ways. For embedded systems, energy conservation leads to longer battery life. For personal computers, energy conservation means lower power tariffs. For high-performance computers, like servers of search engines, energy conservation means lower cooling costs. However, in all cases, energy-conserving code helps in reducing the carbon footprint of the computer system that executes it.

In this paper, the compilation techniques that have been developed to reduce the energy requirement of codes for embedded systems are reviewed. Although compiler-supported energy conservation in embedded systems has been an active field of research for the last 20 years, no previous comprehensive review or taxonomy of these techniques is available. Our review reveals that a wide range of compilation techniques have been used so far to reduce the energy requirement of code. These techniques can be broadly classified into those employing conventional code optimization, dynamic voltage scaling, optimization of accesses to the memory hierarchy, and optimization of usage of functional units in a processor (Figure 1). The techniques to optimize accesses to the memory hierarchy can be further classified into techniques which optimize accesses to the register file, scratchpad memory, cache memory, transition look-aside buffer and phase-change memory.

 
 
 

Embedded system, Compiler, Energy conservation, Code generation, Code optimization, Dynamic voltage scaling, Memory hierarchy