In this talk I will describe Lazy Threads, a new approach to implementing multithreaded execution on conventional machines. Each parallel call begins execution sequentially (with the attendant efficient stack management and direct transfer of control and data). Only if a call truly must execute in parallel does it get its own thread of control. We develop an abstract machine that allows us to efficiently implement lazy multithreading without explicit bookkeeping, shared memory, stack splitting, or restrictions on the use of pointers. We introduce a new storage model, Stacklets, that allows parallel calls to maintain the invariants of sequential calls. We combine this with a new control model, which allows tasks to "steal" the thread of control from their parent task. This abstract machine allows the compiler to specialize the representation of each parallel call based on the context in which it appears.
Lazy Threads has been incorporated into an explicitly parallel extension of Split-C, has been used as a compiler target for the functional language Id90, and is being incorporated into object-oriented languages. These systems demonstrate that Lazy Threads is an efficient substrate for both explicit and implicit parallel languages and reveals interesting new compile-time/run-time tradeoffs. In this talk, I will also compare Lazy Threads with other multithreading approaches.
HOST: Prof. Barbara Liskov
|
Modified: Jun 25, 1997
|
Current events
|
Your comments
and inquiries are welcome.