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