Communicating Process Architecture
First published 1988 by
Prentice Hall International (UK) Ltd
ISBN-10 0-13-629320-4 ; INMOS document number: 72-OCC-047
© 1988 INMOS Limited. INMOS reserves the right to make changes in specifications at any time and without notice. The information furnished by INMOS in this publication is believed to be accurate; however, no responsibility is assumed for its use, nor for any infringement of patents or other rights of third parties resulting from its use. No license is granted under any patents, trademarks or other rights of INMOS.
Preface
Communicating Process Architecture is a collection of classic papers written by INMOS technologists to explain the architectural foundation of occam and the INMOS transputer. The collection is presented in two sections, principles and practice, which combine together to describe an approach to VLSI computer architecture based on communicating processes.
The papers were originally written as a series of individual technical notes each intended to expand and develop a particular area of interest or application. The publication will be of particular interest to the computer scientist, electronic engineer, mathematician and system designer. It has been published in response to the growing interest and requests for information about occam and the transputer.
The INMOS transputer is a VLSI building block for concurrent processing systems, with occam as the associated design formalism. occam is an easy and natural language for the programming and specification of concurrent systems.
Further information about the use of transputer products will be included in a similar collection of classic papers, entitled 'Transputer Technical Notes'.
* The role of occam in the design of the T800, presented at the 20th Workshop on Microprogramming, December 1-4, 1987, Colorado Springs, CO. To appear in ACM SIGMICRO Newsletter, Vol. 18, No. 4, 1987. A transputer based multi-user flight simulator, parts of this chapter are published by The International Supercomputing Institute, Inc. (ISI, Inc.) in the proceedings of the 3rd International Conference of Supercomputing and, as such, are copyright of ISI, Inc.
Introduction
This book, in two sections, is a compilation of INMOS technical notes and describes an approach to VLSI computer architecture based on communicating processes. The first section, principles, discusses communicating processes and their VLSI implementation.
This section starts with a discussion on the design of occam - a language intended for use in describing and programming concurrent systems. By careful choice of language primitives, occam allows a wide variety of implementation techniques including conventional sequential computers, and dedicated concurrent hardware.
The section continues with a description of the implementation of occam by a programmable VLSI processing element known as the transputer. The transputer directly implements the concurrent processes of occam, using physical communication links to provide process communication between transputers, and using microcoded instructions to provide process scheduling and communication within a transputer. The transputer can be used as a building block for concurrent processing systems, with occam as the associated design formalism.
The construction of parallel computers from collections of transputers is discussed and also a number of application-specific configurations used for compilers, computer graphics and animation, and statistical mechanics. The idea of a general purpose configuration is also developed.
The section concludes with a description of the implementation of communicating processes directly on silicon. By use of a compiler which translates an occam program into a collection of dedicated processing elements, it is possible to design specialised VLSI systems rapidly. A system can be designed in occam, verified formally using the semantics of occam- or experimentally by execution on transputers - and finally compiled into correct silicon layout.
The second section, practice, discusses the application of communicating process architecture to VLSI computer architecture.
This section starts with a discussion on how the occam language has been extended to support concurrent numerical programming, and shows how the necessary data types can be added to the occam language whilst preserving the semantics of the original language. Also explained is how programs can be checked to ensure correct use of variables and communication channels; an important issue in the construction of reliable concurrent systems.
There is a description of the IMS T800 transputer - a VLSI microcomputer directly supporting the concepts of occam and designed to provide high speed numerical processing. Many of the architectural issues in the design of the floating point unit are explained.
Verification of the IMS T800 floating point unit is described. Extensive simulation was avoided by formal design techniques and a mathematical specification was produced. This was refined into an occam program which was then transformed - using semantics preserving transformations - into the microcode implementation of floating point arithmetic.
The simplification in design and construction of real-time processing systems by means of occam and the transputer is shown and a number of typical examples are shown including interrupts, timers and schedulers.
The remainder of this section show various applications of occam and the transputer, using examples drawn from graphics and animation. These include a concurrent ray tracing program, concurrency in computer graphics (showing concurrent algorithms for transformation, scan conversion, shading, clipping and hidden surface removal) and finally the description of a concurrent multi-pilot flight simulator.
Principles
- 72-TCH-020 Communicating processes and occam
- 72-TCH-021 The transputer implementation of occam
- 72-TCH-022 Communicating process computers
- 72-TCH-023 Compiling occam into silicon
Practice
- 72-TCH-032 Security aspects of occam 2 (= The development of occam 2)
- 72-TCH-006 IMS T800 architecture
- 72-TCH-047 The role of occam in the design of the IMS T800
- 72-TCH-051 Simpler real-time programming with the transputer
- 72-TCH-039 Long arithmetic on the transputer
- 72-TCH-007 Exploiting concurrency: a ray tracing example
- 72-TCH-037 High-performance graphics with the IMS T800
- 72-TCH-036 A transputer based multi-user flight simulator
- 72-TCH-052 Porting SPICE to the INMOS IMS T800 transputer
- 72-TCH-054 A transputer farm accelerator for networked computing facilities