We present a software scheduling scheme for fine-grain threads, typical granurality of which is a single procedure invocation. Such fine-grain threads appear in many language implementations such as Multilisp and concurrent object-oriented languages in which an asynchronous procedure/method invocation is a building block of parallel programs. An implementation is described in terms of our abstract machine StackThreads. In the proposed scheme, an asynchronous procedure invocation (a procedure call attached with a thread creation) is performed in less than 10 additional RISC instructions to normal procedure calls in traditional sequential languages such as C, as long as the thread terminates without blocking. StackThreads unifies asynchronous and synchronous procedure calls, deriving a synchronous call by a combination of an asynchronous call + explicit synchronization between the caller and the callee. Therefore, each thread does not have to have its own stack for intrathread procedure calls, simplifying management of activation records. StackThreads serves as a compiler target for general purpose languages such as concurrent object-oriented languages or functional languages on distributed memory multicomputers where the efficiency of intra-node thread management is crucial. We also give benchmark results of our implementation of concurrent object-oriented language ABCL/f, the compiler of which uses StackThreads as the intermediate representation of source programs.
[1]
Satoshi Matsuoka,et al.
An efficient implementation scheme of concurrent object-oriented languages on stock multicomputers
,
1992,
PPOPP '93.
[2]
V. Karamcheti,et al.
Concert-efficient runtime support for concurrent object-oriented programming languages on stock hardware
,
1993,
Supercomputing '93.
[3]
Robert H. Halstead,et al.
MULTILISP: a language for concurrent symbolic computation
,
1985,
TOPL.
[4]
David E. Culler,et al.
Fine-grain parallelism with minimal hardware support: a compiler-controlled threaded abstract machine
,
1991,
ASPLOS IV.
[5]
Andrew A. Chien,et al.
Concurrent aggregates (CA)
,
1990,
PPOPP '90.
[6]
Robert H. Halstead,et al.
Lazy task creation: a technique for increasing the granularity of parallel programs
,
1990,
IEEE Trans. Parallel Distributed Syst..
[7]
K. Mani Chandy,et al.
CC++: A Declarative Concurrent Object Oriented Programming Notation
,
1993
.
[8]
Rishiyur S. Nikhil Arvind,et al.
Id: a language with implicit parallelism
,
1992
.
[9]
Satoshi Matsuoka,et al.
ABCL/f: A Future-Based Polymorphic Typed Concurrent Object-Oriented Language- Its Design and Implementation
,
1994,
Specification of Parallel Algorithms.