Infrastructure and Tools

Graphite Multicore Simulator - A highly parallel, distributed simulator for large-scale multicore research. Allows the user to define their own target architecture and distribute the simulation of a single multicore chip across a cluster of machines to improve simulator performance. Graphite is the cornerstone of Angstrom's simulation infrastructure. As the project progresses, all component models will be integrated into our Graphite model to create a single shared simulator that models the entire Angstrom system including hardware, operating systems, software tools, and applications.

Application Heartbeats API - The Application Heartbeats API is a framework that provides a simple, standardized way for applications to monitor their performance and make that information available to external observers. It is a key component of a self-aware system that must observe its own behavior and adapt to changing conditions. Application progress is quantified based on events that are significant to the application (such as results generated) rather than generic (such as instructions executed). The framework also allows an application to express its goals such that an external monitor (e.g., the operating system) can observe an application's progress, compare that to it's goals, and take corrective action help maintain those goals.

Smart Data Structures - Smart Data Structures includes several generic building blocks for programmers that incorporate self-aware introspection and adaptation. A Smartlock, for example, uses online machine-learning techniques to dynamically adjust the priorities for different threads competing for a lock. It is able to automatically learn which threads should be given higher priority in order to maximize overall application throughput.