Multiprocessing involves the use of two or more CPUs linked together for coordinated operation. Stored-program instructions are executed simultaneously, but by different CPUs. The CPUs may execute different instructions from the same program, or they may execute totally different programs. (In contrast, under multiprogramming, the computer appears to be processing different jobs simultaneously but is actually processing them concurrently, or within a given time interval.)
Multiprocessing systems are designed to achieve a particular objective. One common objective is to relieve a large CPU of tasks such as scheduling, editing data, and maintaining files so that it can continue high-priority or complex processing without interruption. To achieve this goal, a small CPU is linked to the large CPU. All work coming into the system from remote terminals or other peripheral devices is first channeled through the small CPU, which coordinates the activities of the large one. Generally, the small CPU handles all I/O interrupts and so on, while the large CPU handles the "number crunching" (large mathematical calculations). A schematic diagram of this type of multiprocessing system is shown in below.
The small CPU shown above is commonly referred to as a front-end processor. It is an interface between the large CPU and peripheral devices such as online terminals.
A small CPU may also be used as an interface between a large CPU and a large data base stored on direct-access storage devices. In this case, the small CPU, often termed a back-end processor, is solely responsible for maintaining the data base. Accessing data and updating specific data fields are typical functions that a small CPU performs in this type of multiprocessing system.
Many large multiprocessing systems have two or more large CPUs. These large CPUs are no different from those used in single-CPU (stand-alone) configurations.
Each may have its own separate memory, or a single memory may be shared by all of them. The activities of each CPU can be controlled in whole or in part by a common supervisor program. This type of system is used by organizations with extremely large and complex data-processing needs. Each large CPU may be dedicated to a specific task such as I/O processing or arithmetic processing. One CPU can be set up to handle online processing while another handles only batch processing. Alternately, two CPUs may be used together on the same task to provide rapid responses in the most demanding applications. Many multiprocessing systems are designed so that one or more of the CPUs can provide backup if another malfunctions. A configuration that uses multiple large CPUs is depicted below.
This system also uses a small CPU to control communications with peripheral devices and perform "housekeeping chores" (input editing, validation, and the like).
Coordinating the efforts of several CPUs requires highly sophisticated software and careful planning. The scheduling of workloads for the CPUs involves making the most efficient use of computer resources. Implementing such a system is a time-consuming endeavor that may require the services of outside consultants as well as those provided by the equipment manufacturers. The payoff from this effort is a system with capabilities extending far beyond those of a single-CPU system.
Last Updated Jan.7/99