Excessive energy consumption on a mobile phone irritates the user with short, unpredictable battery life. Excess consumption in a datacenter hurts a business's bottom line and has the potential to cause large-scale failures. This research project develops energy tracking and monitoring techniques to enable many parties -- such as the software developer, system engineer, and end user -- to audit and control software energy consumption.
This research aims to address four issues. The first investigates the low-level software representations needed to understand, debug, and control a parallel application's performance and energy consumption on heterogeneous architectures (i.e., on a multicore with accelerators). The second develops a hardware/software energy exception framework, whereby meeting expressed energy targets is treated as a requirement for correct computation. The division of labor in this framework tasks hardware with monitoring and reporting energy consumption at fine temporal and spatial granularities, while software is responsible for expressing energy targets and handling cases in which the targets are not met. The third explores the system-wide impacts of this energy monitoring framework using Javascript as a testbed. The focus of this thrust is understanding and balancing the overheads and benefits of energy tracking in real systems. Finally, the fourth examines programmer feedback and incentives required to develop and optimize "responsible" software that runs faster and at lower energy cost. This project will develop the abstractions and tools necessary to bring visibility and control to software energy consumption, important capabilities as energy becomes one of the most critical resources in a computing system.