Hardware support for Synchronization and Language Runtime Systems

One of the main barriers to using multi-core processors effectively is excessive synchronization inherited from sequential code and monolithic operating systems. In this project, we are investigating how to provide efficient hardware support to facilitate the implementation of software synchronization mechanisms. An example of the work in this research area is our MICRO-43 paper on hardware support for fair reader/writer locking. In essence, this is an acceleration mechanism collocated with each core to explicitly handle reader-writer lock management with optimal transfer time. By associating a unique thread-id to each lock request we decouple the hardware lock from the requestor core. This provides correct and efficient execution in the presence of thread migration or remote lock releases.

In this project we are also investigating how to provide efficient hardware support for modern language runtime systems such as the Microsoft Common Language Runtime, and the GHC Haskell runtime system. These systems have various performance overheads which could be reduced through the adoption of a hardware/software approach.

An example of our work in this research area is our ASPLOS-2010 paper on accelerating read/write barriers. Many barrier executions are “boring” and perform checks but no real work – e.g., in generational garbage collection, most updates to the heap do not create inter-generational references. We introduced a form of dynamic filter that can identify these “boring” cases by recording which barriers have recently been executed, and detecting when a barrier is repeating a check that has already been made. We applied this repetition-filtering to a variety of garbage collection algorithms, transactional memory implementations, and language-based security techniques.

Project Team: