| OCR Text |
Show 3 being general purpose or special purpose. A special purpose computer handles programs with somewhat regular structures. The generation of processes 1s predictable and the task assignment is fairly straightforward. For example, one can accurately describe the behavior of a matrix multiplication algorithm beforehand and efficiently arrange the system resources accordingly. For applications in this category, a special purpose system (e.g., systolic array) appears to provide the most desirable solution. While special purpose computers can always be constructed to solve specific problems faster and more economically than general purpose ones, it must be expected that there will always remain a class of applications that are so unstructured that they are not suited to a rigid hardware implementation. These problems may have irregular and dynamically changing communication graphs and require a machine and programming notation that permit irregular and variable communications. The exploitation of multiple processors must provide means of generating work for the processors, getting the work to processors, and collecting the results in a coherent way. For comparison, four categories of models are discussed which are available for making such provisions: multiple processes with shared memory, multiple processes with message passing, dataflow, and reduction [35]. 1.1.1 Multiple processes with shared memory A m~ltiprocessor system with shared memory is sometimes referred to as a tightly-coupled multiprocessor system. The earliest concurrent computation models (cf. [12]) were based on spawning several processes within a common memory space. Communication between processes was accomplished by having one process inspect a memory register to which another had assigned a value. In order to make such communication somewhat coherent, a variety of synchronizing constructs have since been _invented [2]. These synchronization constructs range from simple busy-waiting methods, semaphores, conditional |