User:Techardor/Shared memory multiprocessing

A shared-memory multiprocessor consists of a number of processors accessing one or more shared memory modules. The processors can be physically connected to the memory modules in a variety of ways, but logically every processor is connected to every module. We can use any of several metrics to evaluate the performance of a multiprocessor system. In order to keep the model and its implementation manageable, we will focus on the degree of parallelism among the memory modules; that is, we are interested in determining the average number of memory modules that are being accessed simultaneously.


 * Processors all connected to a large shared memory


 * Local caches for each processor


 * Cost: much cheaper to cache than main memory


 * Simple to program, but hard to scale


 * Now take a closer look at structure, costs, limits

The model is as follows:

1.	The system has p processors and m memory modules. Each processor can send requests for access to any memory module.

2.	Memory module accesses are synchronized; two modules servicing access requests at the same time start and complete their accesses together. Memory accesses always take one time unit (one memory cycle).

3.	Processors are infinitely fast. When a processor's access request has been serviced by a memory module, the processor immediately generates a new request.

4.	Processors send requests with equal probability to each module. The module chosen for a new request is independent of the module chosen for any other request.

5.	A processor may have only one outstanding request at a time.

6.	A memory module may service only one request at a time. If more than one request is queued at a memory module at the beginning of a memory cycle, the module selects a request to service at random. All requests not serviced during the cycle remain queued at the module at the beginning of the next cycle.