This event may be recorded and made available internally or externally via http://research.microsoft.com. Microsoft will own the copyright of any recordings made. If you do not wish to have your image/voice recorded please consider this before attending

Energy is increasingly a first-order concern in computer systems. Exploiting energy-accuracy trade-offs is an attractive choice in applications that can tolerate inaccuracies. A key challenge, though, is how to isolate parts of the program that must be precise from those that can be approximated so that a program functions correctly even as quality of service degrades. Addressing that challenge leads to opportunities for approximate computing across the entire system stack.

In this talk I will describe our effort on co-designing language, hardware and system support to take advantage of approximate computing across the system stack in a safe and efficient way. We use type qualifiers to declare data that may be subject to approximate computation. Using these types, the system automatically maps approximate variables to potentially imprecise and unreliable but much more efficient storage and data operations, as well as more energy-efficient algorithms provided by the programmer. In addition, the system can statically guarantee isolation of the precise program component from the approximate component. This allows a programmer to control explicitly how information flows from approximate data to precise data. Importantly, employing static analysis eliminates the need for dynamic checks, further improving energy savings. I will describe a micro-architecture that offers explicit approximate storage and computation and a proposal on using neural networks as approximate accelerators for general programs. I will conclude with an overview of our current/future research directions, including language extensions for quality-of-result specification, programming tools, approximate persistent storage and approximate wireless communication.