  Computing systems have undergone several inflexion points - while Moore's law
guided the semiconductor industry to cram more and more transistors and logic
into the same volume, the limits of instruction-level parallelism (ILP) and the
end of Dennard's scaling drove the industry towards multi-core chips. We have
now entered the era of domain-specific architectures for new workloads like AI
and ML. These trends continue, arguably with other limits, along with
challenges imposed by tighter integration, extreme form factors and diverse
workloads, making systems more complex from an energy efficiency perspective.
Many research surveys have covered different aspects of techniques in hardware
and microarchitecture across devices, servers, HPC, data center systems along
with software, algorithms, frameworks for energy efficiency and thermal
management. Somewhat in parallel, the semiconductor industry has developed
techniques and standards around specification, modeling and verification of
complex chips; these areas have not been addressed in detail by previous
research surveys. This survey aims to bring these domains together and is
composed of a systematic categorization of key aspects of building energy
efficient systems - (a) specification - the ability to precisely specify the
power intent or properties at different layers (b) modeling and simulation of
the entire system or subsystem (hardware or software or both) so as to be able
to perform what-if analysis, (c) techniques used for implementing energy
efficiency at different levels of the stack, (d) verification techniques used
to provide guarantees that the functionality of complex designs are preserved,
and (e) energy efficiency standards and consortiums that aim to standardize
different aspects of energy efficiency, including cross-layer optimizations.
