  Programmable circuits such as general-purpose processors or FPGAs have their
end-user energy efficiency strongly dependent on the program that they execute.
Ultimately, it is the programmer's ability to code and, in the case of general
purpose processors, the compiler's ability to translate source code into a
sequence of native instructions that make the circuit deliver the expected
performance to the end user. This way, the benefits of energy-efficient
circuits build upon energy-efficient devices could be obfuscated by poorly
written software. Clearly, having well-written software running on conventional
circuits is no better in terms of energy efficiency than having poorly written
software running on energy-efficient circuits. Therefore, to get the most out
of the energy-saving capabilities of programmable circuits that support low
voltage operating modes, it is necessary to address software issues that might
work against the benefits of operating in such modes.
