A huge fraction of computing systems built today use asynchronous programming to improve human-computer interactive performance. All the Web 2.0 JavaScript applications (e.g., Gmail, Facebook) use asynchronous programming. There are now more than two million mobile applications available between the Apple App Store and Google Play, which are all written using asynchronous programming. Internet-of-Things (IoT), embedded systems, sensor networks, desktop GUI applications, etc., all rely on the asynchronous programming model for ensuring quick responsiveness. In spite of the ubiquitous use of asynchronous programming, today's general-purpose processor architectures are heavily optimized for the synchronous programming model. The intellectual merits of this project are a set of synergistic hardware and software optimizations named as eBoost (event Boost) that improve response time and save energy. The project's broader significance and importance are improvements to the capabilities of asynchronous platforms such as Web 2.0 and mobile devices. Furthermore, the project is supporting diversity and outreach efforts such as the MiBytes Computer Camp for high school students.
The eBoost optimizations customize the computing stack for exploiting the unique characteristics of asynchronous programs. In the asynchronous programming model, computations are posted as events to an event queue from where they get processed asynchronously in a thread. These events are largely independent of each other. eBoost exploits this latent event-level parallellism (ELP) by exposing the event queue to the processor. Furthermore, eBoost estimates the criticality of events, and uses it to prioritize critical events or may even skip unimportant events to improve user experience and save energy. This project is also constructing a set of benchmarks for evaluating asynchronous programs.