It has been observed that even highly optimized software programs perform "redundant" computations during their execution, due to the nature (statistics) of the values assumed by input or internal program variables. For embedded software running on battery-powered systems, such computations can be viewed as unnecessary energy overheads, and hence represent opportunities for improvement in energy efficiency. We present a systematic methodology to identify and eliminate redundancies in the computations performed by embedded software programs, by exploiting opportunities that dynamically arise for computation reuse. We report the results of experiments on two different embedded systems -- a detailed simulation model of a Fujitsu SPARClite based embedded system, and actual current measurements on a Compaq iPAQ PDA. Our results demonstrate that the proposed
Weidong Wang, Anand Raghunathan, Niraj K. Jha