ARC, a parallel virtual machine (the paper design of a parallel computer) for executing programs composed of abstract data types (ADTs), is presented. The motivation is to support reusable components and parallel and distributed programming. The basic assumption is that the reusability, portability, and adaptability of components are enhanced when parallelism is not programmed explicitly. The parallelism can be automatically extracted from the code of the components.
This paper presents the main blocks of the ARC architecture, such as its registers and instruction set design. The concept of an ADT is directly supported as a facility. An operation on an ADT is a call to the facility. The facility called can be remote, and the call can be asynchronous. This capability is called asynchronous remote procedure calls (ARPC) and is the key point of the paper. There are many different kinds of facility calls: calls to facility operations, variable initialization, finalization, and operations of facilities at various levels of abstraction. Initialization and finalization of variables are directly provided in hardware for fast execution.
The parallelism of the architecture results from allowing a caller to continue execution until it requires a parameter passed to a remote operation that has not yet returned. The calls may return in non-FIFO order. For some heavy-load facilities, dynamic clone selection allows simultaneous use of facility code. The selection from clones uses the round-robin scheduling policy.
The paper provides no experimental results or simulation data. A simple example program is given. The design presented supports ADTs completely in hardware. The efforts in software are reduced to a minimum. The hardware cost may be too high, however. There is no measurement of the cost and no discussion of software/hardware design tradeoffs. The references are complete.