This tutorial surveys design methods for energy-efficient system-level desi
gn. We consider electronic systems consisting of a hardware platform and so
ftware layers. We consider the three major constituents of hardware that co
nsume energy, namely computation, communication, and storage units, and we
review methods for reducing their energy consumption. We also study models
for analyzing the energy cost of software, and methods for energy-efficient
software design and compilation.
This survey is organized around three main phases of a system design: conce
ptualization and modeling, design and implementation, and runtime managemen
t. For each phase, we review recent techniques for energy-efficient design
of both hardware and software.