Multiprocessor software design

  • Authors:
  • Peter Hibbard

  • Affiliations:
  • -

  • Venue:
  • ACM '80 Proceedings of the ACM 1980 annual conference
  • Year:
  • 1980

Quantified Score

Hi-index 0.00

Visualization

Abstract

Machines intended for parallel computations exhibit a wide variety of architectural designs, including pipeline, vector and array organizations, less traditional associative, data-flow and systolic organizations, and shared-memory MIMD organizations. It is not surprising, therefore, that the software support for these machines exhibits a wide variety of features reflecting the differing designs. Even within a single class of parallel machine, the system software used on different machines within that class may appear radically different. In part this variety arises because the design space for multiprocessor software is richer than for uniprocessor software; for example there are tradeoffs to be selected between performance and reliability, extensibility, fault-tolerance, etc., and the particular choice of design parameters can have a profound effect on the structure of the operating system. Another factor, however, which causes variety between different operating systems is that the costs of various design choices are known much less accurately than they are with uniprocessors, and thus individual multiprocessor operating systems may exhibit a great deal of experimental variability. Fortunately, the design principles are relatively well understood, and may be described in broad terms. In the case of special-purpose SIMD and associative machines, built with some particular set of applications in mind, a general-purpose host uniprocessor usually takes over most of the resource allocation and scheduling for both itself and for the special-purpose attached processor, which it treats as a peripheral. Consequently the support software on the special-purpose machine is relatively primitive. Since only a small number of programming techniques are appropriate for such machines, they are most easily provided to the programmer as machine-oriented extensions to conventional languages, though several systems have language processors which provide optimizers appropriate for the architecture.