Thus, message passing can yield high bandwidth making it a very effective way to transmit a large block of data from one processor to another. Systems like the multi-processor Pentium machines running Linux physically share a single memory among their processors, so that a value written to shared memory by one processor can be directly accessed by any processor. Either implementation of shared memory is generally considered easier to use than message passing. The simplest such action is a barrier synchronization , in which each individual processor waits until every processor in the group has arrived at the barrier. By having each processor output a datum as a side-effect of reaching a barrier, it is possible to have the communication hardware return a value to each processor which is an arbitrary function of the values collected from all processors.
Latency can be very low, but bandwidth per processor also tends to be low.
Traditionally, this model is used primarily to control parallel execution rather than to distribute data values. This is another name for aggregate functions, most often used when referring to aggregate functions that are constructed using multiple message-passing operations. Typically, SMP implies the combination of MIMD and shared memory. Aside from the three vendors who have agreed on MMX, all of these instruction set extensions are roughly comparable, but mutually incompatible. Attached processors are essentially special-purpose computers that are connected to a host system to accelerate specific types of computation.