The virtual machine used for this description contains multiple components: a control machine and one or more data machines. The control machine is solely concerned with performing the scheduling of computations on the data machines and managing the system resources. The control machine synchronizes and provides arguments for lower level functions. The data machines perform all the ``useful'' computation done by the system. A shared memory is provided, in addition to any local state included in each data machine. One of the goals of Q is to support a decoupled memory access mechanism, where the data processor's access of data memory is decoupled from the data processing.
The Virtual Machine
Q specifies the instruction set architecture used for the upper level of algorithm specification, including a definition of the interface between the two levels. The instruction set architectures of the data machines (the lower level) is varied and implementation specific.
One simple implementation of the virtual machine realizes the control machine and a data machine as alternating threads executing on a single processor. A parallel version of the virtual machine may have multiple control machines performing the evaluation of the dataflow graphs, each controlling a small set of data machines. Communication between the individual clusters (each with a single control machine) is performed explicitly by the control machines.