Reactive-process programming and distributed discrete-event simulation

The same forces that spurred the development of multicomputers--the demand for better performance and economy--are driving the evolution of multicomputers in the direction of more abundant and less expensive computing nodes--the direction of fine-grain multicomputers. This evolution in multicomputer architecture derives from advances in integrated circuit, packaging, and message-routing technologies, and carries far-reaching implications in programming and applications. This thesis pursues that trend with a balanced treatment of multicomputer programming and applications. First, a reactive-process programming system--Reactive-C--is investigated; then, a model application--discrete-event simulation--is developed; finally, a number of logic-circuit simulators written in the Reactive-C notation are evaluated. One difficulty in multicomputer applications is the inefficiency of many distributed algorithms compared to their sequential counterparts. When better formulations are developed, they often scale poorly with increasing numbers of nodes, and their beneficial effects eventually vanish when many nodes are used. However, rules for programming are quite different when nodes are plentiful and cheap: The primary concern is to utilize all of the concurrency available in an application, rather than to utilize all of the computing cycles available in a machine. We have shown in our research that it is possible to extract the maximum concurrency of a simulation subject, even one as difficult as a logic circuit, when one simulation element is assigned to each node. Despite the initial inefficiency of a straightforward algorithm, as the number of nodes increases, the computation time decreases linearly until there are only a few elements in each node. We conclude by suggesting a technique to further increase the available concurrency when there are many more nodes than simulation elements.