The Implementation of a Threaded Abstract Machine

Seth Copen Goldstein

EECS Department
University of California, Berkeley
Technical Report No. UCB/CSD-94-818
May 1994

This report describes TL0 and a translator for TL0, which targets both commodity workstations and commercial multiprocessors. TL0 is a portable parallel assembly language based on the Threaded Abstract Machine (TAM). TAM defines an execution model of self-scheduled threads which meets the demands that modern parallel architectures place on the compilation of general-purpose parallel programming languages. The most important features of TAM are its utilization of the storage hierarchy and the way it exposes asynchronous message events and the scheduling of computation.

This report describes TL0 in two ways: by defining the operational semantics of TL0 and by describing TLC, the target of the TL0-to-C translator. We discuss the constaints imposed on the design of the system by asynchronous messages handling. We then present a detailed analysis of the implementation of dynamic scheduling and how it is influenced by the two-level scheduling hierarchy. In addition to describing TL0, we explain how to eliminate many of the sources of overhead introduced by using C as an assembler.

The translator described is currently being used as the back end for an Id90 compiler which produces the fastest Id90 executables in the world. By defining TL0 and describing the translator, this report should allow others both to build high-level language compilers that use TL0 as a target and to port TL0 to other parallel machines.


BibTeX citation:

@techreport{Goldstein:CSD-94-818,
    Author = {Goldstein, Seth Copen},
    Title = {The Implementation of a Threaded Abstract Machine},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {1994},
    Month = {May},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/1994/5845.html},
    Number = {UCB/CSD-94-818},
    Abstract = {This report describes TL0 and a translator for TL0, which targets both commodity workstations and commercial multiprocessors. TL0 is a portable parallel assembly language based on the Threaded Abstract Machine (TAM). TAM defines an execution model of self-scheduled threads which meets the demands that modern parallel architectures place on the compilation of general-purpose parallel programming languages. The most important features of TAM are its utilization of the storage hierarchy and the way it exposes asynchronous message events and the scheduling of computation. <p> This report describes TL0 in two ways: by defining the operational semantics of TL0 and by describing TLC, the target of the TL0-to-C translator. We discuss the constaints imposed on the design of the system by asynchronous messages handling. We then present a detailed analysis of the implementation of dynamic scheduling and how it is influenced by the two-level scheduling hierarchy. In addition to describing TL0, we explain how to eliminate many of the sources of overhead introduced by using C as an assembler. <p> The translator described is currently being used as the back end for an Id90 compiler which produces the fastest Id90 executables in the world. By defining TL0 and describing the translator, this report should allow others both to build high-level language compilers that use TL0 as a target and to port TL0 to other parallel machines.}
}

EndNote citation:

%0 Report
%A Goldstein, Seth Copen
%T The Implementation of a Threaded Abstract Machine
%I EECS Department, University of California, Berkeley
%D 1994
%@ UCB/CSD-94-818
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/1994/5845.html
%F Goldstein:CSD-94-818