Speculative multithreading (SpMT) is a dynamic parallelisation technique that uses out-of-order execution and read/write buffering to achieve speedup. Implementing SpMT in software presents two significant challenges. First, the overhead of forking and joining threads is often so high as to preclude speedup altogether. Second, the complexity of implementation means that there may be long development lead times, and that different software SpMT systems may in fact be incomparable. In order to address the second of these problems, we have created libspmt, a new language-agnostic library for speculative multithreading. It currently supports the speculative method level parallelism (SMLP) variant of SpMT, and can accommodate hosts that implement garbage collection, exceptions, and non-speculative multithreading. It is written in C using a modular design, and integrated with a unit testing framework. We discuss its interface, the requirements of any host that uses it, and implementation details.
Last modified: Sun Jan 21 22:56:15 EST 2007